///
import TypedEmitter from "typed-emitter";
import type WebSocket from "ws";
import type http from "http";
import type { Debugger } from "debug";
import type { Server } from "./Server";
import type { Runner } from "mocha";
export declare enum ServerEvents {
STARTED = "started",
RUNNING = "running",
CONNECTION = "connection",
DISCONNECTION = "disconnection",
ERROR = "error",
END = "end"
}
export type StartedListener = (server: Server) => void;
export type RunningListener = (runner: Runner) => void;
export type ConnectionListener = (ws: WebSocket, req: http.IncomingMessage) => void;
export type DisconnectionListener = (ws: WebSocket, code: number, reason: string) => void;
export type ErrorListener = (error: Error) => void;
export type EndListener = () => void;
export type MessageEvents = {
started: StartedListener;
connection: ConnectionListener;
disconnection: DisconnectionListener;
error: ErrorListener;
end: EndListener;
running: RunningListener;
};
export declare class ServerEventEmitter implements TypedEmitter {
private emitter;
constructor(debug: Debugger);
addListener(event: E, listener: MessageEvents[E]): this;
removeListener(event: E, listener: MessageEvents[E]): this;
removeAllListeners(event?: E): this;
on(event: E, listener: MessageEvents[E]): this;
once(event: E, listener: MessageEvents[E]): this;
off(event: E, listener: MessageEvents[E]): this;
emit(event: E, ...args: Parameters): boolean;
setMaxListeners(n: number): this;
getMaxListeners(): number;
listeners(event: E): MessageEvents[E][];
rawListeners(event: E): MessageEvents[E][];
listenerCount(event: E): number;
prependListener(event: E, listener: MessageEvents[E]): this;
prependOnceListener(event: E, listener: MessageEvents[E]): this;
eventNames(): (keyof MessageEvents)[];
}