import BaseSession from '../BaseSession';
export declare const setWebSocket: (websocket: typeof WebSocket) => void;
export default class Connection {
    session: BaseSession;
    previousGatewayState: string;
    lastInboundAt: number;
    socketGeneration: number;
    private _wsClient;
    private _host;
    private _timers;
    private _useCanaryRtcServer;
    private _hasCanaryBeenUsed;
    private _safetyTimeoutId;
    private _pendingRequestIds;
    private _pendingRequestTimers;
    private _pendingRequestRejecters;
    upDur: number | null;
    downDur: number | null;
    static DEFAULT_REQUEST_TIMEOUT_MS: number;
    constructor(session: BaseSession);
    get connected(): boolean;
    get connecting(): boolean;
    get closing(): boolean;
    get closed(): boolean;
    get isAlive(): boolean;
    get isDead(): boolean;
    get host(): string;
    connect(): void;
    sendRawText(request: string): void;
    send(bladeObj: any, timeoutMs?: number): Promise<any>;
    close(): void;
    private _registerSocketEvents;
    private _deregisterSocketEvents;
    private _handleCloseTimeout;
    private _clearSafetyTimeout;
    private _safetyCleanupSocket;
    private _cleanupPendingRequests;
    private _unsetTimer;
    private _handleStringResponse;
}
