/// import { EventEmitter } from "events"; import { IAuth, IEncodedJsonPatch } from "../internal"; export declare type MessageListener = (type: string, data: any) => void; export declare type EventListener = (...args: any) => void; export interface IClientData { roomId: string; state?: any; } export declare const ErrorCode: { NormalClose: number; JoinError: number; Unathorized: number; ReservationExpired: number; RoomNotFound: number; ConnectionTimeout: number; ReconnectError: number; }; export declare const ClientEvent: { error: number; connected: number; reconnected: number; joined: number; message: number; request: number; response: number; snapshot: number; patch: number; schema: number; encodedSnapshot: number; encodedPatch: number; }; export declare type ClientStatus = "connecting" | "connected" | "disconnected" | "reconnected"; export declare type EventArgs = [number, ...any[]]; export declare abstract class Client { auth: IAuth; roomId: string; _status: ClientStatus; state: T; messages: any[]; get id(): string; get data(): any; get status(): ClientStatus; set status(status: ClientStatus); constructor(data: IClientData); private safeEmit; send(type: string, data: any): void; onMessage(listener: MessageListener): void; patch(patch: IEncodedJsonPatch): void; snapshot(snapshot: any): void; error(code?: number, message?: string): void; connected(): void; request(type: string, data: any): Promise; abstract on(event: number, listner: MessageListener): void; abstract emit(event: number, ...args: any): void; abstract terminate(code?: number, reason?: string): void; } export declare abstract class Transport extends EventEmitter { onConnect(client: T, token: string): void; onDisconnect(client: T, code: number): void; abstract get port(): number | undefined; abstract get proxyPort(): number | undefined; abstract terminate(): void; }