import type { ModelCapabilityMetadata, ModelSelectionSignals } from "./model.js"; import type { ModelReasoningCapabilities } from "./reasoning.js"; export type ProviderDiscoveryResponseShape = "openai" | "anthropic" | "google" | "codex" | "bedrock"; export type DiscoveredProviderModel = ModelSelectionSignals & { id: string; capabilities?: Readonly>; metadata?: ModelCapabilityMetadata; reasoning?: ModelReasoningCapabilities; }; export type ModelDiscoveryDiagnosticCode = "invalid_model" | "duplicate_model" | "provider_hidden_model"; export type ModelDiscoveryDiagnostic = Readonly<{ code: ModelDiscoveryDiagnosticCode; provider: string; index: number; message: string; }>; export type ModelDiscoveryProtocolErrorCode = "invalid_payload" | "missing_model_array" | "no_usable_models"; export declare class ModelDiscoveryProtocolError extends Error { readonly code: ModelDiscoveryProtocolErrorCode; readonly provider: string; readonly payloadSnippet?: string; constructor(code: ModelDiscoveryProtocolErrorCode, provider: string, message: string, payload?: unknown, options?: ErrorOptions); } export type DecodeModelDiscoveryOptions = Readonly<{ provider?: string; refreshedAt?: string; onDiagnostic?: (diagnostic: ModelDiscoveryDiagnostic) => void; }>; export type DecodeReasoningCapabilitiesOptions = Readonly<{ provider?: string; refreshedAt?: string; }>; export declare function decodeReasoningCapabilities(entry: unknown, options?: DecodeReasoningCapabilitiesOptions): ModelReasoningCapabilities | undefined; export declare function decodeModelDiscovery(shape: ProviderDiscoveryResponseShape, payload: unknown, options?: DecodeModelDiscoveryOptions): DiscoveredProviderModel[];