import type { Logger } from "pino";
import type { AgentProvider, ProviderSnapshotEntry } from "./agent-sdk-types.js";
import type { ProviderDefinition } from "./provider-registry.js";
type ProviderSnapshotChangeListener = (entries: ProviderSnapshotEntry[], cwd?: string) => void;
type ProviderSnapshotManagerOptions = {
    ttlMs?: number;
    now?: () => number;
};
type ProviderSnapshotRefreshOptions = {
    cwd?: string;
    providers?: AgentProvider[];
};
export declare class ProviderSnapshotManager {
    private readonly providerRegistry;
    private readonly logger;
    private readonly snapshots;
    private readonly lastCheckedAts;
    private readonly warmUps;
    private readonly events;
    private destroyed;
    private readonly ttlMs;
    private readonly now;
    constructor(providerRegistry: Record<AgentProvider, ProviderDefinition>, logger: Logger, options?: ProviderSnapshotManagerOptions);
    getSnapshot(cwd?: string): ProviderSnapshotEntry[];
    refresh(options?: ProviderSnapshotRefreshOptions): Promise<void>;
    on(event: "change", listener: ProviderSnapshotChangeListener): this;
    off(event: "change", listener: ProviderSnapshotChangeListener): this;
    destroy(): void;
    private createLoadingEntries;
    private warmUp;
    private refreshProvider;
    private emitChange;
    private shouldRevalidate;
    private getOrCreateSnapshot;
    private resetSnapshotToLoading;
    private getProviderIds;
    private resolveRefreshProviders;
}
export {};
//# sourceMappingURL=provider-snapshot-manager.d.ts.map