@video-lab/vue-frame 2.0.0 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,6 +8,8 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
8
8
  muted: undefined;
9
9
  loop: undefined;
10
10
  controls: undefined;
11
+ showErrorOverlay: undefined;
12
+ showLoadingOverlay: undefined;
11
13
  interactive: undefined;
12
14
  playsinline: undefined;
13
15
  debug: undefined;
@@ -18,6 +20,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
18
20
  setMuted(muted: boolean): Promise<void>;
19
21
  setVolume(volume: number): Promise<void>;
20
22
  setPlaybackRate(rate: number): Promise<void>;
23
+ setPageFullscreen(active: boolean): Promise<void>;
21
24
  enterFullscreen(): Promise<void>;
22
25
  exitFullscreen(): Promise<void>;
23
26
  setQuality(level: number | "auto"): Promise<void>;
@@ -26,9 +29,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
26
29
  pushDanmaku(item: import('@video-lab/protocol').DanmakuItem): Promise<void>;
27
30
  setDanmakuEnabled(enabled: boolean): Promise<void>;
28
31
  clearDanmaku(): Promise<void>;
29
- reconnect(options?: {
30
- resetCounter?: boolean;
31
- }): Promise<void>;
32
+ retry(): Promise<void>;
32
33
  destroy(): Promise<void>;
33
34
  getCurrentTime(): number;
34
35
  getDuration(): number;
@@ -36,6 +37,11 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
36
37
  getPlayerHandle(): import('./types').PlayerHandle | null;
37
38
  }, unknown, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {
38
39
  playerEvent: (payload: {
40
+ event: "pagefullscreenchange";
41
+ payload: {
42
+ active: boolean;
43
+ };
44
+ } | {
39
45
  event: "sourceroute";
40
46
  payload: {
41
47
  outcome: "selected";
@@ -76,9 +82,9 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
76
82
  bitrate?: number | undefined;
77
83
  }[];
78
84
  subtitles?: {
79
- locale: string;
80
85
  label: string;
81
86
  id: number;
87
+ locale: string;
82
88
  }[] | undefined;
83
89
  };
84
90
  } | {
@@ -99,8 +105,8 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
99
105
  } | {
100
106
  event: "volumechange";
101
107
  payload: {
102
- muted: boolean;
103
108
  volume: number;
109
+ muted: boolean;
104
110
  };
105
111
  } | {
106
112
  event: "seeking";
@@ -121,8 +127,8 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
121
127
  } | {
122
128
  event: "qualitychange";
123
129
  payload: {
124
- auto: boolean;
125
130
  level: number;
131
+ auto: boolean;
126
132
  };
127
133
  } | {
128
134
  event: "subtitlechange";
@@ -135,7 +141,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
135
141
  code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
136
142
  message: string;
137
143
  retryable: boolean;
138
- category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
144
+ category: "manifest" | "media" | "network" | "auth" | "env" | "autoplay";
139
145
  cause?: import('zod').objectOutputType<{
140
146
  name: import('zod').ZodString;
141
147
  message: import('zod').ZodString;
@@ -146,77 +152,80 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
146
152
  } | {
147
153
  event: "autoplayblocked";
148
154
  payload: {};
149
- } | {
150
- event: "reconnectstart";
151
- payload: {
152
- attempt: number;
153
- maxAttempts: number;
154
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
155
- nextDelayMs?: number | undefined;
156
- };
157
- } | {
158
- event: "reconnectsuccess";
159
- payload: {
160
- attempts: number;
161
- };
162
- } | {
163
- event: "reconnectfailed";
164
- payload: {
165
- attempts: number;
166
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
167
- };
168
155
  } | {
169
156
  event: "recovery";
170
157
  payload: {
171
- attempt: number;
172
- maxAttempts: number;
158
+ sessionId: string;
173
159
  phase: "detected";
174
160
  recoveryId: number;
175
161
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
176
- trigger: "error" | "manual" | "visibility";
162
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
163
+ attempt: number;
164
+ maxAttempts: number;
165
+ elapsedMs: number;
177
166
  reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
178
167
  } | {
168
+ sessionId: string;
169
+ phase: "backoff";
170
+ recoveryId: number;
171
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
172
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
179
173
  attempt: number;
180
174
  maxAttempts: number;
175
+ elapsedMs: number;
176
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
177
+ } | {
178
+ sessionId: string;
181
179
  phase: "attempting";
182
180
  recoveryId: number;
183
181
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
184
- trigger: "error" | "manual" | "visibility";
185
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
186
- } | {
182
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
187
183
  attempt: number;
188
184
  maxAttempts: number;
185
+ elapsedMs: number;
186
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
187
+ } | {
188
+ sessionId: string;
189
189
  phase: "validating";
190
190
  recoveryId: number;
191
191
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
192
- trigger: "error" | "manual" | "visibility";
193
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
194
- } | {
192
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
195
193
  attempt: number;
196
194
  maxAttempts: number;
195
+ elapsedMs: number;
196
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
197
+ } | {
198
+ sessionId: string;
197
199
  phase: "recovered";
198
200
  recoveryId: number;
199
201
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
200
- trigger: "error" | "manual" | "visibility";
202
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
203
+ attempt: number;
204
+ maxAttempts: number;
205
+ elapsedMs: number;
201
206
  validatedBy: "playing_position_advance";
202
207
  reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
203
208
  } | {
204
209
  outcome: "timeout" | "attempts_exhausted";
205
- attempt: number;
206
- maxAttempts: number;
210
+ sessionId: string;
207
211
  phase: "failed";
208
212
  recoveryId: number;
209
213
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
210
- trigger: "error" | "manual" | "visibility";
211
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
212
- } | {
213
- outcome: "source_changed" | "destroyed" | "superseded";
214
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
214
215
  attempt: number;
215
216
  maxAttempts: number;
217
+ elapsedMs: number;
218
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
219
+ } | {
220
+ outcome: "source_changed" | "destroyed" | "superseded" | "user_paused" | "natural_recovery";
221
+ sessionId: string;
216
222
  phase: "cancelled";
217
223
  recoveryId: number;
218
224
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
219
- trigger: "error" | "manual" | "visibility";
225
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
226
+ attempt: number;
227
+ maxAttempts: number;
228
+ elapsedMs: number;
220
229
  reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
221
230
  };
222
231
  } | {
@@ -235,7 +244,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
235
244
  phase: "start" | "end";
236
245
  position: number;
237
246
  durationMs?: number | undefined;
238
- kind?: "seek" | "playback" | "firstframe" | undefined;
247
+ kind?: "playback" | "firstframe" | "seek" | undefined;
239
248
  };
240
249
  } | {
241
250
  event: "playablechange";
@@ -243,6 +252,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
243
252
  reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
244
253
  playable: boolean;
245
254
  recoverable: boolean;
255
+ action?: "play" | "retry" | "replace-source" | "recreate-frame" | "none" | undefined;
246
256
  };
247
257
  } | {
248
258
  event: "kernelhealth";
@@ -298,12 +308,296 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
298
308
  } | {
299
309
  event: "useraction";
300
310
  payload: {
301
- source: string;
302
311
  action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
312
+ source: string;
303
313
  from: string | number | boolean | null;
304
314
  to: string | number | boolean | null;
305
315
  };
306
316
  }) => void;
