import { SpokePoolClientsByChain, LoadDataReturnValue, Clients, FillWithBlock, DepositWithBlock, CachingMechanismInterface } from "../../interfaces";
import { SpokePoolClient } from "..";
import winston from "winston";
import { SpokePoolManager } from "../SpokePoolClient/SpokePoolClientManager";
export declare class BundleDataClient {
    readonly logger: winston.Logger;
    readonly clients: Clients;
    readonly chainIdListForBundleEvaluationBlockNumbers: number[];
    readonly blockRangeEndBlockBuffer: {
        [chainId: number]: number;
    };
    readonly arweaveTopicCache?: CachingMechanismInterface | undefined;
    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;
    }, arweaveTopicCache?: CachingMechanismInterface | undefined);
    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 getPersistedArweaveTopicFromCache;
    private backfillPersistedArweaveTopicCache;
    private loadPersistedDataFromArweave;
    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[];
    }>;
}
