/// <reference types="node" />
/// <reference types="node" />
import { Commitment, PublicKey } from '@solana/web3.js';
import { BufferAndSlot } from './types';
import { Connection } from '../bankrun/bankrunConnection';
export type AccountToLoad = {
    publicKey: PublicKey;
    callbacks: Map<string, (buffer: Buffer, slot: number) => void>;
};
export declare class BulkAccountLoader {
    connection: Connection;
    commitment: Commitment;
    pollingFrequency: number;
    accountsToLoad: Map<string, AccountToLoad>;
    bufferAndSlotMap: Map<string, BufferAndSlot>;
    errorCallbacks: Map<string, (e: any) => void>;
    intervalId?: ReturnType<typeof setTimeout>;
    loadPromise?: Promise<void>;
    loadPromiseResolver: () => void;
    lastTimeLoadingPromiseCleared: number;
    mostRecentSlot: number;
    constructor(connection: Connection, commitment: Commitment, pollingFrequency: number);
    addAccount(publicKey: PublicKey, callback: (buffer: Buffer, slot: number) => void): Promise<string>;
    removeAccount(publicKey: PublicKey, callbackId: string): void;
    addErrorCallbacks(callback: (error: Error) => void): string;
    removeErrorCallbacks(callbackId: string): void;
    chunks<T>(array: readonly T[], size: number): T[][];
    load(): Promise<void>;
    loadChunk(accountsToLoadChunks: AccountToLoad[][]): Promise<void>;
    handleAccountCallbacks(accountToLoad: AccountToLoad, buffer: Buffer, slot: number): void;
    getBufferAndSlot(publicKey: PublicKey): BufferAndSlot | undefined;
    getSlot(): number;
    startPolling(): void;
    stopPolling(): void;
    log(msg: string): void;
    updatePollingFrequency(pollingFrequency: number): void;
}
//# sourceMappingURL=bulkAccountLoader.d.ts.map