317
+ deliveredPlayerEvent: (payload: {
318
+ event: {
319
+ event: "pagefullscreenchange";
320
+ payload: {
321
+ active: boolean;
322
+ };
323
+ } | {
324
+ event: "sourceroute";
325
+ payload: {
326
+ outcome: "selected";
327
+ sessionId: string;
328
+ candidateTypes: ("mp4" | "hls" | "flv")[];
329
+ streamKind: "live" | "vod";
330
+ runtime: {
331
+ platform: "unknown" | "ios" | "android" | "desktop";
332
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
333
+ mse: "standard" | "managed" | "unavailable";
334
+ };
335
+ mediaType: "mp4" | "hls" | "flv";
336
+ kernel: "native" | "hls.js" | "flv.js";
337
+ reason: "required_hls" | "live_preference" | "vod_preference" | "native_mp4_fallback";
338
+ } | {
339
+ outcome: "unsupported";
340
+ sessionId: string;
341
+ candidateTypes: ("mp4" | "hls" | "flv")[];
342
+ streamKind: "live" | "vod";
343
+ runtime: {
344
+ platform: "unknown" | "ios" | "android" | "desktop";
345
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
346
+ mse: "standard" | "managed" | "unavailable";
347
+ };
348
+ mediaType: null;
349
+ kernel: null;
350
+ reason: "no_supported_candidate";
351
+ errorCode: "E_MEDIA_NOT_SUPPORTED";
352
+ };
353
+ } | {
354
+ event: "ready";
355
+ payload: {
356
+ duration: number;
357
+ quality: {
358
+ level: number;
359
+ label?: string | undefined;
360
+ height?: number | undefined;
361
+ bitrate?: number | undefined;
362
+ }[];
363
+ subtitles?: {
364
+ label: string;
365
+ id: number;
366
+ locale: string;
367
+ }[] | undefined;
368
+ };
369
+ } | {
370
+ event: "play";
371
+ payload: {};
372
+ } | {
373
+ event: "pause";
374
+ payload: {};
375
+ } | {
376
+ event: "ended";
377
+ payload: {};
378
+ } | {
379
+ event: "timeupdate";
380
+ payload: {
381
+ duration: number;
382
+ time: number;
383
+ };
384
+ } | {
385
+ event: "volumechange";
386
+ payload: {
387
+ volume: number;
388
+ muted: boolean;
389
+ };
390
+ } | {
391
+ event: "seeking";
392
+ payload: {
393
+ time: number;
394
+ };
395
+ } | {
396
+ event: "seeked";
397
+ payload: {
398
+ time: number;
399
+ };
400
+ } | {
401
+ event: "waiting";
402
+ payload: {};
403
+ } | {
404
+ event: "playing";
405
+ payload: {};
406
+ } | {
407
+ event: "qualitychange";
408
+ payload: {
409
+ level: number;
410
+ auto: boolean;
411
+ };
412
+ } | {
413
+ event: "subtitlechange";
414
+ payload: {
415
+ id: number | null;
416
+ };
417
+ } | {
418
+ event: "error";
419
+ payload: {
420
+ code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
421
+ message: string;
422
+ retryable: boolean;
423
+ category: "manifest" | "media" | "network" | "auth" | "env" | "autoplay";
424
+ cause?: import('zod').objectOutputType<{
425
+ name: import('zod').ZodString;
426
+ message: import('zod').ZodString;
427
+ code: import('zod').ZodOptional<import('zod').ZodNumber>;
428
+ status: import('zod').ZodOptional<import('zod').ZodNumber>;
429
+ }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
430
+ };
431
+ } | {
432
+ event: "autoplayblocked";
433
+ payload: {};
434
+ } | {
435
+ event: "recovery";
436
+ payload: {
437
+ sessionId: string;
438
+ phase: "detected";
439
+ recoveryId: number;
440
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
441
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
442
+ attempt: number;
443
+ maxAttempts: number;
444
+ elapsedMs: number;
445
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
446
+ } | {
447
+ sessionId: string;
448
+ phase: "backoff";
449
+ recoveryId: number;
450
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
451
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
452
+ attempt: number;
453
+ maxAttempts: number;
454
+ elapsedMs: number;
455
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
456
+ } | {
457
+ sessionId: string;
458
+ phase: "attempting";
459
+ recoveryId: number;
460
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
461
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
462
+ attempt: number;
463
+ maxAttempts: number;
464
+ elapsedMs: number;
465
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
466
+ } | {
467
+ sessionId: string;
468
+ phase: "validating";
469
+ recoveryId: number;
470
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
471
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
472
+ attempt: number;
473
+ maxAttempts: number;
474
+ elapsedMs: number;
475
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
476
+ } | {
477
+ sessionId: string;
478
+ phase: "recovered";
479
+ recoveryId: number;
480
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
481
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
482
+ attempt: number;
483
+ maxAttempts: number;
484
+ elapsedMs: number;
485
+ validatedBy: "playing_position_advance";
486
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
487
+ } | {
488
+ outcome: "timeout" | "attempts_exhausted";
489
+ sessionId: string;
490
+ phase: "failed";
491
+ recoveryId: number;
492
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
493
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
494
+ attempt: number;
495
+ maxAttempts: number;
496
+ elapsedMs: number;
497
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
498
+ } | {
499
+ outcome: "source_changed" | "destroyed" | "superseded" | "user_paused" | "natural_recovery";
500
+ sessionId: string;
501
+ phase: "cancelled";
502
+ recoveryId: number;
503
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
504
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
505
+ attempt: number;
506
+ maxAttempts: number;
507
+ elapsedMs: number;
508
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
509
+ };
510
+ } | {
511
+ event: "compatwarning";
512
+ payload: {
513
+ code: "W_BROWSER_INCOMPATIBLE" | "W_VERSION_MISMATCH" | "W_EVENT_REJECTED";
514
+ message: string;
515
+ ua: string;
516
+ hostVersion?: string | undefined;
517
+ iframeVersion?: string | undefined;
518
+ rejectedEvent?: string | undefined;
519
+ };
520
+ } | {
521
+ event: "stalled";
522
+ payload: {
523
+ phase: "start" | "end";
524
+ position: number;
525
+ durationMs?: number | undefined;
526
+ kind?: "playback" | "firstframe" | "seek" | undefined;
527
+ };
528
+ } | {
529
+ event: "playablechange";
530
+ payload: {
531
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
532
+ playable: boolean;
533
+ recoverable: boolean;
534
+ action?: "play" | "retry" | "replace-source" | "recreate-frame" | "none" | undefined;
535
+ };
536
+ } | {
537
+ event: "kernelhealth";
538
+ payload: {
539
+ reason: "media" | "network" | "other";
540
+ durationMs: number;
541
+ degraded: boolean;
542
+ count: number;
543
+ detail: string;
544
+ };
545
+ } | {
546
+ event: "audiohealth";
547
+ payload: {
548
+ reason: "audio_data_gap";
549
+ durationMs: number;
550
+ degraded: boolean;
551
+ };
552
+ } | {
553
+ event: "bufferhealth";
554
+ payload: {
555
+ draining: boolean;
556
+ marginSec: number;
557
+ };
558
+ } | {
559
+ event: "contextchange";
560
+ payload: {
561
+ sessionId: string;
562
+ kernel: "native" | "hls.js" | "flv.js";
563
+ position: number;
564
+ qualityLevel: number | null;
565
+ srcOrigin: string;
566
+ srcPath: string;
567
+ streamKind?: "live" | "vod" | undefined;
568
+ runtime?: {
569
+ platform: "unknown" | "ios" | "android" | "desktop";
570
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
571
+ mse: "standard" | "managed" | "unavailable";
572
+ } | undefined;
573
+ mediaType?: "mp4" | "hls" | "flv" | undefined;
574
+ };
575
+ } | {
576
+ event: "firstframe";
577
+ payload: {
578
+ fvt: number;
579
+ };
580
+ } | {
581
+ event: "framefreeze";
582
+ payload: {
583
+ durationMs: number;
584
+ droppedFrames: number;
585
+ totalFrames: number;
586
+ };
587
+ } | {
588
+ event: "useraction";
589
+ payload: {
590
+ action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
591
+ source: string;
592
+ from: string | number | boolean | null;
593
+ to: string | number | boolean | null;
594
+ };
595
+ };
596
+ producerSessionId: string;
597
+ deliveryId: string;
598
+ occurredAtMs: number;
599
+ sequence: number;
600
+ }) => void;
307
601
  ready: (payload: {
308
602
  duration: number;
309
603
  quality: import('@video-lab/protocol').QualityLevel[];
@@ -339,7 +633,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
339
633
  code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
340
634
  message: string;
341
635
  retryable: boolean;
342
- category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
636
+ category: "manifest" | "media" | "network" | "auth" | "env" | "autoplay";
343
637
  cause?: import('zod').objectOutputType<{
344
638
  name: import('zod').ZodString;
345
639
  message: import('zod').ZodString;
@@ -348,12 +642,6 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
348
642
  }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
349
643
  }) => void;
