/// <reference types="node" />
import { EventEmitter } from 'events';
import { JsonObject } from 'type-fest';
import Session from '../session/Session';
import { Connector } from '../bot/Connector';
import { RequestContext } from '../types';
import TwilioClient from './TwilioClient';
import WhatsappContext from './WhatsappContext';
import WhatsappEvent from './WhatsappEvent';
import { WhatsappRequestBody, WhatsappRequestContext } from './WhatsappTypes';
declare type ConnectorOptionsWithoutClient = {
    accountSid: string;
    authToken: string;
    phoneNumber: string;
    origin?: string;
};
declare type ConnectorOptionsWithClient = {
    client: TwilioClient;
    origin?: string;
};
export declare type WhatsappConnectorOptions = ConnectorOptionsWithoutClient | ConnectorOptionsWithClient;
export default class WhatsappConnector implements Connector<WhatsappRequestBody, TwilioClient> {
    _client: TwilioClient;
    constructor(options: WhatsappConnectorOptions);
    get platform(): 'whatsapp';
    get client(): TwilioClient;
    getUniqueSessionKey(body: WhatsappRequestBody): string;
    updateSession(session: Session, body: WhatsappRequestBody): Promise<void>;
    mapRequestToEvents(body: WhatsappRequestBody): WhatsappEvent[];
    createContext(params: {
        event: WhatsappEvent;
        session: Session | null;
        initialState?: JsonObject | null;
        requestContext?: RequestContext;
        emitter?: EventEmitter | null;
    }): WhatsappContext;
    verifySignature({ body, url, headers, }: {
        headers: WhatsappRequestContext['headers'];
        url: string;
        body: WhatsappRequestBody;
    }): boolean;
    preprocess({ url, headers, rawBody, body }: WhatsappRequestContext): {
        shouldNext: boolean;
        response?: undefined;
    } | {
        shouldNext: boolean;
        response: {
            status: number;
            body: {
                error: {
                    message: string;
                    request: {
                        rawBody: string;
                        headers: {
                            'x-twilio-signature': string | undefined;
                        };
                    };
                };
            };
        };
    };
}
export {};
//# sourceMappingURL=WhatsappConnector.d.ts.map