import type { TSchema } from "typebox"; /** * Narrow structural view of the host's model compat config. packages/ai must stay * config-agnostic, so only tool-schema-relevant fields are modeled here; the host's * ModelCompatConfig remains structurally assignable. */ export type ToolSchemaModelCompat = { toolSchemaProfile?: string; unsupportedToolSchemaKeywords?: string[]; omitEmptyArrayItems?: boolean; }; /** Extracts the compat record whether callers pass a model (`{ compat }`) or the compat itself. */ export declare function extractToolSchemaModelCompat(modelOrCompat: { compat?: unknown; } | ToolSchemaModelCompat | undefined): ToolSchemaModelCompat | undefined; /** JSON Schema keywords this model/provider rejects in tool schemas. */ export declare function resolveUnsupportedToolSchemaKeywords(modelOrCompat: { compat?: unknown; } | ToolSchemaModelCompat | undefined): ReadonlySet; /** Whether empty `items: {}` on array schemas must be omitted for this model/provider. */ export declare function shouldOmitEmptyArrayItems(modelOrCompat: { compat?: unknown; } | ToolSchemaModelCompat | undefined): boolean; export type ToolParameterSchemaOptions = { modelProvider?: string; modelId?: string; modelCompat?: ToolSchemaModelCompat; }; /** Return a provider-compatible JSON schema for a model-facing tool. */ export declare function normalizeToolParameterSchema(schema: unknown, options?: ToolParameterSchemaOptions): TSchema;