///
import { RemoteInfo, Socket } from 'dgram';
import { Observable } from 'rxjs';
import { RtpOptions } from './rtp-utils';
import { SipCall, SipOptions } from './sip-call';
import { RingCamera } from './ring-camera';
export interface RtpPacket {
message: Buffer;
info: RemoteInfo;
}
export interface RtpStream {
socket: Socket;
port: number;
onRtpPacket: Observable;
}
declare type SpawnInput = string | number;
export interface FfmpegOptions {
input?: SpawnInput[];
video?: SpawnInput[] | false;
audio?: SpawnInput[];
output: SpawnInput[];
}
export declare class SipSession {
private sipOptions;
private rtpOptions;
private videoSocket;
private audioSocket;
private tlsPort;
private camera;
private hasStarted;
private hasCallEnded;
private onAudioPacket;
private onVideoPacket;
private onCallEndedSubject;
private onRemoteRtpOptionsSubject;
private subscriptions;
private sipCall;
reservedPorts: number[];
onCallEnded: Observable;
onRemoteRtpOptions: Observable;
audioStream: RtpStream;
videoStream: RtpStream;
constructor(sipOptions: SipOptions, rtpOptions: RtpOptions, videoSocket: Socket, audioSocket: Socket, tlsPort: number, camera: RingCamera);
createSipCall(sipOptions: SipOptions): SipCall;
start(ffmpegOptions?: FfmpegOptions): Promise;
private startTranscoder;
reservePort(bufferPorts?: number): Promise;
private callEnded;
stop(): void;
}
export {};