/// import { IStateTracker, IDisposer, Client } from "../internal"; export interface IRoomData { name: string; port?: number; hostId?: string; pid?: string | number; data?: { [key: string]: any; }; [key: string]: any; } export interface IRoomObject extends IRoomData { id: string; pid: string | number; clients: string[]; } interface IClientState { trackingParams: { [key: string]: any; }; } export interface ITrackerDisposer { trackerDisposer: IDisposer; patchInterval: NodeJS.Timeout; } export interface ITrackerParams { patchRate?: number; serializer?: string; [param: string]: any; } export declare type RoomClient = Client; export declare type RoomClass = new (params: IRoomData) => Room; export declare abstract class Room { state: T; id: string; pid: string | number; port: number | undefined; name: string; data: any; hostId: string; terminated: boolean; locked: boolean; clients: Map; updateCache: any; tracker: IStateTracker | null; disposers: Map; constructor(roomData: IRoomData); waitReconnection(client: Client, seconds?: number): Promise; startTracking(client: RoomClient, params?: ITrackerParams): void; stopTracking(client: RoomClient): void; sendState(client: RoomClient): void; updateTrackingParams(client: RoomClient, params: ITrackerParams): void; lock(): void; unlock(): void; broadcast(type: string, data: any, exclude?: string): void; toObject(): IRoomObject; createState?(): T; createPatchTracker?(state: T): IStateTracker; onAuth?(sessionId: string, params: any): void | Promise; onJoin?(client: RoomClient, params: any, auth?: any): void | Promise; onMessage?(client: RoomClient, type: string, data: any): void; onLeave?(client: RoomClient, consented?: boolean): void | Promise; onCreate?(params: any): void | Promise; onClose?(): void | Promise; } export {};