/**
 * AgentManifestCache - Two-tier agent loading with LRU cache
 * Lightweight manifests at warmup, full content on demand
 */
export interface AgentManifest {
    name: string;
    path: string;
    category: string;
    description: string;
    estimatedTokens: number;
}
export interface CachedFullAgent {
    manifest: AgentManifest;
    content: string;
    loadedAt: number;
    lastAccess: number;
}
export interface AgentCacheStats {
    manifestCount: number;
    fullCacheSize: number;
    fullCacheMaxSize: number;
    totalEstimatedTokens: number;
    categories: string[];
}
export declare class AgentManifestCache {
    private static instances;
    private static defaultInstance;
    private manifests;
    private fullCache;
    private accessOrder;
    private maxFullCacheSize;
    private projectPath;
    private agentsBasePath;
    private constructor();
    static getInstance(projectPath?: string, maxFullCacheSize?: number): AgentManifestCache;
    warmUp(): Promise<void>;
    getManifest(name: string): AgentManifest | null;
    getFullAgent(name: string): Promise<CachedFullAgent | null>;
    listByCategory(category: string): AgentManifest[];
    listAll(): AgentManifest[];
    estimateTokenCost(names: string[]): {
        total: number;
        breakdown: Record<string, number>;
        wouldExceedBudget: boolean;
    };
    getStats(): AgentCacheStats;
    invalidate(): void;
    static resetInstance(): void;
    private findAgentsDir;
    private readPreview;
    private evictIfNeeded;
    private touchAccessOrder;
}
//# sourceMappingURL=AgentManifestCache.d.ts.map