import { IViberApi, IViberGetUserDetails, IViberParams, IViberRichMediaParams, IViberSender, IViberWebhookParams } from './interfaces';
import { IViberButton } from '../Viber/interfaces/IViberPlatform';
import { AppContext } from '../../../index';
/**
 * Класс для взаимодействия с API Viber
 * Предоставляет методы для отправки сообщений, файлов и других типов контента
 * @see (https://developers.viber.com/docs/api/rest-bot-api/) Смотри тут
 */
export declare class ViberRequest {
    #private;
    /**
     * Токен доступа к Viber API
     */
    token: string | null;
    /**
     * Создает экземпляр класса для работы с API Viber
     * Устанавливает токен из конфигурации приложения, если он доступен
     */
    constructor(appContext: AppContext);
    /**
     * Инициализирует токен доступа к Viber API
     * @param token Токен для доступа к API
     */
    initToken(token: string): void;
    /**
     * Отправляет запрос к Viber API
     * @param method Название метода API
     * @returns Результат выполнения метода или null при ошибке
     */
    call<T extends IViberApi>(method: string): Promise<T | null>;
    /**
     * Получает информацию о пользователе Viber
     * Запрос можно отправлять не более 2 раз в течение 12 часов для каждого пользователя
     * @param id Уникальный идентификатор пользователя
     * @returns Информация о пользователе или null при ошибке
     *
     * Возвращаемые данные:
     * - id: уникальный идентификатор
     * - name: имя пользователя
     * - avatar: URL аватара
     * - country: код страны
     * - language: язык устройства
     * - primary_device_os: ОС устройства
     * - api_version: версия API
     * - viber_version: версия Viber
     * - mcc: код страны
     * - mnc: код сети
     * - device_type: тип устройства
     */
    getUserDetails(id: string): Promise<IViberGetUserDetails | null>;
    /**
     * Отправляет сообщение пользователю
     * Сообщение можно отправить только после того, как пользователь подпишется на бота
     * @param receiver ID пользователя Viber
     * @param sender Информация об отправителе:
     * - name: имя (до 28 символов)
     * - avatar: URL аватара (до 100 Кб, 720x720)
     * @param text Текст сообщения
     * @param params Дополнительные параметры:
     * - type: тип сообщения (text, picture, video, file, location, contact, sticker, carousel, url)
     * - tracking_data: данные для отслеживания
     * - min_api_version: минимальная версия API
     * - media: URL контента
     * - thumbnail: URL превью
     * - size: размер файла
     * - duration: длительность видео/аудио
     * - file_name: имя файла
     * - contact: контактная информация
     * - location: координаты
     * - sticker_id: ID стикера
     * @returns Результат отправки или null при ошибке
     */
    sendMessage(receiver: string, sender: IViberSender | string, text: string, params?: IViberParams | null): Promise<IViberApi | null>;
    /**
     * Устанавливает webhook для получения событий
     * @param url URL для получения событий
     * @param params Дополнительные параметры:
     * - event_types: типы событий
     * - send_name: отправлять имя
     * - send_photo: отправлять фото
     * @returns Результат установки или null при ошибке
     */
    setWebhook(url: string, params?: IViberWebhookParams | null): Promise<IViberApi | null>;
    /**
     * Отправляет карточку с кнопками
     * @param receiver ID пользователя Viber
     * @param richMedia Массив кнопок для отображения
     * @param params Дополнительные параметры:
     * - tracking_data: данные для отслеживания
     * - min_api_version: минимальная версия API
     * - alt_text: альтернативный текст
     * @returns Результат отправки или null при ошибке
     */
    richMedia(receiver: string, richMedia: IViberButton[], params?: IViberRichMediaParams | null): Promise<IViberApi | null>;
    /**
     * Отправляет файл
     * @param receiver ID пользователя Viber
     * @param file Путь к файлу или его содержимое
     * @param params Дополнительные параметры:
     * - tracking_data: данные для отслеживания
     * - min_api_version: минимальная версия API
     * - file_name: имя файла
     * - size: размер файла
     * @returns Результат отправки или null при ошибке
     */
    sendFile(receiver: string, file: string, params?: IViberParams | null): Promise<IViberApi | null> | null;
}
