import { type ParsedUrlQuery } from 'querystring';
import uWebSockets from 'uWebSockets.js';
import type express from 'express';
import { type AuthContext, Transport, type Router } from '@colyseus/core';
import { uWebSocketWrapper } from './uWebSocketClient.ts';
export type TransportOptions = Omit<uWebSockets.WebSocketBehavior<any>, "upgrade" | "open" | "pong" | "close" | "message">;
type RawWebSocketClient = uWebSockets.WebSocket<any> & {
    url: string;
    searchParams: ParsedUrlQuery;
    context: AuthContext;
};
export declare class uWebSocketsTransport extends Transport {
    app: uWebSockets.TemplatedApp;
    protected clients: RawWebSocketClient[];
    protected clientWrappers: WeakMap<RawWebSocketClient, uWebSocketWrapper>;
    private _listeningSocket;
    private _originalRawSend;
    private _expressApp?;
    constructor(options?: TransportOptions, appOptions?: uWebSockets.AppOptions);
    getExpressApp(): Promise<express.Application> | express.Application;
    bindRouter(router: Router): void;
    listen(port: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
    shutdown(): void;
    simulateLatency(milliseconds: number): void;
    protected onConnection(rawClient: RawWebSocketClient): Promise<void>;
}
export {};