350
644
  autoplayBlocked: () => void;
351
- reconnectStart: (payload: {
352
- attempt: number;
353
- maxAttempts: number;
354
- }) => void;
355
- reconnectSuccess: () => void;
356
- reconnectFailed: () => void;
357
645
  compatWarning: (payload: {
358
646
  code: string;
359
647
  message: string;
@@ -365,9 +653,10 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
365
653
  durationMs?: number;
366
654
  }) => void;
367
655
  playableChange: (payload: {
656
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
368
657
  playable: boolean;
369
- reason: import('@video-lab/protocol').PlayableReason;
370
658
  recoverable: boolean;
659
+ action?: "play" | "retry" | "replace-source" | "recreate-frame" | "none" | undefined;
371
660
  }) => void;
372
661
  kernelHealth: (payload: {
373
662
  reason: "media" | "network" | "other";
@@ -436,9 +725,12 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
436
725
  droppedFrames: number;
437
726
  totalFrames: number;
438
727
  }) => void;
728
+ pageFullscreenChange: (payload: {
729
+ active: boolean;
730
+ }) => void;
439
731
  userAction: (payload: {
440
- source: string;
441
732
  action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
733
+ source: string;
442
734
  from: string | number | boolean | null;
443
735
  to: string | number | boolean | null;
444
736
  }) => void;
