/**
 * Local Embedding — Pluggable embedding interface for local memory.
 *
 * Provides a unified interface for text → vector embedding.
 * If no API config is provided, memory search falls back to FTS-only.
 */
export interface EmbeddingProvider {
    readonly dimensions: number;
    readonly model: string;
    embed(text: string): Promise<Float32Array>;
    embedBatch(texts: string[]): Promise<Float32Array[]>;
}
export interface EmbeddingApiConfig {
    /** OpenAI-compatible embedding API base URL */
    baseUrl: string;
    /** API key */
    apiKey: string;
    /** Model name (e.g. "text-embedding-3-small") */
    model: string;
    /** Expected dimensions (default: 1536 for text-embedding-3-small) */
    dimensions?: number;
    /** Request timeout in ms (default: 10000) */
    timeoutMs?: number;
    /**
     * Provider-specific API format.
     * - "openai": Standard /v1/embeddings with input:string[] → data[].embedding (default)
     * - "minimax": /v1/embeddings with texts:string[] → vectors[]
     * - "volcengine": /v1/embeddings/multimodal with input:[{type,text}] → data.embedding
     */
    format?: "openai" | "minimax" | "volcengine";
}
export declare class NullEmbeddingProvider implements EmbeddingProvider {
    readonly dimensions = 0;
    readonly model = "none";
    embed(_text: string): Promise<Float32Array>;
    embedBatch(_texts: string[]): Promise<Float32Array[]>;
}
export declare class ApiEmbeddingProvider implements EmbeddingProvider {
    readonly dimensions: number;
    readonly model: string;
    private baseUrl;
    private apiKey;
    private timeoutMs;
    private format;
    constructor(config: EmbeddingApiConfig);
    embed(text: string): Promise<Float32Array>;
    embedBatch(texts: string[]): Promise<Float32Array[]>;
    private buildRequest;
    private parseResponse;
}
export interface LocalEmbeddingConfig {
    api?: EmbeddingApiConfig;
}
/**
 * Create an embedding provider based on configuration.
 *
 * Resolution order:
 *   1. API config → ApiEmbeddingProvider
 *   2. No API config → NullEmbeddingProvider (FTS-only)
 */
export declare function createEmbeddingProvider(config?: LocalEmbeddingConfig): EmbeddingProvider;
/**
 * Known provider → format mapping.
 * Used only for the explicit ModelRegistry embedding binding.
 */
export declare const PROVIDER_EMBEDDING_REGISTRY: Record<string, {
    format: "openai" | "minimax" | "volcengine";
    baseUrl: string;
    defaultModel: string;
    defaultDimensions: number;
}>;
/**
 * Resolve EmbeddingApiConfig from a known provider name + API key.
 * Returns null if the provider has no known embedding endpoint.
 */
export declare function resolveProviderEmbeddingConfig(provider: string, apiKey: string, overrides?: {
    model?: string;
    baseUrl?: string;
    dimensions?: number;
}): EmbeddingApiConfig | null;
