import DataLoader from 'dataloader';
import { DBProvider } from '../../app-providers/db.provider.js';
import { Optional, TimelessDateString } from '../../../shared/types/index.js';
import type { IGetSimilarTransactionsParams, IGetTransactionsByChargeIdsResult, IGetTransactionsByFiltersParams, IGetTransactionsByFiltersResult, IGetTransactionsByIdsResult, IReplaceTransactionsChargeIdParams, IUpdateTransactionParams } from '../types.js';
export type TransactionRequiredWrapper<T extends {
    id: unknown;
    account_id: unknown;
    charge_id: unknown;
    source_id: unknown;
    currency: unknown;
    event_date: unknown;
    amount: unknown;
    current_balance: unknown;
    created_at: unknown;
    updated_at: unknown;
}> = Omit<T, 'id' | 'account_id' | 'charge_id' | 'source_id' | 'currency' | 'event_date' | 'amount' | 'current_balance' | 'created_at' | 'updated_at'> & {
    id: NonNullable<T['id']>;
    account_id: NonNullable<T['account_id']>;
    charge_id: NonNullable<T['charge_id']>;
    source_id: NonNullable<T['source_id']>;
    currency: NonNullable<T['currency']>;
    event_date: NonNullable<T['event_date']>;
    amount: NonNullable<T['amount']>;
    current_balance: NonNullable<T['current_balance']>;
    created_at: NonNullable<T['created_at']>;
    updated_at: NonNullable<T['updated_at']>;
};
type IGetAdjustedTransactionsByFiltersParams = Optional<Omit<IGetTransactionsByFiltersParams, 'isIDs' | 'fromEventDate' | 'toEventDate' | 'fromDebitDate' | 'toDebitDate'>, 'IDs' | 'businessIDs'> & {
    fromEventDate?: TimelessDateString | null;
    toEventDate?: TimelessDateString | null;
    fromDebitDate?: TimelessDateString | null;
    toDebitDate?: TimelessDateString | null;
};
export declare class TransactionsProvider {
    private context;
    private dbProvider;
    adminBusinessId: string;
    constructor(context: GraphQLModules.Context, dbProvider: DBProvider);
    private batchTransactionsByIds;
    getTransactionByIdLoader: DataLoader<string, IGetTransactionsByIdsResult | undefined, string>;
    private batchTransactionsByChargeIDs;
    getTransactionsByChargeIDLoader: DataLoader<string, IGetTransactionsByChargeIdsResult[], string>;
    getTransactionsByMissingRequiredInfo(): Promise<import("../types.js").IGetTransactionsByMissingRequiredInfoResult[]>;
    getSimilarTransactions(params: Omit<IGetSimilarTransactionsParams, 'ownerId'>): Promise<IGetTransactionsByIdsResult[]>;
    replaceTransactionsChargeId(params: IReplaceTransactionsChargeIdParams): Promise<import("../types.js").IReplaceTransactionsChargeIdResult[]>;
    updateTransaction(params: IUpdateTransactionParams): Promise<import("../types.js").IUpdateTransactionResult[]>;
    getTransactionsByFilters(params: IGetAdjustedTransactionsByFiltersParams): Promise<IGetTransactionsByFiltersResult[]>;
}
export {};
