import { ISound } from './interfaces';
import { TSoundProcessing } from '../../core';
import { BotController } from '../../controller';
/**
 * @class Sound
 * Класс для обработки и воспроизведения звуков в различных платформах.
 *
 * Основные возможности:
 * - Поддержка различных платформ (Алиса, Маруся, VK, Telegram, Viber)
 * - Использование стандартных и пользовательских звуков
 * - Встраивание звуков в текстовые сообщения
 * - Гибкая настройка звукового сопровождения
 *
 * Ограничения по платформам:
 *
 * Алиса:
 * - Аудиофайлы: MP3, до 1MB
 * - Длительность: до 30 секунд
 * - Стандартные звуки: <speaker audio="alice-xxx">
 * - Синтез речи: SSML-разметка
 *
 * Маруся:
 * - Аудиофайлы: MP3, до 1MB
 * - Длительность: до 30 секунд
 * - Стандартные звуки: <speaker audio="marusia-xxx">
 * - Синтез речи: SSML-разметка
 *
 * VK:
 * - Аудиофайлы: MP3, OGG, до 20MB
 * - Длительность: до 5 минут
 * - Голосовые сообщения: OGG (opus)
 *
 * Telegram:
 * - Аудиофайлы: MP3, M4A, до 50MB
 * - Длительность: без ограничений
 * - Голосовые сообщения: OGG (opus)
 *
 * Viber:
 * - Аудиофайлы: MP3, WAV, до 10MB
 * - Длительность: до 3 минут
 *
 * @example
 * ```ts
 * import { Sound } from './components/sound/Sound';
 *
 * // Создание экземпляра
 * const sound = new Sound();
 *
 * // Использование своих звуков
 * sound.sounds = [
 *     // Звук колокольчика
 *     {
 *         key: '#myKey#',
 *         sounds: ['<speaker audio="alice-xxx">']
 *     },
 * ];
 * // Получение текста со звуками
 * const result = await sound.getSounds('Текст сообщения #myKey#');
 * ```
 */
export declare class Sound {
    /**
     * Массив звуков для воспроизведения.
     * Каждый элемент массива представляет собой объект с параметрами звука.
     */
    sounds: ISound[];
    /**
     * Флаг использования стандартных звуков.
     * Если true, используются стандартные звуки платформы.
     * Актуально для Алисы и Маруси.
     *
     * @default true
     * @example
     * ```ts
     * // Использовать стандартные звуки
     * sound.isUsedStandardSound = true;
     *
     * // Использовать только пользовательские звуки
     * sound.isUsedStandardSound = false;
     * ```
     */
    isUsedStandardSound: boolean;
    /**
     * Конструктор класса Sound.
     * Инициализирует пустой массив звуков и включает использование стандартных звуков.
     */
    constructor();
    /**
     * Получает текст с встроенными звуками для конкретной платформы.
     *
     * Процесс работы:
     * 1. Проверяет наличие текста
     * 2. Определяет тип приложения
     * 3. Создает соответствующий обработчик звуков
     * 4. Применяет звуки к тексту
     *
     * @param {string | null} text - Исходный текст для обработки
     * @param soundProcessing
     * @param controller
     */
    getSounds<TResult = unknown>(text: string | null, soundProcessing: TSoundProcessing<TResult>, controller: BotController): Promise<TResult>;
}
