import { BotController, IRequestSend } from '../../../index';
import { BasePlatform } from '../Base/Base';
import { ISberSmartAppWebhookRequest, ISberSmartAppWebhookResponse } from './interfaces/ISmartAppPlatform';
/**
 * Адаптер, обеспечивающий полную поддержку платформы Салют от Сбер(SmartApp). Позволяет разрабатывать навыки для "Салют"(SmartApp) на TypeScript с использованием всего функционала платформы: от обработки голосовых запросов до работы с карточками и кнопками.
 *
 * Этот адаптер автоматически обрабатывает входящие webhook`и от SmartApp,
 * преобразует их в унифицированный формат фреймворка и формирует ответ,
 * совместимый с требованиями платформы. Подключается одной строкой и
 * не мешает работе других адаптеров (например, для Telegram или VK).
 *
 * Поддерживает:
 * - голосовые и текстовые запросы;
 * - карточки, кнопки, TTS-эффекты;
 *
 * Подключается как любой другой адаптер: `bot.use(new SmartAppAdapter(token))`.
 * Несколько адаптеров могут работать одновременно — система сама выберет подходящий
 * на основе заголовков и структуры входящего запроса.
 * @example
 * // Простейший навык, который отвечает на приветствие
 * import { Bot } from 'umbot';
 * import { SmartAppAdapter } from 'umbot/plugins';
 *
 * const bot = new Bot()
 *     .use(new SmartAppAdapter('YOUR_SMARTAPP_TOKEN'))
 *     .addCommand('start', ['привет'], (_text, ctx) => {
 *         ctx.text = 'Привет! Я твой первый навык для SmartApp';
 *     });
 *
 * bot.start('localhost', 3000);
 *
 * @see Bot
 * @see BotController
 * @see BasePlatform
 */
export declare class SmartAppAdapter extends BasePlatform<string | ISberSmartAppWebhookRequest> {
    #private;
    platformName: string;
    isPlatformOnQuery(query: ISberSmartAppWebhookRequest, headers?: Record<string, unknown>): boolean;
    setQueryData(query: ISberSmartAppWebhookRequest, controller: BotController): boolean;
    getContent(controller: BotController): ISberSmartAppWebhookResponse;
    /**
     * Формирует ответ с оценкой навыка
     * @returns {Promise<ISberSmartAppWebhookResponse>} Объект ответа для webhook`а
     */
    getRatingContext(controller: BotController): ISberSmartAppWebhookResponse;
    /**
     * Получает данные пользователя из хранилища
     * @returns {Promise<unknown | string>} Данные пользователя или строка с ошибкой
     * @protected
     */
    protected _getUserData(controller: BotController): Promise<unknown>;
    /**
     * Сохраняет данные пользователя в хранилище
     */
    protected _setUserData(data: unknown, controller: BotController): Promise<IRequestSend<unknown>>;
    setLocalStorage(data: unknown, controller: BotController): Promise<void>;
    /**
     * Получает данные из локального хранилища
     * @returns  Данные из хранилища или строка с ошибкой
     */
    getLocalStorage<TStorageResult = unknown>(controller: BotController): Promise<TStorageResult>;
    isLocalStorage(): boolean;
    send(): boolean;
    getQueryExample(query: string, userId: string, count: number): Record<string, unknown>;
}
