import { Interface, EventFragment } from '@ethersproject/abi';
import { FacetInfo, FacetEvent, TypechainContractInfo, FunctionSelectorInfo } from './types';
export declare class TypechainProcessor {
    private static instance;
    private optimizedLookup;
    private facetsCache;
    private factoryMap;
    private abiCache;
    private initialized;
    private initializationPromise;
    private readonly enableCache;
    private readonly typechainPath;
    private eventHandlers;
    private selectorLookupCache;
    private static readonly VERSION;
    private static readonly CACHE_DURATION;
    private static readonly ABI_PATTERNS;
    private static readonly CONCURRENCY_LIMIT;
    private static readonly FACTORY_PATTERN;
    private eventCache;
    private static readonly EVENT_CACHE_DURATION;
    private eventCacheTimestamps;
    private constructor();
    static getInstance(typechainPath?: string, enableCache?: boolean): TypechainProcessor;
    private ensureInitialized;
    initialize(): Promise<void>;
    private loadFactoryMappings;
    private findTypechainFiles;
    getFactoryInfo(contractName: string): Promise<string | null>;
    listFactories(): Promise<Map<string, string>>;
    private buildOptimizedLookup;
    private updateLookupStructures;
    private processFacet;
    private cleanContractName;
    private extractAndCleanAbi;
    private findCompleteJsonStructure;
    private validateAndCleanAbi;
    private processContractFunctions;
    private processContractEvents;
    findContractBySelectors(selectors: string[]): Promise<TypechainContractInfo | null>;
    private createContractInfo;
    private processParameters;
    private cleanAbiString;
    private getCachedData;
    batchProcessSelectors(selectorsBatch: string[][]): Promise<(TypechainContractInfo | null)[]>;
    getContractInfo(contractName: string): Promise<FacetInfo | null>;
    getPerformanceMetrics(): Record<string, number>;
    clearCache(): void;
    private validateAndNormalizeAbi;
    private validateFunctionAbi;
    private validateEventAbi;
    private recoverFromError;
    subscribeToEvents(contractName: string, eventNames: string[], callback: (event: FacetEvent, data: any) => void): Promise<boolean>;
    getFacetInterfaces(): Promise<Map<string, Interface>>;
    getFunctionsBySelector(selector: string): Promise<FunctionSelectorInfo | null>;
    getFacetSelectors(facetName: string): Promise<Set<string> | null>;
    validateSelector(selector: string): Promise<boolean>;
    getDiagnostics(): Promise<Record<string, any>>;
    private saveToCache;
    private loadFromCache;
    private rebuildIndexes;
    reloadContract(contractName: string): Promise<boolean>;
    private warmupSelectorCache;
    private performCacheMaintenance;
    private convertFunctionsToMap;
    private convertEventsToMap;
    private convertMapToObject;
    registerEventHandler(contractName: string, eventNames: string[], callback: (event: FacetEvent, data: any) => void): Promise<boolean>;
    removeEventHandler(eventSignature: string): boolean;
    clearEventHandlers(): void;
    handleEvent(eventSignature: string, eventData: any): Promise<void>;
    private findEventBySignature;
    getRegisteredEventSignatures(): string[];
    hasEventHandler(eventSignature: string): boolean;
    maintainCache(): Promise<void>;
    getCacheStats(): Promise<Record<string, any>>;
    getEventsByAddress(address: string): Promise<Map<string, EventFragment>>;
    private extractContractNameFromPath;
    getEventsByFacetName(facetName: string): Promise<Map<string, EventFragment>>;
    private cleanEventCache;
}
//# sourceMappingURL=typechain-processor.d.ts.map