import { type Type, Deferred, type ExtractMethodOrPropertyType } from './utils/Utils.ts'; import { RegisteredHandler } from './matchmaker/RegisteredHandler.ts'; import { type OnCreateOptions, Room } from './Room.ts'; import { type Presence } from './presence/Presence.ts'; import { type IRoomCache, type MatchMakerDriver, type SortOptions } from './matchmaker/LocalDriver/LocalDriver.ts'; import { controller } from './matchmaker/controller.ts'; import * as stats from './Stats.ts'; import type { AuthContext } from './Transport.ts'; import { type ExtractRoomCacheMetadata } from './matchmaker/driver.ts'; import { type ISeatReservation } from '@colyseus/shared-types'; export type { ISeatReservation, ExtractRoomCacheMetadata }; export { controller, stats, type MatchMakerDriver }; export type ClientOptions = any; export type SelectProcessIdCallback = (roomName: string, clientOptions: ClientOptions) => Promise; export declare let publicAddress: string; export declare let processId: string; export declare let presence: Presence; export declare let driver: MatchMakerDriver; /** * Function to select the processId to create the room on. * By default, returns the process with least amount of rooms created. * @returns The processId to create the room on. */ export declare let selectProcessIdToCreateRoom: SelectProcessIdCallback; export declare function setHealthChecksEnabled(value: boolean): void; export declare let onReady: Deferred; export declare const MatchMakerState: { readonly INITIALIZING: 0; readonly READY: 1; readonly SHUTTING_DOWN: 2; }; export type MatchMakerState = (typeof MatchMakerState)[keyof typeof MatchMakerState]; /** * Internal MatchMaker state */ export declare let state: MatchMakerState; /** * @private */ export declare function setup(_presence?: Presence, _driver?: MatchMakerDriver, _publicAddress?: string, _selectProcessIdToCreateRoom?: SelectProcessIdCallback): Promise; /** * - Accept receiving remote room creation requests * - Check for leftover/invalid processId's on startup * @private */ export declare function accept(isStandalone?: boolean): Promise; /** * Join or create into a room and return seat reservation */ export declare function joinOrCreate(roomName: string, clientOptions?: ClientOptions, authContext?: AuthContext): Promise; /** * Create a room and return seat reservation */ export declare function create(roomName: string, clientOptions?: ClientOptions, authContext?: AuthContext): Promise; /** * Join a room and return seat reservation */ export declare function join(roomName: string, clientOptions?: ClientOptions, authContext?: AuthContext): Promise; /** * Join a room by id and return seat reservation */ export declare function reconnect(roomId: string, clientOptions?: ClientOptions): Promise; /** * Join a room by id and return client seat reservation. An exception is thrown if a room is not found for roomId. * * @param roomId - The Id of the specific room instance. * @param clientOptions - Options for the client seat reservation (for `onJoin`/`onAuth`) * @param authContext - Optional authentication token * * @returns Promise - A promise which contains `sessionId` and `IRoomCache`. */ export declare function joinById(roomId: string, clientOptions?: ClientOptions, authContext?: AuthContext): Promise; /** * Perform a query for all cached rooms */ export declare function query(conditions?: Partial>, sortOptions?: SortOptions): Promise>[]>; /** * Find for a public and unlocked room available. * * @param roomName - The Id of the specific room. * @param filterOptions - Filter options. * @param sortOptions - Sorting options. * * @returns Promise - A promise contaning an object which includes room metadata and configurations. */ export declare function findOneRoomAvailable(roomName: string, filterOptions: ClientOptions, additionalSortOptions?: SortOptions): Promise>; /** * Call a method or return a property on a remote room. * * @param roomId - The Id of the specific room instance. * @param method - Method or attribute to call or retrive. * @param args - Array of arguments for the method * * @returns Promise - Returned value from the called or retrieved method/attribute. */ export declare function remoteRoomCall(roomId: string, method: keyof TRoom, args?: any[], rejectionTimeout?: number): Promise>; export declare function defineRoomType>(roomName: string, klass: T, defaultOptions?: OnCreateOptions): RegisteredHandler>; export declare function addRoomType(handler: RegisteredHandler): void; export declare function removeRoomType(roomName: string): void; export declare function getAllHandlers(): { [id: string]: RegisteredHandler; }; export declare function getHandler(roomName: string): RegisteredHandler; export declare function getRoomClass(roomName: string): Type; /** * Creates a new room. * * @param roomName - The identifier you defined on `gameServer.define()` * @param clientOptions - Options for `onCreate` * * @returns Promise - A promise contaning an object which includes room metadata and configurations. */ export declare function createRoom(roomName: string, clientOptions: ClientOptions): Promise; export declare function handleCreateRoom(roomName: string, clientOptions: ClientOptions, restoringRoomId?: string): Promise; /** * Get room data by roomId. * This method does not return the actual room instance, use `getLocalRoomById` for that. */ export declare function getRoomById(roomId: string): Promise>; /** * Get local room instance by roomId. (Can return "undefined" if the room is not available on this process) */ export declare function getLocalRoomById(roomId: string): Room; /** * Disconnects every client on every room in the current process. */ export declare function disconnectAll(closeCode?: number): Promise[]; export declare function gracefullyShutdown(): Promise; /** * DO NOT USE THIS IN PRODUCTION. * THIS METHOD IS MEANT TO BE USED FOR VITE DEV SERVER ONLY. * --------------------------------------------------------- * * * Lightweight HMR reload for dev mode. * * Unlike gracefullyShutdown() + setup() + accept(), this preserves the * matchMaker infrastructure (presence, driver, IPC subscriptions, processId) * and only cycles room instances: cache state → dispose → restore. */ export declare function hotReload(): Promise; /** * Reserve a seat for a client in a room */ export declare function reserveSeatFor(room: IRoomCache, options: ClientOptions, authData?: any): Promise; /** * Reserve multiple seats for clients in a room */ export declare function reserveMultipleSeatsFor(room: IRoomCache, clientsData: Array<{ sessionId: string; options: ClientOptions; auth: any; }>): Promise; /** * Build a seat reservation object. * @param room - The room to build a seat reservation for. * @param sessionId - The session ID of the client. * @returns A seat reservation object. */ export declare function buildSeatReservation(room: IRoomCache, sessionId: string): ISeatReservation; /** * Perform health check on all processes */ export declare function healthCheckAllProcesses(): Promise; export declare function healthCheckProcessId(processId: string): Promise;