///
import { EventEmitter } from 'events';
import { FacebookBatchQueue } from 'facebook-batch';
import { JsonObject } from 'type-fest';
import { MessengerClient } from 'messaging-api-messenger';
import Context from '../context/Context';
import Session from '../session/Session';
import { RequestContext } from '../types';
import MessengerEvent from './MessengerEvent';
import * as MessengerTypes from './MessengerTypes';
export declare type MessengerContextOptions = {
appId?: string;
client: MessengerClient;
event: MessengerEvent;
session?: Session;
initialState?: JsonObject;
requestContext?: RequestContext;
customAccessToken?: string;
batchQueue?: FacebookBatchQueue | null;
emitter?: EventEmitter;
};
declare class MessengerContext extends Context {
_appId: string | null;
_customAccessToken: string | null;
_personaId: string | null;
_batchQueue: FacebookBatchQueue | null;
constructor({ appId, client, event, session, initialState, requestContext, customAccessToken, batchQueue, emitter, }: MessengerContextOptions);
get platform(): 'messenger';
get accessToken(): string | null;
_getMethodOptions(options: O): {
accessToken?: string;
} & O;
_getSenderActionMethodOptions(options: O): {
accessToken?: string;
personaId?: string;
} & O;
_getSendMethodOptions(options: O): {
accessToken?: string;
personaId?: string;
messagingType: MessengerTypes.MessagingType;
} & O;
usePersona(personaId: string): void;
useAccessToken(accessToken: string): void;
typing(milliseconds: number): Promise;
sendText(text: string, options?: MessengerTypes.SendOption): Promise;
getUserProfile(options?: {
fields?: MessengerTypes.UserProfileField[];
}): Promise;
getUserPersistentMenu(): Promise;
setUserPersistentMenu(attrs: MessengerTypes.PersistentMenu, options?: {
composerInputDisabled?: boolean;
}): Promise;
deleteUserPersistentMenu(): Promise;
sendSenderAction(senderAction: MessengerTypes.SenderAction, options?: MessengerTypes.SendOption): Promise;
typingOn(options?: MessengerTypes.SendOption): Promise;
typingOff(options?: MessengerTypes.SendOption): Promise;
markSeen(): Promise;
passThreadControl(targetAppId: number, metadata?: string): Promise<{
success: true;
} | undefined>;
passThreadControlToPageInbox(metadata?: string): Promise<{
success: true;
} | undefined>;
takeThreadControl(metadata?: string): Promise<{
success: true;
} | undefined>;
requestThreadControl(metadata?: string): Promise<{
success: true;
} | undefined>;
getThreadOwner(): Promise<{
appId: string;
} | undefined>;
isThreadOwner(): Promise;
associateLabel(labelId: number): Promise<{
success: true;
} | undefined>;
dissociateLabel(labelId: number): Promise<{
success: true;
} | undefined>;
getAssociatedLabels(): Promise<{
data: {
name: string;
id: string;
}[];
paging: {
cursors: {
before: string;
after: string;
};
};
} | undefined>;
sendMessage(message: MessengerTypes.Message, options?: MessengerTypes.SendOption): Promise;
sendAttachment(attachment: MessengerTypes.Attachment, options?: MessengerTypes.SendOption): Promise;
sendImage(image: string | MessengerTypes.FileData | MessengerTypes.MediaAttachmentPayload, options?: MessengerTypes.SendOption): Promise;
sendAudio(audio: string | MessengerTypes.FileData | MessengerTypes.MediaAttachmentPayload, options?: MessengerTypes.SendOption): Promise;
sendVideo(video: string | MessengerTypes.FileData | MessengerTypes.MediaAttachmentPayload, options?: MessengerTypes.SendOption): Promise;
sendFile(file: string | MessengerTypes.FileData | MessengerTypes.MediaAttachmentPayload, options?: MessengerTypes.SendOption): Promise;
sendTemplate(payload: MessengerTypes.TemplateAttachmentPayload, options?: MessengerTypes.SendOption): Promise;
sendGenericTemplate(elements: MessengerTypes.TemplateElement[], options: {
imageAspectRatio?: 'horizontal' | 'square';
} & MessengerTypes.SendOption): Promise;
sendButtonTemplate(text: string, buttons: MessengerTypes.TemplateButton[], options?: MessengerTypes.SendOption): Promise;
sendMediaTemplate(elements: MessengerTypes.MediaElement[], options?: MessengerTypes.SendOption): Promise;
sendReceiptTemplate(attrs: MessengerTypes.ReceiptAttributes, options?: MessengerTypes.SendOption): Promise;
sendAirlineBoardingPassTemplate(attrs: MessengerTypes.AirlineBoardingPassAttributes, options?: MessengerTypes.SendOption): Promise;
sendAirlineCheckinTemplate(attrs: MessengerTypes.AirlineCheckinAttributes, options?: MessengerTypes.SendOption): Promise;
sendAirlineItineraryTemplate(attrs: MessengerTypes.AirlineItineraryAttributes, options?: MessengerTypes.SendOption): Promise;
sendAirlineUpdateTemplate(attrs: MessengerTypes.AirlineUpdateAttributes, options?: MessengerTypes.SendOption): Promise;
sendOneTimeNotifReqTemplate(attrs: MessengerTypes.OneTimeNotifReqAttributes, options?: MessengerTypes.SendOption): Promise;
}
export default MessengerContext;
//# sourceMappingURL=MessengerContext.d.ts.map