/**
 * Curated model metadata + normalization.
 *
 * Live provider listing endpoints return model IDs and little else (rarely
 * capabilities or pricing). We merge those IDs with a curated capability/pricing
 * map so the catalog always knows what a model can do, what it costs, and
 * whether it is current. When no key/live listing is available, the curated
 * entries also serve as the fallback catalog.
 *
 * Matching is prefix-based (longest match wins) so dated provider IDs like
 * `gpt-4o-2024-08-06` resolve to the `gpt-4o` entry, while `gpt-4o-mini-*`
 * resolves to its own entry.
 */
import type { AIModel, AIProviderKey } from './types.js';
export interface NormalizeInput {
    provider: AIProviderKey;
    providerModelId: string;
    source: AIModel['source'];
    lastSyncedAt: string;
    /** Override status (e.g. 'available' from a live listing). */
    status?: AIModel['status'];
    /** Provider-supplied display name, if any. */
    displayName?: string;
}
/** Merge a (live or fallback) model id with curated metadata into an AIModel. */
export declare function normalizeModel(input: NormalizeInput): AIModel;
/** Curated fallback catalog for a provider (used when no live listing). */
export declare function curatedFallbackCatalog(provider: AIProviderKey, lastSyncedAt: string): AIModel[];
//# sourceMappingURL=catalog.d.ts.map