/**
 * HuggingFace Embedder Implementation
 *
 * Optimized embedder using HuggingFace's embedding models
 * with support for both API-based and local inference
 */
import { BaseEmbedder, BaseEmbedderOptions } from './BaseEmbedder.js';
import { AutoTokenizer, AutoModel } from '@xenova/transformers';
/**
 * HuggingFace Embedder Options
 */
export interface HuggingFaceEmbedderOptions extends BaseEmbedderOptions {
    /**
     * Model to use for embeddings
     */
    model: string;
    /**
     * HuggingFace API token
     */
    apiToken?: string;
    /**
     * HuggingFace API URL
     * @default 'https://api-inference.huggingface.co/models/'
     */
    apiUrl?: string;
    /**
     * Whether to use local inference (requires optional dependencies)
     * @default false
     */
    useLocal?: boolean;
    /**
     * Local model path (only used if useLocal is true)
     * Only relevant when useLocal is true
     */
    localModelPath?: string;
    /**
     * Maximum sequence length for the model
     * @default 512
     */
    maxLength?: number;
    /**
     * Whether to use the average of token embeddings (vs CLS token)
     * @default true
     */
    useAveragePooling?: boolean;
    /**
     * Timeout for API requests in milliseconds
     * @default 30000 (30 seconds)
     */
    timeout?: number;
}
/**
 * Let TypeScript know about optional dependencies
 */
declare global {
    interface Window {
        transformer?: any;
    }
}
/**
 * HuggingFace Embedder Implementation
 *
 * Uses HuggingFace's embedding models with optimized performance
 * Supports both API-based and local inference
 */
export declare class HuggingFaceEmbedder extends BaseEmbedder<HuggingFaceEmbedderOptions> {
    protected _model: string;
    protected _apiToken: string;
    protected _apiUrl: string;
    protected client: any;
    protected _localModel: AutoModel | null;
    protected _tokenizer: AutoTokenizer | null;
    protected _isLocal: boolean;
    constructor(options: HuggingFaceEmbedderOptions);
    embed(text: string): Promise<Float32Array>;
    embedBatch(texts: string[]): Promise<Float32Array[]>;
    protected executeWithRetry<T>(operation: () => Promise<T>, maxRetries?: number, initialBackoff?: number, maxBackoff?: number): Promise<T>;
    protected executeBatchWithRetry<T>(operation: () => Promise<T>, maxRetries?: number, initialBackoff?: number, maxBackoff?: number): Promise<T>;
    protected isTransientError(error: Error): boolean;
    protected embedText(text: string): Promise<Float32Array>;
    private initializeLocalModel;
    private getLocalEmbedding;
    private getApiEmbedding;
}
//# sourceMappingURL=HuggingFaceEmbedder.d.ts.map