import { PTZAction, PTZActionPhase } from '../config/schema/actions/custom/ptz'; import { CameraConfig } from '../config/schema/cameras'; import { HomeAssistant } from '../ha/types'; import { ViewMedia } from '../view/media'; import { Camera } from './camera'; import { CameraManagerReadOnlyConfigStore } from './store'; import { CameraEndpoint, CameraEndpoints, CameraEndpointsContext, CameraManagerCameraMetadata, CameraManagerMediaCapabilities, DataQuery, Engine, EngineOptions, EventQuery, EventQueryResultsMap, MediaMetadataQuery, MediaMetadataQueryResultsMap, PartialEventQuery, PartialRecordingQuery, PartialRecordingSegmentsQuery, QueryReturnType, RecordingQuery, RecordingQueryResultsMap, RecordingSegmentsQuery, RecordingSegmentsQueryResultsMap, } from './types'; export const CAMERA_MANAGER_ENGINE_EVENT_LIMIT_DEFAULT = 10000; export interface CameraManagerEngine { getEngineType(): Engine; createCamera(hass: HomeAssistant, cameraConfig: CameraConfig): Promise; 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; generateMediaFromEvents( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: EventQuery, results: QueryReturnType, ): ViewMedia[] | null; generateMediaFromRecordings( hass: HomeAssistant, store: CameraManagerReadOnlyConfigStore, query: RecordingQuery, results: QueryReturnType, ): ViewMedia[] | null; getMediaDownloadPath( hass: HomeAssistant, cameraConfig: CameraConfig, media: ViewMedia, ): Promise; favoriteMedia( hass: HomeAssistant, cameraConfig: CameraConfig, media: ViewMedia, favorite: boolean, ): Promise; getQueryResultMaxAge(query: DataQuery): 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): CameraManagerMediaCapabilities | null; getCameraEndpoints( cameraConfig: CameraConfig, context?: CameraEndpointsContext, ): CameraEndpoints | null; executePTZAction( hass: HomeAssistant, cameraConfig: CameraConfig, action: PTZAction, options?: { phase?: PTZActionPhase; preset?: string; }, ): Promise; }