/// <reference types="node" />
import { URL } from "url";
import { DtmfBufferGenerator } from "../call/dtmf/DtmfBufferGenerator";
import { Emitter, TypedEmitter } from "../Emitter";
import { Call } from "../call/Call";
import { TestAssigner } from "./IteratingTestAssigner";
import { TestExecutor } from "./TestExecutor";
import { TestSession } from "../testRunner";
export declare type CallServerEvents = {
    callConnected: {
        call: Call;
    };
    testStarted: {
        testSession: TestSession;
    };
    listening: {
        localUrl: URL;
    };
    stopped: undefined;
    error: {
        error: Error;
    };
};
export interface CallServer extends Emitter<CallServerEvents> {
    listen(port: number): Promise<URL>;
    stop(): void;
}
export declare class TwilioCallServer extends TypedEmitter<CallServerEvents> implements CallServer {
    private readonly dtmfBufferGenerator;
    private readonly testAssigner;
    private readonly testExecutor;
    private static TestCouldNotBeAssignedReason;
    private wss;
    constructor(dtmfBufferGenerator: DtmfBufferGenerator, testAssigner: TestAssigner, testExecutor: TestExecutor);
    private static formatServerUrl;
    static convertToWebSocketUrl(serverUrl: string | URL): URL;
    listen(port: number): Promise<URL>;
    stop(): Promise<void>;
    private callConnected;
    private closed;
    private serverError;
}
