import { EventFragment } from '@ethersproject/abi';
import { ProcessedContract, OptimizedLookup } from '../info-processors/types';
interface CacheData {
    version: string;
    timestamp: number;
    lookup: OptimizedLookup;
    facets: Map<string, ProcessedContract>;
    events: {
        cache: Map<string, Map<string, EventFragment>>;
        timestamps: Map<string, number>;
    };
}
export declare class AbiCache {
    private static instance;
    private readonly cacheDir;
    private readonly cacheFile;
    private cache;
    private isDirty;
    private savePromise;
    private static readonly SAVE_DEBOUNCE;
    private static readonly VERSION;
    private constructor();
    static getInstance(): AbiCache;
    private ensureCacheDirectory;
    private validateSerializedCache;
    load(): Promise<CacheData | null>;
    save(data: CacheData): Promise<void>;
    private deserializeFunctionInfo;
    private deserializeParameters;
    private deserializeFacetInfo;
    private deserializeEventFragment;
    private deserializeEventInfo;
    private mapToObject;
    private validateCache;
    private validateLookup;
    private validateFacets;
    clear(): Promise<void>;
    maintain(): Promise<void>;
    private optimizeCache;
    getCacheStats(): Promise<Record<string, any>>;
    private arrayToSet;
    private setToArray;
    private serializeLookup;
    private serializeFacetInfo;
}
export {};
//# sourceMappingURL=abi-cache.d.ts.map