UNPKG

homebridge-unifi-protect

Version:

Homebridge UniFi Protect plugin providing complete HomeKit integration for the entire UniFi Protect ecosystem with full support for most features including HomeKit Secure Video, multiple controllers, blazing fast performance, and much more.

63 lines 2.06 kB
import type { Nullable } from "homebridge-plugin-utils"; import type { ChannelProfile } from "./resolution.ts"; import { EventEmitter } from "node:events"; import type { ProtectCameraHost } from "./camera-host.ts"; export type TimeshiftStopCause = "ended" | "giveUp"; export type SegmentRole = "blob" | "live"; interface TimeshiftBufferEvents { discontinuity: []; segment: [data: Buffer, role: SegmentRole]; stopped: [cause: TimeshiftStopCause]; terminated: []; } interface KeyframeAlignedStart { seekOffsetMs: number; startIndex: number; } export type SnapshotSource = { data: Buffer; fps: number; kind: "fresh"; } | { kind: "empty"; } | { kind: "stale"; }; export declare class ProtectTimeshiftBuffer extends EventEmitter<TimeshiftBufferEvents> { private _channelProfile; private _isTransmitting; private _lastKeyframeTime; private _pendingDiscontinuity; private _pendingStopCause; private _segments; private readonly _segmentLength; private readonly clock; private readonly log; private readonly protectCamera; private segmentCount; private subscription?; constructor(protectCamera: ProtectCameraHost); start(channelProfile: ChannelProfile): Promise<boolean>; private consumeSegments; private selfHeal; private finalizeSubscription; private processSegment; stop(): boolean; private clearBuffer; transmitStart(startIndex?: number): Nullable<number>; transmitStop(): boolean; getLast(duration: number): Nullable<Buffer>; snapshotSource(): SnapshotSource; getKeyframeAlignedStart(prebufferMs: number): Nullable<KeyframeAlignedStart>; get buffer(): Nullable<Buffer>; get channelProfile(): Nullable<ChannelProfile>; get isRestarting(): boolean; get isStarted(): boolean; get isTransmitting(): boolean; get time(): number; get configuredDuration(): number; set configuredDuration(bufferMillis: number); get segmentLength(): number; } export {}; //# sourceMappingURL=timeshift.d.ts.map