import { LocalMicrophoneStream } from '@webex/internal-media-core';
import { CallDetails, CallDirection, CallId, CorrelationId, DisplayInformation, ServiceIndicator, WebexRequestPayload } from '../../common/types';
import { Eventing } from '../../Events/impl';
import { CallerIdInfo, CallEvent, CallEventTypes, RoapEvent, SUPPLEMENTARY_SERVICES } from '../../Events/types';
import { WebexSDK } from '../../SDKConnector/types';
import { CallRtpStats, DeleteRecordCallBack, DisconnectReason, ICall, MidCallEvent, MUTE_TYPE, SSResponse, TransferType } from './types';
export declare class Call extends Eventing<CallEventTypes> implements ICall {
    private sdkConnector;
    private webex;
    private destination?;
    private direction;
    private callId;
    private correlationId;
    private deviceId;
    lineId: string;
    private disconnectReason;
    private callStateMachine;
    private mediaStateMachine;
    private seq;
    mediaConnection?: any;
    private earlyMedia;
    private connected;
    private mediaInactivity;
    private callerInfo;
    private localRoapMessage;
    private mobiusUrl;
    private remoteRoapMessage;
    private deleteCb;
    private callerId;
    private sessionTimer?;
    private supplementaryServicesTimer?;
    private muted;
    private held;
    private metricManager;
    private broadworksCorrelationInfo?;
    private serviceIndicator;
    private mediaNegotiationCompleted;
    private connectPending;
    private receivedRoapOKSeq;
    private localAudioStream?;
    private rtcMetrics;
    private callKeepaliveRetryCount;
    private apiRequest;
    private handleMediaRoapEvent;
    private handleRemoteTrackAdded;
    private static getPeerConnectionStateFromEvent;
    private handleIceGatheringStateChanged;
    private handlePeerConnectionStateChanged;
    private handleIceConnectionStateChanged;
    private handleIceCandidateError;
    private handleRoapFailure;
    isMuted(): boolean;
    isConnected(): boolean;
    isHeld(): boolean;
    constructor(activeUrl: string, webex: WebexSDK, direction: CallDirection, deviceId: string, lineId: string, deleteCb: DeleteRecordCallBack, indicator: ServiceIndicator, destination?: CallDetails);
    private handleIncomingCallSetup;
    private handleOutgoingCallSetup;
    private handleCallHold;
    private handleCallResume;
    private handleIncomingCallProgress;
    private handleIncomingRoapOfferRequest;
    private handleOutgoingCallAlerting;
    private handleIncomingCallConnect;
    private handleOutgoingCallConnect;
    private handleIncomingCallDisconnect;
    private handleOutgoingCallDisconnect;
    private callKeepaliveRetryCallback;
    private handleCallKeepaliveError;
    private scheduleCallKeepaliveInterval;
    private handleCallEstablished;
    private handleUnknownState;
    private getEmitterCallback;
    private handleRoapEstablished;
    private handleRoapError;
    private handleOutgoingRoapOffer;
    private handleOutgoingRoapAnswer;
    private handleIncomingRoapOffer;
    private handleIncomingRoapAnswer;
    private forceSendStatsReport;
    private initMediaConnection;
    getDirection: () => CallDirection;
    getCallId: () => CallId;
    getCorrelationId: () => CorrelationId;
    sendCallStateMachineEvt(event: CallEvent): void;
    sendMediaStateMachineEvt(event: RoapEvent): void;
    setCallId: (callId: CallId) => void;
    private setDisconnectReason;
    getDisconnectReason: () => DisconnectReason;
    answer(localAudioStream: LocalMicrophoneStream): Promise<void>;
    dial(localAudioStream: LocalMicrophoneStream): Promise<void>;
    private post;
    private patch;
    postSSRequest(context: unknown, type: SUPPLEMENTARY_SERVICES): Promise<SSResponse>;
    postStatus(): Promise<WebexRequestPayload>;
    completeTransfer(transferType: TransferType, transferCallId?: CallId, transferTarget?: string): Promise<void>;
    private getCallStats;
    private postMedia;
    private mediaRoapEventsListener;
    private mediaTrackListener;
    private mediaIceEventsListener;
    private unregisterMediaConnectionListeners;
    private onEffectEnabled;
    private onEffectDisabled;
    private updateTrack;
    private registerEffectListener;
    private unregisterListeners;
    private registerListeners;
    private delete;
    private submitCallErrorMetric;
    handleMidCallEvent(event: MidCallEvent): void;
    getCallerInfo: () => DisplayInformation;
    end: () => void;
    doHoldResume: () => void;
    startCallerIdResolution(callerInfo: CallerIdInfo): void;
    sendDigit(tone: string): void;
    mute: (localAudioStream: LocalMicrophoneStream, muteType?: MUTE_TYPE) => void;
    updateMedia: (newAudioStream: LocalMicrophoneStream) => void;
    setBroadworksCorrelationInfo(broadworksCorrelationInfo: string): void;
    getBroadworksCorrelationInfo(): string | undefined;
    getCallRtpStats(): Promise<CallRtpStats>;
    private handleTimeout;
}
export declare const createCall: (activeUrl: string, webex: WebexSDK, dir: CallDirection, deviceId: string, lineId: string, deleteCb: DeleteRecordCallBack, indicator: ServiceIndicator, dest?: CallDetails) => ICall;
//# sourceMappingURL=call.d.ts.map