@@ -447,11 +739,18 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
447
739
  muted: undefined;
448
740
  loop: undefined;
449
741
  controls: undefined;
742
+ showErrorOverlay: undefined;
743
+ showLoadingOverlay: undefined;
450
744
  interactive: undefined;
451
745
  playsinline: undefined;
452
746
  debug: undefined;
453
747
  }>>> & {
454
748
  onPlayerEvent?: ((payload: {
749
+ event: "pagefullscreenchange";
750
+ payload: {
751
+ active: boolean;
752
+ };
753
+ } | {
455
754
  event: "sourceroute";
456
755
  payload: {
457
756
  outcome: "selected";
@@ -492,9 +791,9 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
492
791
  bitrate?: number | undefined;
493
792
  }[];
494
793
  subtitles?: {
495
- locale: string;
496
794
  label: string;
497
795
  id: number;
796
+ locale: string;
498
797
  }[] | undefined;
499
798
  };
500
799
  } | {
@@ -515,8 +814,8 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
515
814
  } | {
516
815
  event: "volumechange";
517
816
  payload: {
518
- muted: boolean;
519
817
  volume: number;
818
+ muted: boolean;
520
819
  };
521
820
  } | {
522
821
  event: "seeking";
@@ -537,8 +836,8 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
537
836
  } | {
538
837
  event: "qualitychange";
539
838
  payload: {
540
- auto: boolean;
541
839
  level: number;
840
+ auto: boolean;
542
841
  };
543
842
  } | {
544
843
  event: "subtitlechange";
@@ -551,7 +850,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
551
850
  code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
552
851
  message: string;
553
852
  retryable: boolean;
554
- category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
853
+ category: "manifest" | "media" | "network" | "auth" | "env" | "autoplay";
555
854
  cause?: import('zod').objectOutputType<{
556
855
  name: import('zod').ZodString;
557
856
  message: import('zod').ZodString;
@@ -562,77 +861,80 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
562
861
  } | {
563
862
  event: "autoplayblocked";
564
863
  payload: {};
565
- } | {
566
- event: "reconnectstart";
567
- payload: {
568
- attempt: number;
569
- maxAttempts: number;
570
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
571
- nextDelayMs?: number | undefined;
572
- };
573
- } | {
574
- event: "reconnectsuccess";
575
- payload: {
576
- attempts: number;
577
- };
578
- } | {
579
- event: "reconnectfailed";
580
- payload: {
581
- attempts: number;
582
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
583
- };
584
864
  } | {
585
865
  event: "recovery";
586
866
  payload: {
587
- attempt: number;
588
- maxAttempts: number;
867
+ sessionId: string;
589
868
  phase: "detected";
590
869
  recoveryId: number;
591
870
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
592
- trigger: "error" | "manual" | "visibility";
871
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
872
+ attempt: number;
873
+ maxAttempts: number;
874
+ elapsedMs: number;
593
875
  reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
594
876
  } | {
877
+ sessionId: string;
878
+ phase: "backoff";
879
+ recoveryId: number;
880
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
881
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
595
882
  attempt: number;
596
883
  maxAttempts: number;
884
+ elapsedMs: number;
885
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
886
+ } | {
887
+ sessionId: string;
597
888
  phase: "attempting";
598
889
  recoveryId: number;
599
890
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
600
- trigger: "error" | "manual" | "visibility";
601
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
602
- } | {
891
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
603
892
  attempt: number;
604
893
  maxAttempts: number;
894
+ elapsedMs: number;
895
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
896
+ } | {
897
+ sessionId: string;
605
898
  phase: "validating";
606
899
  recoveryId: number;
607
900
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
608
- trigger: "error" | "manual" | "visibility";
609
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
610
- } | {
901
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
611
902
  attempt: number;
612
903
  maxAttempts: number;
904
+ elapsedMs: number;
905
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
906
+ } | {
907
+ sessionId: string;
613
908
  phase: "recovered";
614
909
  recoveryId: number;
615
910
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
616
- trigger: "error" | "manual" | "visibility";
911
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
912
+ attempt: number;
913
+ maxAttempts: number;
914
+ elapsedMs: number;
617
915
  validatedBy: "playing_position_advance";
618
916
  reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
619
917
  } | {
620
918
  outcome: "timeout" | "attempts_exhausted";
621
- attempt: number;
622
- maxAttempts: number;
919
+ sessionId: string;
623
920
  phase: "failed";
624
921
  recoveryId: number;
625
922
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
626
- trigger: "error" | "manual" | "visibility";
627
- reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
628
- } | {
629
- outcome: "source_changed" | "destroyed" | "superseded";
923
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
630
924
  attempt: number;
631
925
  maxAttempts: number;
926
+ elapsedMs: number;
927
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
928
+ } | {
929
+ outcome: "source_changed" | "destroyed" | "superseded" | "user_paused" | "natural_recovery";
930
+ sessionId: string;
632
931
  phase: "cancelled";
633
932
  recoveryId: number;
634
933
  strategy: "reconnect" | "media_recovery" | "visibility_reload";
635
- trigger: "error" | "manual" | "visibility";
934
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
935
+ attempt: number;
936
+ maxAttempts: number;
937
+ elapsedMs: number;
636
938
  reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
637
939
  };
638
940
  } | {
@@ -651,7 +953,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
651
953
  phase: "start" | "end";
652
954
  position: number;
653
955
  durationMs?: number | undefined;
654
- kind?: "seek" | "playback" | "firstframe" | undefined;
956
+ kind?: "playback" | "firstframe" | "seek" | undefined;
655
957
  };
656
958
  } | {
657
959
  event: "playablechange";
@@ -659,6 +961,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
659
961
  reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
660
962
  playable: boolean;
661
963
  recoverable: boolean;
964
+ action?: "play" | "retry" | "replace-source" | "recreate-frame" | "none" | undefined;
662
965
  };
663
966
  } | {
664
967
  event: "kernelhealth";
@@ -714,12 +1017,296 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
714
1017
  } | {
715
1018
  event: "useraction";
716
1019
  payload: {
717
- source: string;
718
1020
  action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
1021
+ source: string;
719
1022
  from: string | number | boolean | null;
720
1023
  to: string | number | boolean | null;
721
1024
  };
722
1025
  }) => any) | undefined;
