import './loadenv.ts';
import type express from 'express';
import { type ServerOptions, type SDKTypes, type Router, Server, Transport, RegisteredHandler } from '@colyseus/core';
export interface ConfigOptions<RoomTypes extends Record<string, RegisteredHandler> = any, Routes extends Router = any> extends SDKTypes<RoomTypes, Routes> {
    options?: ServerOptions;
    displayLogs?: boolean;
    rooms?: RoomTypes;
    routes?: Routes;
    initializeTransport?: (options: any) => Transport;
    initializeExpress?: (app: express.Application) => void;
    initializeGameServer?: (app: Server) => void;
    beforeListen?: () => void;
    /**
     * @deprecated getId() has no effect anymore.
     */
    getId?: () => string;
}
export default function <RoomTypes extends Record<string, RegisteredHandler> = any, Routes extends Router = any>(options: Omit<ConfigOptions<RoomTypes, Routes>, '~rooms' | '~routes'>): ConfigOptions<RoomTypes, Routes>;
/**
 * Expose server instance and listen on the port specified
 * @param options Application options
 * @param port Port number to bind Colyseus + Express
 */
export declare function listen<RoomTypes extends Record<string, RegisteredHandler> = any, Routes extends Router = any>(options: ConfigOptions<RoomTypes, Routes>, port?: number): Promise<Server<RoomTypes, Routes>>;
/**
 * Expose server instance and listen on the port specified
 * @param server Server instance
 * @param port Port number to bind Colyseus + Express
 */
export declare function listen<RoomTypes extends Record<string, RegisteredHandler> = any, Routes extends Router = any>(server: Server<RoomTypes, Routes>, port?: number): Promise<Server<RoomTypes, Routes>>;
export declare function getTransport(options: ConfigOptions): Promise<Transport>;
