import type { Api, Model } from "./types"; interface CacheEntry { models: Model[]; fresh: boolean; authoritative: boolean; updatedAt: number; /** * Hash of the static catalog slice that was merged into `models` when this * row was written. `resolveProviderModels` compares against the current * static fingerprint and bypasses the static+cache re-merge when they * match — the cache already incorporates the same static state. */ staticFingerprint: string; /** IDs returned by the authoritative dynamic provider catalog, when retained. */ dynamicModelIds: string[] | undefined; dynamicModelProvenance: string | undefined; } /** Close the shared cache only when it owns the exact requested database path. */ export declare function closeModelCache(dbPath?: string): boolean; export declare function readModelCache(providerId: string, ttlMs: number, now: () => number, dbPath?: string): CacheEntry | null; export declare function writeModelCache(providerId: string, updatedAt: number, models: Model[], authoritative: boolean, staticFingerprint: string, dbPath?: string, dynamicModelIds?: readonly string[], dynamicModelProvenance?: string): void; export declare function insertModelCacheIfAbsent(providerId: string, updatedAt: number, models: Model[], authoritative: boolean, staticFingerprint: string, dbPath?: string, dynamicModelIds?: readonly string[], dynamicModelProvenance?: string): boolean; export declare function updateModelCacheIfUnchanged(providerId: string, expectedUpdatedAt: number, expectedDynamicModelIds: readonly string[] | undefined, expectedDynamicModelProvenance: string | undefined, expectedModels: readonly Model[], updatedAt: number, models: Model[], authoritative: boolean, staticFingerprint: string, dbPath?: string, dynamicModelIds?: readonly string[], dynamicModelProvenance?: string): boolean; export {};