import type { AccountTransportProviderId, TokenAuthSourceType } from './auth.js'; import type { ReasoningTier } from './providers.js'; export type CapabilitySupport = 'supported' | 'unsupported' | 'partial' | 'unknown'; export type ToolChoiceMode = 'auto' | 'required' | 'none'; export type StructuredOutputStrategy = 'json-object' | 'json-schema' | 'tool-call'; export type JsonSchemaSupportLevel = 'none' | 'json-schema' | 'json-schema-subset' | 'tool-input-schema'; export interface ToolUseCapabilities { support: CapabilitySupport; parallelCalls: CapabilitySupport; streamedArgumentDeltas: CapabilitySupport; resultContinuation: CapabilitySupport; toolChoice: readonly ToolChoiceMode[]; } export interface StreamingCapabilities { support: CapabilitySupport; nativeProviderChunks: CapabilitySupport; } export interface JsonSchemaCapabilities { support: CapabilitySupport; level: JsonSchemaSupportLevel; strict: boolean; unsupportedKeywords?: readonly string[]; stringEnumsOnly?: boolean; maxDepth?: number; } export interface StructuredOutputCapabilities { support: CapabilitySupport; strategies: readonly StructuredOutputStrategy[]; jsonSchema: JsonSchemaCapabilities; } export interface ReasoningCapabilities { support: CapabilitySupport; tier: ReasoningTier; controls: CapabilitySupport; visibleSummaries: CapabilitySupport; hiddenSignatures: CapabilitySupport; tokenUsageAccounting: CapabilitySupport; } export interface ModalityCapabilities { input: readonly ('text' | 'image' | 'audio' | 'video' | 'file')[]; output: readonly ('text' | 'json' | 'tool-call')[]; } export interface AuthCapabilities { tokenSources: readonly TokenAuthSourceType[]; accountTransports: readonly AccountTransportProviderId[]; } export interface ProviderCapabilities { tools: ToolUseCapabilities; streaming: StreamingCapabilities; structuredOutput: StructuredOutputCapabilities; reasoning: ReasoningCapabilities; modalities: ModalityCapabilities; auth: AuthCapabilities; } export interface ModelCapabilities extends ProviderCapabilities { contextWindowTokens?: number; maxOutputTokens?: number; } export declare const geminiUnsupportedJsonSchemaKeywords: readonly ["additionalProperties", "unevaluatedProperties", "patternProperties", "propertyNames", "contains", "dependencies", "dependentRequired", "dependentSchemas", "$schema", "$id", "$anchor", "$comment"]; //# sourceMappingURL=capabilities.d.ts.map