import type { EmailLogger } from "../utils/logger.js"; export declare enum PacketType { CONNECT = 1, CONNACK = 2, SEND = 3, SENDACK = 4, RECV = 5, RECVACK = 6, PING = 7, PONG = 8, DISCONNECT = 9 } export interface ConnectOptions { version: number; uid: string; token: string; deviceFlag: number; deviceId: string; clientTimestamp: number; clientKey: string; } export declare function encodeConnect(opts: ConnectOptions): Uint8Array; export declare function encodePing(): Uint8Array; export declare function encodeRecvack(messageID: string, messageSeq: number): Uint8Array; export declare function encodeDisconnect(): Uint8Array; export type DecodedPacket = { type: "connack"; reasonCode: number; serverVersion: number; timeDiff: number; serverKey: string; salt: string; } | { type: "recv"; messageID: string; messageSeq: number; fromUID: string; channelID: string; channelType: number; payload: Uint8Array; } | { type: "pong"; } | { type: "disconnect"; reasonCode: number; reason: string; } | { type: "unknown"; packetType: number; }; export declare function decodePacket(raw: Uint8Array): DecodedPacket; export declare class FatalCliError extends Error { constructor(message: string); } export interface CliWsClientEvents { onMessage: (payload: Uint8Array, decoded: DecodedPacket) => void; onDisconnect: (reason: string) => void; } export declare class CliWsClient { private account; private log?; private ws; private heartbeatTimer; private missedPongs; private messageHandler; private disconnectHandler; private deviceId; private aesKey; private aesIV; private dhKeyPair; constructor(account: { email: string; mailCliProfile: string; token?: string; }, log?: EmailLogger | undefined); connect(): Promise; /** * 判断是否是认证错误 */ private isAuthError; private connectWithToken; onMessage(handler: (payload: Uint8Array, decoded: DecodedPacket) => void): void; onDisconnect(handler: (reason: string) => void): void; send(data: Uint8Array): void; disconnect(): void; isConnected(): boolean; private startHeartbeat; private stopHeartbeat; private cleanup; }