/// <reference types="node" />
import { EventEmitter } from 'events';
import { JsonObject } from 'type-fest';
import { MessengerClient } from 'messaging-api-messenger';
import Session from '../session/Session';
import { Connector } from '../bot/Connector';
import FacebookBaseConnector, { FacebookBaseConnectorOptions } from './FacebookBaseConnector';
import MessengerContext from './MessengerContext';
import MessengerEvent from './MessengerEvent';
import { MessengerRawEvent, MessengerRequestBody, MessengerRequestContext } from './MessengerTypes';
export declare type MessengerConnectorOptions = FacebookBaseConnectorOptions<MessengerClient> & {
    skipLegacyProfile?: boolean;
    mapPageToAccessToken?: (pageId: string) => Promise<string>;
};
export default class MessengerConnector extends FacebookBaseConnector<MessengerRequestBody, MessengerClient> implements Connector<MessengerRequestBody, MessengerClient> {
    _skipLegacyProfile: boolean;
    _mapPageToAccessToken: ((pageId: string) => Promise<string>) | null;
    constructor(options: MessengerConnectorOptions);
    _getRawEventsFromRequest(body: MessengerRequestBody): MessengerRawEvent[];
    _getPageIdFromRawEvent(rawEvent: MessengerRawEvent): string | null;
    _isStandby(body: MessengerRequestBody): boolean;
    _profilePicExpired(user: {
        profilePic: string;
    }): boolean;
    get platform(): 'messenger';
    getUniqueSessionKey(bodyOrEvent: MessengerRequestBody | MessengerEvent): string | null;
    updateSession(session: Session, bodyOrEvent: MessengerRequestBody | MessengerEvent): Promise<void>;
    mapRequestToEvents(body: MessengerRequestBody): MessengerEvent[];
    createContext(params: {
        event: MessengerEvent;
        session?: Session;
        initialState?: JsonObject;
        requestContext?: MessengerRequestContext;
        emitter?: EventEmitter;
    }): Promise<MessengerContext>;
}
//# sourceMappingURL=MessengerConnector.d.ts.map