import { ParsedUrlQuery } from 'querystring';
import uWebSockets from 'uWebSockets.js';
import { Application } from "uwebsockets-express";
import { AuthContext, Transport } from '@colyseus/core';
import { uWebSocketWrapper } from './uWebSocketClient.js';
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;
    expressApp: Application;
    protected clients: RawWebSocketClient[];
    protected clientWrappers: WeakMap<RawWebSocketClient, uWebSocketWrapper>;
    private _listeningSocket;
    private _originalRawSend;
    constructor(options?: TransportOptions, appOptions?: uWebSockets.AppOptions);
    listen(port: number, hostname?: string, backlog?: number, listeningListener?: () => void): this;
    shutdown(): void;
    simulateLatency(milliseconds: number): void;
    protected onConnection(rawClient: RawWebSocketClient): Promise<void>;
    protected registerMatchMakeRequest(): void;
    private readJson;
}
export {};
