///
import { EventEmitter } from 'events';
import AuthTokens from '../types/AuthTokens';
import DeviceId from '../types/DeviceId';
import { PublishPacket } from './messages/Publish';
import MqttConnection from './MqttConnection';
import MqttMessage from './MqttMessage';
import MqttPacket from './MqttPacket';
import { MessageOptions } from '..';
/**
* Handles decoding and sending all sorts of messages used by Facebook Messenger.
* It utilizes all network primitives defined in the MqttConnection class.
*/
export default class MqttApi extends EventEmitter {
connection: MqttConnection;
lastMsgId: number;
tokens: AuthTokens;
lastPingMilis: number;
deviceId: DeviceId;
constructor();
sendSubscribe(msg: MqttMessage): Promise;
/**
* Connects the MQTT socket and binds listeners for receiving messages.
* @param tokens
* @param deviceId
*/
connect(tokens: AuthTokens, deviceId: DeviceId): Promise;
reconnect(): Promise;
sendPing: () => Promise;
/**
* Sends a CONNECT mqtt message
*/
sendConnectMessage(): Promise;
sendPublish(topic: string, data: Buffer | string): Promise;
waitForAck(type: string): Promise;
/**
* Sends a facebook messenger message to someone.
*/
sendMessage(threadId: string, message: string, options?: MessageOptions): Promise<{
succeeded: boolean;
errStr?: string;
}>;
sendPublishConfirmation(flags: number, publish: PublishPacket): Promise;
parsePacket(packet: MqttPacket): Promise;
}