import { Server, Client, Room, RoomClass, IRoomObject, RoomInspector, ICache } from "./internal"; export interface ISyncRoomTypes { [name: string]: { roomClass: RoomClass; params: any; }; } export interface ICreateRoomData { sessionId: string; name: string; options?: any; } export interface IJoinRoomData { sessionId: string; roomId: string; options?: any; } export interface IRoomUpdate { data?: any; hostId?: string; locked?: boolean; } export interface IUpdateRoomData { sessionId: string; roomId: string; update: IRoomUpdate; } export interface ILeaveRoomData { sessionId: string; roomId: string; } export interface ICloseRoomData { sessionId: string; roomId: string; } export declare class RoomManager { server: Server; cache: ICache; roomTypes: ISyncRoomTypes; rooms: Map>; inspector: RoomInspector; reservedSeats: Map; reservationTimeout: number; constructor(server: Server, cache: ICache); defineRoomType(name: string, roomClass: RoomClass, params?: any): void; setRoomClient(room: Room, client: Client, trackingParams?: any): void; removeRoomClient(room: Room, client: Client): Promise; onClientConnected(client: Client): Promise; onClientDisconnected(client: Client, code: number): Promise; reserveSeat(roomId: string, sessionId: string, options: any, auth: any): Promise; getRoomObject(roomId?: string): Promise; getAvaliableRooms(name?: string | string[]): Promise; createRoom({ sessionId, name, options }: ICreateRoomData, join?: boolean): Promise; joinRoom({ sessionId, roomId, options }: IJoinRoomData): Promise; updateRoom({ sessionId, roomId, update }: IUpdateRoomData): Promise; leaveRoom({ sessionId, roomId }: ILeaveRoomData): Promise; closeRoom({ sessionId, roomId }: ICloseRoomData): Promise; private removeRoom; closeRooms(): Promise; }