import { YandexRequest } from './YandexRequest';
import { IYandexCheckOutPlace, IYandexRequestDownloadSound } from './interfaces';
import { AppContext } from '../../../index';
/**
 * Класс, отвечающий за загрузку аудиофайлов в навык Алисы
 * @see https://yandex.ru/dev/dialogs/alice/doc/resource-sounds-upload-docpage/ Документация API Яндекс.Диалогов
 *
 * @class YandexSoundRequest
 */
export declare class YandexSoundRequest extends YandexRequest {
    #private;
    /**
     * Идентификатор навыка, необходимый для корректного сохранения аудиофайлов
     * @see YandexRequest Базовый класс для работы с API Яндекса
     */
    skillId: string | null;
    /**
     * Создает экземпляр класса для работы с аудиофайлами в навыке Алисы
     * @param oauth Авторизационный токен для загрузки аудиофайлов
     * @param skillId Идентификатор навыка
     * @param appContext Контекст приложения
     * @see https://tech.yandex.ru/dialogs/alice/doc/resource-upload-docpage/ Документация по загрузке ресурсов
     * @see https://oauth.yandex.ru/verification_code Получение OAuth-токена
     */
    constructor(oauth: string | null | undefined, skillId: string | null | undefined, appContext: AppContext);
    /**
     * Проверка занятого места в хранилище аудиофайлов
     * @returns {Promise<IYandexCheckOutPlace | null>} Информация о занятом месте:
     * - total: общий доступный объем хранилища
     * - used: использованный объем хранилища
     * @remarks Для каждого аккаунта действует лимит в 1 ГБ. Учитывается размер сжатых файлов в формате OPUS
     */
    checkOutPlace(): Promise<IYandexCheckOutPlace | null>;
    /**
     * Загрузка аудиофайла с сервера
     * @param soundDir Путь к аудиофайлу на сервере
     * @returns {Promise<IYandexRequestDownloadSound | null>} Информация о загруженном аудиофайле:
     * - id: уникальный идентификатор файла
     * - skillId: идентификатор навыка
     * - size: размер файла в байтах
     * - originalName: оригинальное имя файла
     * - createdAt: дата и время загрузки
     * - isProcessed: статус обработки файла
     * - error: сообщение об ошибке (если есть)
     */
    downloadSoundFile(soundDir: string): Promise<IYandexRequestDownloadSound | null>;
    /**
     * Получение списка всех загруженных аудиофайлов
     * @returns {Promise<IYandexRequestDownloadSound[] | null>} Массив с информацией о загруженных аудиофайлах
     */
    getLoadedSounds(): Promise<IYandexRequestDownloadSound[] | null>;
    /**
     * Удаление конкретного аудиофайла по его идентификатору
     * @param soundId Идентификатор аудиофайла для удаления
     * @returns {Promise<string | null>} 'ok' при успешном удалении, null при ошибке
     */
    deleteSound(soundId: string): Promise<string | null>;
    /**
     * Удаление всех загруженных аудиофайлов
     * @returns {Promise<boolean>} true если все файлы успешно удалены, false при ошибке
     * @remarks Если при удалении произойдет ошибка, некоторые файлы могут остаться в хранилище
     */
    deleteSounds(): Promise<boolean>;
}
