import type { ApiInterface } from '../types/api';
import type { SpeakerIdModelConfig, SpeakerIdInitResult, SpeakerIdProcessResult, SpeakerEmbeddingResult, RegisterSpeakerResult, RemoveSpeakerResult, GetSpeakersResult, IdentifySpeakerResult, VerifySpeakerResult, SpeakerIdFileProcessResult, SpeakerIdFileWindowProcessResult, ValidateResult } from '../types/interfaces';
/**
 * Service for Speaker Identification functionality
 */
export declare class SpeakerIdService {
    private initialized;
    private embeddingDim;
    private api;
    constructor(api: ApiInterface);
    /**
     * Get the embedding dimension
     */
    getEmbeddingDim(): number;
    /**
     * Validate that the Sherpa-ONNX library is properly loaded
     * @returns Promise that resolves with validation result
     */
    validateLibrary(): Promise<ValidateResult>;
    /**
     * Initialize Speaker ID with the provided model configuration
     * @param config Configuration for Speaker ID model
     * @returns Promise that resolves with initialization result
     */
    init(config: SpeakerIdModelConfig): Promise<SpeakerIdInitResult>;
    /**
     * Process audio samples for speaker identification
     * @param sampleRate Sample rate of the audio
     * @param samples Audio samples as number array
     * @returns Promise that resolves with processing result
     */
    processSamples(sampleRate: number, samples: number[]): Promise<SpeakerIdProcessResult>;
    /**
     * Compute speaker embedding from processed audio
     * @returns Promise that resolves with embedding result
     */
    computeEmbedding(): Promise<SpeakerEmbeddingResult>;
    /**
     * Reset the incremental speaker embedding stream without releasing the model.
     * Useful after a failed live turn so the next turn starts from a clean buffer.
     */
    resetStream(): Promise<{
        success: boolean;
        error?: string;
    }>;
    /**
     * Register a speaker with the given name and embedding
     * @param name Name of the speaker to register
     * @param embedding Speaker's embedding vector
     * @returns Promise that resolves with registration result
     */
    registerSpeaker(name: string, embedding: number[]): Promise<RegisterSpeakerResult>;
    /**
     * Remove a speaker from the database
     * @param name Name of the speaker to remove
     * @returns Promise that resolves with removal result
     */
    removeSpeaker(name: string): Promise<RemoveSpeakerResult>;
    /**
     * Get all registered speakers
     * @returns Promise that resolves with speakers result
     */
    getSpeakers(): Promise<GetSpeakersResult>;
    /**
     * Identify a speaker based on embedding
     * @param embedding Speaker embedding vector
     * @param threshold Similarity threshold (0-1), default: 0.5
     * @returns Promise that resolves with identification result
     */
    identifySpeaker(embedding: number[], threshold?: number): Promise<IdentifySpeakerResult>;
    /**
     * Verify if the embedding matches a specific speaker
     * @param name Name of the speaker to verify
     * @param embedding Speaker embedding vector
     * @param threshold Similarity threshold (0-1), default: 0.5
     * @returns Promise that resolves with verification result
     */
    verifySpeaker(name: string, embedding: number[], threshold?: number): Promise<VerifySpeakerResult>;
    /**
     * Process audio file to create embedding
     * @param filePath Path to the audio file
     * @returns Promise that resolves with file processing result
     */
    processFile(filePath: string): Promise<SpeakerIdFileProcessResult>;
    processFileWindow(filePath: string, startTimeMs: number, durationMs: number): Promise<SpeakerIdFileWindowProcessResult>;
    /**
     * Full speaker identification flow from audio file
     * @param filePath Path to the audio file
     * @param threshold Similarity threshold (0-1), default: 0.5
     * @returns Promise that resolves with identification result
     */
    identifyFromFile(filePath: string, threshold?: number): Promise<IdentifySpeakerResult>;
    /**
     * Register a speaker from audio file
     * @param name Name of the speaker to register
     * @param filePath Path to the audio file
     * @returns Promise that resolves with registration result
     */
    registerFromFile(name: string, filePath: string): Promise<RegisterSpeakerResult>;
    /**
     * Release Speaker ID resources
     * @returns Promise that resolves with release result
     */
    release(): Promise<{
        released: boolean;
    }>;
}
//# sourceMappingURL=SpeakerIdService.d.ts.map