import { VoicevoxApi } from "../api";
import { AudioQuery } from "../types";
import { QueueItem, QueueItemStatus, QueueEventType, QueueEventListener, QueueManager } from "./types";
import { AudioFileManager } from "./file-manager";
import { AudioGenerator } from "./audio-generator";
/**
 * VOICEVOXキュー管理クラス
 * 音声合成タスクのキュー管理と実行を担当
 */
export declare class VoicevoxQueueManager implements QueueManager {
    private queue;
    private isPlaying;
    private isPaused;
    private prefetchSize;
    private currentPlayingItem;
    private api;
    private fileManager;
    private eventManager;
    private audioGenerator;
    private audioPlayer;
    /**
     * コンストラクタ
     * @param apiInstance VOICEVOX APIクライアントのインスタンス
     * @param prefetchSize 事前生成するアイテム数
     */
    constructor(apiInstance: VoicevoxApi, prefetchSize?: number);
    /**
     * キューに新しいテキストを追加
     */
    enqueueText(text: string, speaker: number): Promise<QueueItem>;
    /**
     * キューに音声合成用クエリを追加
     * @param query 音声合成用クエリ
     * @param speaker 話者ID
     * @returns 作成されたキューアイテム
     */
    enqueueQuery(query: AudioQuery, speaker: number): Promise<QueueItem>;
    /**
     * キューからアイテムを削除
     * @param itemId 削除するアイテムのID
     * @returns 削除に成功したかどうか
     */
    removeItem(itemId: string): Promise<boolean>;
    /**
     * キューをクリア
     */
    clearQueue(): Promise<void>;
    startPlayback(): Promise<void>;
    pausePlayback(): Promise<void>;
    resumePlayback(): Promise<void>;
    /**
     * 次のアイテムを再生する
     * 最初のREADY状態のアイテムを再生します
     */
    playNext(): Promise<void>;
    /**
     * イベントリスナーを追加
     */
    addEventListener(event: QueueEventType, listener: QueueEventListener): void;
    /**
     * イベントリスナーを削除
     */
    removeEventListener(event: QueueEventType, listener: QueueEventListener): void;
    /**
     * 現在のキュー内のアイテムを取得
     */
    getQueue(): QueueItem[];
    /**
     * 特定のアイテムの状態を取得
     */
    getItemStatus(itemId: string): QueueItemStatus | null;
    /**
     * キュー処理実行
     * キューにある音声の生成と再生を処理
     */
    private processQueue;
    /**
     * 次のアイテムの音声を事前に生成 (プリフェッチ)
     * @private
     */
    private prefetchAudio;
    /**
     * アイテムの状態を更新し、イベントを発火
     * @param item 状態を更新するアイテム
     * @param status 新しい状態
     * @private
     */
    private updateItemStatus;
    /**
     * バイナリーデータを一時ファイルに保存
     * @param audioData 音声バイナリーデータ
     * @returns 保存した一時ファイルのパス
     */
    saveTempAudioFile(audioData: ArrayBuffer): Promise<string>;
    /**
     * AudioGeneratorインスタンスを取得
     * @returns AudioGeneratorインスタンス
     */
    getAudioGenerator(): AudioGenerator;
    /**
     * FileManagerインスタンスを取得
     * @returns AudioFileManagerインスタンス
     */
    getFileManager(): AudioFileManager;
    /**
     * API インスタンスを取得
     * @returns VoicevoxApi インスタンス
     */
    getApi(): VoicevoxApi;
}
//# sourceMappingURL=manager.d.ts.map