import EventEmitter from '../../../utils/eventemitter/EventEmitter'; import ItemTable from '../itemtable/ItemTable'; export default Room; declare namespace Room { interface ITableConfig { key: string, type?: ItemTable.TableType } interface IUserInfo { userID?: string, userName?: string } interface IConfig extends IUserInfo { root?: string, broadcast: boolean | { history?: number | boolean, }, tables?: undefined | ITableConfig[], eventEmitter?: EventEmitter | false, } interface IRoomInfo { roomID?: string, roomName?: string, } type RoomStateType = 'open' | 'closed'; interface IRoomData extends IRoomInfo { roomType?: string } interface IRoomConfig extends IRoomData { maxUsers?: number, presisted?: boolean, door?: RoomStateType, join?: boolean, filterData?: any } interface ICreateRandomRoomConfig extends IRoomConfig { digits?: number, candidates?: string, retry?: number, } interface IJoinRoomConfig { leftThenJoin?: boolean, roomID?: string, } interface IJoinRandomRoomConfig extends IJoinRoomConfig { roomType?: string, door?: RoomStateType, } } declare class Room { constructor(config?: Room.IConfig); setUser( userID: string, userName?: string ): this; setUser( config: { userID: string, userName?: string } ): this; userID: string; userName: string; readonly userInfo: Room.IUserInfo; getRoomInfo( roomID?: string, roomName?: string ): Room.IRoomInfo; isInRoom(roomID?: string): boolean; isFull(): boolean; isFirstUser( userID?: string ): boolean; getUsers( ): { userID: string, userName: string }[]; readonly maxUsers: number; getTable( key: string ): ItemTable; createRoom( config?: Room.IRoomConfig ): Promise; createRandomRoom( config?: Room.ICreateRandomRoomConfig ): Promise; joinRoom( config?: Room.IJoinRoomConfig ): Promise; joinRandomRoom( config?: Room.IJoinRandomRoomConfig ): Promise; leaveRoom( ): Promise; removeRoom( roomID?: string ): Promise; kickUser( userID: string ): Promise; changeRoomState( roomID: string, roomState: Room.RoomStateType ): Promise; changeFilterData( filterData: any ): Promise; changeFilterData( roomID:string, filterData: any ): Promise; changeUserName( userName: string ): Promise; changeRoomName( roomID: string, roomName: string ): Promise; openRoom( roomID: string ): Promise; closeRoom( roomID: string ): Promise; getUserList( ): Room.IUserInfo[]; getUserList( roomID: string ): Promise; getRoomList( roomType?: string, roomState?: string ): Promise; hasRoom( roomID: string ): Promise; }