export interface TimelinePoint { id: number time: number presetId?: number presetName?: string active: boolean passed?: boolean } export interface PTZPresetInfo { id: string name: string } export interface PTZCapabilities { maxPresetNum?: number controlProtocol?: { current: string } absoluteZoom?: { min: number; max: number } support3DPosition?: boolean supportPtzLimits?: boolean [key: string]: unknown } export interface LocalPreset { id: string name: string pointId: number time: number } export interface PlaybackInfo { videoId: string customerDomain: string hlsUrl?: string whepUrl?: string isLive: boolean } export interface SearchForm { streamSn: string name: string lssId: string cameraId: string } export interface StreamForm { id?: number name: string lssId: string cameraId: string channelId?: number pushMethod: string commandTemplate: string timeoutSeconds: number remark: string enabled: boolean }