import http from 'node:http'; import { Server as SocketIOServer, type Socket } from 'socket.io'; import * as i from './interfaces.js'; import { Core } from './core.js'; export declare class Server extends Core { isShuttingDown: boolean; readonly port: number; readonly server: SocketIOServer; readonly httpServer: http.Server; readonly serverName: string; readonly clientDisconnectTimeout: number; private _cleanupClients; protected _clients: i.ConnectedClients; constructor(opts: i.ServerOptions); listen(): Promise; shutdown(): Promise; get onlineClients(): i.ConnectedClient[]; get onlineClientCount(): number; get disconnectedClients(): i.ConnectedClient[]; get disconnectedClientCount(): number; get availableClients(): i.ConnectedClient[]; get availableClientCount(): number; get unavailableClients(): i.ConnectedClient[]; get unavailableClientCount(): number; onClientOnline(fn: (clientId: string) => void): this; onClientAvailable(fn: (clientId: string) => void): this; onClientUnavailable(fn: (clientId: string) => void): this; onClientDisconnect(fn: (clientId: string) => void): this; onClientShutdown(fn: (clientId: string) => void): this; onClientReconnect(fn: (clientId: string) => void): this; onClientError(fn: (clientId: string) => void): this; isClientReady(clientId: string): boolean; protected sendToAll(eventName: string, payload?: i.Payload, options?: i.SendOptions): Promise<(i.Message | null)[]>; protected send(clientId: string, eventName: string, payload?: i.Payload, options?: i.SendOptions): Promise; isClientConnected(clientId: string): boolean; protected getClientMetadataFromSocket(socket: Socket): i.ClientSocketMetadata; private filterClientsByState; private countClientsByState; protected updateClientState(clientId: string, state: i.ClientState): boolean; protected ensureClient(socket: Socket): i.ConnectedClient; private _onConnection; } //# sourceMappingURL=server.d.ts.map