UNPKG

@koush/ring-client-api

Version:

Unofficial API for Ring doorbells, cameras, security alarm system and smart lighting

123 lines (122 loc) 6.08 kB
/// <reference types="node" /> import { ActiveDing, CameraData, CameraDeviceSettingsData, CameraEventOptions, CameraEventResponse, CameraHealth, HistoryOptions, PeriodicFootageResponse, VideoSearchResponse } from './ring-types'; import { RingRestClient } from './rest-client'; import { BehaviorSubject, Subject } from 'rxjs'; import { SrtpOptions } from '@homebridge/camera-utils'; import { DeepPartial } from './util'; import { FfmpegOptions, SipSession } from './sip-session'; import { SipOptions } from './sip-call'; import { Subscribed } from './subscribed'; import { LiveCall } from './live-call'; export declare function getBatteryLevel(data: Pick<CameraData, 'battery_life' | 'battery_life_2'>): number | null; export declare function getSearchQueryString(options: CameraEventOptions | (HistoryOptions & { accountId: string; })): string; export declare class RingCamera extends Subscribed { private initialData; isDoorbot: boolean; private restClient; private avoidSnapshotBatteryDrain; private treatKnockAsDing; id: number; deviceType: import("./ring-types").RingCameraKind; model: string; onData: BehaviorSubject<CameraData>; hasLight: boolean; hasSiren: boolean; onRequestUpdate: Subject<unknown>; onRequestActiveDings: Subject<unknown>; onNewDing: Subject<ActiveDing>; onActiveDings: BehaviorSubject<ActiveDing[]>; onDoorbellPressed: import("rxjs").Observable<ActiveDing>; onMotionDetected: import("rxjs").Observable<boolean>; onMotionStarted: import("rxjs").Observable<null>; onBatteryLevel: import("rxjs").Observable<number | null>; onInHomeDoorbellStatus: import("rxjs").Observable<boolean>; constructor(initialData: CameraData, isDoorbot: boolean, restClient: RingRestClient, avoidSnapshotBatteryDrain: boolean, treatKnockAsDing: boolean); updateData(update: CameraData): void; requestUpdate(): void; get data(): CameraData; get name(): string; get activeDings(): ActiveDing[]; get batteryLevel(): number | null; get hasBattery(): boolean; get hasLowBattery(): boolean; get isCharging(): boolean; get operatingOnBattery(): boolean; get isOffline(): boolean; get hasInHomeDoorbell(): boolean; doorbotUrl(path?: string): string; deviceUrl(path?: string): string; setLight(on: boolean): Promise<boolean>; setSiren(on: boolean): Promise<boolean>; setSettings(settings: DeepPartial<CameraData['settings']>): Promise<void>; setDeviceSettings(settings: DeepPartial<CameraDeviceSettingsData>): Promise<CameraDeviceSettingsData & import("./rest-client").ExtendedResponse>; getDeviceSettings(): Promise<CameraDeviceSettingsData & import("./rest-client").ExtendedResponse>; setInHomeDoorbell(enable: boolean): Promise<boolean>; getHealth(): Promise<CameraHealth>; startLiveCallNegotiation(): Promise<string>; startLiveCall(): Promise<LiveCall>; startVideoOnDemand(): Promise<("" | ActiveDing) & import("./rest-client").ExtendedResponse>; private pollForActiveDing; private expiredDingIds; getSipConnectionDetails(): Promise<ActiveDing>; private removeDingById; processActiveDing(ding: ActiveDing): void; getEvents(options?: CameraEventOptions): Promise<CameraEventResponse & import("./rest-client").ExtendedResponse>; videoSearch({ dateFrom, dateTo, order }?: { dateFrom: number; dateTo: number; order?: string | undefined; }): Promise<VideoSearchResponse & import("./rest-client").ExtendedResponse>; getPeriodicalFootage({ startAtMs, endAtMs }?: { startAtMs: number; endAtMs: number; }): Promise<PeriodicFootageResponse & import("./rest-client").ExtendedResponse>; getRecordingUrl(dingIdStr: string, { transcoded }?: { transcoded?: boolean | undefined; }): Promise<string>; 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(): Promise<Buffer>; getNextSnapshot({ afterMs, maxWaitMs, force, }: { afterMs?: number; maxWaitMs?: number; force?: boolean; }): Promise<Buffer & import("./rest-client").ExtendedResponse>; getSipOptions(): Promise<SipOptions>; getUpdatedSipOptions(expiredDingId: string): Promise<SipOptions>; createSipSession(options?: { audio?: SrtpOptions; video?: SrtpOptions; skipFfmpegCheck?: boolean; }): Promise<SipSession>; recordToFile(outputPath: string, duration?: number): Promise<void>; streamVideo(ffmpegOptions: FfmpegOptions): Promise<SipSession>; /** * Exchange an Offer SDP for an Answer SDP. Unknown if this endpoint supports trickle with * the same session UUID. The Answer SDP advertises trickle. Invalid SDP will result in error * 400. Calling this too often will result in what seems to be a soft lockout for 5 minutes, * resulting in error 500s. * @param session_uuid A session UUID that can be later used to end the WebRTC session. * Unknown if stopping the session is actually necessary since WebRTC knows the peer connection state. * @param sdp Offer SDP. audio channel must be set to sendrecv. * @returns Answer SDP. */ startWebRtcSession(session_uuid: string, sdp: string): Promise<string>; endWebRtcSession(session_uuid: string): Promise<string>; subscribeToDingEvents(): Promise<void & import("./rest-client").ExtendedResponse>; unsubscribeFromDingEvents(): Promise<void & import("./rest-client").ExtendedResponse>; subscribeToMotionEvents(): Promise<void & import("./rest-client").ExtendedResponse>; unsubscribeFromMotionEvents(): Promise<void & import("./rest-client").ExtendedResponse>; disconnect(): void; }