import { MQTTConfig } from "../../config/MQTTConfig";
import { IMQTTCallback } from "./IMQTTCallback";
import { IMQTTClient } from './IMQTTClient';
import { MQTTConnectOption } from "./MQTTConnectOption";
import { AccountBindDeviceMessage } from "./message/AccountBindDeviceMessage";
import { CastSessionMessage } from "./message/CastSessionMessage";
import { DataMessage } from "./message/DataMessage";
import { DisplayReportMessage } from "./message/DisplayReportMessage";
import { UserHasBeenKickedMessage } from "./message/UserHasBeenKickedMessage";
import { WillMessage } from "./message/WillMessage";
import { YMSMessage } from "./message/YMSMessage";
export declare abstract class MQTTLogic implements IMQTTCallback {
    readonly TAG: string;
    private parser;
    private clientId;
    private messageTimestampOfSenderUnderTopics;
    private client;
    private config;
    private displayCode;
    protected isConnected: boolean;
    constructor(clientId: string);
    setMQTTClientImpl(impl: IMQTTClient, config: MQTTConfig): void;
    /**
     * 连接MQTT服务器
     * @param displayCode 传入值<=0时，代表需要通配（#）
     */
    connect(displayCode: number): void;
    protected connectWithOptions(options: MQTTConnectOption): void;
    protected createMqttOptions(): MQTTConnectOption;
    publish(displayCode: number, ymsMessage: YMSMessage): void;
    disconnect(displayCode: number): Promise<string>;
    connectionLost(cause: string): void;
    connectComplete(reconnect: boolean, serverURI: string): void;
    messageArrived(topic: string, message: string): void;
    private isMessageExpired;
    protected getClient(): IMQTTClient | undefined;
    protected getConfig(): MQTTConfig;
    protected abstract isMessageFromSelf(message: YMSMessage): boolean;
    protected abstract isMessageForMe(message: YMSMessage): boolean;
    protected abstract createMySelfWill(displayCode: number, clientId: string): WillMessage;
    protected abstract subscribeInterestTopic(displayCode: number): void;
    protected abstract unsubscribeAllTopics(displayCode: number): void;
    protected abstract onWillMessageArrived(message: WillMessage): void;
    protected abstract onDisplayReportMessageArrived(message: DisplayReportMessage): void;
    protected abstract onCastSessionMessageArrived(message: CastSessionMessage): void;
    protected abstract onDataMessageArrived(message: DataMessage): void;
    protected abstract onUserHasBeenKickedMessageArrived(message: UserHasBeenKickedMessage): void;
    protected abstract onAccountBindDeviceMessageArrived(message: AccountBindDeviceMessage): void;
    protected abstract onConnectionLost(cause: string): void;
}
//# sourceMappingURL=MQTTLogic.d.ts.map