import { AccountBindDeviceVO } from "../../../vo/account/AccountBindDeviceVO";
import { LoginUserVO } from "../../../vo/account/LoginUserVO";
import { CastSessionVO } from "../../../vo/cast/CastSessionVO";
import { DisplayReportVO } from "../../../vo/report/DisplayReportVO";
import { BindDeviceAction } from "../message/BindDeviceAction";
import { SessionAction } from "../message/SessionAction";
import { SessionDestroyReason } from "../message/SessionDestroyReason";
export interface IControllerMQTTCallback {
    /**
     * 收到自身MQTT断连，说明与MQTT集群断开连接
     * @param cause 断连原因
     */
    onMySelfDisconnected(cause: string): void;
    /**
     * 收到服务器MQTT遗嘱，说明服务器挂了
     */
    onServerDied(): void;
    /**
     * 收到目前已经连接上的显示设备的MQTT遗嘱，说明已经连接的显示设备挂了
     */
    onDisplayDied(): void;
    /**
     * 收到一个显示端设备投屏状态更新上报消息，说明此显示端设备投屏状态产生变化，进行回调通知
     * @param report 变更的显示设备的投屏上报消息，内含显示设备唯一ID和displayCode
     */
    onDisplayReport(report: DisplayReportVO): void;
    /**
     * 收到CastSession系列消息，供控制终端进行投屏业务处理
     * @param session 匹配的CastSession实体
     * @param action 当前CastSession的阶段
     * @param mediaPayload 携带的媒体内容信息
     * @param reason 失败原因，可选参数
     */
    onCastSession(session: CastSessionVO, action: SessionAction, mediaPayload: string, reason?: SessionDestroyReason): void;
    /**
     * 当某个账号下用户被踢下线(新用户登录，或者账号注销)，此账号下所有已登录的控制端都会收到此消息
     * @param user 被踢下线的用户信息
     */
    onUserHasBeenKicked(user: LoginUserVO): void;
    /**
     * 当指定账号与显示设备绑定关系发生变化、或者被指定账号绑定的显示设备在线/离线时，此账号下会触发此消息
     * 备注：目前此消息只实现了显示设备上线/下线，账号与显示设备绑定关系变化暂未实现
     * @param accountBindDevice 指定账号与显示设备绑定关系
     * @param action 标识消息是绑定关系变化还是显示设备上线/下线
     */
    onAccountBindDevice(accountBindDevice: AccountBindDeviceVO, action: BindDeviceAction): void;
}
//# sourceMappingURL=IControllerMQTTCallback.d.ts.map