/** Pure normalization of account /models metadata; no transport, credentials, or model-name rules. */ export declare const ACCOUNT_MODEL_CATALOG_LIMITS: Readonly<{ maxBytes: number; maxModels: 512; maxIdLength: 200; maxNameLength: 256; maxEndpoints: 16; maxEndpointLength: 128; maxEfforts: 32; maxEffortLength: 64; maxMediaTypes: 32; }>; export type AccountModelApi = 'anthropic-messages' | 'openai-responses' | 'openai-completions'; export type AccountModelHttpEndpoint = '/v1/messages' | '/responses' | '/chat/completions'; export type AccountModelCategory = 'powerful' | 'versatile' | 'lightweight'; type RecognizedEndpoint = AccountModelHttpEndpoint | 'ws:/responses'; /** Advertised data only; consumers must not turn unfamiliar labels into supported Core controls. */ export interface AccountModelReasoning { readonly advertisedEfforts: readonly string[]; readonly unmappedEfforts: readonly string[]; readonly adaptiveThinking?: boolean; readonly minThinkingBudget?: number; readonly maxThinkingBudget?: number; } export interface AccountModelDescriptor { readonly id: string; readonly name: string; readonly api: AccountModelApi; readonly contextWindow: number; /** Independent server prompt limit; absence is not replaced with the context window. */ readonly maxInputTokens?: number; readonly maxTokens: number; readonly input: readonly ('text' | 'image')[]; readonly category?: AccountModelCategory; readonly reasoning: AccountModelReasoning; readonly evidence: { /** Recognized endpoint literals only, never arbitrary URLs or query strings. */ readonly endpoints: readonly RecognizedEndpoint[]; readonly unsupportedEndpointCount: number; readonly selectedEndpoint: AccountModelHttpEndpoint; readonly apiSource: 'advertised-native' | 'advertised-priority'; readonly policySource: 'server-enabled' | 'account-available-id'; readonly contextWindowSource: 'max_context_window_tokens' | 'max_prompt_tokens'; readonly visionMediaTypes?: readonly string[]; readonly categoryDiagnostic?: 'missing' | 'unknown' | 'invalid'; }; } export interface AccountModelRejection { readonly id?: string; readonly code: string; } export interface AccountModelCatalog { readonly models: readonly AccountModelDescriptor[]; readonly rejected: readonly AccountModelRejection[]; } export interface AccountModelCatalogOptions { readonly nativeApis?: ReadonlyMap; /** Proof supplied by the account-bound caller; used only when policy is absent. */ readonly availableModelIds?: ReadonlySet; } /** * Normalize an account-bound /models response without model-name inference. * JSON text is byte-bounded before parsing. Already-parsed objects have a * bounded known-field work budget; unknown fields are deliberately not visited, * so callers accepting objects must also bound the original transport body. * Returned candidates do not replace request-time OAuth/account checks. */ export declare function normalizeAccountModelCatalog(raw: unknown, options?: AccountModelCatalogOptions): AccountModelCatalog; export {}; //# sourceMappingURL=account-model-catalog.d.ts.map