///
import { ActiveDing, CameraData, CameraHealth, HistoricalDingGlobal } from './ring-types';
import { RingRestClient } from './rest-client';
import { BehaviorSubject, Subject } from 'rxjs';
import { SrtpOptions } from './rtp-utils';
import { FfmpegOptions, SipSession } from './sip-session';
export declare function getInHomeDoorbellStatus(data: CameraData): boolean | undefined;
export declare class RingCamera {
private initialData;
isDoorbot: boolean;
private restClient;
id: number;
deviceType: import("./ring-types").RingCameraKind;
model: string;
onData: BehaviorSubject;
hasLight: boolean;
hasSiren: boolean;
hasBattery: boolean;
hasInHomeDoorbell: boolean;
onRequestUpdate: Subject;
onRequestActiveDings: Subject;
onNewDing: Subject;
onActiveDings: BehaviorSubject;
onDoorbellPressed: import("rxjs").Observable;
onMotionDetected: import("rxjs").Observable;
onBatteryLevel: import("rxjs").Observable;
onInHomeDoorbellStatus: import("rxjs").Observable;
constructor(initialData: CameraData, isDoorbot: boolean, restClient: RingRestClient);
updateData(update: CameraData): void;
requestUpdate(): void;
readonly data: CameraData;
readonly name: string;
readonly activeDings: ActiveDing[];
readonly batteryLevel: number | null;
readonly hasLowBattery: boolean;
readonly isOffline: boolean;
doorbotUrl(path: string): string;
setLight(on: boolean): Promise;
setSiren(on: boolean): Promise;
setInHomeDoorbell(on: boolean): Promise;
getHealth(): Promise;
startVideoOnDemand(): Promise;
getSipConnectionDetails(): Promise;
processActiveDing(ding: ActiveDing): void;
getHistory(limit?: number, favoritesOnly?: boolean): Promise;
getRecording(dingIdStr: string): Promise;
private isTimestampInLifeTime;
private getSnapshotTimestamp;
private refreshSnapshotInProgress?;
private snapshotLifeTime;
private lastSnapshotTimestampLocal;
private lastSnapshotPromise?;
private refreshSnapshot;
getSnapshot(allowStale?: boolean): Promise;
sipUsedDingIds: string[];
getSipOptions(): Promise<{
to: string;
from: string;
dingId: string;
}>;
createSipSession(srtpOption?: {
audio?: SrtpOptions;
video?: SrtpOptions;
}): Promise;
recordToFile(outputPath: string, duration?: number): Promise;
streamVideo(ffmpegOptions: FfmpegOptions): Promise;
}