import { ProposedRootBundle, SpokePoolClientsByChain, LoadDataReturnValue, Clients, CombinedRefunds, FillWithBlock, DepositWithBlock } from "../../interfaces";
import { SpokePoolClient } from "..";
import { BigNumber, Address } from "../../utils";
import winston from "winston";
import { SpokePoolManager } from "../SpokePoolClient/SpokePoolClientManager";
export declare const INFINITE_FILL_DEADLINE: BigNumber;
export declare class BundleDataClient {
    readonly logger: winston.Logger;
    readonly clients: Clients;
    readonly chainIdListForBundleEvaluationBlockNumbers: number[];
    readonly blockRangeEndBlockBuffer: {
        [chainId: number]: number;
    };
    private loadDataCache;
    private arweaveDataCache;
    private bundleTimestampCache;
    readonly spokePoolClientManager: SpokePoolManager;
    constructor(logger: winston.Logger, clients: Clients, spokePoolClients: {
        [chainId: number]: SpokePoolClient;
    }, chainIdListForBundleEvaluationBlockNumbers: number[], blockRangeEndBlockBuffer?: {
        [chainId: number]: number;
    });
    clearCache(): void;
    private loadDataFromCache;
    getBundleTimestampsFromCache(key: string): undefined | {
        [chainId: number]: number[];
    };
    setBundleTimestampsInCache(key: string, timestamps: {
        [chainId: number]: number[];
    }): void;
    static getArweaveClientKey(blockRangesForChains: number[][]): string;
    private getArweaveBundleDataClientKey;
    private loadPersistedDataFromArweave;
    getPendingRefundsFromValidBundles(): Promise<CombinedRefunds[]>;
    getPendingRefundsFromBundle(bundle: ProposedRootBundle): Promise<CombinedRefunds>;
    getApproximateRefundsForBlockRange(chainIds: number[], blockRanges: number[][]): Promise<CombinedRefunds>;
    getUpcomingDepositAmount(chainId: number, l2Token: Address, latestBlockToSearch: number): BigNumber;
    getNextBundleRefunds(): Promise<CombinedRefunds[]>;
    getExecutedRefunds(spokePoolClient: SpokePoolClient, relayerRefundRoot: string): {
        [tokenAddress: string]: {
            [relayer: string]: BigNumber;
        };
    };
    private deductExecutedRefunds;
    getRefundsFor(bundleRefunds: CombinedRefunds, relayer: Address, chainId: number, token: Address): BigNumber;
    getTotalRefund(refunds: CombinedRefunds[], relayer: Address, chainId: number, refundToken: Address): BigNumber;
    private loadArweaveData;
    loadData(blockRangesForChains: number[][], spokePoolClients: SpokePoolClientsByChain, attemptArweaveLoad?: boolean): Promise<LoadDataReturnValue>;
    private loadDataFromScratch;
    protected findMatchingFillEvent(deposit: DepositWithBlock, spokePoolClient: SpokePoolClient): Promise<FillWithBlock | undefined>;
    getBundleBlockTimestamps(chainIds: number[], blockRangesForChains: number[][], spokePoolClients: SpokePoolClientsByChain): Promise<{
        [chainId: string]: number[];
    }>;
}
//# sourceMappingURL=BundleDataClient.d.ts.map