import DataLoader from 'dataloader';
import { AdminContextProvider } from '../../admin-context/providers/admin-context.provider.js';
import { TenantAwareDBClient } from '../../app-providers/tenant-db-client.js';
import { TransactionsProvider } from '../../transactions/providers/transactions.provider.js';
import type { BankDepositMetadataProto, IGetBankDepositsByChargeIdsResult, IUpsertBankDepositChargeParams } from '../types.js';
import { BankDepositsProvider } from './bank-deposits.provider.js';
export declare class BankDepositChargesProvider {
    private db;
    private adminContextProvider;
    private transactionsProvider;
    private bankDepositsProvider;
    constructor(db: TenantAwareDBClient, adminContextProvider: AdminContextProvider, transactionsProvider: TransactionsProvider, bankDepositsProvider: BankDepositsProvider);
    private batchTransactionsByBankDeposits;
    getTransactionsByBankDepositLoader: DataLoader<string, import("../types.js").IGetTransactionsByBankDepositsResult[], string>;
    private batchBankDepositsByChargeIds;
    getBankDepositByChargeIdLoader: DataLoader<string, IGetBankDepositsByChargeIdsResult | null, string>;
    getDepositTransactionsByChargeId(chargeId: string, includeCharge?: boolean): Promise<import("../types.js").IGetDepositTransactionsByChargeIdResult[]>;
    upsertBankDepositCharge(params: IUpsertBankDepositChargeParams): Promise<void[]>;
    private batchBankDepositsMetadata;
    getBankDepositMetadataLoader: DataLoader<string, BankDepositMetadataProto, string>;
    getAllDepositsWithMetadata(): Promise<Array<BankDepositMetadataProto>>;
    unlinkChargesFromBankDepositsByChargeIds(chargeIds: string[]): Promise<void[]>;
    assignChargeToDeposit(chargeId: string, depositId: string): Promise<void>;
    createDepositFromCharge(chargeId: string, name: string): Promise<import("../types.js").IInsertBankDepositResult>;
}
