///
import { CameraData, CameraDeviceSettingsData, CameraEventOptions, CameraEventResponse, CameraHealth, HistoryOptions, PeriodicFootageResponse, PushNotification, PushNotificationDing, VideoSearchResponse, OnvifCameraData, RingCameraKind } from './ring-types';
import { RingRestClient } from './rest-client';
import { BehaviorSubject, Subject } from 'rxjs';
import { DeepPartial } from './util';
import { Subscribed } from './subscribed';
import { StreamingConnectionOptions } from './streaming/webrtc-connection';
import { FfmpegOptions, StreamingSession } from './streaming/streaming-session';
import { SimpleWebRtcSession } from './streaming/simple-webrtc-session';
export type AnyCameraData = CameraData | OnvifCameraData;
export declare function getBatteryLevel(data: Pick & {
health?: Partial;
}): number | null;
export declare function getSearchQueryString(options: CameraEventOptions | (HistoryOptions & {
accountId: string;
})): string;
export declare function cleanSnapshotUuid(uuid?: string | null): string | null | undefined;
export declare class RingCamera extends Subscribed {
private initialData;
isDoorbot: boolean;
private restClient;
private avoidSnapshotBatteryDrain;
id: number;
deviceType: RingCameraKind.onvif_camera | Omit;
model: string;
onData: BehaviorSubject;
hasLight: boolean;
hasSiren: boolean;
onRequestUpdate: Subject;
onNewNotification: Subject;
onActiveNotifications: BehaviorSubject;
onDoorbellPressed: import("rxjs").Observable;
onMotionDetected: import("rxjs").Observable;
onMotionStarted: import("rxjs").Observable;
onBatteryLevel: import("rxjs").Observable;
onInHomeDoorbellStatus: import("rxjs").Observable;
constructor(initialData: AnyCameraData, isDoorbot: boolean, restClient: RingRestClient, avoidSnapshotBatteryDrain: boolean);
updateData(update: AnyCameraData): void;
requestUpdate(): void;
get data(): AnyCameraData;
get name(): string;
get activeNotifications(): PushNotificationDing[];
get latestNotification(): PushNotificationDing | undefined;
get latestNotificationSnapshotUuid(): string | undefined;
get batteryLevel(): number | null;
get hasBattery(): boolean;
get hasLowBattery(): boolean;
get isCharging(): boolean;
get operatingOnBattery(): boolean;
get isOffline(): boolean;
get isRingEdgeEnabled(): boolean;
get hasInHomeDoorbell(): boolean;
doorbotUrl(path?: string): string;
deviceUrl(path?: string): string;
setLight(on: boolean): Promise;
setSiren(on: boolean): Promise;
setSettings(settings: DeepPartial): Promise;
setDeviceSettings(settings: DeepPartial): Promise;
getDeviceSettings(): Promise;
setInHomeDoorbell(enable: boolean): Promise;
getHealth(): Promise;
private createStreamingConnection;
startLiveCall(options?: StreamingConnectionOptions): Promise;
private removeDingById;
processPushNotification(notification: PushNotification): void;
getEvents(options?: CameraEventOptions): Promise;
videoSearch({ dateFrom, dateTo, order }?: {
dateFrom: number;
dateTo: number;
order?: string | undefined;
}): Promise;
getPeriodicalFootage({ startAtMs, endAtMs }?: {
startAtMs: number;
endAtMs: number;
}): Promise;
getRecordingUrl(dingIdStr: string, { transcoded }?: {
transcoded?: boolean | undefined;
}): Promise;
private isTimestampInLifeTime;
get snapshotsAreBlocked(): boolean;
get snapshotLifeTime(): number;
private lastSnapshotTimestamp;
private lastSnapshotTimestampLocal;
private lastSnapshotPromise?;
get currentTimestampAge(): number;
get hasSnapshotWithinLifetime(): boolean;
private checkIfSnapshotsAreBlocked;
private shouldUseExistingSnapshotPromise;
private fetchingSnapshot;
getSnapshot({ uuid }?: {
uuid?: string;
}): Promise;
getNextSnapshot({ afterMs, maxWaitMs, force, uuid, }: {
afterMs?: number;
maxWaitMs?: number;
force?: boolean;
uuid?: string;
}): Promise;
getSnapshotByUuid(uuid: string): Promise;
recordToFile(outputPath: string, duration?: number): Promise;
streamVideo(ffmpegOptions: FfmpegOptions): Promise;
/**
* Returns a SimpleWebRtcSession, which can be initiated with an sdp offer.
* This session has no backplane for trickle ICE, and is designed for use in a
* browser setting. Note, cameras with Ring Edge enabled will stream with the speaker
* enabled as soon as the stream starts, which can drain the battery more quickly.
*/
createSimpleWebRtcSession(): SimpleWebRtcSession;
subscribeToDingEvents(): Promise;
unsubscribeFromDingEvents(): Promise;
subscribeToMotionEvents(): Promise;
unsubscribeFromMotionEvents(): Promise;
disconnect(): void;
}