1026
+ onDeliveredPlayerEvent?: ((payload: {
1027
+ event: {
1028
+ event: "pagefullscreenchange";
1029
+ payload: {
1030
+ active: boolean;
1031
+ };
1032
+ } | {
1033
+ event: "sourceroute";
1034
+ payload: {
1035
+ outcome: "selected";
1036
+ sessionId: string;
1037
+ candidateTypes: ("mp4" | "hls" | "flv")[];
1038
+ streamKind: "live" | "vod";
1039
+ runtime: {
1040
+ platform: "unknown" | "ios" | "android" | "desktop";
1041
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1042
+ mse: "standard" | "managed" | "unavailable";
1043
+ };
1044
+ mediaType: "mp4" | "hls" | "flv";
1045
+ kernel: "native" | "hls.js" | "flv.js";
1046
+ reason: "required_hls" | "live_preference" | "vod_preference" | "native_mp4_fallback";
1047
+ } | {
1048
+ outcome: "unsupported";
1049
+ sessionId: string;
1050
+ candidateTypes: ("mp4" | "hls" | "flv")[];
1051
+ streamKind: "live" | "vod";
1052
+ runtime: {
1053
+ platform: "unknown" | "ios" | "android" | "desktop";
1054
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1055
+ mse: "standard" | "managed" | "unavailable";
1056
+ };
1057
+ mediaType: null;
1058
+ kernel: null;
1059
+ reason: "no_supported_candidate";
1060
+ errorCode: "E_MEDIA_NOT_SUPPORTED";
1061
+ };
1062
+ } | {
1063
+ event: "ready";
1064
+ payload: {
1065
+ duration: number;
1066
+ quality: {
1067
+ level: number;
1068
+ label?: string | undefined;
1069
+ height?: number | undefined;
1070
+ bitrate?: number | undefined;
1071
+ }[];
1072
+ subtitles?: {
1073
+ label: string;
1074
+ id: number;
1075
+ locale: string;
1076
+ }[] | undefined;
1077
+ };
1078
+ } | {
1079
+ event: "play";
1080
+ payload: {};
1081
+ } | {
1082
+ event: "pause";
1083
+ payload: {};
1084
+ } | {
1085
+ event: "ended";
1086
+ payload: {};
1087
+ } | {
1088
+ event: "timeupdate";
1089
+ payload: {
1090
+ duration: number;
1091
+ time: number;
1092
+ };
1093
+ } | {
1094
+ event: "volumechange";
1095
+ payload: {
1096
+ volume: number;
1097
+ muted: boolean;
1098
+ };
1099
+ } | {
1100
+ event: "seeking";
1101
+ payload: {
1102
+ time: number;
1103
+ };
1104
+ } | {
1105
+ event: "seeked";
1106
+ payload: {
1107
+ time: number;
1108
+ };
1109
+ } | {
1110
+ event: "waiting";
1111
+ payload: {};
1112
+ } | {
1113
+ event: "playing";
1114
+ payload: {};
1115
+ } | {
1116
+ event: "qualitychange";
1117
+ payload: {
1118
+ level: number;
1119
+ auto: boolean;
1120
+ };
1121
+ } | {
1122
+ event: "subtitlechange";
1123
+ payload: {
1124
+ id: number | null;
1125
+ };
1126
+ } | {
1127
+ event: "error";
1128
+ payload: {
1129
+ code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
1130
+ message: string;
1131
+ retryable: boolean;
1132
+ category: "manifest" | "media" | "network" | "auth" | "env" | "autoplay";
1133
+ cause?: import('zod').objectOutputType<{
1134
+ name: import('zod').ZodString;
1135
+ message: import('zod').ZodString;
1136
+ code: import('zod').ZodOptional<import('zod').ZodNumber>;
1137
+ status: import('zod').ZodOptional<import('zod').ZodNumber>;
1138
+ }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
1139
+ };
1140
+ } | {
1141
+ event: "autoplayblocked";
1142
+ payload: {};
1143
+ } | {
1144
+ event: "recovery";
1145
+ payload: {
1146
+ sessionId: string;
1147
+ phase: "detected";
1148
+ recoveryId: number;
1149
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1150
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1151
+ attempt: number;
1152
+ maxAttempts: number;
1153
+ elapsedMs: number;
1154
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1155
+ } | {
1156
+ sessionId: string;
1157
+ phase: "backoff";
1158
+ recoveryId: number;
1159
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1160
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1161
+ attempt: number;
1162
+ maxAttempts: number;
1163
+ elapsedMs: number;
1164
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1165
+ } | {
1166
+ sessionId: string;
1167
+ phase: "attempting";
1168
+ recoveryId: number;
1169
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1170
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1171
+ attempt: number;
1172
+ maxAttempts: number;
1173
+ elapsedMs: number;
1174
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1175
+ } | {
1176
+ sessionId: string;
1177
+ phase: "validating";
1178
+ recoveryId: number;
1179
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1180
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1181
+ attempt: number;
1182
+ maxAttempts: number;
1183
+ elapsedMs: number;
1184
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1185
+ } | {
1186
+ sessionId: string;
1187
+ phase: "recovered";
1188
+ recoveryId: number;
1189
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1190
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1191
+ attempt: number;
1192
+ maxAttempts: number;
1193
+ elapsedMs: number;
1194
+ validatedBy: "playing_position_advance";
1195
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1196
+ } | {
1197
+ outcome: "timeout" | "attempts_exhausted";
1198
+ sessionId: string;
1199
+ phase: "failed";
1200
+ recoveryId: number;
1201
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1202
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1203
+ attempt: number;
1204
+ maxAttempts: number;
1205
+ elapsedMs: number;
1206
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1207
+ } | {
1208
+ outcome: "source_changed" | "destroyed" | "superseded" | "user_paused" | "natural_recovery";
1209
+ sessionId: string;
1210
+ phase: "cancelled";
1211
+ recoveryId: number;
1212
+ strategy: "reconnect" | "media_recovery" | "visibility_reload";
1213
+ trigger: "error" | "manual" | "visibility" | "stall" | "startup_timeout";
1214
+ attempt: number;
1215
+ maxAttempts: number;
1216
+ elapsedMs: number;
1217
+ reason?: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED" | undefined;
1218
+ };
1219
+ } | {
1220
+ event: "compatwarning";
1221
+ payload: {
1222
+ code: "W_BROWSER_INCOMPATIBLE" | "W_VERSION_MISMATCH" | "W_EVENT_REJECTED";
1223
+ message: string;
1224
+ ua: string;
1225
+ hostVersion?: string | undefined;
1226
+ iframeVersion?: string | undefined;
1227
+ rejectedEvent?: string | undefined;
1228
+ };
1229
+ } | {
1230
+ event: "stalled";
1231
+ payload: {
1232
+ phase: "start" | "end";
1233
+ position: number;
1234
+ durationMs?: number | undefined;
1235
+ kind?: "playback" | "firstframe" | "seek" | undefined;
1236
+ };
1237
+ } | {
1238
+ event: "playablechange";
1239
+ payload: {
1240
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
1241
+ playable: boolean;
1242
+ recoverable: boolean;
1243
+ action?: "play" | "retry" | "replace-source" | "recreate-frame" | "none" | undefined;
1244
+ };
1245
+ } | {
1246
+ event: "kernelhealth";
1247
+ payload: {
1248
+ reason: "media" | "network" | "other";
1249
+ durationMs: number;
1250
+ degraded: boolean;
1251
+ count: number;
1252
+ detail: string;
1253
+ };
1254
+ } | {
1255
+ event: "audiohealth";
1256
+ payload: {
1257
+ reason: "audio_data_gap";
1258
+ durationMs: number;
1259
+ degraded: boolean;
1260
+ };
1261
+ } | {
1262
+ event: "bufferhealth";
1263
+ payload: {
1264
+ draining: boolean;
1265
+ marginSec: number;
1266
+ };
1267
+ } | {
1268
+ event: "contextchange";
1269
+ payload: {
1270
+ sessionId: string;
1271
+ kernel: "native" | "hls.js" | "flv.js";
1272
+ position: number;
1273
+ qualityLevel: number | null;
1274
+ srcOrigin: string;
1275
+ srcPath: string;
1276
+ streamKind?: "live" | "vod" | undefined;
1277
+ runtime?: {
1278
+ platform: "unknown" | "ios" | "android" | "desktop";
1279
+ browser: "unknown" | "webkit" | "gecko" | "chromium" | "embedded";
1280
+ mse: "standard" | "managed" | "unavailable";
1281
+ } | undefined;
1282
+ mediaType?: "mp4" | "hls" | "flv" | undefined;
1283
+ };
1284
+ } | {
1285
+ event: "firstframe";
1286
+ payload: {
1287
+ fvt: number;
1288
+ };
1289
+ } | {
1290
+ event: "framefreeze";
1291
+ payload: {
1292
+ durationMs: number;
1293
+ droppedFrames: number;
1294
+ totalFrames: number;
1295
+ };
1296
+ } | {
1297
+ event: "useraction";
1298
+ payload: {
1299
+ action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
1300
+ source: string;
1301
+ from: string | number | boolean | null;
1302
+ to: string | number | boolean | null;
1303
+ };
1304
+ };
1305
+ producerSessionId: string;
1306
+ deliveryId: string;
1307
+ occurredAtMs: number;
1308
+ sequence: number;
1309
+ }) => any) | undefined;
723
1310
  onReady?: ((payload: {
724
1311
  duration: number;
725
1312
  quality: import('@video-lab/protocol').QualityLevel[];
@@ -755,7 +1342,7 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
755
1342
  code: "E_MEDIA_NOT_SUPPORTED" | "E_MANIFEST_PARSE" | "E_MEDIA_DECODE" | "E_MEDIA_ABORTED" | "E_SUBTITLE_LOAD_FAILED" | "E_AUTOPLAY_BLOCKED" | "E_NETWORK" | "E_NETWORK_TIMEOUT" | "E_AUTH_EXPIRED" | "E_ENV_CSP_BLOCKED" | "E_METHOD_NOT_SUPPORTED" | "E_DANMAKU_SEND_FAILED" | "E_INTERNAL" | "E_UNKNOWN" | "E_PLAYER_DESTROYED" | "E_HANDSHAKE_TIMEOUT" | "E_HANDSHAKE_VERSION_MISMATCH" | "E_LOAD_FAILED" | "E_FRAME_CRASHED";
756
1343
  message: string;
757
1344
  retryable: boolean;
758
- category: "autoplay" | "manifest" | "media" | "network" | "auth" | "env";
1345
+ category: "manifest" | "media" | "network" | "auth" | "env" | "autoplay";
759
1346
  cause?: import('zod').objectOutputType<{
760
1347
  name: import('zod').ZodString;
761
1348
  message: import('zod').ZodString;
@@ -764,12 +1351,6 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
764
1351
  }, import('zod').ZodUnion<[import('zod').ZodString, import('zod').ZodNumber, import('zod').ZodBoolean]>, "strip"> | undefined;
765
1352
  }) => any) | undefined;
