import type { ProvidersConfig } from '../types/config.js'; import type { EmbeddingConfig, EmbeddingRequest, EmbeddingResponse, EmbeddingsProvider } from '../types/embeddings.js'; import { AuditLogger } from '../ops/audit-logger.js'; import { MetricsCollector } from '../ops/metrics.js'; import { RateLimiter } from '../ops/rate-limiter.js'; interface ManagerRuntime { metrics?: MetricsCollector; auditLogger?: AuditLogger; rateLimiter?: RateLimiter; /** Provider credentials used to auto-register adapters. */ providers?: ProvidersConfig; } /** * Provider-neutral embeddings with routing, caching, batching, budget, retry, audit, and metrics. * * The operation family behind `ai.embed()`. It is usable standalone, and when it is reached through * `NexusAI` it shares that runtime's metrics collector, audit log, and rate limiter, so embedding * spend appears alongside completion spend instead of being invisible. */ export declare class EmbeddingManager { private readonly config; private readonly runtime; private readonly providers; private readonly tokenizer; private readonly metrics; private readonly auditLogger; private readonly rateLimiter; private readonly localCache?; private autoRegistered; constructor(config?: EmbeddingConfig, runtime?: ManagerRuntime); /** Registers a provider under a name. Returns the manager, for chaining. */ registerEmbeddingProvider(name: string, provider: EmbeddingsProvider): this; /** Whether a provider is registered. */ hasEmbeddingProvider(name: string): boolean; /** Every registered provider's name. */ listEmbeddingProviders(): string[]; /** * Embeds one text or a batch. * * The single-string form returns one vector at `vectors[0]`; a batch returns them in input order * regardless of how many provider calls the split required. */ embed(request: EmbeddingRequest): Promise; /** Embeds one text and returns the vector alone, for callers that never need the metadata. */ embedOne(text: string, options?: Omit): Promise; private resolveRoute; /** * Uses the adapter's own default model when the request named none. * * Without this a caller with a single non-OpenAI adapter would be routed to the `auto` alias * target, which that adapter does not serve. */ private withProviderDefaultModel; private ensureAutoRegistered; private runBatches; private callWithRetry; private callProvider; private postProcess; private enforceCostBudget; private cacheContext; private readCache; private writeCache; private logAudit; } export {};