/// <reference types="node" />
import * as jssip from 'jssip';
import events = require('events');
import { RTCSession } from 'jssip/lib/RTCSession';
import PhoneClient from '../models/phone/PhoneClient';
import { IncomingResponse } from 'jssip/lib/SIPMessage';
import { causes } from 'jssip/lib/Constants';
declare type SipClientOptions = {
    client: PhoneClient;
    stunServers?: string[];
    wsUri?: string;
    debug?: boolean;
};
export declare type CallableRegisterFailedEvent = {
    client: PhoneClient;
    response: IncomingResponse;
    cause?: causes;
};
export declare type CallableRegisteredEvent = {
    client: PhoneClient;
    response: IncomingResponse;
};
export declare type CallableDisconnectedEvent = {
    client: PhoneClient;
    socket: jssip.Socket;
    error: boolean;
    code?: number;
    reason?: string;
};
export declare type CallableConnectedEvent = {
    client: PhoneClient;
    socket: jssip.Socket;
};
export declare type CallableConnectingEvent = {
    client: PhoneClient;
    socket: jssip.Socket;
    attempts: number;
};
export default class SipClient extends events.EventEmitter {
    _pcConfig: any;
    _ua: jssip.UA;
    _debug: boolean;
    constructor(options: SipClientOptions);
    start(): void;
    stop(): void;
    call(number: string): void;
    _onSession(rtcSession: RTCSession): void;
}
export {};
