import { ChronikCacheConfig, HistoryResponse, CacheMetadata, CacheStatistics, ChronikClientInterface } from './types';
declare class ChronikCache {
    private chronik;
    private maxTxLimit;
    private defaultPageSize;
    private cacheDir;
    private maxCacheSize;
    private enableLogging;
    private logger;
    db: any;
    private statusMap;
    wsManager: any;
    private updateLocks;
    private scriptToAddressMap;
    private failover;
    private tokenStatusMap;
    private tokenUpdateLocks;
    globalMetadataCache: Map<string, CacheMetadata>;
    globalMetadataCacheLimit: number;
    updateQueue: any;
    txUpdateQueue: any;
    private addressMemoryCache;
    private tokenMemoryCache;
    private stats;
    private debounceTimers;
    private memoryCacheCleanupInterval?;
    constructor(chronik: ChronikClientInterface, config?: ChronikCacheConfig);
    private _debounce;
    private _readCache;
    private _writeCache;
    private _updateGlobalMetadata;
    _getGlobalMetadata(identifier: string, isToken?: boolean): Promise<CacheMetadata | null>;
    private _initWebsocketForAddress;
    private _initWebsocketForToken;
    private _getCacheStatus;
    private _setCacheStatus;
    private _isUpdating;
    private _checkTxLimit;
    private _checkAndUpdateCache;
    private _updateCache;
    private _convertScriptToAddress;
    script(type: string, hash: string): {
        history: (pageOffset?: number, pageSize?: number) => Promise<HistoryResponse>;
    };
    clearAddressCache(address: string): Promise<void>;
    clearAllCache(): Promise<void>;
    getAddressHistory(address: string, pageOffset?: number, pageSize?: number): Promise<HistoryResponse>;
    private _getPageFromCache;
    address(address: string): {
        history: (pageOffset?: number, pageSize?: number) => Promise<HistoryResponse>;
    };
    private _checkAndUpdateTokenCache;
    private _updateTokenCache;
    getTokenHistory(tokenId: string, pageOffset?: number, pageSize?: number): Promise<HistoryResponse>;
    tokenId(tokenId: string): {
        history: (pageOffset?: number, pageSize?: number) => Promise<HistoryResponse>;
    };
    private _quickGetTxCount;
    clearTokenCache(tokenId: string): Promise<void>;
    private _updateUnconfirmedTx;
    private _updatePageUnconfirmedTxs;
    private _getTokenPageFromCache;
    private _maintainGlobalMetadataCacheLimit;
    getCacheStatus(identifier: string, isToken?: boolean): string;
    getStatistics(): Promise<CacheStatistics>;
    private _resetMemoryCache;
    private _startMemoryCacheExpirationCheckTimer;
    destroy(): void;
}
export = ChronikCache;
