/// import { RemoteInfo, Socket } from 'dgram'; import { Observable } from 'rxjs'; import { SrtpOptions } from './rtp-utils'; export interface SipOptions { to: string; from: string; dingId: string; host?: string; port?: number; tlsPort: number; } export interface RtpStreamOptions extends Partial { port: number; } export interface RtpPacket { message: Buffer; info: RemoteInfo; } export interface RtpStream { socket: Socket; port: number; onRtpPacket: Observable; } export interface RtpOptions { address: string; audio: RtpStreamOptions; video: RtpStreamOptions; } declare type SpawnInput = string | number; export interface FfmpegOptions { input?: SpawnInput[]; video?: SpawnInput[] | false; audio?: SpawnInput[]; output: SpawnInput[]; } interface UriOptions { name?: string; uri: string; params?: { tag?: string; }; } interface SipHeaders { [name: string]: string | any; cseq: { seq: number; method: string; }; to: UriOptions; from: UriOptions; contact?: UriOptions[]; via?: UriOptions[]; } export interface SipRequest { uri: UriOptions | string; method: string; headers: SipHeaders; content: string; } export interface SipResponse { status: number; reason: string; headers: SipHeaders; content: string; } export interface SipClient { send: (request: SipRequest | SipResponse, handler?: (response: SipResponse) => void) => void; destroy: () => void; makeResponse: (response: SipRequest, status: number, method: string) => SipResponse; } export declare class SipSession { private sipOptions; private rtpOptions; private videoSocket; private audioSocket; private seq; private fromParams; private toParams; private callId; private hasStarted; private hasCallEnded; private sipClient; private onAudioPacket; private onVideoPacket; private onCallEndedSubject; private onRemoteRtpOptionsSubject; private subscriptions; private reservedPorts; onCallEnded: Observable; onRemoteRtpOptions: Observable; sdp: string; audioStream: RtpStream; videoStream: RtpStream; constructor(sipOptions: SipOptions, rtpOptions: RtpOptions, videoSocket: Socket, audioSocket: Socket); start(ffmpegOptions?: FfmpegOptions): Promise; sipRequest({ method, headers, content, seq }: { method: string; headers?: Partial; content?: string; seq?: number; }): Promise; invite(): Promise; private ackWithInfo; private startTranscoder; reservePort(bufferPorts?: number): Promise; private callEnded; stop(): void; } export {};