import { BigNumber } from "ethers";
import { Transfer } from "../../model";
import { ChainId } from "../web3/model";
declare type TransfersStore = {
    [chainId: number]: {
        [address: string]: {
            [depositId: number]: Transfer;
        };
    };
};
declare type UsersTransfersStore = {
    [address: string]: {
        pending: Transfer[];
        filled: Transfer[];
    };
};
export declare class TransfersRepository {
    transfers: TransfersStore;
    usersTransfers: UsersTransfersStore;
    insertTransfer(chainId: ChainId, depositorAddr: string, depositId: number, transfer: Transfer): void;
    updateFilledAmount(chainId: ChainId, depositorAddr: string, depositId: number, filled: BigNumber, fillTxHash: string, appliedRelayerFeePct: BigNumber): void;
    updateRelayerFee(sourceChainId: number, depositorAddr: string, depositId: number, newRelayerFeePct: BigNumber, speedUpTxHash: string, timestamp: number): void;
    getTransfersByChainAndDepositor(chainId: ChainId, depositorAddr: string): Transfer[];
    setDepositorPendingTransfers(depositorAddr: string, transfers: Transfer[]): void;
    setDepositorFilledTransfers(depositorAddr: string, transfers: Transfer[]): void;
    aggregateTransfers(): void;
    getFilledTransfers(depositorAddr: string, limit?: number, offset?: number): Transfer[];
    getAllFilledTransfers(limit?: number, offset?: number): Transfer[];
    getPendingTransfers(depositorAddr: string, limit?: number, offset?: number): Transfer[];
    getAllPendingTransfers(limit?: number, offset?: number): Transfer[];
    countFilledTransfers(depositorAddr: string): number;
    countAllFilledTransfers(): number;
    countPendingTransfers(depositorAddr: string): number;
    countAllPendingTransfers(): number;
}
export {};
