import DataLoader from 'dataloader';
import type { Currency } from '../../../shared/enums.js';
import { TimelessDateString } from '../../../shared/types/index.js';
import { DBProvider } from '../../app-providers/db.provider.js';
import type { IGetLedgerRecordsByDatesParams, IInsertLedgerRecordsParams, IReplaceLedgerRecordsChargeIdParams, IUpdateLedgerRecordParams } from '../types.js';
export declare class LedgerProvider {
    private context;
    private dbProvider;
    cache: {
        get: <T>(key: import("node-cache").Key) => T | undefined;
        set: {
            <T>(key: import("node-cache").Key, value: T, ttl: number | string): boolean;
            <T>(key: import("node-cache").Key, value: T): boolean;
        };
        delete: (keys: import("node-cache").Key | import("node-cache").Key[]) => number;
        clear: () => void;
    };
    adminBusinessId: string;
    localCurrency: Currency;
    constructor(context: GraphQLModules.Context, dbProvider: DBProvider);
    private batchLedgerRecordsByIds;
    getLedgerRecordsByIdLoader: DataLoader<string, import("../types.js").IGetLedgerRecordsByIdsResult | undefined, import("node-cache").Key | import("node-cache").Key[]>;
    private batchLedgerRecordsByChargesIds;
    getLedgerRecordsByChargesIdLoader: DataLoader<string, import("../types.js").IGetLedgerRecordsByChargesIdsResult[], import("node-cache").Key | import("node-cache").Key[]>;
    private batchLedgerRecordsByFinancialEntityIds;
    getLedgerRecordsByFinancialEntityIdLoader: DataLoader<string, import("../types.js").IGetLedgerRecordsByFinancialEntityIdsResult[], import("node-cache").Key | import("node-cache").Key[]>;
    getLedgerRecordsByDates(params: IGetLedgerRecordsByDatesParams): Promise<import("../types.js").IGetLedgerRecordsByDatesResult[]>;
    getLedgerBalanceToDate(date: TimelessDateString): Promise<import("../types.js").IGetLedgerBalanceToDateResult[]>;
    updateLedgerRecord(params: IUpdateLedgerRecordParams): Promise<import("../types.js").IUpdateLedgerRecordResult[]>;
    insertLedgerRecords(params: IInsertLedgerRecordsParams): Promise<import("../types.js").IInsertLedgerRecordsResult[]>;
    private deleteLedgerRecordsByIds;
    deleteLedgerRecordsByIdLoader: DataLoader<string, undefined, string>;
    private deleteLedgerRecordsByChargeIds;
    deleteLedgerRecordsByChargeIdLoader: DataLoader<string, undefined, string>;
    replaceLedgerRecordsChargeId(params: IReplaceLedgerRecordsChargeIdParams): Promise<import("../types.js").IReplaceLedgerRecordsChargeIdResult[]>;
    lockLedgerRecords(date: TimelessDateString): Promise<import("../types.js").ILockLedgerRecordsResult[]>;
    clearCache(): void;
}
