import { BotController, AppContext } from '../../../index';
import { BasePlatform } from '../Base/Base';
import { IMarusiaRequestState, IMarusiaResponse, IMarusiaWebhookRequest, IMarusiaWebhookResponse } from './interfaces/IMarusiaPlatform';
/**
 * Адаптер, обеспечивающий полную поддержку платформы Маруси от ВК. Позволяет разрабатывать навыки для Маруси на TypeScript с использованием всего функционала платформы: от обработки голосовых запросов до работы с карточками и кнопками.
 *
 * Этот адаптер автоматически обрабатывает входящие webhook`и от Маруси,
 * преобразует их в унифицированный формат фреймворка и формирует ответ,
 * совместимый с требованиями платформы. Подключается одной строкой и
 * не мешает работе других адаптеров (например, для Telegram или VK).
 *
 * Поддерживает:
 * - голосовые и текстовые запросы;
 * - сохранение состояния (user/application/session);
 * - карточки, кнопки, TTS-эффекты;
 * - health-check (`ping` → `pong`);
 *
 * Подключается как любой другой адаптер: `bot.use(new MarusiaAdapter(token))`.
 * Несколько адаптеров могут работать одновременно — система сама выберет подходящий
 * на основе заголовков и структуры входящего запроса.
 * @example
 * ```ts
 * // Простейший навык, который отвечает на приветствие
 * import { Bot } from 'umbot';
 * import { MarusiaAdapter } from 'umbot/plugins';
 *
 * const bot = new Bot()
 *     .use(new MarusiaAdapter('YOUR_MARUSIA_TOKEN'))
 *     .addCommand('start', ['привет'], (_text, ctx) => {
 *         ctx.text = 'Привет! Я твой первый навык для Маруси';
 *     });
 *
 * bot.start('localhost', 3000);
 * ```
 *
 * @see Bot
 * @see BotController
 * @see BasePlatform
 */
export declare class MarusiaAdapter extends BasePlatform<string | IMarusiaWebhookRequest> {
    #private;
    platformName: string;
    init(appContext: AppContext): void;
    isPlatformOnQuery(query: IMarusiaWebhookRequest, headers?: Record<string, unknown>): boolean;
    setQueryData(query: IMarusiaWebhookRequest, controller: BotController): boolean;
    /**
     * Формирует ответ для пользователя.
     * Собирает текст, TTS, карточки и кнопки в единый объект ответа
     * @returns {Promise<IMarusiaResponse>} Объект ответа для Маруси
     */
    protected _getResponse(controller: BotController): Promise<IMarusiaResponse>;
    getContent(controller: BotController, stateData?: Record<string, unknown> | null): Promise<IMarusiaWebhookResponse>;
    soundProcessing(controller: BotController): Promise<void>;
    getLocalStorage<TStorageResult = unknown>(controller: BotController): TStorageResult;
    isLocalStorage(controller: BotController): boolean;
    send(): boolean;
    getQueryExample(query: string, userId: string, count: number, state: IMarusiaRequestState | string): Record<string, unknown>;
}
