import { CameraConfig } from '../config/schema/cameras'; import { HomeAssistant } from '../ha/types'; import { Endpoint } from '../types'; import { ViewMedia } from '../view/item'; import { ViewItemCapabilities } from '../view/types'; import { Camera } from './camera'; import { CameraManagerReadOnlyConfigStore } from './store'; import { CameraManagerCameraMetadata, CameraQuery, DefaultQueryParameters, Engine, EngineOptions, EventQuery, EventQueryResultsMap, MediaMetadataQuery, MediaMetadataQueryResultsMap, PartialEventQuery, PartialRecordingQuery, PartialRecordingSegmentsQuery, PartialReviewQuery, QueryReturnType, QueryType, RecordingQuery, RecordingQueryResultsMap, RecordingSegmentsQuery, RecordingSegmentsQueryResultsMap, ReviewQuery, ReviewQueryResultsMap, } from './types'; export const CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT = 10000; export interface CameraManagerEngine { getEngineType(): Engine; createCamera(hass: HomeAssistant, cameraConfig: CameraConfig): Promise; /** * Get default query parameters for a camera based on its configuration. * Engines read their own config and return generic filter params. */ getDefaultQueryParameters( camera: Camera, queryType: QueryType, ): DefaultQueryParameters; generateDefaultEventQuery( store: CameraManagerReadOnlyConfigStore, cameraIDs: Set, query: PartialEventQuery, ): EventQuery[] | null; generateDefaultRecordingQuery( store: CameraManagerReadOnlyConfigStore, cameraIDs: Set, query: PartialRecordingQuery, ): RecordingQuery[] | null; generateDefaultRecordingSegmentsQuery( store: CameraManagerReadOnlyConfigStore, cameraIDs: Set, query: PartialRecordingSegmentsQuery, ): RecordingSegmentsQuery[] | null; getEvents( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: EventQuery, engineOptions?: EngineOptions, ): Promise; getRecordings( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: RecordingQuery, engineOptions?: EngineOptions, ): Promise; getRecordingSegments( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: RecordingSegmentsQuery, engineOptions?: EngineOptions, ): Promise; generateDefaultReviewQuery( store: CameraManagerReadOnlyConfigStore, cameraIDs: Set, query?: PartialReviewQuery, ): ReviewQuery[] | null; getReviews( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: ReviewQuery, engineOptions?: EngineOptions, ): Promise; generateMediaFromEvents( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: EventQuery, results: QueryReturnType, ): ViewMedia[] | null; generateMediaFromRecordings( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: RecordingQuery, results: QueryReturnType, ): ViewMedia[] | null; generateMediaFromReviews( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: ReviewQuery, results: QueryReturnType, ): ViewMedia[] | null; getMediaDownloadPath( hass: HomeAssistant, cameraConfig: CameraConfig, media: ViewMedia, ): Promise; favoriteMedia( hass: HomeAssistant, cameraConfig: CameraConfig, media: ViewMedia, favorite: boolean, ): Promise; reviewMedia( hass: HomeAssistant, cameraConfig: CameraConfig, media: ViewMedia, reviewed: boolean, ): Promise; getQueryResultMaxAge(query: CameraQuery): number | null; getMediaSeekTime( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, media: ViewMedia, target: Date, engineOptions?: EngineOptions, ): Promise; getMediaMetadata( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: MediaMetadataQuery, engineOptions?: EngineOptions, ): Promise; getCameraMetadata( hass: HomeAssistant, cameraConfig: CameraConfig, ): CameraManagerCameraMetadata; getMediaCapabilities(media: ViewMedia): ViewItemCapabilities | null; }