import { AppContext, BotController } from '../../../index';
import { BasePlatform } from '../Base/Base';
import { IViberContent } from './interfaces/IViberPlatform';
/**
 * Адаптер, обеспечивающий поддержку платформы Viber. Позволяет разрабатывать чат-ботов для Viber на TypeScript с использованием кросс-платформенного функционала: обработка текстовых запросов, работа с карточками и кнопками.
 *
 * Подключение адаптера не требует изменения существующей бизнес-логики: после интеграции
 * все команды и обработчики, написанные для umbot, автоматически становятся доступны для Viber.
 * Единый интерфейс позволяет одновременно использовать одну бизнес-логику для нескольких
 * платформ (Viber, VK, Алиса и др.) без дублирования кода.
 *
 * Этот адаптер автоматически обрабатывает входящие webhook`и от мессенджера Viber,
 * преобразует их в унифицированный формат фреймворка и формирует ответ,
 * совместимый с требованиями платформы. Подключается одной строкой и
 * не мешает работе других адаптеров (например, для Алисы или Маруси).
 *
 * Поддерживает:
 * - голосовые и текстовые запросы;
 * - карточки, кнопки;
 *
 * Подключается как любой другой адаптер: `bot.use(new ViberAdapter(token))`.
 * Несколько адаптеров могут работать одновременно — система сама выберет подходящий
 * на основе заголовков и структуры входящего запроса.
 * @example
 * ```ts
 * // Простейший бот для Viber, который отвечает на приветствие
 * import { Bot } from 'umbot';
 * import { ViberAdapter } from 'umbot/plugins';
 *
 * const bot = new Bot()
 *     .use(new ViberAdapter('YOUR_VIBER_TOKEN'))
 *     .addCommand('start', ['привет'], (_text, ctx) => {
 *         ctx.text = 'Привет! Я твой первый бот для Viber';
 *     });
 *
 * bot.start('localhost', 3000);
 * ```
 *
 * @see Bot
 * @see BotController
 * @see BasePlatform
 */
export declare class ViberAdapter extends BasePlatform<IViberContent | string> {
    platformName: string;
    isVoice: boolean;
    limit: number;
    signatureName: string;
    init(appContext: AppContext): void;
    isPlatformOnQuery(query: IViberContent, headers?: Record<string, unknown>): boolean;
    setQueryData(query: IViberContent, controller: BotController): Promise<boolean>;
    getContent(controller: BotController): Promise<string>;
    /**
     * Заполняет данные о пользователе в NLU.
     * Разбивает полное имя на компоненты (username, first_name, last_name)
     * @param controller Контроллер приложения
     * @param userName Полное имя пользователя
     * @protected
     */
    protected setNlu(controller: BotController, userName?: string): void;
    static isVoice(): boolean;
    getQueryExample(query: string, userId: string): Record<string, unknown>;
}
