import { AbstractTTSClient } from "../core/abstract-tts";
import type { SpeakOptions, TTSCredentials, UnifiedVoice, WordBoundaryCallback } from "../types";
/**
 * ElevenLabs TTS credentials
 */
export interface ElevenLabsCredentials extends TTSCredentials {
    /**
     * ElevenLabs API key
     */
    apiKey?: string;
}
/**
 * ElevenLabs TTS client
 */
export declare class ElevenLabsTTSClient extends AbstractTTSClient {
    /**
     * ElevenLabs API key
     */
    private apiKey;
    /**
     * Base URL for ElevenLabs API
     */
    private baseUrl;
    /**
     * Create a new ElevenLabs TTS client
     * @param credentials ElevenLabs credentials
     */
    constructor(credentials?: ElevenLabsCredentials);
    /**
     * Check if the credentials are valid
     * @returns Promise resolving to true if credentials are valid, false otherwise
     */
    checkCredentials(): Promise<boolean>;
    /**
     * Get available voices from the provider
     * @returns Promise resolving to an array of voice objects
     */
    protected _getVoices(): Promise<any[]>;
    /**
     * Convert text to audio bytes
     * @param text Text to synthesize
     * @param options Synthesis options
     * @returns Promise resolving to audio bytes
     */
    synthToBytes(text: string, options?: SpeakOptions): Promise<Uint8Array>;
    /**
     * Synthesize text to a byte stream
     * @param text Text to synthesize
     * @param options Synthesis options
     * @returns Promise resolving to a readable stream of audio bytes
     */
    synthToBytestream(text: string, options?: SpeakOptions): Promise<ReadableStream<Uint8Array>>;
    /**
     * Start playback with word boundary callbacks
     * @param text Text to speak
     * @param callback Callback function for word boundaries
     * @param options Synthesis options
     */
    startPlaybackWithCallbacks(text: string, callback: WordBoundaryCallback, options?: SpeakOptions): Promise<void>;
    /**
     * Map ElevenLabs voice objects to unified format
     * @param rawVoices Array of ElevenLabs voice objects
     * @returns Promise resolving to an array of unified voice objects
     */
    protected _mapVoicesToUnified(rawVoices: any[]): Promise<UnifiedVoice[]>;
    /**
     * Get voice by ID
     * @param voiceId Voice ID
     * @returns Promise resolving to voice details
     */
    getVoice(voiceId: string): Promise<UnifiedVoice | null>;
}
