import { Talk } from '../types/voice';
import { VoiceEngine } from './VoiceEngine';
/**
 * AivisSpeech audio query parameter overrides
 * Reference:
 * https://github.com/Aivis-Project/AivisSpeech-Engine?tab=readme-ov-file#voicevox-api-%E3%81%A8%E3%81%AE%E4%BA%92%E6%8F%9B%E6%80%A7%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6
 */
export interface AivisSpeechQueryParameterOverrides {
    speedScale?: number;
    pitchScale?: number;
    intonationScale?: number;
    tempoDynamicsScale?: number;
    volumeScale?: number;
    prePhonemeLength?: number;
    postPhonemeLength?: number;
    pauseLength?: number | null;
    pauseLengthScale?: number;
    outputSamplingRate?: number;
    outputStereo?: boolean;
}
/**
 * AivisSpeech voice synthesis engine
 */
export declare class AivisSpeechEngine implements VoiceEngine {
    private apiEndpoint;
    private queryOverrides;
    fetchAudio(input: Talk, speaker: string): Promise<ArrayBuffer>;
    private adjustEmotionParameters;
    /**
     * Apply user-provided overrides to audio query payload
     */
    private applyQueryOverrides;
    /**
     * Update override map while allowing undefined to reset values
     */
    private updateQueryOverrides;
    private hasOverride;
    getTestMessage(textVoiceText?: string): string;
    /**
     * Set custom API endpoint URL
     * @param apiUrl custom API endpoint URL
     */
    setApiEndpoint(apiUrl: string): void;
    /**
     * Set query parameter overrides in batch
     * @param overrides Audio query parameter overrides
     */
    setQueryParameters(overrides: AivisSpeechQueryParameterOverrides): void;
    setSpeedScale(speedScale?: number): void;
    setPitchScale(pitchScale?: number): void;
    setIntonationScale(intonationScale?: number): void;
    setTempoDynamicsScale(tempoDynamicsScale?: number): void;
    setVolumeScale(volumeScale?: number): void;
    setPrePhonemeLength(prePhonemeLength?: number): void;
    setPostPhonemeLength(postPhonemeLength?: number): void;
    setPauseLength(pauseLength?: number | null): void;
    setPauseLengthScale(pauseLengthScale?: number): void;
    setOutputSamplingRate(outputSamplingRate?: number): void;
    setOutputStereo(outputStereo?: boolean): void;
    /**
     * Build endpoint URL with optional query parameters
     */
    private buildUrl;
}
