import { type CatalogModel } from './model-catalog.js';
import type { FavoritesStore } from './favorites.js';
import type { BenchmarkStore } from './model-benchmarks.js';
/**
 * Parameters for catalog lifecycle operations.
 * Passed as a callback bundle so functions remain stateless
 * with respect to the ProviderRegistry class.
 */
export interface CatalogLifecycleContext {
    /** Returns the current catalog cache paths. */
    getCatalogCachePaths(): {
        cachePath: string;
        tmpPath: string;
    };
    /** Applies a freshly-fetched model list to the registry's catalog state. */
    updateCatalogState(models: readonly CatalogModel[], fetchedAt?: number): void;
    /** Returns a snapshot of the current catalog models (for diff/notify). */
    getCatalogModels(): readonly CatalogModel[];
    readonly favoritesStore: Pick<FavoritesStore, 'load'>;
    readonly benchmarkStore: Pick<BenchmarkStore, 'getTopBenchmarkModelIds'>;
    /** Triggers an async background catalog refresh (used by initCatalog). */
    refreshCatalog(): Promise<void>;
}
/**
 * Load the catalog from disk cache on startup. If the cache is absent or
 * stale, schedules a background refresh without blocking the caller.
 *
 * Extracted from ProviderRegistry.initCatalog() to isolate catalog
 * initialization logic from provider management concerns.
 */
export declare function initProviderCatalog(ctx: CatalogLifecycleContext): void;
/**
 * Fetch an updated catalog from the remote source, persist it to the local
 * cache, apply it to the registry state, and emit change notifications.
 *
 * Extracted from ProviderRegistry.refreshCatalog() to isolate catalog
 * refresh logic from provider management concerns.
 */
export declare function refreshProviderCatalog(ctx: CatalogLifecycleContext): Promise<void>;
//# sourceMappingURL=registry-catalog-lifecycle.d.ts.map