import type { CostEstimate } from '../types/planning.js'; import type { EmbeddingModelCapabilities, EmbeddingModelRegistryConfig, EmbeddingsProvider } from '../types/embeddings.js'; import type { ResponseCost, TokenUsage } from '../types/response.js'; /** * Default provenance for bundled embedding entries. * * Bundled dimensions and prices are defaults, not financial truth. Override them through * `embeddings.models.registry` when exact numbers matter. */ export declare const EMBEDDING_REGISTRY_PROVENANCE: { readonly verifiedAt: "2026-08-31"; readonly source: "provider documentation"; }; /** * Embedding models known to the runtime. * * Deliberately separate from `KNOWN_MODELS`: completion routing scores models on context window, * output price, and tool support, none of which an embedding model has. Mixing the two would make * every completion route consider models that cannot answer a chat request. */ export declare const KNOWN_EMBEDDING_MODELS: Record; /** * Stable names that resolve to a concrete embedding model. * * An alias is the durable API: changing which model `embed-quality` points at is a registry * change, but the vectors it produced are not interchangeable, so a stored index must be rebuilt * whenever the target moves. Pin the concrete model when that matters. */ export declare const EMBEDDING_MODEL_ALIASES: Record; /** An embedding model name resolved through aliases to a model, provider, and capabilities. */ export interface ResolvedEmbeddingModel { /** The name requested. */ requestedModel: string; /** The concrete model it resolves to. */ model: string; /** The provider it belongs to, or null when unknown. */ providerName: string | null; /** Its registry entry, when there is one. */ capabilities?: EmbeddingModelCapabilities; } /** Bundled and application embedding model entries merged, application entries winning. */ export declare function getEmbeddingModelRegistry(config?: EmbeddingModelRegistryConfig): Record; /** Bundled and application embedding aliases merged, application aliases winning. */ export declare function getEmbeddingModelAliases(config?: EmbeddingModelRegistryConfig): Record; /** * Resolves an alias and looks up embedding model capabilities. * * Runs on every `embed()` call, so it reads the bundled and application maps directly instead of * merging them into a new object first. */ export declare function resolveEmbeddingModel(model: string, config?: EmbeddingModelRegistryConfig): ResolvedEmbeddingModel; /** Every embedding model name in the registry, sorted. */ export declare function listEmbeddingModels(config?: EmbeddingModelRegistryConfig): string[]; /** Every embedding model in the registry that belongs to a provider, sorted. */ export declare function listEmbeddingModelsForProvider(providerName: string, config?: EmbeddingModelRegistryConfig): string[]; /** An embedding model's registry entry, resolving aliases first. */ export declare function getEmbeddingModelCapabilities(model: string, config?: EmbeddingModelRegistryConfig): EmbeddingModelCapabilities | undefined; /** Input for `estimateEmbeddingCost()`. */ export interface EmbeddingCostEstimateInput { /** The model, or an alias. */ model: string; /** Input tokens to price. */ inputTokens: number; /** Application registry entries and aliases. */ config?: EmbeddingModelRegistryConfig; } /** * Prices embedding input tokens. * * Embeddings bill on input only, so the shared `CostEstimate` shape is filled with a zero output * line rather than a different structure that callers would have to special-case. */ export declare function estimateEmbeddingCost(input: EmbeddingCostEstimateInput): CostEstimate; /** Prices the usage an embedding call reported. */ export declare function priceEmbeddingUsage(model: string, usage: TokenUsage, config?: EmbeddingModelRegistryConfig): ResponseCost; /** * Vector size a model produces, honoring a requested truncation. * * Returns `undefined` when the model is unknown, so a caller can fall back to the size the * provider actually returned rather than asserting one. */ export declare function embeddingDimensions(capabilities: EmbeddingModelCapabilities | undefined, requested?: number): number | undefined; /** * Largest batch the model and adapter both accept. * * The smaller of the two wins, and an undeclared limit means no limit, so an application-registered * model is never split more finely than it needs to be. */ export declare function resolveMaxBatchSize(capabilities: EmbeddingModelCapabilities | undefined, provider: EmbeddingsProvider): number;