import EventEmitter from "../event-emitter.js"; import type WebPhone from "../index.js"; import type InboundMessage from "../sip-message/inbound.js"; import type OutboundCallSession from "./outbound.js"; interface CommandResult { code: number; description: string; } type ParkResult = CommandResult & { "park extension": string; }; type FlipResult = CommandResult & { number: string; target: string; }; declare class CallSession extends EventEmitter { webPhone: WebPhone; sipMessage: InboundMessage; localPeer: string; remotePeer: string; rtcPeerConnection: RTCPeerConnection; _mediaStream?: MediaStream; audioElement: HTMLAudioElement; state: "init" | "ringing" | "answered" | "disposed" | "failed"; direction: "inbound" | "outbound"; inputDeviceId: string; outputDeviceId: string | undefined; private reqid; private sdpVersion; constructor(webPhone: WebPhone); get mediaStream(): MediaStream | undefined; set mediaStream(stream: MediaStream); private _callId; get callId(): string; get sessionId(): string | undefined; get partyId(): string | undefined; get remoteNumber(): string; get localNumber(): string; get remoteTag(): string; get localTag(): string; get isConference(): boolean; init(): Promise; changeInputDevice(deviceId: string): Promise; changeOutputDevice(deviceId: string): Promise; transfer(target: string, timeout?: number): Promise; warmTransfer(target: string, options?: { callerId?: string; timeout?: number; }): Promise<{ complete: () => Promise; cancel: () => Promise; newSession: OutboundCallSession; }>; completeWarmTransfer(existingSession: CallSession, timeout?: number): Promise; hangup(): Promise; startRecording(): Promise; stopRecording(): Promise; flip(target: string): Promise; park(): Promise; hold(): Promise; unhold(): Promise; mute(): void; unmute(): void; sendDtmf(tones: string, duration?: number, interToneGap?: number): void; dispose(): void; protected toggleTrack(enabled: boolean): void; protected waitForIceGatheringComplete(timeoutMs?: number): Promise; reInvite(toReceive?: boolean): Promise; handleReInvite(reInviteMessage: InboundMessage): Promise; protected toggleReceive(toReceive: boolean): Promise; protected sendJsonMessage(command: "callpark" | "callflip" | "startcallrecord" | "stopcallrecord", args?: { [key: string]: string; }): Promise; protected _transfer(uri: string, timeout?: number): Promise; } export default CallSession;