import { CancelToken, ReadonlySubject } from "@iyio/common";
import { ConvoTts, ConvoTtsRequest, ConvoTtsService } from "./convo-types.js";
export declare class TtsCtrl {
    readonly ttsService: ConvoTtsService | undefined;
    constructor(ttsService: ConvoTtsService | undefined);
    private _isDisposed;
    get isDisposed(): boolean;
    dispose(): void;
    private readonly _convertingTextToSpeech;
    get convertingTextToSpeechSubject(): ReadonlySubject<boolean>;
    get convertingTextToSpeech(): boolean;
    private readonly _readingText;
    get readingTextSubject(): ReadonlySubject<boolean>;
    get readingText(): boolean;
    private readonly _provider;
    get providerSubject(): ReadonlySubject<string | null>;
    get provider(): string | null;
    set provider(value: string | null);
    private readonly _model;
    get modelSubject(): ReadonlySubject<string | null>;
    get model(): string | null;
    set model(value: string | null);
    private readonly _voice;
    get voiceSubject(): ReadonlySubject<string | null>;
    get voice(): string | null;
    set voice(value: string | null);
    textToSpeech(request: ConvoTtsRequest, cancel?: CancelToken): ConvoQueuedTextToSpeech | null;
    private convertToAudioAsync;
    private queue;
    private isFlushing;
    private flushAsync;
}
export interface ConvoQueuedTextToSpeech {
    request: ConvoTtsRequest;
    tts?: ConvoTts;
    cancel: CancelToken;
}
