/// <reference types="node" />
import { Access, Attachment, Chat, Environment, Location, Mention, MessageDetails, User, HTTP_METHOD, CHANNEL_OPERATION, SuggestionObject, BOT_ALERT_OPERATION } from '../common.js';
import HandlerResponse from '../response-objects/handler-response.js';
import VoidResponse from '../response-objects/void-response.js';
import { Message } from '../response-objects/message.js';
interface BotHandlerRequest {
    user: User;
    name: string;
    unique_name: string;
    environment?: Environment;
    access?: Access;
}
interface BotWelcomeHandlerRequest extends BotHandlerRequest {
    newuser: boolean;
}
interface BotMessageHandlerRequest extends BotHandlerRequest {
    attachments: Array<Attachment>;
    links: Array<string>;
    message_details: MessageDetails;
    location: Location;
    raw_message: string;
    message: string;
    mentions: Array<Mention>;
    chat: Chat;
}
interface BotContextHandlerRequest extends BotHandlerRequest {
    chat: Chat;
    context_id: string;
    answers: Record<string, SuggestionObject>;
    attachments: Array<Attachment>;
    context_summary: Record<string, unknown>;
}
interface BotMentionHandlerRequest extends BotHandlerRequest {
    location: Location;
    chat: Chat;
    message: string;
    raw_message: string;
    message_details: MessageDetails;
    mentions: Array<Mention>;
}
interface BotMenuActionHandlerRequest extends BotHandlerRequest {
    action_name: string;
    location: Location;
    chat: Chat;
    sub_action: string;
}
interface BotWebHookHandlerRequest extends BotHandlerRequest {
    headers: Record<string, string>;
    param: Record<string, string>;
    body: Record<string, unknown>;
    http_method: HTTP_METHOD;
}
interface BotParticipationHandlerRequest extends BotHandlerRequest {
    operation: CHANNEL_OPERATION;
    data: Record<string, unknown>;
    chat: Chat;
}
interface BotCallHandlerRequest extends BotHandlerRequest {
    operation: BOT_ALERT_OPERATION;
    data: Record<string, unknown>;
}
export default class BotHandler {
    welcomeHandler(handler: (req: BotWelcomeHandlerRequest, res: Message, ...args: Array<unknown>) => Promise<unknown>): void;
    messageHandler(handler: (req: BotMessageHandlerRequest, res: HandlerResponse, ...args: Array<unknown>) => Promise<unknown>): void;
    contextHandler(handler: (req: BotContextHandlerRequest, res: HandlerResponse, ...args: Array<unknown>) => Promise<unknown>): void;
    mentionHandler(handler: (req: BotMentionHandlerRequest, res: HandlerResponse, ...args: Array<unknown>) => Promise<unknown>): void;
    menuActionHandler(handler: (req: BotMenuActionHandlerRequest, res: HandlerResponse, ...args: Array<unknown>) => Promise<unknown>): void;
    webHookHandler(handler: (req: BotWebHookHandlerRequest, res: HandlerResponse, ...args: Array<unknown>) => Promise<unknown>): void;
    participationHandler(handler: (req: BotParticipationHandlerRequest, res: HandlerResponse, ...args: Array<unknown>) => Promise<unknown>): void;
    callHandler(handler: (req: BotCallHandlerRequest, res: VoidResponse, ...args: Array<unknown>) => Promise<VoidResponse>): void;
    newHandlerResponse(): HandlerResponse;
    newVoidResponse(): VoidResponse;
    util: {
        getAttachedFile(attachments: Array<Attachment>): Promise<Array<Buffer | undefined>>;
    };
}
export {};
