export interface ModelCatalogModel {
    id: string;
    description: string;
    metadata?: Record<string, unknown>;
}
export interface ModelCatalogProvider {
    metadata?: Record<string, unknown>;
    models: ModelCatalogModel[];
}
export interface ModelCatalogManifest {
    version: 1;
    updatedAt: string;
    metadata?: Record<string, unknown>;
    providers: Record<string, ModelCatalogProvider>;
    /** True when this is the built-in fallback because no usable cache or network catalog was available. */
    stale?: boolean;
}
export interface ModelCatalogCacheStatus {
    path: string;
    exists: boolean;
    fresh: boolean;
    ageMs: number;
}
export interface GetModelCatalogOptions {
    url?: string;
    ttlMs?: number;
    forceRefresh?: boolean;
    fetchJson?: (url: string) => Promise<unknown>;
    now?: Date;
}
export declare const DEFAULT_MODEL_CATALOG_TTL_MS: number;
export declare const BUILTIN_MODEL_CATALOG: ModelCatalogManifest;
export declare function validateModelCatalogManifest(value: unknown): value is ModelCatalogManifest;
export declare function getModelCatalog(projectDir: string, options?: GetModelCatalogOptions): Promise<ModelCatalogManifest>;
export declare function getModelCatalogCacheStatus(projectDir: string, now?: Date, ttlMs?: number): Promise<ModelCatalogCacheStatus>;
export declare function readModelCatalogCache(projectDir: string): Promise<ModelCatalogManifest | null>;
export declare function writeModelCatalogCache(projectDir: string, manifest: ModelCatalogManifest): Promise<void>;
export declare function listCatalogModels(manifest: ModelCatalogManifest, provider: string): ModelCatalogModel[];
//# sourceMappingURL=modelCatalog.d.ts.map