/** * openqoe-core Types & Interfaces */ export type Environment = "dev" | "staging" | "prod"; export type LogLevel = "error" | "warn" | "info" | "debug"; export type PlayerType = "html5" | "videojs" | "hlsjs" | "dashjs" | "shaka"; export type DeviceCategory = "desktop" | "mobile" | "tablet" | "tv"; export type StreamType = "vod" | "live"; export type PlayerPreload = "none" | "metadata" | "auto"; export type ErrorFamily = "network" | "decoder" | "source" | "drm" | "business"; export interface OpenQoEConfig { orgId: string; playerId: string; endpointUrl: string; env?: Environment; appName?: string; appVersion?: string; samplingRate?: number; enablePII?: boolean; hashSalt?: string; batchSize?: number; batchInterval?: number; maxQueueSize?: number; debug?: boolean; logLevel?: LogLevel; } export interface VideoMetadata { videoId?: string; videoTitle?: string; videoSeries?: string; duration?: number; sourceUrl?: string; customDimensions?: Record; } export interface DeviceInfo { name?: string; model?: string; category?: DeviceCategory; manufacturer?: string; } export interface OSInfo { family?: string; version?: string; } export interface BrowserInfo { family?: string; version?: string; } export interface PlayerInfo { name: string; version?: string; autoplay?: boolean; preload?: PlayerPreload; } export interface NetworkInfo { asn?: number; country_code?: string; region?: string; city?: string; } export interface CDNInfo { provider?: string; edge_pop?: string; origin?: string; } export interface VideoInfo { id?: string; title?: string; series?: string; duration?: number; source_url?: string; } export interface Resolution { width: number; height: number; } export interface CMCDData { br?: number; bl?: number; bs?: boolean; cid?: string; d?: number; dl?: number; mtp?: number; nor?: string; nrr?: string; ot?: string; pr?: number; rtp?: number; sf?: string; sid?: string; st?: string; su?: boolean; tb?: number; v?: number; } export interface BaseEvent { event_type: string; event_time: number; viewer_time: number; playback_time?: number; org_id: string; player_id: string; view_id: string; session_id: string; viewer_id: string; env?: string; app_name?: string; app_version?: string; device?: DeviceInfo; os?: OSInfo; browser?: BrowserInfo; player?: PlayerInfo; network?: NetworkInfo; cdn?: CDNInfo; video?: VideoInfo; cmcd?: CMCDData; data?: Record; } export interface PlayerReadyData { player_startup_time?: number; page_load_time?: number; } export interface ViewStartData { video_startup_time?: number; preroll_requested?: boolean; } export interface PlayingData { bitrate?: number; resolution?: Resolution; framerate?: number; } export interface PauseData { playing_time?: number; } export interface SeekData { from: number; to: number; seek_latency?: number; } export interface StallStartData { buffer_length?: number; bitrate?: number; } export interface StallEndData { stall_duration: number; buffer_length?: number; } export interface QualityChangeData { previous_bitrate?: number; new_bitrate: number; previous_resolution?: Resolution; new_resolution?: Resolution; trigger?: "abr" | "manual"; } export interface EndedData { playing_time?: number; total_watch_time?: number; completion_rate?: number; rebuffer_count?: number; rebuffer_duration?: number; } export interface ErrorData { error_family: ErrorFamily; error_id?: number; error_code: string; error_message: string; error_context?: Record; } export interface QuartileData { quartile: 25 | 50 | 75 | 100; playing_time?: number; watch_time?: number; } export interface HeartbeatData { playing_time?: number; bitrate?: number; buffer_length?: number; dropped_frames?: number; } export interface SessionData { sessionId: string; viewId: string; viewStart: number; viewEnd?: number; playbackPosition: number; lastHeartbeat: number; } export interface PlayerState { position: number; duration: number; paused: boolean; ended: boolean; buffered: TimeRanges | null; ready: number; volume: number; muted: boolean; playback_rate: number; } export interface PlayerError { code: string | number; message: string; fatal?: boolean; context?: Record; } export interface PlayerAdapter { attach(player: any, metadata?: VideoMetadata): void; detach(): void; getCurrentTime(): number; getDuration(): number; getBitrate(): number | null; getVideoResolution(): Resolution | null; getPlayerState(): PlayerState; getCMCDData(): CMCDData | null; } //# sourceMappingURL=types.d.ts.map