766
1353
  onAutoplayBlocked?: (() => any) | undefined;
767
- onReconnectStart?: ((payload: {
768
- attempt: number;
769
- maxAttempts: number;
770
- }) => any) | undefined;
771
- onReconnectSuccess?: (() => any) | undefined;
772
- onReconnectFailed?: (() => any) | undefined;
773
1354
  onCompatWarning?: ((payload: {
774
1355
  code: string;
775
1356
  message: string;
@@ -781,9 +1362,10 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
781
1362
  durationMs?: number;
782
1363
  }) => any) | undefined;
783
1364
  onPlayableChange?: ((payload: {
1365
+ reason: "error" | "stalled" | "ok" | "initializing" | "buffering" | "reconnecting" | "autoplay_blocked" | "frame_disconnected" | "degraded";
784
1366
  playable: boolean;
785
- reason: import('@video-lab/protocol').PlayableReason;
786
1367
  recoverable: boolean;
1368
+ action?: "play" | "retry" | "replace-source" | "recreate-frame" | "none" | undefined;
787
1369
  }) => any) | undefined;
788
1370
  onKernelHealth?: ((payload: {
789
1371
  reason: "media" | "network" | "other";
@@ -852,18 +1434,23 @@ declare const __VLS_component: import('vue').DefineComponent<__VLS_WithDefaults<
852
1434
  droppedFrames: number;
853
1435
  totalFrames: number;
854
1436
  }) => any) | undefined;
1437
+ onPageFullscreenChange?: ((payload: {
1438
+ active: boolean;
1439
+ }) => any) | undefined;
855
1440
  onUserAction?: ((payload: {
856
- source: string;
857
1441
  action: "seek" | "switch_play_pause" | "switch_fullscreen" | "switch_cssfullscreen" | "switch_css_fullscreen" | "change_definition" | "change_rate" | "change_volume" | "change_muted" | "change_pip" | "rotate" | "shot" | "download" | "switch_danmu" | "error_retry";
1442
+ source: string;
858
1443
  from: string | number | boolean | null;
859
1444
  to: string | number | boolean | null;
860
1445
  }) => any) | undefined;
861
1446
  }, {
862
- autoplay: boolean;
863
1447
  muted: boolean;
1448
+ autoplay: boolean;
864
1449
  loop: boolean;
865
1450
  playsinline: boolean;
866
1451
  controls: boolean;
1452
+ showErrorOverlay: boolean;
1453
+ showLoadingOverlay: boolean;
867
1454
  interactive: boolean;
868
1455
  debug: boolean;
869
1456
  }, {}>;