///
import { ActiveDing, CameraData, CameraEventOptions, CameraEventResponse, CameraHealth, HistoryOptions } from './ring-types';
import { RingRestClient } from './rest-client';
import { BehaviorSubject, Subject } from 'rxjs';
import { SrtpOptions } from './rtp-utils';
import { FfmpegOptions, SipSession } from './sip-session';
import { SipOptions } from './sip-call';
export declare function getBatteryLevel(data: Pick): number | null;
export declare function getSearchQueryString(options: CameraEventOptions | (HistoryOptions & {
accountId: string;
})): string;
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;
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;
get data(): CameraData;
get name(): string;
get activeDings(): ActiveDing[];
get batteryLevel(): number | null;
get hasLowBattery(): boolean;
get isOffline(): boolean;
get hasInHomeDoorbell(): boolean;
doorbotUrl(path?: string): string;
setLight(on: boolean): Promise;
setSiren(on: boolean): Promise;
setInHomeDoorbell(on: boolean): Promise;
getHealth(): Promise;
startVideoOnDemand(): Promise<("" & import("./rest-client").ExtendedResponse) | (ActiveDing & import("./rest-client").ExtendedResponse)>;
private pollForActiveDing;
private expiredDingIds;
getSipConnectionDetails(): Promise;
private removeDingById;
processActiveDing(ding: ActiveDing): void;
getEvents(options: CameraEventOptions): Promise;
getRecordingUrl(dingIdStr: string, { transcoded }?: {
transcoded?: boolean | undefined;
}): Promise;
private isTimestampInLifeTime;
private getSnapshotTimestamp;
private refreshSnapshotInProgress?;
private snapshotLifeTime;
private lastSnapshotTimestampLocal;
private lastSnapshotPromise?;
private refreshSnapshot;
getSnapshot(allowStale?: boolean): Promise;
getSipOptions(): Promise;
getUpdatedSipOptions(expiredDingId: string): Promise;
createSipSession(srtpOption?: {
audio?: SrtpOptions;
video?: SrtpOptions;
}): Promise;
recordToFile(outputPath: string, duration?: number): Promise;
streamVideo(ffmpegOptions: FfmpegOptions): Promise;
subscribeToDingEvents(): Promise;
unsubscribeFromDingEvents(): Promise;
subscribeToMotionEvents(): Promise;
unsubscribeFromMotionEvents(): Promise;
}