class ReceiptDatabaseAdapter implements SelectionBackedDatabaseAdapter<Receipt, Trip> {

    @NonNull
    @Override
    public Receipt build(@NonNull Receipt receipt, int primaryKey,
                         @NonNull UUID uuid, @NonNull DatabaseOperationMetadata databaseOperationMetadata) {
        return new ReceiptBuilderFactory(primaryKey, receipt)
                .setUuid(uuid)
                .setSyncState(mSyncStateAdapter.get(receipt.getSyncState(), databaseOperationMetadata)).build();
    }

    public  ReceiptDatabaseAdapter(@NonNull Table<Trip> tripsTable, @NonNull Table<PaymentMethod> paymentMethodTable,
                                  @NonNull Table<Category> categoriesTable, @NonNull StorageManager storageManager);
    public  ReceiptDatabaseAdapter(@NonNull Table<Trip> tripsTable, @NonNull Table<PaymentMethod> paymentMethodTable,
                                  @NonNull Table<Category> categoriesTable, @NonNull StorageManager storageManager,
                                  @NonNull SyncStateAdapter syncStateAdapter);

}