@3dsource/angular-unreal-module 0.0.99 → 0.0.101-dev.0

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.
@@ -6,10 +6,11 @@ import { Observable, Subject } from 'rxjs';
6
6
  import * as _3dsource_angular_unreal_module from '@3dsource/angular-unreal-module';
7
7
  import * as _ngrx_store from '@ngrx/store';
8
8
  import { Store } from '@ngrx/store';
9
- import { MetaBoxCommandPacket, MetaBoxCommandList } from '@3dsource/types-unreal';
9
+ import * as _ngrx_effects from '@ngrx/effects';
10
+ import { Actions } from '@ngrx/effects';
10
11
  import { IKeyCode, ImageOutputValues } from '@3dsource/utils';
11
12
  import { SafeHtml, SafeStyle, SafeScript, SafeUrl, SafeResourceUrl } from '@angular/platform-browser';
12
- import * as _ngrx_effects from '@ngrx/effects';
13
+ import { MetaBoxCommandPacket, MetaBoxCommandList, FSceneState, FProductPayload, FCameraChangedPayload, FTransformJson } from '@3dsource/types-unreal';
13
14
 
14
15
  declare class AfkTimeoutModalComponent {
15
16
  #private;
@@ -44,26 +45,27 @@ declare class ImageLoadingSrcComponent {
44
45
  }
45
46
 
46
47
  declare class StatGraphComponent {
47
- readonly stat: i0.InputSignal<number | undefined>;
48
- private el;
49
- readonly graph: i0.Signal<ElementRef<HTMLCanvasElement> | undefined>;
50
- private canvas;
51
- private ctx;
48
+ readonly label: i0.InputSignal<string>;
49
+ readonly stat: i0.InputSignal<{
50
+ value: number;
51
+ } | undefined>;
52
52
  readonly color: i0.InputSignal<string>;
53
53
  readonly tickStep: i0.InputSignal<number>;
54
- readonly label: i0.InputSignal<string>;
55
- private scaleY;
54
+ private el;
55
+ readonly graph: i0.Signal<ElementRef<HTMLCanvasElement> | undefined>;
56
56
  private data;
57
57
  readonly max: i0.WritableSignal<number>;
58
58
  readonly min: i0.WritableSignal<number>;
59
59
  readonly current: i0.WritableSignal<number>;
60
+ private canvas;
61
+ private ctx;
60
62
  constructor();
61
63
  resize(): void;
62
64
  private draw;
63
65
  private getColor;
64
66
  private pushData;
65
67
  static ɵfac: i0.ɵɵFactoryDeclaration<StatGraphComponent, never>;
66
- static ɵcmp: i0.ɵɵComponentDeclaration<StatGraphComponent, "app-stat-graph", never, { "stat": { "alias": "stat"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "tickStep": { "alias": "tickStep"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
68
+ static ɵcmp: i0.ɵɵComponentDeclaration<StatGraphComponent, "app-stat-graph", never, { "label": { "alias": "label"; "required": true; "isSignal": true; }; "stat": { "alias": "stat"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "tickStep": { "alias": "tickStep"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
67
69
  }
68
70
 
69
71
  declare class UnrealSceneComponent {
@@ -81,6 +83,7 @@ declare class UnrealSceneComponent {
81
83
  changeMouseOverScene: i0.OutputEmitterRef<boolean>;
82
84
  private width;
83
85
  private height;
86
+ private readonly actions$;
84
87
  private store;
85
88
  private isExistMatchUrls;
86
89
  readonly isDevMode: boolean;
@@ -125,36 +128,60 @@ declare class IntroSrcComponent {
125
128
  static ɵcmp: i0.ɵɵComponentDeclaration<IntroSrcComponent, "app-intro-src", never, {}, {}, never, never, true, never>;
126
129
  }
127
130
 
131
+ interface GraphListItem {
132
+ key: string;
133
+ color: string;
134
+ stat: Observable<{
135
+ value: number;
136
+ }>;
137
+ }
128
138
  declare class VideoStatsComponent implements OnInit {
129
139
  readonly collapsed: i0.WritableSignal<boolean>;
130
140
  private store;
131
141
  private videoService;
132
142
  private isDevMode;
133
- private readonly videoStats;
143
+ private obs$;
134
144
  readonly viewportReady: i0.Signal<boolean>;
135
145
  readonly ssInfo: i0.Signal<string>;
136
- readonly fpsTick: i0.Signal<number>;
137
- readonly fpsAvgTick: i0.Signal<number>;
138
- readonly bitrateTick: i0.Signal<number>;
139
- readonly videoQP: i0.Signal<number>;
140
- readonly bitrateAverageTick: i0.Signal<number>;
146
+ readonly fpsTick: i0.Signal<{
147
+ value: number;
148
+ } | undefined>;
149
+ readonly fpsAvgTick: i0.Signal<{
150
+ value: number;
151
+ } | undefined>;
152
+ readonly bitrateTick: i0.Signal<{
153
+ value: number;
154
+ } | undefined>;
155
+ readonly videoQP: i0.Signal<{
156
+ value: number;
157
+ } | undefined>;
158
+ readonly bitrateAverageTick: i0.Signal<{
159
+ value: number;
160
+ } | undefined>;
141
161
  readonly videoStatus: i0.Signal<{
142
162
  key: string;
143
- value: any;
163
+ value: string | number | Record<string, string> | _3dsource_angular_unreal_module.DataFlowCheckResult | {
164
+ local: {
165
+ type: string;
166
+ url: string;
167
+ };
168
+ remote: {
169
+ type: string;
170
+ url: string;
171
+ };
172
+ } | null | undefined;
144
173
  }[] | undefined>;
145
174
  fields: string[];
146
- readonly graphList: i0.WritableSignal<{
147
- key: string;
148
- color: string;
149
- stat: any;
150
- }[]>;
175
+ graphList: GraphListItem[];
176
+ graphList$: Observable<GraphListItem[]>;
151
177
  private idKey;
152
178
  private elementsToShow;
179
+ private trigger$;
153
180
  constructor();
154
181
  ngOnInit(): void;
155
182
  updateGraph(): void;
156
183
  toggle(): void;
157
- toggleGraph($event: MouseEvent, el: string, value?: any): void;
184
+ toggleGraph($event: MouseEvent, el: string, value?: unknown): void;
158
185
  private getFields;
159
186
  private writeFields;
160
187
  static ɵfac: i0.ɵɵFactoryDeclaration<VideoStatsComponent, never>;
@@ -360,6 +387,7 @@ interface InputProps {
360
387
  }
361
388
 
362
389
  declare class SubService {
390
+ actions$: Actions<any>;
363
391
  store: Store<any>;
364
392
  disconnect$: rxjs.Observable<false>;
365
393
  }
@@ -425,6 +453,8 @@ declare class AggregatorService extends SubService {
425
453
  }
426
454
 
427
455
  declare class CommandTelemetryService {
456
+ private actions$;
457
+ private store;
428
458
  private readonly appId;
429
459
  private commandsSent;
430
460
  private exileTimeout;
@@ -449,7 +479,7 @@ declare class CommandTelemetryService {
449
479
  private get timeNow();
450
480
  private get sessionTime();
451
481
  private get canSkipSending();
452
- decorate(funcToDecorate: IToBeDecorated): (data: any) => void;
482
+ decorate(funcToDecorate: IToBeDecorated): (data: MetaBoxCommandPacket) => void;
453
483
  trackStartCommand(trackingId: string): void;
454
484
  trackStopCommand(trackingId: string, multi?: boolean, response?: {
455
485
  multi?: boolean;
@@ -485,13 +515,13 @@ declare class CommandTelemetryService {
485
515
  * Finally, calls the provided function with the modified data object.
486
516
  *
487
517
  * @param {IToBeDecorated} funcToDecorate - The function to be decorated with telemetry tracking.
488
- * @param {any} data - The data object to be passed to the function. It will be augmented with a unique tracking ID.
518
+ * @param {MetaBoxCommandPacket} data - The data object to be passed to the function. It will be augmented with a unique tracking ID.
489
519
  */
490
520
  private wrapper;
491
521
  static ɵfac: i0.ɵɵFactoryDeclaration<CommandTelemetryService, never>;
492
522
  static ɵprov: i0.ɵɵInjectableDeclaration<CommandTelemetryService>;
493
523
  }
494
- type IToBeDecorated = (data: any) => unknown;
524
+ type IToBeDecorated = (data: MetaBoxCommandPacket) => void;
495
525
  interface TimeStampsRaw {
496
526
  timeStampPak: TimeStampPakCollection;
497
527
  timeStampCommand: TimeStampCommandCollection;
@@ -784,7 +814,6 @@ declare class StreamStatusTelemetryService {
784
814
  declare class UnrealCommunicatorService {
785
815
  private store;
786
816
  private commandTelemetryService;
787
- private freezeFrameService;
788
817
  private webRtcPlayerService;
789
818
  private destroy$;
790
819
  private cirrusConnected;
@@ -809,7 +838,6 @@ declare class UnrealCommunicatorService {
809
838
  private emitDescriptor;
810
839
  private requestInitialSettings;
811
840
  private requestQualityControl;
812
- protected listenVideo(): void;
813
841
  static ɵfac: i0.ɵɵFactoryDeclaration<UnrealCommunicatorService, never>;
814
842
  static ɵprov: i0.ɵɵInjectableDeclaration<UnrealCommunicatorService>;
815
843
  }
@@ -914,7 +942,6 @@ declare class UnrealCommunicatorPlaywrightService extends UnrealCommunicatorServ
914
942
  init(): void;
915
943
  sendCommandToUnreal(): void;
916
944
  sendInputData(): void;
917
- listenVideo(): void;
918
945
  static ɵfac: i0.ɵɵFactoryDeclaration<UnrealCommunicatorPlaywrightService, never>;
919
946
  static ɵprov: i0.ɵɵInjectableDeclaration<UnrealCommunicatorPlaywrightService>;
920
947
  }
@@ -1000,9 +1027,7 @@ declare class FileHandlerService {
1000
1027
  private fileService;
1001
1028
  private fileHandlers;
1002
1029
  private handleJsonFile;
1003
- observeFileResponse<K extends keyof MetaBoxCommandList, T extends MetaBoxCommandList[K] = MetaBoxCommandList[K]>(mimetype: ReceivedMimeType, data: T, sender: (data: T) => void, timeOut?: number): Observable<{
1004
- commandCallback: ObservedCallbackResponse<T>;
1005
- } | never>;
1030
+ observeFileResponse<K extends keyof MetaBoxCommandList, T extends MetaBoxCommandList[K] = MetaBoxCommandList[K]>(mimetype: ReceivedMimeType, data: T, sender: (data: T) => void, timeOut?: number): Observable<unknown>;
1006
1031
  static ɵfac: i0.ɵɵFactoryDeclaration<FileHandlerService, never>;
1007
1032
  static ɵprov: i0.ɵɵInjectableDeclaration<FileHandlerService>;
1008
1033
  }
@@ -1086,7 +1111,7 @@ declare class AnalyticsService {
1086
1111
  * ## FPS dispatch
1087
1112
  *
1088
1113
  * FPS changes are dispatched via the NgRx `setMaxFps` action, which triggers
1089
- * the existing `UnrealEffects.setMaxFps$` effect that sends the
1114
+ * the existing `CommandsEffects.setMaxFps$` effect that sends the
1090
1115
  * `t.MaxFPS <value>` console command to Unreal Engine.
1091
1116
  */
1092
1117
  declare class FpsMonitorService {
@@ -1192,6 +1217,101 @@ declare class FpsMonitorService {
1192
1217
  static ɵprov: i0.ɵɵInjectableDeclaration<FpsMonitorService>;
1193
1218
  }
1194
1219
 
1220
+ /**
1221
+ * Custom Unreal callback events that are not part of MetaBoxCommandList.
1222
+ * These events are pushed from Unreal to the frontend via the data channel.
1223
+ */
1224
+ interface UnrealCallbackEventMap {
1225
+ onSceneState: {
1226
+ command: 'onSceneState';
1227
+ payload: FSceneState;
1228
+ };
1229
+ onFocusObject: {
1230
+ command: 'onFocusObject';
1231
+ payload: FProductPayload;
1232
+ };
1233
+ cameraChanged: {
1234
+ command: 'cameraChanged';
1235
+ payload: FCameraChangedPayload;
1236
+ };
1237
+ onObjectTransformChanged: {
1238
+ command: 'onObjectTransformChanged';
1239
+ payload: {
1240
+ objectName: string;
1241
+ transform: FTransformJson;
1242
+ };
1243
+ };
1244
+ onChangeSequence: {
1245
+ command: 'onChangeSequence';
1246
+ payload: unknown;
1247
+ };
1248
+ onFinishedSequence: {
1249
+ command: 'onFinishedSequence';
1250
+ payload: unknown;
1251
+ };
1252
+ }
1253
+ /**
1254
+ * Combined map of all known callback event types:
1255
+ * MetaBoxCommandList (command responses) + UnrealCallbackEventMap (custom events).
1256
+ */
1257
+ type UnrealCallbackDescriptor = MetaBoxCommandList & UnrealCallbackEventMap;
1258
+ declare class UnrealCallbackService {
1259
+ private readonly actions$;
1260
+ /**
1261
+ * Listens for unreal command callbacks matching a specific command or event type.
1262
+ *
1263
+ * Supports both MetaBoxCommand keys (e.g. `MetaBoxCommand.FLoadProductCommand`)
1264
+ * and custom Unreal callback events (e.g. `'cameraChanged'`, `'onSceneState'`).
1265
+ *
1266
+ * @param command - The command or event key to filter callbacks by
1267
+ * @returns Observable that emits matching callback payloads
1268
+ *
1269
+ * @example
1270
+ * ```ts
1271
+ * // Listen for a MetaBox command callback
1272
+ * this.unrealCallbackService
1273
+ * .fromUnrealCallback(MetaBoxCommand.FLoadProductCommand)
1274
+ * .subscribe(data => console.log(data));
1275
+ *
1276
+ * // Listen for a custom Unreal event
1277
+ * this.unrealCallbackService
1278
+ * .fromUnrealCallback('cameraChanged')
1279
+ * .subscribe(data => console.log(data));
1280
+ * ```
1281
+ */
1282
+ fromUnrealCallback<K extends keyof UnrealCallbackDescriptor>(command: K): rxjs.Observable<UnrealCallbackDescriptor[K]>;
1283
+ /**
1284
+ * Sends a command and observes the matching response by correlationId.
1285
+ * Replaces the old `observeCommandResponse` standalone function.
1286
+ *
1287
+ * @param data - The command data to send
1288
+ * @param sender - Function to send the command to Unreal
1289
+ * @param timeOut - Timeout in ms (default 60000)
1290
+ * @param dispatchOnTimeout - Whether to emit on timeout (default true)
1291
+ *
1292
+ * @example
1293
+ * ```ts
1294
+ * this.unrealCallbackService
1295
+ * .observeCommandResponse<FLoopBackCommand['command']>(
1296
+ * { command: MetaBoxCommand.FLoopBackCommand },
1297
+ * (data) => this.communicator.sendCommandToUnreal(data),
1298
+ * )
1299
+ * .subscribe();
1300
+ * ```
1301
+ */
1302
+ observeCommandResponse<K extends keyof MetaBoxCommandList, T extends MetaBoxCommandList[K] = MetaBoxCommandList[K]>(data: T, sender: (data: T) => void, timeOut?: number, dispatchOnTimeout?: boolean): rxjs.Observable<{
1303
+ json: _3dsource_angular_unreal_module.UnrealCallbackJsonWrapped;
1304
+ } | {
1305
+ json: {
1306
+ commandCallback: {
1307
+ correlationId: string;
1308
+ };
1309
+ };
1310
+ }>;
1311
+ static ɵfac: i0.ɵɵFactoryDeclaration<UnrealCallbackService, never>;
1312
+ static ɵprov: i0.ɵɵInjectableDeclaration<UnrealCallbackService>;
1313
+ }
1314
+
1195
1315
  declare function AnswerHandler(this: SignallingService, msg: RTCSessionDescriptionInit): void;
1196
1316
 
1197
1317
  declare function ConfigHandler(this: SignallingService, msg: ConfigMessage): void;
@@ -1224,35 +1344,12 @@ declare function OnOpenHandler(this: SignallingService): void;
1224
1344
  */
1225
1345
  declare const keepMaxUntilReset: (reset$: Observable<unknown>) => ((source: Observable<number>) => Observable<number>);
1226
1346
 
1227
- declare function observeCommandResponse<K extends keyof MetaBoxCommandList, T extends MetaBoxCommandList[K] = MetaBoxCommandList[K]>(data: T, sender: (data: T) => void, timeOut?: number, dispatchOnTimeout?: boolean): Observable<ObservedCallbackResponse<T> | never>;
1228
- interface ObservedCallbackResponse<T extends MetaBoxCommandPacket> {
1229
- json: {
1230
- commandCallback: T;
1231
- };
1232
- }
1233
-
1234
1347
  declare function decodeData(anyData: ArrayBuffer): string;
1235
1348
 
1236
1349
  declare const dispatchResize: () => void;
1237
- declare const forceResizeUnrealVideo: () => void;
1238
1350
 
1239
1351
  declare function getRtcErrorMessage(code: number | null): string | undefined;
1240
1352
 
1241
- type Descriptor = MetaBoxCommandList & SignalDescriptor;
1242
- /**
1243
- * UnrealInternalSignalEvents commands list wrapper listener
1244
- * @param event
1245
- */
1246
- declare function fromSignal<K extends keyof Descriptor>(event: K): Observable<Descriptor[K]>;
1247
- type ArgumentType<K extends keyof Descriptor> = Descriptor[K] extends void ? never : Descriptor[K];
1248
- /**
1249
- * UnrealInternalSignalEvents commands list wrapper sender
1250
- * @param event
1251
- * @param args
1252
- */
1253
- declare function sendSignal<K extends keyof Descriptor>(event: K, ...args: ArgumentType<K> extends never ? [] : [ArgumentType<K>]): void;
1254
- declare function fromUnrealCallBackSignal<K extends keyof Descriptor>(command: K): Observable<Descriptor[K]>;
1255
-
1256
1353
  declare const floatToSmoothPercents: () => ((source: Observable<number>) => Observable<number>);
1257
1354
  /**
1258
1355
  * Creates an observable that emits values transitioning smoothly from the start value to the end value over a specified duration.
@@ -1304,618 +1401,72 @@ declare class LatencyTimings {
1304
1401
 
1305
1402
  declare function qpToQuality(VideoEncoderQP: number): Quality;
1306
1403
 
1307
- declare const trackMixpanelEvent: _ngrx_store.ActionCreator<string, (props: {
1308
- event: string;
1309
- data?: unknown;
1310
- }) => {
1311
- event: string;
1312
- data?: unknown;
1313
- } & _ngrx_store.Action<string>>;
1314
- declare const changeLowBandwidth: _ngrx_store.ActionCreator<string, (props: {
1315
- lowBandwidth: boolean;
1316
- stats?: LBMStats;
1317
- }) => {
1318
- lowBandwidth: boolean;
1319
- stats?: LBMStats;
1320
- } & _ngrx_store.Action<string>>;
1321
- declare const setMaxFps: _ngrx_store.ActionCreator<string, (props: {
1322
- maxFps: number;
1323
- }) => {
1324
- maxFps: number;
1325
- } & _ngrx_store.Action<string>>;
1326
- declare const destroyRemoteConnections: _ngrx_store.ActionCreator<string, (props: {
1327
- reason: DisconnectReasonType;
1328
- }) => {
1329
- reason: DisconnectReasonType;
1330
- } & _ngrx_store.Action<string>>;
1331
- declare const destroyUnrealScene: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1332
- declare const setCirrusConnected: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1333
- declare const setCirrusDisconnected: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1334
- declare const changeStatusMainVideoOnScene: _ngrx_store.ActionCreator<string, (props: {
1335
- isVideoPlaying: boolean;
1336
- }) => {
1337
- isVideoPlaying: boolean;
1338
- } & _ngrx_store.Action<string>>;
1339
- declare const setAwsInstance: _ngrx_store.ActionCreator<string, (props: {
1340
- wsUrl: string | null;
1341
- pollingUrl: string | null;
1342
- instanceName: string | null;
1343
- }) => {
1344
- wsUrl: string | null;
1345
- pollingUrl: string | null;
1346
- instanceName: string | null;
1347
- } & _ngrx_store.Action<string>>;
1348
- declare const setStatusMessage: _ngrx_store.ActionCreator<string, (props: {
1349
- statusMessage: string | null;
1350
- }) => {
1351
- statusMessage: string | null;
1352
- } & _ngrx_store.Action<string>>;
1353
- declare const setStatusPercentSignallingServer: _ngrx_store.ActionCreator<string, (props: {
1354
- percent: number | null;
1355
- }) => {
1356
- percent: number | null;
1357
- } & _ngrx_store.Action<string>>;
1358
- declare const setFreezeFrame: _ngrx_store.ActionCreator<string, (props: {
1359
- dataUrl: string | null;
1360
- progress: number | null;
1361
- }) => {
1362
- dataUrl: string | null;
1363
- progress: number | null;
1364
- } & _ngrx_store.Action<string>>;
1365
- declare const setStreamClientCompanyId: _ngrx_store.ActionCreator<string, (props: {
1366
- id: string;
1367
- }) => {
1368
- id: string;
1369
- } & _ngrx_store.Action<string>>;
1370
- declare const setStreamViewId: _ngrx_store.ActionCreator<string, (props: {
1371
- id: string;
1372
- }) => {
1373
- id: string;
1374
- } & _ngrx_store.Action<string>>;
1375
- declare const setIntroImageSrc: _ngrx_store.ActionCreator<string, (props: {
1376
- src: string;
1377
- }) => {
1378
- src: string;
1379
- } & _ngrx_store.Action<string>>;
1380
- declare const setLoadingImageSrc: _ngrx_store.ActionCreator<string, (props: {
1381
- src: string;
1382
- }) => {
1383
- src: string;
1384
- } & _ngrx_store.Action<string>>;
1385
- declare const setIntroVideoSrc: _ngrx_store.ActionCreator<string, (props: {
1386
- src: string;
1387
- }) => {
1388
- src: string;
1389
- } & _ngrx_store.Action<string>>;
1390
- declare const resetIntroSrc: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1391
- declare const setFreezeFrameFromVideo: _ngrx_store.ActionCreator<string, (props: {
1392
- dataUrl: string | null;
1393
- progress: number | null;
1394
- }) => {
1395
- dataUrl: string | null;
1396
- progress: number | null;
1397
- } & _ngrx_store.Action<string>>;
1398
- declare const setEstablishingConnection: _ngrx_store.ActionCreator<string, (props: {
1399
- value: boolean;
1400
- }) => {
1401
- value: boolean;
1402
- } & _ngrx_store.Action<string>>;
1403
- /**
1404
- * @deprecated Use `dataChannelReady` instead. Currently, this action is not working.
1405
- */
1406
- declare const setDataChannelConnected: _ngrx_store.ActionCreator<string, (props: {
1407
- statusMessage: string;
1408
- }) => {
1409
- statusMessage: string;
1410
- } & _ngrx_store.Action<string>>;
1411
- declare const dataChannelConnected: _ngrx_store.ActionCreator<string, (props: {
1412
- statusMessage: string;
1413
- }) => {
1414
- statusMessage: string;
1415
- } & _ngrx_store.Action<string>>;
1416
- declare const dataChannelReady: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1417
- declare const setConfig: _ngrx_store.ActionCreator<string, (props: {
1418
- config: Partial<StreamConfig>;
1419
- }) => {
1420
- config: Partial<StreamConfig>;
1421
- } & _ngrx_store.Action<string>>;
1422
- declare const disconnectStream: _ngrx_store.ActionCreator<string, (props: {
1423
- reason: DisconnectReasonType;
1424
- message: string;
1425
- }) => {
1426
- reason: DisconnectReasonType;
1427
- message: string;
1428
- } & _ngrx_store.Action<string>>;
1429
- declare const dropConnection: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1430
- declare const setViewportReady: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1431
- declare const setViewportNotReady: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1432
- declare const changeStreamResolutionAction: _ngrx_store.ActionCreator<string, (props: {
1433
- width: number | null;
1434
- height: number | null;
1435
- }) => {
1436
- width: number | null;
1437
- height: number | null;
1438
- } & _ngrx_store.Action<string>>;
1439
- declare const changeStreamResolutionSuccessAction: _ngrx_store.ActionCreator<string, (props: {
1440
- width: number | null;
1441
- height: number | null;
1442
- }) => {
1443
- width: number | null;
1444
- height: number | null;
1445
- } & _ngrx_store.Action<string>>;
1446
- declare const setSignalingName: _ngrx_store.ActionCreator<string, (props: {
1447
- instanceName: string;
1448
- }) => {
1449
- instanceName: string;
1450
- } & _ngrx_store.Action<string>>;
1451
- declare const setOrchestrationParameters: _ngrx_store.ActionCreator<string, (props: {
1452
- instanceName: string;
1453
- streamRequestId: string;
1454
- eta: number;
1455
- }) => {
1456
- instanceName: string;
1457
- streamRequestId: string;
1458
- eta: number;
1459
- } & _ngrx_store.Action<string>>;
1460
- declare const setOrchestrationMessage: _ngrx_store.ActionCreator<string, (props: {
1461
- message: string;
1462
- }) => {
1463
- message: string;
1464
- } & _ngrx_store.Action<string>>;
1465
- declare const setOrchestrationProgress: _ngrx_store.ActionCreator<string, (props: {
1466
- progressComplete: number;
1467
- }) => {
1468
- progressComplete: number;
1469
- } & _ngrx_store.Action<string>>;
1470
- declare const setOrchestrationContext: _ngrx_store.ActionCreator<string, (props: {
1471
- urls: string[];
1472
- environmentId: string;
1473
- streamRequestContext: StreamRequestContext;
1474
- }) => {
1475
- urls: string[];
1476
- environmentId: string;
1477
- streamRequestContext: StreamRequestContext;
1478
- } & _ngrx_store.Action<string>>;
1479
- declare const updateCirrusInfo: _ngrx_store.ActionCreator<string, (props: {
1480
- ssInfo: string;
1481
- ssData: SignalingData;
1482
- }) => {
1483
- ssInfo: string;
1484
- ssData: SignalingData;
1485
- } & _ngrx_store.Action<string>>;
1486
- declare const commandStarted: _ngrx_store.ActionCreator<string, (props: {
1487
- id: string;
1488
- command: string;
1489
- }) => {
1490
- id: string;
1491
- command: string;
1492
- } & _ngrx_store.Action<string>>;
1493
- declare const commandCompleted: _ngrx_store.ActionCreator<string, (props: {
1494
- id: string;
1495
- }) => {
1496
- id: string;
1497
- } & _ngrx_store.Action<string>>;
1498
- declare const setLoopBackCommandIsCompleted: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1499
- declare const setAfkTimerVisible: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1500
- declare const setAfkTimerHide: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1501
- declare const setAfkTimerCountdown: _ngrx_store.ActionCreator<string, (props: {
1502
- countdown: number;
1503
- }) => {
1504
- countdown: number;
1505
- } & _ngrx_store.Action<string>>;
1506
- declare const showUnrealErrorMessage: _ngrx_store.ActionCreator<string, (props: {
1507
- code: number | null;
1508
- error?: string;
1509
- }) => {
1510
- code: number | null;
1511
- error?: string;
1512
- } & _ngrx_store.Action<string>>;
1513
- declare const initSignalling: _ngrx_store.FunctionWithParametersType<[data?: {
1514
- resetDisconnectionReason: boolean;
1515
- } | undefined], {
1516
- resetDisconnectionReason: boolean;
1517
- } & _ngrx_store.Action<string>> & _ngrx_store.Action<string>;
1518
- declare const startStream: _ngrx_store.ActionCreator<string, (props: {
1519
- config: Partial<StreamConfig>;
1520
- }) => {
1521
- config: Partial<StreamConfig>;
1522
- } & _ngrx_store.Action<string>>;
1523
- declare const resetConfig: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1524
- declare const resetAfkAction: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1525
- declare const resetWarnTimeout: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1526
- declare const abortEstablishingConnection: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1527
- declare const setUnrealPlaywrightConfig: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1528
- declare const saveAnalyticsEvent: _ngrx_store.ActionCreator<string, (props: {
1529
- event: {
1530
- name: string;
1531
- params: Record<string, unknown>;
1532
- };
1533
- }) => {
1534
- event: {
1535
- name: string;
1536
- params: Record<string, unknown>;
1537
- };
1538
- } & _ngrx_store.Action<string>>;
1539
- /** Action to trigger WebRTC peer reconnection (keeps signaling connection) */
1540
- declare const reconnectPeer: _ngrx_store.ActionCreator<string, (props: {
1541
- attempt: number;
1542
- maxAttempts: number;
1543
- delay?: number;
1544
- }) => {
1545
- attempt: number;
1546
- maxAttempts: number;
1547
- delay?: number;
1548
- } & _ngrx_store.Action<string>>;
1549
- /** Action to reset the data channel state before reconnection */
1550
- declare const resetDataChannelForReconnect: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1551
- /** Action dispatched when peer reconnection succeeds */
1552
- declare const reconnectPeerSuccess: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1553
- /** Action dispatched when all peer reconnection attempts are exhausted */
1554
- declare const reconnectPeerFailed: _ngrx_store.ActionCreator<string, (props: {
1555
- reason: string;
1556
- }) => {
1557
- reason: string;
1558
- } & _ngrx_store.Action<string>>;
1559
- /** Action dispatched when ICE connection state changes to failed/disconnected */
1560
- declare const iceConnectionFailed: _ngrx_store.ActionCreator<string, (props: {
1561
- state: RTCIceConnectionState;
1562
- }) => {
1563
- state: RTCIceConnectionState;
1564
- } & _ngrx_store.Action<string>>;
1565
-
1566
- declare class UnrealEffects {
1567
- private actions$;
1568
- private dialog;
1569
- private http;
1570
- private store;
1571
- private isDevMode;
1572
- private scrollStrategy;
1573
- private unrealInitialConfig;
1574
- private webRtcPlayerService;
1575
- private commandsSender;
1576
- private readonly commandTelemetryService;
1577
- private signallingService;
1578
- private videoService;
1579
- private dataChannelConnectionTimeout;
1580
- private connectionCompleted$;
1581
- private reconnectConfig;
1582
- disconnectReasonHandling$: rxjs.Observable<{
1583
- reason: _3dsource_angular_unreal_module.DisconnectReasonType;
1584
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1585
- destroyConnections$: rxjs.Observable<{
1586
- reason: _3dsource_angular_unreal_module.DisconnectReasonType;
1587
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1588
- destroyRemoteConnections$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1589
- webrtcErrorModalComponent$: rxjs.Observable<false> & _ngrx_effects.CreateEffectMetadata;
1590
- changeStreamResolution$: rxjs.Observable<{
1591
- width: number | null;
1592
- height: number | null;
1593
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1594
- forceLBMOff$: rxjs.Observable<{
1595
- lowBandwidth: boolean;
1596
- stats?: _3dsource_angular_unreal_module.LBMStats;
1597
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1598
- resetFreezeFrameOnLowBandwidthTriggered$: rxjs.Observable<{
1599
- dataUrl: string | null;
1600
- progress: number | null;
1601
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1602
- sendLbmStat$: rxjs.Subscription;
1603
- resetAfk$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1604
- abortEstablishingConnection$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1605
- setMaxFps$: rxjs.Observable<{
1606
- maxFps: number;
1607
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1608
- resetAfkAction$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1609
- setSignalingTo100$: rxjs.Observable<{
1610
- percent: number | null;
1611
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1612
- setOrchestrationParameters$: rxjs.Observable<{
1613
- progressComplete: number;
1614
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1615
- setDataChannelTimeoutCheck$: rxjs.Observable<{
1616
- reason: _3dsource_angular_unreal_module.DisconnectReasonType;
1617
- message: string;
1618
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1619
- destroyConnectionAndRestart$: rxjs.Observable<{
1620
- resetDisconnectionReason: boolean;
1621
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1622
- showUnrealError$: rxjs.Observable<{
1623
- code: number | null;
1624
- error?: string;
1625
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1626
- sendStatisticsToUnreal$: rxjs.Observable<Object> & _ngrx_effects.CreateEffectMetadata;
1627
- unrealReceiverReady$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1628
- initAppBySetDataChannelConnected$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1629
- setViewportReadyBySetLoopBackCommandIsCompleted$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1630
- startStream$: rxjs.Observable<{
1631
- resetDisconnectionReason: boolean;
1632
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1633
- listenUnrealCallbackByInitSignalling$: rxjs.Observable<{
1634
- id: string;
1635
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1636
- connectToSignaling$: rxjs.Observable<WebSocket> & _ngrx_effects.CreateEffectMetadata;
1637
- /**
1638
- * Effect: `forceViewportNotReady$`
1639
- *
1640
- * Ensures the viewport is explicitly marked as *not ready* to prevent
1641
- * a temporary black screen flash when disconnecting.
1642
- *
1643
- * ### Why
1644
- * - The video stream is disconnected immediately.
1645
- * - The DataChannel closes slightly later.
1646
- * - Closing the DataChannel resets the Unreal scene,
1647
- * which also sets `viewPortReady` to `false`.
1648
- *
1649
- * Without this effect, the order of these events may cause
1650
- * a visible flicker (video flashing to black).
1651
- */
1652
- forceViewportNotReady$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1653
- /**
1654
- * Effect: `handleDataChannelClosed$`
1655
- *
1656
- * Triggers peer reconnection when DataChannel closes unexpectedly.
1657
- * Only triggers if reconnection is enabled, onDataChannelClose is true,
1658
- * and the signaling WebSocket is still connected.
1659
- */
1660
- handleDataChannelClosed$: rxjs.Observable<{
1661
- attempt: number;
1662
- maxAttempts: number;
1663
- delay?: number;
1664
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1665
- /**
1666
- * Effect: `resetStateForPeerReconnect$`
1667
- *
1668
- * Resets the data channel state when peer reconnection starts.
1669
- */
1670
- resetStateForPeerReconnect$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1671
- /**
1672
- * Effect: `executePeerReconnect$`
1673
- *
1674
- * Executes the actual peer reconnection attempt.
1675
- * This only re-establishes the WebRTC connection, not the signaling.
1676
- */
1677
- executePeerReconnect$: rxjs.Observable<_ngrx_store.Action<string> | ({
1678
- attempt: number;
1679
- maxAttempts: number;
1680
- delay?: number;
1681
- } & _ngrx_store.Action<string>) | ({
1682
- reason: string;
1683
- } & _ngrx_store.Action<string>)> & _ngrx_effects.CreateEffectMetadata;
1684
- /**
1685
- * Effect: `handlePeerReconnectFailed$`
1686
- *
1687
- * Handles the case when all peer reconnection attempts have failed.
1688
- * Falls back to full disconnection which may trigger full reconnection.
1689
- */
1690
- handlePeerReconnectFailed$: rxjs.Observable<{
1691
- reason: _3dsource_angular_unreal_module.DisconnectReasonType;
1692
- message: string;
1693
- } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1694
- /**
1695
- * Effect: `logPeerReconnectSuccess$`
1696
- *
1697
- * Logs successful peer reconnection for telemetry.
1698
- */
1699
- logPeerReconnectSuccess$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1700
- static ɵfac: i0.ɵɵFactoryDeclaration<UnrealEffects, never>;
1701
- static ɵprov: i0.ɵɵInjectableDeclaration<UnrealEffects>;
1702
- }
1703
-
1704
- declare const unrealFeature: {
1705
- name: "unrealFeature";
1706
- reducer: _ngrx_store.ActionReducer<_3dsource_angular_unreal_module.UnrealState, _ngrx_store.Action<string>>;
1707
- selectUnrealFeatureState: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.UnrealState, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.UnrealState>;
1708
- selectSsInfo: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
1709
- selectLowBandwidth: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1710
- selectIsVideoPlaying: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1711
- selectStatusMessage: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
1712
- selectEnvironmentId: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
1713
- selectStreamRequestContext: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamRequestContext | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamRequestContext | null>;
1714
- selectSsData: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.SignalingData | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.SignalingData | null>;
1715
- selectLowBandwidthStats: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.LBMStats | undefined, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.LBMStats | undefined>;
1716
- selectStreamConfig: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamConfig, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamConfig>;
1717
- selectAwsInstance: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.AwsInstance, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.AwsInstance>;
1718
- selectWasInitialized: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1719
- selectIsFirstSuccessLoad: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1720
- selectIsAfkTimerVisible: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1721
- selectAfkCountdown: _ngrx_store.MemoizedSelector<Record<string, any>, number, (featureState: _3dsource_angular_unreal_module.UnrealState) => number>;
1722
- selectCirrusConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1723
- selectViewportReady: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1724
- selectFreezeFrameFromVideo: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.FreezeFrameMessage, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.FreezeFrameMessage>;
1725
- selectFreezeFrame: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.FreezeFrameMessage, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.FreezeFrameMessage>;
1726
- selectStatusPercentSignallingServer: _ngrx_store.MemoizedSelector<Record<string, any>, number | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => number | null>;
1727
- selectErrorMessage: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.ConnectionError | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.ConnectionError | null>;
1728
- selectIsReconnecting: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1729
- selectDataChannelConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1730
- selectStreamResolution: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamResolutionProps, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamResolutionProps>;
1731
- selectEstablishingConnection: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
1732
- selectDisconnectReason: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.DisconnectReasonType, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.DisconnectReasonType>;
1733
- selectLoaderCommands: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.CommandsLoaderState, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.CommandsLoaderState>;
1734
- selectMatchUrls: _ngrx_store.MemoizedSelector<Record<string, any>, string[], (featureState: _3dsource_angular_unreal_module.UnrealState) => string[]>;
1735
- selectStreamClientCompanyId: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
1736
- selectStreamViewId: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
1737
- selectVideoIntroSrc: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
1738
- selectImageIntroSrc: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
1739
- selectImageLoadingSrc: _ngrx_store.MemoizedSelector<Record<string, any>, string, (featureState: _3dsource_angular_unreal_module.UnrealState) => string>;
1740
- selectAnalyticsEvent: _ngrx_store.MemoizedSelector<Record<string, any>, {
1741
- name: string;
1742
- params: Record<string, unknown>;
1743
- } | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => {
1744
- name: string;
1745
- params: Record<string, unknown>;
1746
- } | null>;
1747
- };
1748
-
1749
- interface CommandsLoaderState {
1750
- commandsInProgress: {
1751
- timeStamp: number;
1752
- command: string;
1753
- id: string;
1754
- }[];
1755
- totalCommandsStarted: number;
1756
- totalCommandsCompleted: number;
1757
- }
1758
- interface UnrealState {
1759
- lowBandwidthStats: LBMStats | undefined;
1760
- streamConfig: StreamConfig;
1761
- awsInstance: AwsInstance;
1762
- lowBandwidth: boolean;
1763
- wasInitialized: boolean;
1764
- isFirstSuccessLoad: boolean;
1765
- isAfkTimerVisible: boolean;
1766
- afkCountdown: number;
1767
- cirrusConnected: boolean;
1768
- viewportReady: boolean;
1769
- freezeFrameFromVideo: FreezeFrameMessage;
1770
- freezeFrame: FreezeFrameMessage;
1771
- statusMessage: string | null;
1772
- /**
1773
- * @deprecated, use ssData in future
1774
- */
1775
- ssInfo: string | null;
1776
- ssData: SignalingData | null;
1777
- statusPercentSignallingServer: number | null;
1778
- errorMessage: ConnectionError | null;
1779
- isReconnecting: boolean;
1780
- dataChannelConnected: boolean;
1781
- streamResolution: StreamResolutionProps;
1782
- isVideoPlaying: boolean;
1783
- establishingConnection: boolean;
1784
- disconnectReason: DisconnectReasonType;
1785
- loaderCommands: CommandsLoaderState;
1786
- matchUrls: string[];
1787
- environmentId: string | null;
1788
- streamClientCompanyId: string | null;
1789
- streamViewId: string | null;
1790
- videoIntroSrc: string | null;
1791
- imageIntroSrc: string | null;
1792
- imageLoadingSrc: string;
1793
- streamRequestContext: StreamRequestContext | null;
1794
- analyticsEvent: {
1795
- name: string;
1796
- params: Record<string, unknown>;
1797
- } | null;
1798
- }
1799
- declare const initialState: UnrealState;
1800
- declare const unrealReducer: _ngrx_store.ActionReducer<UnrealState, _ngrx_store.Action<string>>;
1801
-
1802
- declare const selectFreezeFrameDataUrlFromVideo: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (s1: _3dsource_angular_unreal_module.FreezeFrameMessage, s2: boolean) => string | null>;
1803
- declare const selectFreezeFrameProgressMessageFromVideo: _ngrx_store.MemoizedSelector<Record<string, any>, number | null, (s1: _3dsource_angular_unreal_module.FreezeFrameMessage, s2: boolean) => number | null>;
1804
- declare const selectFreezeFrameDataUrl: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (s1: _3dsource_angular_unreal_module.FreezeFrameMessage, s2: boolean) => string | null>;
1805
- declare const selectIsFreezeFrameLoading: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.FreezeFrameMessage) => boolean>;
1806
- declare const selectFreezeFrameCombinedDataUrl: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (s1: string | null, s2: string | null) => string | null>;
1807
- declare const selectStreamConfig: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamConfig, (s1: _3dsource_angular_unreal_module.StreamConfig) => _3dsource_angular_unreal_module.StreamConfig>;
1808
- declare const selectWarnTimeout: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: _3dsource_angular_unreal_module.StreamConfig) => number>;
1809
- declare const selectIsExistMatchUrls: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: string[]) => boolean>;
1810
- declare const selectIsAutostart: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.StreamConfig) => boolean>;
1811
- declare const selectIsShowPopupWithoutAutoStart: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.StreamConfig, s2: boolean) => boolean>;
1812
- declare const selectShowReconnectPopup: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
1813
- declare const selectShowLoader: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
1814
- declare const selectIsVideoPlayingAndDataChannelConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
1815
- declare const selectSignalingParameters: _ngrx_store.MemoizedSelector<Record<string, any>, string, (s1: _3dsource_angular_unreal_module.SignalingData | null, s2: _3dsource_angular_unreal_module.AwsInstance, s3: string | null) => string>;
1816
- declare const selectLoaderCommands: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.CommandsLoaderState, (s1: _3dsource_angular_unreal_module.CommandsLoaderState) => _3dsource_angular_unreal_module.CommandsLoaderState>;
1817
- declare const selectCommandsInProgress: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: _3dsource_angular_unreal_module.CommandsLoaderState) => number>;
1818
- declare const selectCommandProgress: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: _3dsource_angular_unreal_module.CommandsLoaderState) => number>;
1819
- declare const selectLastCommandInProgress: _ngrx_store.MemoizedSelector<Record<string, any>, {
1820
- timeStamp: number;
1821
- command: string;
1822
- id: string;
1823
- } | null, (s1: _3dsource_angular_unreal_module.CommandsLoaderState) => {
1824
- timeStamp: number;
1825
- command: string;
1826
- id: string;
1827
- } | null>;
1828
- /**
1829
- * Returns Scene load progress as a float value in between 0-1
1830
- */
1831
- declare const selectTotalProgress: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: number | null, s2: number, s3: _3dsource_angular_unreal_module.AwsInstance, s4: boolean) => number>;
1832
- declare const selectClientAndViewIds: _ngrx_store.MemoizedSelector<Record<string, any>, {
1833
- clientId: string | null;
1834
- viewId: string | null;
1835
- }, (s1: string | null, s2: string | null) => {
1836
- clientId: string | null;
1837
- viewId: string | null;
1838
- }>;
1839
- declare const selectIsLoaderScreenVisible: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean, s3: boolean) => boolean>;
1840
-
1841
- declare const removeExileCommands: (state: CommandsLoaderState, idToRemove: string) => {
1842
- commandsInProgress: {
1843
- timeStamp: number;
1844
- command: string;
1845
- id: string;
1846
- }[];
1847
- totalCommandsStarted: number;
1848
- totalCommandsCompleted: number;
1849
- };
1850
-
1851
- declare const resetAfk: () => void;
1852
-
1853
- declare function fromResizeObserver(elem: HTMLElement): Observable<ResizeObserverEntry[]>;
1854
-
1855
- interface LBMStats {
1856
- dataFlowResult: DataFlowCheckResult;
1857
- reason: string;
1858
- triggerTime: number;
1859
- }
1860
-
1861
- type Quality = 'lime' | 'red' | 'orange';
1862
-
1863
- interface SignalingData {
1864
- instanceType: string;
1865
- branchInfo: string;
1866
- cirrusVersion: string;
1867
- streamerVersion: string;
1868
- streamPath: string;
1869
- streamApp: string;
1870
- connectionId: string;
1871
- }
1872
-
1873
- declare const OrchestrationMessageTypes: {
1874
- readonly ping: "ping";
1875
- readonly error: "error";
1876
- readonly offer: "offer";
1877
- readonly answer: "answer";
1878
- readonly ssInfo: "ssInfo";
1879
- readonly config: "config";
1880
- readonly playerCount: "playerCount";
1881
- readonly iceCandidate: "iceCandidate";
1882
- readonly streamerList: "streamerList";
1883
- readonly requestStream: "requestStream";
1884
- readonly listStreamers: "listStreamers";
1885
- readonly instanceReady: "instanceReady";
1886
- readonly p2pEstablished: "p2pEstablished";
1887
- readonly instanceReserved: "instanceReserved";
1888
- readonly playerDisconnected: "playerDisconnected";
1889
- readonly streamPreparedForUserInteraction: "streamPreparedForUserInteraction";
1890
- readonly streamerDisconnected: "streamerDisconnected";
1891
- readonly interruptClientStream: "interruptClientStream";
1892
- };
1893
- interface InstanceReady extends InstanceMessageBase {
1894
- type: 'instanceReady';
1895
- }
1896
- interface InstanceReserved extends InstanceMessageBase {
1897
- type: 'instanceReserved';
1898
- }
1899
- interface OrchestrationErrorMessage {
1900
- type: 'error';
1901
- payload: {
1902
- code: number;
1903
- message: string;
1904
- };
1905
- }
1906
- interface InstanceMessageBase extends MessageBase {
1907
- correlationId: string;
1908
- payload: {
1909
- instanceId: string;
1910
- streamRequestId: string;
1911
- eta: number;
1912
- };
1913
- }
1914
- interface MessageBase {
1915
- type: OrchestrationMessageType;
1916
- }
1917
- interface SSInfo extends MessageBase {
1918
- type: 'ssInfo';
1404
+ declare function fromResizeObserver(elem: HTMLElement): Observable<ResizeObserverEntry[]>;
1405
+
1406
+ interface LBMStats {
1407
+ dataFlowResult: DataFlowCheckResult;
1408
+ reason: string;
1409
+ triggerTime: number;
1410
+ }
1411
+
1412
+ type Quality = 'lime' | 'red' | 'orange';
1413
+
1414
+ interface SignalingData {
1415
+ instanceType: string;
1416
+ branchInfo: string;
1417
+ cirrusVersion: string;
1418
+ streamerVersion: string;
1419
+ streamPath: string;
1420
+ streamApp: string;
1421
+ connectionId: string;
1422
+ }
1423
+
1424
+ declare const OrchestrationMessageTypes: {
1425
+ readonly ping: "ping";
1426
+ readonly error: "error";
1427
+ readonly offer: "offer";
1428
+ readonly answer: "answer";
1429
+ readonly ssInfo: "ssInfo";
1430
+ readonly config: "config";
1431
+ readonly playerCount: "playerCount";
1432
+ readonly iceCandidate: "iceCandidate";
1433
+ readonly streamerList: "streamerList";
1434
+ readonly requestStream: "requestStream";
1435
+ readonly listStreamers: "listStreamers";
1436
+ readonly instanceReady: "instanceReady";
1437
+ readonly p2pEstablished: "p2pEstablished";
1438
+ readonly instanceReserved: "instanceReserved";
1439
+ readonly playerDisconnected: "playerDisconnected";
1440
+ readonly streamPreparedForUserInteraction: "streamPreparedForUserInteraction";
1441
+ readonly streamerDisconnected: "streamerDisconnected";
1442
+ readonly interruptClientStream: "interruptClientStream";
1443
+ };
1444
+ interface InstanceReady extends InstanceMessageBase {
1445
+ type: 'instanceReady';
1446
+ }
1447
+ interface InstanceReserved extends InstanceMessageBase {
1448
+ type: 'instanceReserved';
1449
+ }
1450
+ interface OrchestrationErrorMessage {
1451
+ type: 'error';
1452
+ payload: {
1453
+ code: number;
1454
+ message: string;
1455
+ };
1456
+ }
1457
+ interface InstanceMessageBase extends MessageBase {
1458
+ correlationId: string;
1459
+ payload: {
1460
+ instanceId: string;
1461
+ streamRequestId: string;
1462
+ eta: number;
1463
+ };
1464
+ }
1465
+ interface MessageBase {
1466
+ type: OrchestrationMessageType;
1467
+ }
1468
+ interface SSInfo extends MessageBase {
1469
+ type: 'ssInfo';
1919
1470
  message: string;
1920
1471
  data: SignalingData;
1921
1472
  }
@@ -1948,355 +1499,919 @@ interface InterruptClientStream extends MessageBase {
1948
1499
  environmentId: string;
1949
1500
  };
1950
1501
  }
1951
- interface ForceClientDisconnect extends MessageBase {
1952
- type: 'streamerDisconnected' | 'playerDisconnected';
1953
- connectionId: string;
1502
+ interface ForceClientDisconnect extends MessageBase {
1503
+ type: 'streamerDisconnected' | 'playerDisconnected';
1504
+ connectionId: string;
1505
+ }
1506
+ interface ListStreamersMessage extends MessageBase {
1507
+ type: 'listStreamers';
1508
+ correlationId: string;
1509
+ }
1510
+ interface P2PEstablishedMessage extends MessageBase {
1511
+ type: 'p2pEstablished';
1512
+ source: string;
1513
+ sessionId: string;
1514
+ }
1515
+ interface streamPreparedForUserInteractionMessage extends MessageBase {
1516
+ type: 'streamPreparedForUserInteraction';
1517
+ correlationId: string;
1518
+ }
1519
+ interface RequestStream extends MessageBase {
1520
+ type: 'requestStream';
1521
+ correlationId: string;
1522
+ payload: {
1523
+ environmentId: string;
1524
+ region?: string;
1525
+ /**
1526
+ * The context field is used for plugins of the external
1527
+ * applications for collecting additional statistics, etc.
1528
+ */
1529
+ context: StreamRequestContext;
1530
+ };
1531
+ }
1532
+ interface MetaboxBasicConfiguratorContext {
1533
+ id: 'metaboxBasicConfigurator';
1534
+ data: {
1535
+ configuratorId: string;
1536
+ };
1537
+ }
1538
+ interface MetaboxModularConfiguratorContext {
1539
+ id: 'metaboxModularConfigurator';
1540
+ data: {
1541
+ configuratorId: string;
1542
+ };
1543
+ }
1544
+ interface MetaboxProductContext {
1545
+ id: 'metaboxProduct';
1546
+ data: {
1547
+ productId: string;
1548
+ };
1549
+ }
1550
+ interface MetaboxEnvironmentContext {
1551
+ id: 'metaboxEnvironment';
1552
+ data: {
1553
+ environmentId: string;
1554
+ };
1555
+ }
1556
+ interface MetaboxStudioContext {
1557
+ id: 'metaboxStudio';
1558
+ data: {
1559
+ userId: string;
1560
+ workspaceId: string;
1561
+ };
1562
+ }
1563
+ interface CustomApplicationContext {
1564
+ id: 'customApplication';
1565
+ data: {
1566
+ clientId: string;
1567
+ applicationId: string;
1568
+ };
1569
+ }
1570
+ type StreamRequestContext = MetaboxStudioContext | MetaboxProductContext | CustomApplicationContext | MetaboxEnvironmentContext | MetaboxBasicConfiguratorContext | MetaboxModularConfiguratorContext;
1571
+ interface SignalingMessageMap {
1572
+ [OrchestrationMessageTypes.ping]: PingMessage;
1573
+ [OrchestrationMessageTypes.offer]: RTCSessionDescriptionInit;
1574
+ [OrchestrationMessageTypes.error]: OrchestrationErrorMessage;
1575
+ [OrchestrationMessageTypes.ssInfo]: SSInfo;
1576
+ [OrchestrationMessageTypes.config]: ConfigMessage;
1577
+ [OrchestrationMessageTypes.answer]: RTCSessionDescriptionInit;
1578
+ [OrchestrationMessageTypes.playerCount]: PlayerCountMessage;
1579
+ [OrchestrationMessageTypes.iceCandidate]: CandidateMessage;
1580
+ [OrchestrationMessageTypes.streamerList]: StreamerListMessage;
1581
+ [OrchestrationMessageTypes.instanceReady]: InstanceReady;
1582
+ [OrchestrationMessageTypes.requestStream]: RequestStream;
1583
+ [OrchestrationMessageTypes.listStreamers]: ListStreamersMessage;
1584
+ [OrchestrationMessageTypes.p2pEstablished]: P2PEstablishedMessage;
1585
+ [OrchestrationMessageTypes.instanceReserved]: InstanceReserved;
1586
+ [OrchestrationMessageTypes.playerDisconnected]: ForceClientDisconnect;
1587
+ [OrchestrationMessageTypes.streamPreparedForUserInteraction]: streamPreparedForUserInteractionMessage;
1588
+ [OrchestrationMessageTypes.streamerDisconnected]: ForceClientDisconnect;
1589
+ [OrchestrationMessageTypes.interruptClientStream]: InterruptClientStream;
1590
+ }
1591
+ type OrchestrationMessageType = keyof SignalingMessageMap;
1592
+ type AnySignalingMessage = SignalingMessageMap[OrchestrationMessageType] | string;
1593
+ type SignalingMessageHandler<T extends keyof SignalingMessageMap> = (msg: SignalingMessageMap[T]) => void;
1594
+ interface PollingOrchestrationMessage {
1595
+ mm_message?: string;
1596
+ signallingServer?: string;
1597
+ error?: string;
1598
+ info?: {
1599
+ age: number | null;
1600
+ left: number | null;
1601
+ percent: number | null;
1602
+ total: number | null;
1603
+ };
1604
+ }
1605
+
1606
+ interface StreamConfig {
1607
+ autoStart: boolean;
1608
+ warnTimeout: number;
1609
+ }
1610
+
1611
+ interface StreamResolutionProps {
1612
+ width: number | null;
1613
+ height: number | null;
1954
1614
  }
1955
- interface ListStreamersMessage extends MessageBase {
1956
- type: 'listStreamers';
1957
- correlationId: string;
1615
+
1616
+ type TelemetryType = 'commandSent' | 'commandStop';
1617
+
1618
+ interface AggregatedStat {
1619
+ quality: Quality;
1620
+ aggregatedStats: InboundVideoStats;
1958
1621
  }
1959
- interface P2PEstablishedMessage extends MessageBase {
1960
- type: 'p2pEstablished';
1961
- source: string;
1962
- sessionId: string;
1622
+ interface InboundVideoStats extends RTCInboundRtpStreamStats {
1623
+ VideoEncoderQP: number;
1624
+ runTime: number;
1625
+ pixelRatio: number;
1626
+ bytesReceivedStart: number;
1627
+ framesDecodedStart: number;
1628
+ timestampStart: number;
1629
+ videoCodec: string;
1630
+ avgBitrate: number;
1631
+ avgFrameRate: number;
1632
+ selectedPair: {
1633
+ local: {
1634
+ type: string;
1635
+ url: string;
1636
+ };
1637
+ remote: {
1638
+ type: string;
1639
+ url: string;
1640
+ };
1641
+ } | null;
1642
+ currentRoundTripTime: number;
1643
+ codecs: Record<string, string>;
1644
+ receiveToCompositeMs: number;
1645
+ bitrate: number;
1646
+ kalmanBitrate: number;
1647
+ bitrateDrop: number;
1648
+ dataFlowCheckResult: DataFlowCheckResult;
1649
+ dataFlowBitrate: DataFlowCheckResult;
1963
1650
  }
1964
- interface streamPreparedForUserInteractionMessage extends MessageBase {
1965
- type: 'streamPreparedForUserInteraction';
1966
- correlationId: string;
1651
+ interface AwsInstance {
1652
+ /**
1653
+ * WebSocket URL for connecting to the Cirrus (polling mode) or Orchestration (direct mode).
1654
+ */
1655
+ wsUrl: string | null;
1656
+ pollingUrl: string | null;
1657
+ instanceName: string | null;
1658
+ /**
1659
+ * Unique identifier for the streaming request.
1660
+ * Coming with a new orchestration message "instanceReserved".
1661
+ */
1662
+ streamRequestId?: string;
1663
+ /**
1664
+ * Estimated time of arrival (in seconds) for the instance to be ready.
1665
+ * Coming with a new orchestration message "instanceReserved".
1666
+ */
1667
+ eta?: number;
1668
+ /**
1669
+ * Progress of completion for the instance launch (0-1).
1670
+ * Based on ETA time comes from the backend with new orchestration.
1671
+ * If eta is not provided, this value will be undefined.
1672
+ */
1673
+ progressComplete?: number;
1674
+ message?: string;
1967
1675
  }
1968
- interface RequestStream extends MessageBase {
1969
- type: 'requestStream';
1970
- correlationId: string;
1971
- payload: {
1972
- environmentId: string;
1973
- region?: string;
1974
- /**
1975
- * The context field is used for plugins of the external
1976
- * applications for collecting additional statistics, etc.
1977
- */
1978
- context: StreamRequestContext;
1676
+
1677
+ interface DataFlowCheckResult {
1678
+ isDropDetected: boolean;
1679
+ dropPercentage: number;
1680
+ activeMedian: number;
1681
+ quality: Quality;
1682
+ message: string;
1683
+ dataHistory: number[];
1684
+ config: {
1685
+ yellowFlagThresholdPercentage: number;
1686
+ redFlagThresholdPercentage: number;
1687
+ historyBufferLength: number;
1688
+ splitPoint: number;
1979
1689
  };
1980
1690
  }
1981
- interface MetaboxBasicConfiguratorContext {
1982
- id: 'metaboxBasicConfigurator';
1983
- data: {
1984
- configuratorId: string;
1985
- };
1691
+ declare class DataFlowMonitor {
1692
+ protected yellowFlagThresholdPercentage: number;
1693
+ protected redFlagThresholdPercentage: number;
1694
+ protected historyBufferLength: number;
1695
+ protected splitPoint: number;
1696
+ protected dataHistory: number[];
1697
+ /**
1698
+ * Initializes the DataFlowMonitor monitor.
1699
+ * @param yellowFlagThresholdPercentage - The percentage drop to trigger a YELLOW warning (default: 15%).
1700
+ * @param redFlagThresholdPercentage - The percentage drop to trigger a RED warning (default: 30%).
1701
+ * @param historyBufferLength - buffer length (default: 100).
1702
+ * @param splitPoint - The point at which to split the history buffer into two halves (default: 0.5).
1703
+ */
1704
+ constructor(yellowFlagThresholdPercentage?: number, redFlagThresholdPercentage?: number, historyBufferLength?: number, splitPoint?: number);
1705
+ reset(): void;
1706
+ config(data: FilterSettings): void;
1707
+ /**
1708
+ * Adds a new bitrate measurement and checks for significant drops.
1709
+ * @param currentValue - The current bitrate in kbps.
1710
+ * @returns BitrateCheckResult indicating if a drop was detected.
1711
+ */
1712
+ addValue(currentValue: number): DataFlowCheckResult;
1986
1713
  }
1987
- interface MetaboxModularConfiguratorContext {
1988
- id: 'metaboxModularConfigurator';
1989
- data: {
1990
- configuratorId: string;
1991
- };
1714
+
1715
+ interface FilterSettings {
1716
+ /**
1717
+ * Minimum number of kilobits per second to trigger low bandwidth
1718
+ */
1719
+ minimumBitrate: number;
1720
+ /**
1721
+ * Amount of a percentage drop to trigger a yellow warning
1722
+ */
1723
+ yellowFlag: number;
1724
+ /**
1725
+ * Amount of a percentage drop to trigger a red warning
1726
+ */
1727
+ redFlag: number;
1728
+ /**
1729
+ * Minimum number of frames per second to trigger low bandwidth
1730
+ */
1731
+ minimumFps: number;
1732
+ /**
1733
+ * Time to wait before checking if we can switch to low bandwidth
1734
+ */
1735
+ monitoringDelayTime: number;
1736
+ initialBitrateEstimate: number;
1737
+ initialErrorCovariance: number;
1738
+ processNoise: number;
1739
+ measurementNoise: number;
1740
+ panelOpen: boolean;
1992
1741
  }
1993
- interface MetaboxProductContext {
1994
- id: 'metaboxProduct';
1995
- data: {
1996
- productId: string;
1742
+
1743
+ declare class FilterSettingsComponent implements OnInit {
1744
+ private store;
1745
+ private readonly storageKey;
1746
+ readonly defaultFilterModel: {
1747
+ minimumBitrate: number;
1748
+ yellowFlag: number;
1749
+ redFlag: number;
1750
+ minimumFps: number;
1751
+ monitoringDelayTime: number;
1752
+ initialBitrateEstimate: number;
1753
+ initialErrorCovariance: number;
1754
+ processNoise: number;
1755
+ measurementNoise: number;
1756
+ panelOpen: boolean;
1997
1757
  };
1998
- }
1999
- interface MetaboxEnvironmentContext {
2000
- id: 'metaboxEnvironment';
2001
- data: {
2002
- environmentId: string;
1758
+ settings: {
1759
+ minimumBitrate: number;
1760
+ yellowFlag: number;
1761
+ redFlag: number;
1762
+ minimumFps: number;
1763
+ monitoringDelayTime: number;
1764
+ initialBitrateEstimate: number;
1765
+ initialErrorCovariance: number;
1766
+ processNoise: number;
1767
+ measurementNoise: number;
1768
+ panelOpen: boolean;
2003
1769
  };
1770
+ ngOnInit(): void;
1771
+ togglePanel(): void;
1772
+ saveSettings(): void;
1773
+ dispatch(settings: FilterSettings): void;
1774
+ reset(): void;
1775
+ static ɵfac: i0.ɵɵFactoryDeclaration<FilterSettingsComponent, never>;
1776
+ static ɵcmp: i0.ɵɵComponentDeclaration<FilterSettingsComponent, "app-filter-settings", never, {}, {}, never, never, true, never>;
2004
1777
  }
2005
- interface MetaboxStudioContext {
2006
- id: 'metaboxStudio';
2007
- data: {
2008
- userId: string;
2009
- workspaceId: string;
2010
- };
1778
+
1779
+ declare class LowBandwidthDetectorComponent implements OnInit {
1780
+ private readonly store;
1781
+ private readonly dialog;
1782
+ private readonly destroyRef;
1783
+ private readonly videoService;
1784
+ readonly isDevMode: boolean;
1785
+ private readonly viewportReady$;
1786
+ private readonly isLowBandwidth$;
1787
+ private readonly lowBandwidthTrigger$;
1788
+ private readonly highBandwidthTrigger$;
1789
+ private readonly viewPortDestroyedTrigger$;
1790
+ private readonly aggregatedStats$;
1791
+ private readonly nativeQuality$;
1792
+ private readonly monitoringTrigger$;
1793
+ private readonly reTrigger$;
1794
+ private readonly canSwitchToLowBand$;
1795
+ private readonly videoQuality$;
1796
+ private readonly fps$;
1797
+ private readonly bitrateDrop$;
1798
+ readonly fps: i0.Signal<number>;
1799
+ readonly nativeQuality: i0.Signal<Quality | undefined>;
1800
+ readonly isLowBandwidth: i0.Signal<boolean | undefined>;
1801
+ readonly aggregatedStats: i0.Signal<_3dsource_angular_unreal_module.InboundVideoStats | undefined>;
1802
+ readonly isReducedQuality: i0.WritableSignal<boolean>;
1803
+ readonly isIndicatorExpanded: i0.WritableSignal<boolean>;
1804
+ readonly isIndicatorExpandedTrigger$: rxjs.Observable<false>;
1805
+ ngOnInit(): void;
1806
+ private trySetLowBandwidth;
1807
+ toggleIndicator(value: boolean): void;
1808
+ hideIndicatorAfterDelay(): void;
1809
+ openLBMDialog(): void;
1810
+ static ɵfac: i0.ɵɵFactoryDeclaration<LowBandwidthDetectorComponent, never>;
1811
+ static ɵcmp: i0.ɵɵComponentDeclaration<LowBandwidthDetectorComponent, "app-low-bandwidth-detector", never, {}, {}, never, never, true, never>;
1812
+ }
1813
+
1814
+ declare class SafePipe implements PipeTransform {
1815
+ private sanitizer;
1816
+ transform(value: string, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl;
1817
+ static ɵfac: i0.ɵɵFactoryDeclaration<SafePipe, never>;
1818
+ static ɵpipe: i0.ɵɵPipeDeclaration<SafePipe, "safe", true>;
1819
+ }
1820
+
1821
+ declare function provideAngularUnrealModule(config?: {
1822
+ playwright: boolean;
1823
+ }): i0.EnvironmentProviders;
1824
+
1825
+ /**
1826
+ * Raw JSON from Unreal can either be wrapped in `commandCallback`
1827
+ * (e.g. `{ commandCallback: { command: '...', correlationId: '...' } }`)
1828
+ * or be a direct command/event object (e.g. `{ command: 'cameraChanged', payload: {...} }`).
1829
+ */
1830
+ interface UnrealCallbackJsonWrapped {
1831
+ commandCallback: MetaBoxCommandPacket;
1832
+ timeStamp?: unknown;
2011
1833
  }
2012
- interface CustomApplicationContext {
2013
- id: 'customApplication';
2014
- data: {
2015
- clientId: string;
2016
- applicationId: string;
2017
- };
1834
+ type UnrealCallbackJson = UnrealCallbackJsonWrapped | MetaBoxCommandPacket;
1835
+ declare const unrealCommandCallback: _ngrx_store.ActionCreator<string, (props: {
1836
+ json: UnrealCallbackJson;
1837
+ }) => {
1838
+ json: UnrealCallbackJson;
1839
+ } & _ngrx_store.Action<string>>;
1840
+ declare const commandStarted: _ngrx_store.ActionCreator<string, (props: {
1841
+ id: string;
1842
+ command: string;
1843
+ }) => {
1844
+ id: string;
1845
+ command: string;
1846
+ } & _ngrx_store.Action<string>>;
1847
+ declare const commandCompleted: _ngrx_store.ActionCreator<string, (props: {
1848
+ id: string;
1849
+ }) => {
1850
+ id: string;
1851
+ } & _ngrx_store.Action<string>>;
1852
+
1853
+ declare class CommandsEffects {
1854
+ private actions$;
1855
+ private unrealInitialConfig;
1856
+ listenUnrealCallbackByInitSignalling$: rxjs.Observable<{
1857
+ id: string;
1858
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
1859
+ static ɵfac: i0.ɵɵFactoryDeclaration<CommandsEffects, never>;
1860
+ static ɵprov: i0.ɵɵInjectableDeclaration<CommandsEffects>;
2018
1861
  }
2019
- type StreamRequestContext = MetaboxStudioContext | MetaboxProductContext | CustomApplicationContext | MetaboxEnvironmentContext | MetaboxBasicConfiguratorContext | MetaboxModularConfiguratorContext;
2020
- interface SignalingMessageMap {
2021
- [OrchestrationMessageTypes.ping]: PingMessage;
2022
- [OrchestrationMessageTypes.offer]: RTCSessionDescriptionInit;
2023
- [OrchestrationMessageTypes.error]: OrchestrationErrorMessage;
2024
- [OrchestrationMessageTypes.ssInfo]: SSInfo;
2025
- [OrchestrationMessageTypes.config]: ConfigMessage;
2026
- [OrchestrationMessageTypes.answer]: RTCSessionDescriptionInit;
2027
- [OrchestrationMessageTypes.playerCount]: PlayerCountMessage;
2028
- [OrchestrationMessageTypes.iceCandidate]: CandidateMessage;
2029
- [OrchestrationMessageTypes.streamerList]: StreamerListMessage;
2030
- [OrchestrationMessageTypes.instanceReady]: InstanceReady;
2031
- [OrchestrationMessageTypes.requestStream]: RequestStream;
2032
- [OrchestrationMessageTypes.listStreamers]: ListStreamersMessage;
2033
- [OrchestrationMessageTypes.p2pEstablished]: P2PEstablishedMessage;
2034
- [OrchestrationMessageTypes.instanceReserved]: InstanceReserved;
2035
- [OrchestrationMessageTypes.playerDisconnected]: ForceClientDisconnect;
2036
- [OrchestrationMessageTypes.streamPreparedForUserInteraction]: streamPreparedForUserInteractionMessage;
2037
- [OrchestrationMessageTypes.streamerDisconnected]: ForceClientDisconnect;
2038
- [OrchestrationMessageTypes.interruptClientStream]: InterruptClientStream;
1862
+
1863
+ declare const commandsFeature: {
1864
+ name: "commandsFeature";
1865
+ reducer: _ngrx_store.ActionReducer<_3dsource_angular_unreal_module.UnrealCommandsState, _ngrx_store.Action<string>>;
1866
+ selectCommandsFeatureState: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.UnrealCommandsState, (featureState: _3dsource_angular_unreal_module.UnrealCommandsState) => _3dsource_angular_unreal_module.UnrealCommandsState>;
1867
+ selectCommandsInProgress: _ngrx_store.MemoizedSelector<Record<string, any>, {
1868
+ timeStamp: number;
1869
+ command: string;
1870
+ id: string;
1871
+ }[], (featureState: _3dsource_angular_unreal_module.UnrealCommandsState) => {
1872
+ timeStamp: number;
1873
+ command: string;
1874
+ id: string;
1875
+ }[]>;
1876
+ selectTotalCommandsStarted: _ngrx_store.MemoizedSelector<Record<string, any>, number, (featureState: _3dsource_angular_unreal_module.UnrealCommandsState) => number>;
1877
+ selectTotalCommandsCompleted: _ngrx_store.MemoizedSelector<Record<string, any>, number, (featureState: _3dsource_angular_unreal_module.UnrealCommandsState) => number>;
1878
+ };
1879
+
1880
+ interface UnrealCommandsState {
1881
+ commandsInProgress: {
1882
+ timeStamp: number;
1883
+ command: string;
1884
+ id: string;
1885
+ }[];
1886
+ totalCommandsStarted: number;
1887
+ totalCommandsCompleted: number;
2039
1888
  }
2040
- type OrchestrationMessageType = keyof SignalingMessageMap;
2041
- type AnySignalingMessage = SignalingMessageMap[OrchestrationMessageType] | string;
2042
- type SignalingMessageHandler<T extends keyof SignalingMessageMap> = (msg: SignalingMessageMap[T]) => void;
2043
- interface PollingOrchestrationMessage {
2044
- mm_message?: string;
2045
- signallingServer?: string;
1889
+ declare const commandsReducer: _ngrx_store.ActionReducer<UnrealCommandsState, _ngrx_store.Action<string>>;
1890
+
1891
+ declare const selectCommandsInProgress: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: {
1892
+ timeStamp: number;
1893
+ command: string;
1894
+ id: string;
1895
+ }[]) => number>;
1896
+ declare const selectCommandProgress: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: number, s2: number) => number>;
1897
+ declare const selectLastCommandInProgress: _ngrx_store.MemoizedSelector<Record<string, any>, {
1898
+ timeStamp: number;
1899
+ command: string;
1900
+ id: string;
1901
+ } | null, (s1: {
1902
+ timeStamp: number;
1903
+ command: string;
1904
+ id: string;
1905
+ }[]) => {
1906
+ timeStamp: number;
1907
+ command: string;
1908
+ id: string;
1909
+ } | null>;
1910
+
1911
+ declare const trackMixpanelEvent: _ngrx_store.ActionCreator<string, (props: {
1912
+ event: string;
1913
+ data?: unknown;
1914
+ }) => {
1915
+ event: string;
1916
+ data?: unknown;
1917
+ } & _ngrx_store.Action<string>>;
1918
+ declare const changeLowBandwidth: _ngrx_store.ActionCreator<string, (props: {
1919
+ lowBandwidth: boolean;
1920
+ stats?: LBMStats;
1921
+ }) => {
1922
+ lowBandwidth: boolean;
1923
+ stats?: LBMStats;
1924
+ } & _ngrx_store.Action<string>>;
1925
+ declare const setMaxFps: _ngrx_store.ActionCreator<string, (props: {
1926
+ maxFps: number;
1927
+ }) => {
1928
+ maxFps: number;
1929
+ } & _ngrx_store.Action<string>>;
1930
+ declare const destroyRemoteConnections: _ngrx_store.ActionCreator<string, (props: {
1931
+ reason: DisconnectReasonType;
1932
+ }) => {
1933
+ reason: DisconnectReasonType;
1934
+ } & _ngrx_store.Action<string>>;
1935
+ declare const destroyUnrealScene: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1936
+ declare const setCirrusConnected: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1937
+ declare const setCirrusDisconnected: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1938
+ declare const changeStatusMainVideoOnScene: _ngrx_store.ActionCreator<string, (props: {
1939
+ isVideoPlaying: boolean;
1940
+ }) => {
1941
+ isVideoPlaying: boolean;
1942
+ } & _ngrx_store.Action<string>>;
1943
+ declare const setAwsInstance: _ngrx_store.ActionCreator<string, (props: {
1944
+ wsUrl: string | null;
1945
+ pollingUrl: string | null;
1946
+ instanceName: string | null;
1947
+ }) => {
1948
+ wsUrl: string | null;
1949
+ pollingUrl: string | null;
1950
+ instanceName: string | null;
1951
+ } & _ngrx_store.Action<string>>;
1952
+ declare const setStatusMessage: _ngrx_store.ActionCreator<string, (props: {
1953
+ statusMessage: string | null;
1954
+ }) => {
1955
+ statusMessage: string | null;
1956
+ } & _ngrx_store.Action<string>>;
1957
+ declare const setStatusPercentSignallingServer: _ngrx_store.ActionCreator<string, (props: {
1958
+ percent: number | null;
1959
+ }) => {
1960
+ percent: number | null;
1961
+ } & _ngrx_store.Action<string>>;
1962
+ declare const setFreezeFrame: _ngrx_store.ActionCreator<string, (props: {
1963
+ dataUrl: string | null;
1964
+ progress: number | null;
1965
+ }) => {
1966
+ dataUrl: string | null;
1967
+ progress: number | null;
1968
+ } & _ngrx_store.Action<string>>;
1969
+ declare const setStreamClientCompanyId: _ngrx_store.ActionCreator<string, (props: {
1970
+ id: string;
1971
+ }) => {
1972
+ id: string;
1973
+ } & _ngrx_store.Action<string>>;
1974
+ declare const setStreamViewId: _ngrx_store.ActionCreator<string, (props: {
1975
+ id: string;
1976
+ }) => {
1977
+ id: string;
1978
+ } & _ngrx_store.Action<string>>;
1979
+ declare const setIntroImageSrc: _ngrx_store.ActionCreator<string, (props: {
1980
+ src: string;
1981
+ }) => {
1982
+ src: string;
1983
+ } & _ngrx_store.Action<string>>;
1984
+ declare const setLoadingImageSrc: _ngrx_store.ActionCreator<string, (props: {
1985
+ src: string;
1986
+ }) => {
1987
+ src: string;
1988
+ } & _ngrx_store.Action<string>>;
1989
+ declare const setIntroVideoSrc: _ngrx_store.ActionCreator<string, (props: {
1990
+ src: string;
1991
+ }) => {
1992
+ src: string;
1993
+ } & _ngrx_store.Action<string>>;
1994
+ declare const resetIntroSrc: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
1995
+ declare const setFreezeFrameFromVideo: _ngrx_store.ActionCreator<string, (props: {
1996
+ dataUrl: string | null;
1997
+ progress: number | null;
1998
+ }) => {
1999
+ dataUrl: string | null;
2000
+ progress: number | null;
2001
+ } & _ngrx_store.Action<string>>;
2002
+ declare const setEstablishingConnection: _ngrx_store.ActionCreator<string, (props: {
2003
+ value: boolean;
2004
+ }) => {
2005
+ value: boolean;
2006
+ } & _ngrx_store.Action<string>>;
2007
+ /**
2008
+ * @deprecated Use `dataChannelReady` instead. Currently, this action is not working.
2009
+ */
2010
+ declare const setDataChannelConnected: _ngrx_store.ActionCreator<string, (props: {
2011
+ statusMessage: string;
2012
+ }) => {
2013
+ statusMessage: string;
2014
+ } & _ngrx_store.Action<string>>;
2015
+ declare const dataChannelConnected: _ngrx_store.ActionCreator<string, (props: {
2016
+ statusMessage: string;
2017
+ }) => {
2018
+ statusMessage: string;
2019
+ } & _ngrx_store.Action<string>>;
2020
+ declare const dataChannelReady: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2021
+ declare const setConfig: _ngrx_store.ActionCreator<string, (props: {
2022
+ config: Partial<StreamConfig>;
2023
+ }) => {
2024
+ config: Partial<StreamConfig>;
2025
+ } & _ngrx_store.Action<string>>;
2026
+ declare const disconnectStream: _ngrx_store.ActionCreator<string, (props: {
2027
+ reason: DisconnectReasonType;
2028
+ message: string;
2029
+ }) => {
2030
+ reason: DisconnectReasonType;
2031
+ message: string;
2032
+ } & _ngrx_store.Action<string>>;
2033
+ declare const dropConnection: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2034
+ declare const setViewportReady: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2035
+ declare const setViewportNotReady: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2036
+ declare const changeStreamResolutionAction: _ngrx_store.ActionCreator<string, (props: {
2037
+ width: number | null;
2038
+ height: number | null;
2039
+ }) => {
2040
+ width: number | null;
2041
+ height: number | null;
2042
+ } & _ngrx_store.Action<string>>;
2043
+ declare const changeStreamResolutionSuccessAction: _ngrx_store.ActionCreator<string, (props: {
2044
+ width: number | null;
2045
+ height: number | null;
2046
+ }) => {
2047
+ width: number | null;
2048
+ height: number | null;
2049
+ } & _ngrx_store.Action<string>>;
2050
+ declare const setSignalingName: _ngrx_store.ActionCreator<string, (props: {
2051
+ instanceName: string;
2052
+ }) => {
2053
+ instanceName: string;
2054
+ } & _ngrx_store.Action<string>>;
2055
+ declare const setOrchestrationParameters: _ngrx_store.ActionCreator<string, (props: {
2056
+ instanceName: string;
2057
+ streamRequestId: string;
2058
+ eta: number;
2059
+ }) => {
2060
+ instanceName: string;
2061
+ streamRequestId: string;
2062
+ eta: number;
2063
+ } & _ngrx_store.Action<string>>;
2064
+ declare const setOrchestrationMessage: _ngrx_store.ActionCreator<string, (props: {
2065
+ message: string;
2066
+ }) => {
2067
+ message: string;
2068
+ } & _ngrx_store.Action<string>>;
2069
+ declare const setOrchestrationProgress: _ngrx_store.ActionCreator<string, (props: {
2070
+ progressComplete: number;
2071
+ }) => {
2072
+ progressComplete: number;
2073
+ } & _ngrx_store.Action<string>>;
2074
+ declare const setOrchestrationContext: _ngrx_store.ActionCreator<string, (props: {
2075
+ urls: string[];
2076
+ environmentId: string;
2077
+ streamRequestContext: StreamRequestContext;
2078
+ }) => {
2079
+ urls: string[];
2080
+ environmentId: string;
2081
+ streamRequestContext: StreamRequestContext;
2082
+ } & _ngrx_store.Action<string>>;
2083
+ declare const updateCirrusInfo: _ngrx_store.ActionCreator<string, (props: {
2084
+ ssInfo: string;
2085
+ ssData: SignalingData;
2086
+ }) => {
2087
+ ssInfo: string;
2088
+ ssData: SignalingData;
2089
+ } & _ngrx_store.Action<string>>;
2090
+ declare const setLoopBackCommandIsCompleted: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2091
+ declare const setAfkTimerVisible: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2092
+ declare const setAfkTimerHide: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2093
+ declare const setAfkTimerCountdown: _ngrx_store.ActionCreator<string, (props: {
2094
+ countdown: number;
2095
+ }) => {
2096
+ countdown: number;
2097
+ } & _ngrx_store.Action<string>>;
2098
+ declare const showUnrealErrorMessage: _ngrx_store.ActionCreator<string, (props: {
2099
+ code: number | null;
2046
2100
  error?: string;
2047
- info?: {
2048
- age: number | null;
2049
- left: number | null;
2050
- percent: number | null;
2051
- total: number | null;
2101
+ }) => {
2102
+ code: number | null;
2103
+ error?: string;
2104
+ } & _ngrx_store.Action<string>>;
2105
+ declare const initSignalling: _ngrx_store.FunctionWithParametersType<[data?: {
2106
+ resetDisconnectionReason: boolean;
2107
+ } | undefined], {
2108
+ resetDisconnectionReason: boolean;
2109
+ } & _ngrx_store.Action<string>> & _ngrx_store.Action<string>;
2110
+ declare const startStream: _ngrx_store.ActionCreator<string, (props: {
2111
+ config: Partial<StreamConfig>;
2112
+ }) => {
2113
+ config: Partial<StreamConfig>;
2114
+ } & _ngrx_store.Action<string>>;
2115
+ declare const resetConfig: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2116
+ declare const resetAfk: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2117
+ declare const resetWarnTimeout: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2118
+ declare const abortEstablishingConnection: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2119
+ declare const setUnrealPlaywrightConfig: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2120
+ declare const saveAnalyticsEvent: _ngrx_store.ActionCreator<string, (props: {
2121
+ event: {
2122
+ name: string;
2123
+ params: Record<string, unknown>;
2052
2124
  };
2053
- }
2054
-
2055
- interface StreamConfig {
2056
- autoStart: boolean;
2057
- warnTimeout: number;
2058
- }
2059
-
2060
- interface StreamResolutionProps {
2061
- width: number | null;
2062
- height: number | null;
2063
- }
2064
-
2065
- type TelemetryType = 'commandSent' | 'commandStop';
2066
-
2067
- declare const UnrealInternalSignalEvents: {
2068
- readonly OnVideoInitialized: "OnVideoInitialized";
2069
- readonly RestAfkTimer: "RestAfkTimer";
2070
- readonly UnrealCallback: "UnrealCallback";
2071
- readonly VideoPlayClick: "VideoPlayClick";
2072
- readonly ShowPlayButton: "ShowPlayButton";
2073
- readonly ForceResizeViewport: "ForceResizeViewport";
2074
- readonly VideoAdaptedToContainer: "VideoAdaptedToContainer";
2075
- };
2076
- interface SignalDescriptor {
2077
- [UnrealInternalSignalEvents.UnrealCallback]: {
2078
- json: UnrealCallBackJson;
2125
+ }) => {
2126
+ event: {
2127
+ name: string;
2128
+ params: Record<string, unknown>;
2079
2129
  };
2080
- [UnrealInternalSignalEvents.ForceResizeViewport]: void;
2081
- [UnrealInternalSignalEvents.OnVideoInitialized]: HTMLVideoElement;
2082
- [UnrealInternalSignalEvents.VideoAdaptedToContainer]: void;
2083
- [UnrealInternalSignalEvents.ShowPlayButton]: void;
2084
- [UnrealInternalSignalEvents.RestAfkTimer]: void;
2085
- [key: string]: any;
2086
- }
2087
- type UnrealCallBackJson = MetaBoxCommandPacket | WrappedMetaBoxCommandPacket;
2088
- interface WrappedMetaBoxCommandPacket {
2089
- commandCallback: MetaBoxCommandPacket;
2090
- }
2091
- interface AggregatedStat {
2092
- quality: Quality;
2093
- aggregatedStats: InboundVideoStats;
2094
- }
2095
- interface InboundVideoStats extends RTCInboundRtpStreamStats {
2096
- VideoEncoderQP: number;
2097
- runTime: number;
2098
- pixelRatio: number;
2099
- bytesReceivedStart: number;
2100
- framesDecodedStart: number;
2101
- timestampStart: number;
2102
- videoCodec: string;
2103
- avgBitrate: number;
2104
- avgFrameRate: number;
2105
- selectedPair: {
2106
- local: {
2107
- type: string;
2108
- url: string;
2109
- };
2110
- remote: {
2111
- type: string;
2112
- url: string;
2113
- };
2114
- } | null;
2115
- currentRoundTripTime: number;
2116
- codecs: Record<string, string>;
2117
- receiveToCompositeMs: number;
2118
- bitrate: number;
2119
- kalmanBitrate: number;
2120
- bitrateDrop: number;
2121
- dataFlowCheckResult: DataFlowCheckResult;
2122
- dataFlowBitrate: DataFlowCheckResult;
2123
- }
2124
- interface AwsInstance {
2125
- /**
2126
- * WebSocket URL for connecting to the Cirrus (polling mode) or Orchestration (direct mode).
2127
- */
2128
- wsUrl: string | null;
2129
- pollingUrl: string | null;
2130
- instanceName: string | null;
2131
- /**
2132
- * Unique identifier for the streaming request.
2133
- * Coming with a new orchestration message "instanceReserved".
2134
- */
2135
- streamRequestId?: string;
2136
- /**
2137
- * Estimated time of arrival (in seconds) for the instance to be ready.
2138
- * Coming with a new orchestration message "instanceReserved".
2139
- */
2140
- eta?: number;
2141
- /**
2142
- * Progress of completion for the instance launch (0-1).
2143
- * Based on ETA time comes from the backend with new orchestration.
2144
- * If eta is not provided, this value will be undefined.
2145
- */
2146
- progressComplete?: number;
2147
- message?: string;
2148
- }
2130
+ } & _ngrx_store.Action<string>>;
2131
+ /** Action to trigger WebRTC peer reconnection (keeps signaling connection) */
2132
+ declare const reconnectPeer: _ngrx_store.ActionCreator<string, (props: {
2133
+ attempt: number;
2134
+ maxAttempts: number;
2135
+ delay?: number;
2136
+ }) => {
2137
+ attempt: number;
2138
+ maxAttempts: number;
2139
+ delay?: number;
2140
+ } & _ngrx_store.Action<string>>;
2141
+ /** Action to reset the data channel state before reconnection */
2142
+ declare const resetDataChannelForReconnect: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2143
+ /** Action dispatched when peer reconnection succeeds */
2144
+ declare const reconnectPeerSuccess: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2145
+ /** Action dispatched when all peer reconnection attempts are exhausted */
2146
+ declare const reconnectPeerFailed: _ngrx_store.ActionCreator<string, (props: {
2147
+ reason: string;
2148
+ }) => {
2149
+ reason: string;
2150
+ } & _ngrx_store.Action<string>>;
2151
+ /** Action dispatched when ICE connection state changes to failed/disconnected */
2152
+ declare const iceConnectionFailed: _ngrx_store.ActionCreator<string, (props: {
2153
+ state: RTCIceConnectionState;
2154
+ }) => {
2155
+ state: RTCIceConnectionState;
2156
+ } & _ngrx_store.Action<string>>;
2157
+ declare const forceResizeViewport: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2158
+ declare const videoAdaptedToContainer: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2159
+ declare const videoStreamInitialized: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2160
+ declare const setKalmanSettings: _ngrx_store.ActionCreator<string, (props: {
2161
+ settings: FilterSettings;
2162
+ }) => {
2163
+ settings: FilterSettings;
2164
+ } & _ngrx_store.Action<string>>;
2165
+ declare const dropDC: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2166
+ declare const dropPC: _ngrx_store.ActionCreator<string, () => _ngrx_store.Action<string>>;
2149
2167
 
2150
- interface DataFlowCheckResult {
2151
- isDropDetected: boolean;
2152
- dropPercentage: number;
2153
- activeMedian: number;
2154
- quality: Quality;
2155
- message: string;
2156
- dataHistory: number[];
2157
- config: {
2158
- yellowFlagThresholdPercentage: number;
2159
- redFlagThresholdPercentage: number;
2160
- historyBufferLength: number;
2161
- splitPoint: number;
2162
- };
2163
- }
2164
- declare class DataFlowMonitor {
2165
- protected yellowFlagThresholdPercentage: number;
2166
- protected redFlagThresholdPercentage: number;
2167
- protected historyBufferLength: number;
2168
- protected splitPoint: number;
2169
- protected dataHistory: number[];
2170
- /**
2171
- * Initializes the DataFlowMonitor monitor.
2172
- * @param yellowFlagThresholdPercentage - The percentage drop to trigger a YELLOW warning (default: 15%).
2173
- * @param redFlagThresholdPercentage - The percentage drop to trigger a RED warning (default: 30%).
2174
- * @param historyBufferLength - buffer length (default: 100).
2175
- * @param splitPoint - The point at which to split the history buffer into two halves (default: 0.5).
2176
- */
2177
- constructor(yellowFlagThresholdPercentage?: number, redFlagThresholdPercentage?: number, historyBufferLength?: number, splitPoint?: number);
2178
- reset(): void;
2179
- config(data: FilterSettings): void;
2168
+ declare class UnrealEffects {
2169
+ private actions$;
2170
+ private dialog;
2171
+ private http;
2172
+ private store;
2173
+ private isDevMode;
2174
+ private scrollStrategy;
2175
+ private unrealInitialConfig;
2176
+ private webRtcPlayerService;
2177
+ private commandsSender;
2178
+ private readonly commandTelemetryService;
2179
+ private signallingService;
2180
+ private videoService;
2181
+ private unrealCallbackService;
2182
+ private dataChannelConnectionTimeout;
2183
+ private connectionCompleted$;
2184
+ private reconnectConfig;
2185
+ disconnectReasonHandling$: rxjs.Observable<{
2186
+ reason: _3dsource_angular_unreal_module.DisconnectReasonType;
2187
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2188
+ destroyConnections$: rxjs.Observable<{
2189
+ reason: _3dsource_angular_unreal_module.DisconnectReasonType;
2190
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2191
+ destroyRemoteConnections$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2192
+ webrtcErrorModalComponent$: rxjs.Observable<false> & _ngrx_effects.CreateEffectMetadata;
2193
+ changeStreamResolution$: rxjs.Observable<{
2194
+ width: number | null;
2195
+ height: number | null;
2196
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2197
+ forceLBMOff$: rxjs.Observable<{
2198
+ lowBandwidth: boolean;
2199
+ stats?: _3dsource_angular_unreal_module.LBMStats;
2200
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2201
+ resetFreezeFrameOnLowBandwidthTriggered$: rxjs.Observable<{
2202
+ dataUrl: string | null;
2203
+ progress: number | null;
2204
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2205
+ sendLbmStat$: rxjs.Subscription;
2206
+ resetAfk$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2207
+ abortEstablishingConnection$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2208
+ setMaxFps$: rxjs.Observable<{
2209
+ maxFps: number;
2210
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2211
+ setSignalingTo100$: rxjs.Observable<{
2212
+ percent: number | null;
2213
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2214
+ setOrchestrationParameters$: rxjs.Observable<{
2215
+ progressComplete: number;
2216
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2217
+ setDataChannelTimeoutCheck$: rxjs.Observable<{
2218
+ reason: _3dsource_angular_unreal_module.DisconnectReasonType;
2219
+ message: string;
2220
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2221
+ destroyConnectionAndRestart$: rxjs.Observable<{
2222
+ resetDisconnectionReason: boolean;
2223
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2224
+ showUnrealError$: rxjs.Observable<{
2225
+ code: number | null;
2226
+ error?: string;
2227
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2228
+ sendStatisticsToUnreal$: rxjs.Observable<Object> & _ngrx_effects.CreateEffectMetadata;
2229
+ unrealReceiverReady$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2230
+ initAppBySetDataChannelConnected$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2231
+ setViewportReadyBySetLoopBackCommandIsCompleted$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2232
+ startStream$: rxjs.Observable<{
2233
+ resetDisconnectionReason: boolean;
2234
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2235
+ connectToSignaling$: rxjs.Observable<WebSocket> & _ngrx_effects.CreateEffectMetadata;
2180
2236
  /**
2181
- * Adds a new bitrate measurement and checks for significant drops.
2182
- * @param currentValue - The current bitrate in kbps.
2183
- * @returns BitrateCheckResult indicating if a drop was detected.
2237
+ * Effect: `forceViewportNotReady$`
2238
+ *
2239
+ * Ensures the viewport is explicitly marked as *not ready* to prevent
2240
+ * a temporary black screen flash when disconnecting.
2241
+ *
2242
+ * ### Why
2243
+ * - The video stream is disconnected immediately.
2244
+ * - The DataChannel closes slightly later.
2245
+ * - Closing the DataChannel resets the Unreal scene,
2246
+ * which also sets `viewPortReady` to `false`.
2247
+ *
2248
+ * Without this effect, the order of these events may cause
2249
+ * a visible flicker (video flashing to black).
2184
2250
  */
2185
- addValue(currentValue: number): DataFlowCheckResult;
2186
- }
2187
-
2188
- interface FilterSettings {
2251
+ forceViewportNotReady$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2189
2252
  /**
2190
- * Minimum number of kilobits per second to trigger low bandwidth
2253
+ * Effect: `handleDataChannelClosed$`
2254
+ *
2255
+ * Triggers peer reconnection when DataChannel closes unexpectedly.
2256
+ * Only triggers if reconnection is enabled, onDataChannelClose is true,
2257
+ * and the signaling WebSocket is still connected.
2191
2258
  */
2192
- minimumBitrate: number;
2259
+ handleDataChannelClosed$: rxjs.Observable<{
2260
+ attempt: number;
2261
+ maxAttempts: number;
2262
+ delay?: number;
2263
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2193
2264
  /**
2194
- * Amount of a percentage drop to trigger a yellow warning
2265
+ * Effect: `resetStateForPeerReconnect$`
2266
+ *
2267
+ * Resets the data channel state when peer reconnection starts.
2195
2268
  */
2196
- yellowFlag: number;
2269
+ resetStateForPeerReconnect$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2197
2270
  /**
2198
- * Amount of a percentage drop to trigger a red warning
2271
+ * Effect: `executePeerReconnect$`
2272
+ *
2273
+ * Executes the actual peer reconnection attempt.
2274
+ * This only re-establishes the WebRTC connection, not the signaling.
2199
2275
  */
2200
- redFlag: number;
2276
+ executePeerReconnect$: rxjs.Observable<_ngrx_store.Action<string> | ({
2277
+ attempt: number;
2278
+ maxAttempts: number;
2279
+ delay?: number;
2280
+ } & _ngrx_store.Action<string>) | ({
2281
+ reason: string;
2282
+ } & _ngrx_store.Action<string>)> & _ngrx_effects.CreateEffectMetadata;
2201
2283
  /**
2202
- * Minimum number of frames per second to trigger low bandwidth
2284
+ * Effect: `handlePeerReconnectFailed$`
2285
+ *
2286
+ * Handles the case when all peer reconnection attempts have failed.
2287
+ * Falls back to full disconnection which may trigger full reconnection.
2203
2288
  */
2204
- minimumFps: number;
2289
+ handlePeerReconnectFailed$: rxjs.Observable<{
2290
+ reason: _3dsource_angular_unreal_module.DisconnectReasonType;
2291
+ message: string;
2292
+ } & _ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2205
2293
  /**
2206
- * Time to wait before checking if we can switch to low bandwidth
2294
+ * Effect: `logPeerReconnectSuccess$`
2295
+ *
2296
+ * Logs successful peer reconnection for telemetry.
2207
2297
  */
2208
- monitoringDelayTime: number;
2209
- initialBitrateEstimate: number;
2210
- initialErrorCovariance: number;
2211
- processNoise: number;
2212
- measurementNoise: number;
2213
- panelOpen: boolean;
2214
- }
2215
- /**
2216
- * Default LBM Filter Parameters
2217
- */
2218
- declare const DefaultFilterModel: FilterSettings;
2219
-
2220
- declare class FilterSettingsComponent implements OnInit {
2221
- private readonly storageKey;
2222
- readonly defaultFilterModel: {
2223
- minimumBitrate: number;
2224
- yellowFlag: number;
2225
- redFlag: number;
2226
- minimumFps: number;
2227
- monitoringDelayTime: number;
2228
- initialBitrateEstimate: number;
2229
- initialErrorCovariance: number;
2230
- processNoise: number;
2231
- measurementNoise: number;
2232
- panelOpen: boolean;
2233
- };
2234
- settings: {
2235
- minimumBitrate: number;
2236
- yellowFlag: number;
2237
- redFlag: number;
2238
- minimumFps: number;
2239
- monitoringDelayTime: number;
2240
- initialBitrateEstimate: number;
2241
- initialErrorCovariance: number;
2242
- processNoise: number;
2243
- measurementNoise: number;
2244
- panelOpen: boolean;
2245
- };
2246
- ngOnInit(): void;
2247
- togglePanel(): void;
2248
- saveSettings(): void;
2249
- dispatch(model: typeof DefaultFilterModel): void;
2250
- reset(): void;
2251
- static ɵfac: i0.ɵɵFactoryDeclaration<FilterSettingsComponent, never>;
2252
- static ɵcmp: i0.ɵɵComponentDeclaration<FilterSettingsComponent, "app-filter-settings", never, {}, {}, never, never, true, never>;
2298
+ logPeerReconnectSuccess$: rxjs.Observable<_ngrx_store.Action<string>> & _ngrx_effects.CreateEffectMetadata;
2299
+ static ɵfac: i0.ɵɵFactoryDeclaration<UnrealEffects, never>;
2300
+ static ɵprov: i0.ɵɵInjectableDeclaration<UnrealEffects>;
2253
2301
  }
2254
2302
 
2255
- declare class LowBandwidthDetectorComponent implements OnInit {
2256
- private readonly store;
2257
- private readonly dialog;
2258
- private readonly destroyRef;
2259
- private readonly videoService;
2260
- readonly isDevMode: boolean;
2261
- private readonly viewportReady$;
2262
- private readonly isLowBandwidth$;
2263
- private readonly lowBandwidthTrigger$;
2264
- private readonly highBandwidthTrigger$;
2265
- private readonly viewPortDestroyedTrigger$;
2266
- private readonly aggregatedStats$;
2267
- private readonly nativeQuality$;
2268
- private readonly monitoringTrigger$;
2269
- private readonly reTrigger$;
2270
- private readonly canSwitchToLowBand$;
2271
- private readonly videoQuality$;
2272
- private readonly fps$;
2273
- private readonly bitrateDrop$;
2274
- readonly fps: i0.Signal<number>;
2275
- readonly nativeQuality: i0.Signal<Quality | undefined>;
2276
- readonly isLowBandwidth: i0.Signal<boolean | undefined>;
2277
- readonly aggregatedStats: i0.Signal<_3dsource_angular_unreal_module.InboundVideoStats | undefined>;
2278
- readonly isReducedQuality: i0.WritableSignal<boolean>;
2279
- readonly isIndicatorExpanded: i0.WritableSignal<boolean>;
2280
- readonly isIndicatorExpandedTrigger$: rxjs.Observable<false>;
2281
- ngOnInit(): void;
2282
- private trySetLowBandwidth;
2283
- toggleIndicator(value: boolean): void;
2284
- hideIndicatorAfterDelay(): void;
2285
- openLBMDialog(): void;
2286
- static ɵfac: i0.ɵɵFactoryDeclaration<LowBandwidthDetectorComponent, never>;
2287
- static ɵcmp: i0.ɵɵComponentDeclaration<LowBandwidthDetectorComponent, "app-low-bandwidth-detector", never, {}, {}, never, never, true, never>;
2288
- }
2303
+ declare const unrealFeature: {
2304
+ name: "unrealFeature";
2305
+ reducer: _ngrx_store.ActionReducer<_3dsource_angular_unreal_module.UnrealState, _ngrx_store.Action<string>>;
2306
+ selectUnrealFeatureState: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.UnrealState, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.UnrealState>;
2307
+ selectSsInfo: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
2308
+ selectFreezeFrame: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.FreezeFrameMessage, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.FreezeFrameMessage>;
2309
+ selectLowBandwidth: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2310
+ selectIsVideoPlaying: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2311
+ selectStatusMessage: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
2312
+ selectEnvironmentId: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
2313
+ selectStreamRequestContext: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamRequestContext | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamRequestContext | null>;
2314
+ selectSsData: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.SignalingData | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.SignalingData | null>;
2315
+ selectLowBandwidthStats: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.LBMStats | undefined, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.LBMStats | undefined>;
2316
+ selectStreamConfig: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamConfig, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamConfig>;
2317
+ selectAwsInstance: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.AwsInstance, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.AwsInstance>;
2318
+ selectWasInitialized: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2319
+ selectIsFirstSuccessLoad: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2320
+ selectIsAfkTimerVisible: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2321
+ selectAfkCountdown: _ngrx_store.MemoizedSelector<Record<string, any>, number, (featureState: _3dsource_angular_unreal_module.UnrealState) => number>;
2322
+ selectCirrusConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2323
+ selectViewportReady: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2324
+ selectFreezeFrameFromVideo: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.FreezeFrameMessage, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.FreezeFrameMessage>;
2325
+ selectStatusPercentSignallingServer: _ngrx_store.MemoizedSelector<Record<string, any>, number | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => number | null>;
2326
+ selectErrorMessage: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.ConnectionError | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.ConnectionError | null>;
2327
+ selectIsReconnecting: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2328
+ selectDataChannelConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2329
+ selectStreamResolution: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamResolutionProps, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.StreamResolutionProps>;
2330
+ selectEstablishingConnection: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (featureState: _3dsource_angular_unreal_module.UnrealState) => boolean>;
2331
+ selectDisconnectReason: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.DisconnectReasonType, (featureState: _3dsource_angular_unreal_module.UnrealState) => _3dsource_angular_unreal_module.DisconnectReasonType>;
2332
+ selectMatchUrls: _ngrx_store.MemoizedSelector<Record<string, any>, string[], (featureState: _3dsource_angular_unreal_module.UnrealState) => string[]>;
2333
+ selectStreamClientCompanyId: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
2334
+ selectStreamViewId: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
2335
+ selectVideoIntroSrc: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
2336
+ selectImageIntroSrc: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => string | null>;
2337
+ selectImageLoadingSrc: _ngrx_store.MemoizedSelector<Record<string, any>, string, (featureState: _3dsource_angular_unreal_module.UnrealState) => string>;
2338
+ selectAnalyticsEvent: _ngrx_store.MemoizedSelector<Record<string, any>, {
2339
+ name: string;
2340
+ params: Record<string, unknown>;
2341
+ } | null, (featureState: _3dsource_angular_unreal_module.UnrealState) => {
2342
+ name: string;
2343
+ params: Record<string, unknown>;
2344
+ } | null>;
2345
+ };
2289
2346
 
2290
- declare class SafePipe implements PipeTransform {
2291
- private sanitizer;
2292
- transform(value: string, type: string): SafeHtml | SafeStyle | SafeScript | SafeUrl | SafeResourceUrl;
2293
- static ɵfac: i0.ɵɵFactoryDeclaration<SafePipe, never>;
2294
- static ɵpipe: i0.ɵɵPipeDeclaration<SafePipe, "safe", true>;
2347
+ interface UnrealState {
2348
+ lowBandwidthStats: LBMStats | undefined;
2349
+ streamConfig: StreamConfig;
2350
+ awsInstance: AwsInstance;
2351
+ lowBandwidth: boolean;
2352
+ wasInitialized: boolean;
2353
+ isFirstSuccessLoad: boolean;
2354
+ isAfkTimerVisible: boolean;
2355
+ afkCountdown: number;
2356
+ cirrusConnected: boolean;
2357
+ viewportReady: boolean;
2358
+ freezeFrameFromVideo: FreezeFrameMessage;
2359
+ freezeFrame: FreezeFrameMessage;
2360
+ statusMessage: string | null;
2361
+ /**
2362
+ * @deprecated, use ssData in future
2363
+ */
2364
+ ssInfo: string | null;
2365
+ ssData: SignalingData | null;
2366
+ statusPercentSignallingServer: number | null;
2367
+ errorMessage: ConnectionError | null;
2368
+ isReconnecting: boolean;
2369
+ dataChannelConnected: boolean;
2370
+ streamResolution: StreamResolutionProps;
2371
+ isVideoPlaying: boolean;
2372
+ establishingConnection: boolean;
2373
+ disconnectReason: DisconnectReasonType;
2374
+ matchUrls: string[];
2375
+ environmentId: string | null;
2376
+ streamClientCompanyId: string | null;
2377
+ streamViewId: string | null;
2378
+ videoIntroSrc: string | null;
2379
+ imageIntroSrc: string | null;
2380
+ imageLoadingSrc: string;
2381
+ streamRequestContext: StreamRequestContext | null;
2382
+ analyticsEvent: {
2383
+ name: string;
2384
+ params: Record<string, unknown>;
2385
+ } | null;
2295
2386
  }
2387
+ declare const unrealReducer: _ngrx_store.ActionReducer<UnrealState, _ngrx_store.Action<string>>;
2296
2388
 
2297
- declare function provideAngularUnrealModule(config?: {
2298
- playwright: boolean;
2299
- }): i0.EnvironmentProviders;
2389
+ declare const selectFreezeFrameDataUrlFromVideo: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (s1: _3dsource_angular_unreal_module.FreezeFrameMessage, s2: boolean) => string | null>;
2390
+ declare const selectFreezeFrameProgressMessageFromVideo: _ngrx_store.MemoizedSelector<Record<string, any>, number | null, (s1: _3dsource_angular_unreal_module.FreezeFrameMessage, s2: boolean) => number | null>;
2391
+ declare const selectFreezeFrameDataUrl: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (s1: _3dsource_angular_unreal_module.FreezeFrameMessage, s2: boolean) => string | null>;
2392
+ declare const selectIsFreezeFrameLoading: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.FreezeFrameMessage) => boolean>;
2393
+ declare const selectFreezeFrameCombinedDataUrl: _ngrx_store.MemoizedSelector<Record<string, any>, string | null, (s1: string | null, s2: string | null) => string | null>;
2394
+ declare const selectStreamConfig: _ngrx_store.MemoizedSelector<Record<string, any>, _3dsource_angular_unreal_module.StreamConfig, (s1: _3dsource_angular_unreal_module.StreamConfig) => _3dsource_angular_unreal_module.StreamConfig>;
2395
+ declare const selectWarnTimeout: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: _3dsource_angular_unreal_module.StreamConfig) => number>;
2396
+ declare const selectIsExistMatchUrls: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: string[]) => boolean>;
2397
+ declare const selectIsAutostart: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.StreamConfig) => boolean>;
2398
+ declare const selectIsShowPopupWithoutAutoStart: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: _3dsource_angular_unreal_module.StreamConfig, s2: boolean) => boolean>;
2399
+ declare const selectShowReconnectPopup: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
2400
+ declare const selectShowLoader: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
2401
+ declare const selectIsVideoPlayingAndDataChannelConnected: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean) => boolean>;
2402
+ declare const selectSignalingParameters: _ngrx_store.MemoizedSelector<Record<string, any>, string, (s1: _3dsource_angular_unreal_module.SignalingData | null, s2: _3dsource_angular_unreal_module.AwsInstance, s3: string | null) => string>;
2403
+ /**
2404
+ * Returns Scene load progress as a float value in between 0-1
2405
+ */
2406
+ declare const selectTotalProgress: _ngrx_store.MemoizedSelector<Record<string, any>, number, (s1: number | null, s2: number, s3: _3dsource_angular_unreal_module.AwsInstance, s4: boolean) => number>;
2407
+ declare const selectClientAndViewIds: _ngrx_store.MemoizedSelector<Record<string, any>, {
2408
+ clientId: string | null;
2409
+ viewId: string | null;
2410
+ }, (s1: string | null, s2: string | null) => {
2411
+ clientId: string | null;
2412
+ viewId: string | null;
2413
+ }>;
2414
+ declare const selectIsLoaderScreenVisible: _ngrx_store.MemoizedSelector<Record<string, any>, boolean, (s1: boolean, s2: boolean, s3: boolean) => boolean>;
2300
2415
 
2301
- export { AFKService, AfkPlaywrightService, AfkTimeoutModalComponent, AggregatorPlaywrightService, AggregatorService, AnalyticsService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, CommandTelemetryPlaywrightService, CommandTelemetryService, ConfigHandler, ConsoleExtensionsPlaywrightService, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DEFAULT_RECONNECT_DELAY_MS, DEFAULT_RECONNECT_ENABLED, DEFAULT_RECONNECT_MAX_ATTEMPTS, DEFAULT_RECONNECT_ON_DATACHANNEL_CLOSE, DEFAULT_RECONNECT_ON_ICE_FAILURE, DataFlowMonitor, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverPlaywrightService, FileReceiverService, FilterSettingsComponent, FpsMonitorService, FreezeFrameComponent, FreezeFramePlaywrightService, FreezeFrameService, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputPlaywrightService, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MessageType, MouseButton, MouseButtonsMask, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_VIDEO_ID, SafePipe, SignallingPlaywrightService, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryPlaywrightService, StreamStatusTelemetryService, SubService, ToClientMessage, UNREAL_CONFIG, UnrealCommunicatorPlaywrightService, UnrealCommunicatorService, UnrealEffects, UnrealInternalSignalEvents, UnrealSceneComponent, UnrealStatusMessage, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, changeLowBandwidth, changeStatusMainVideoOnScene, changeStreamResolutionAction, changeStreamResolutionSuccessAction, commandCompleted, commandStarted, dataChannelConnected, dataChannelReady, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, floatToSmoothPercents, forceResizeUnrealVideo, fromResizeObserver, fromSignal, fromUnrealCallBackSignal, getActiveUrl, getImageFromVideoStream, getRtcErrorMessage, iceConnectionFailed, initSignalling, initialState, keepMaxUntilReset, observeCommandResponse, provideAngularUnrealModule, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, removeExileCommands, resetAfk, resetAfkAction, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetWarnTimeout, saveAnalyticsEvent, selectClientAndViewIds, selectCommandProgress, selectCommandsInProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsLoaderScreenVisible, selectIsShowPopupWithoutAutoStart, selectIsVideoPlayingAndDataChannelConnected, selectLastCommandInProgress, selectLoaderCommands, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectWarnTimeout, sendSignal, setAfkTimerCountdown, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setDataChannelConnected, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setViewportNotReady, setViewportReady, showUnrealErrorMessage, smoothTransition, startStream, trackMixpanelEvent, unrealFeature, unrealReducer, updateCirrusInfo };
2302
- export type { AggregatedStat, AnySignalingMessage, AwsInstance, CandidateMessage, CloseReason, CommandsLoaderState, ConfigMessage, ConnectionError, ControlSchemeValues, DataFlowCheckResult, DisconnectReasonType, ForceClientDisconnect, FreezeFrameMessage, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, InterruptClientStream, LBMStats, ListStreamersMessage, MessageBase, MessageTypeValues, NormalizeAndQuantizeSignedValue, NormalizeAndQuantizeUnsignedValue, ObservedCallbackResponse, OrchestrationErrorMessage, OrchestrationMessageType, P2PEstablishedMessage, PingMessage, PlayerCountMessage, PollingOrchestrationMessage, Quality, ReceivedFile, ReconnectConfig, RequestStream, SSInfo, SignalDescriptor, SignalingData, SignalingMessageHandler, SignalingMessageMap, StreamConfig, StreamRequestContext, StreamResolutionProps, StreamerListMessage, TelemetryType, UnknownFields, UnquantizeAndDenormalizeUnsignedValue, UnrealCallBackJson, UnrealInitialConfig, UnrealState, WSCloseCodesValues, WrappedMetaBoxCommandPacket, streamPreparedForUserInteractionMessage };
2416
+ export { AFKService, AfkPlaywrightService, AfkTimeoutModalComponent, AggregatorPlaywrightService, AggregatorService, AnalyticsService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, CommandTelemetryPlaywrightService, CommandTelemetryService, CommandsEffects, ConfigHandler, ConsoleExtensionsPlaywrightService, ConsoleExtensionsService, ControlScheme, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DEFAULT_RECONNECT_DELAY_MS, DEFAULT_RECONNECT_ENABLED, DEFAULT_RECONNECT_MAX_ATTEMPTS, DEFAULT_RECONNECT_ON_DATACHANNEL_CLOSE, DEFAULT_RECONNECT_ON_ICE_FAILURE, DataFlowMonitor, DevModeService, DisconnectReason, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverPlaywrightService, FileReceiverService, FilterSettingsComponent, FpsMonitorService, FreezeFrameComponent, FreezeFramePlaywrightService, FreezeFrameService, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputPlaywrightService, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MessageType, MouseButton, MouseButtonsMask, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_VIDEO_ID, SafePipe, SignallingPlaywrightService, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryPlaywrightService, StreamStatusTelemetryService, SubService, ToClientMessage, UNREAL_CONFIG, UnrealCallbackService, UnrealCommunicatorPlaywrightService, UnrealCommunicatorService, UnrealEffects, UnrealSceneComponent, UnrealStatusMessage, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, changeLowBandwidth, changeStatusMainVideoOnScene, changeStreamResolutionAction, changeStreamResolutionSuccessAction, commandCompleted, commandStarted, commandsFeature, commandsReducer, dataChannelConnected, dataChannelReady, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, dropDC, dropPC, floatToSmoothPercents, forceResizeViewport, fromResizeObserver, getActiveUrl, getImageFromVideoStream, getRtcErrorMessage, iceConnectionFailed, initSignalling, keepMaxUntilReset, provideAngularUnrealModule, qpToQuality, reconnectPeer, reconnectPeerFailed, reconnectPeerSuccess, resetAfk, resetConfig, resetDataChannelForReconnect, resetIntroSrc, resetWarnTimeout, saveAnalyticsEvent, selectClientAndViewIds, selectCommandProgress, selectCommandsInProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsLoaderScreenVisible, selectIsShowPopupWithoutAutoStart, selectIsVideoPlayingAndDataChannelConnected, selectLastCommandInProgress, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectWarnTimeout, setAfkTimerCountdown, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setDataChannelConnected, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setKalmanSettings, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setViewportNotReady, setViewportReady, showUnrealErrorMessage, smoothTransition, startStream, trackMixpanelEvent, unrealCommandCallback, unrealFeature, unrealReducer, updateCirrusInfo, videoAdaptedToContainer, videoStreamInitialized };
2417
+ export type { AggregatedStat, AnySignalingMessage, AwsInstance, CandidateMessage, CloseReason, ConfigMessage, ConnectionError, ControlSchemeValues, DataFlowCheckResult, DisconnectReasonType, ForceClientDisconnect, FreezeFrameMessage, InboundVideoStats, InputProps, InstanceReady, InstanceReserved, InterruptClientStream, LBMStats, ListStreamersMessage, MessageBase, MessageTypeValues, NormalizeAndQuantizeSignedValue, NormalizeAndQuantizeUnsignedValue, OrchestrationErrorMessage, OrchestrationMessageType, P2PEstablishedMessage, PingMessage, PlayerCountMessage, PollingOrchestrationMessage, Quality, ReceivedFile, ReconnectConfig, RequestStream, SSInfo, SignalingData, SignalingMessageHandler, SignalingMessageMap, StreamConfig, StreamRequestContext, StreamResolutionProps, StreamerListMessage, TelemetryType, UnknownFields, UnquantizeAndDenormalizeUnsignedValue, UnrealCallbackDescriptor, UnrealCallbackEventMap, UnrealCallbackJson, UnrealCallbackJsonWrapped, UnrealCommandsState, UnrealInitialConfig, UnrealState, WSCloseCodesValues, streamPreparedForUserInteractionMessage };