import { EventEmitter } from 'eventemitter3';
type ConnectionEvents = {
    'telnyx.socket.open': () => void;
    'telnyx.socket.close': () => void;
    'telnyx.socket.error': (ev: Event) => void;
    'telnyx.socket.message': (message: unknown) => void;
};
export declare class Connection extends EventEmitter<ConnectionEvents> {
    socket: WebSocket;
    private transactions;
    private messageQueue;
    constructor();
    send: (msg: unknown) => void;
    sendAndWait: (msg: {
        id: string;
    }) => Promise<unknown>;
    close: () => void;
    get isConnected(): boolean;
    private onOpen;
    private flushMessageQueue;
    private onClose;
    private safeParseMessage;
    private onError;
    private onMessage;
}
export {};
