@bluebottle_gg/league-broadcast-client 1.3.1 → 1.4.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.
package/dist/index.js CHANGED
@@ -454,6 +454,134 @@ var ChampSelectStateStore = class {
454
454
  }
455
455
  };
456
456
 
457
+ // src/reactivity/PostGameStateStore.ts
458
+ var PostGameStateStore = class {
459
+ constructor(initialState) {
460
+ /** Global listeners — called on every state change regardless of selector. */
461
+ this.listeners = /* @__PURE__ */ new Set();
462
+ /** Monotonically increasing version — used for cheap stale checks. */
463
+ this.version = 0;
464
+ this.snapshot = Object.freeze({
465
+ postGameData: initialState,
466
+ isActive: initialState.isActive,
467
+ version: this.version
468
+ });
469
+ }
470
+ // ---------------------------------------------------------------------------
471
+ // Core API
472
+ // ---------------------------------------------------------------------------
473
+ /** Return the current full snapshot. */
474
+ getSnapshot() {
475
+ return this.snapshot;
476
+ }
477
+ /** Return the current version number. */
478
+ getVersion() {
479
+ return this.version;
480
+ }
481
+ /**
482
+ * Subscribe to **all** state changes (unfiltered).
483
+ * Returns an unsubscribe function.
484
+ */
485
+ subscribe(listener) {
486
+ this.listeners.add(listener);
487
+ return () => {
488
+ this.listeners.delete(listener);
489
+ };
490
+ }
491
+ // ---------------------------------------------------------------------------
492
+ // Selectors
493
+ // ---------------------------------------------------------------------------
494
+ /**
495
+ * Create a **subscribable slice** that only triggers when the selected
496
+ * value changes according to `equalityFn` (defaults to `===`).
497
+ */
498
+ select(selector, equalityFn = Object.is) {
499
+ let currentValue = selector(this.snapshot);
500
+ let lastVersion = this.version;
501
+ const sliceListeners = /* @__PURE__ */ new Set();
502
+ const getSnapshot = () => {
503
+ if (lastVersion !== this.version) {
504
+ const next = selector(this.snapshot);
505
+ if (!equalityFn(currentValue, next)) {
506
+ currentValue = next;
507
+ }
508
+ lastVersion = this.version;
509
+ }
510
+ return currentValue;
511
+ };
512
+ const subscribe = (listener) => {
513
+ sliceListeners.add(listener);
514
+ const unsub = this.subscribe(() => {
515
+ const prev = currentValue;
516
+ const next = selector(this.snapshot);
517
+ lastVersion = this.version;
518
+ if (!equalityFn(prev, next)) {
519
+ currentValue = next;
520
+ listener();
521
+ }
522
+ });
523
+ return () => {
524
+ sliceListeners.delete(listener);
525
+ unsub();
526
+ };
527
+ };
528
+ return { subscribe, getSnapshot };
529
+ }
530
+ // ---------------------------------------------------------------------------
531
+ // Convenience helpers
532
+ // ---------------------------------------------------------------------------
533
+ /**
534
+ * Watch a derived value and invoke `callback` whenever it changes.
535
+ * Returns an unsubscribe function.
536
+ */
537
+ watch(selector, callback, equalityFn = Object.is) {
538
+ let prev = selector(this.snapshot);
539
+ return this.subscribe(() => {
540
+ const next = selector(this.snapshot);
541
+ if (!equalityFn(prev, next)) {
542
+ const old = prev;
543
+ prev = next;
544
+ callback(next, old);
545
+ }
546
+ });
547
+ }
548
+ /**
549
+ * Watch a derived value and invoke `callback` whenever it changes,
550
+ * **and** invoke it immediately with the current value.
551
+ */
552
+ watchImmediate(selector, callback, equalityFn = Object.is) {
553
+ const current = selector(this.snapshot);
554
+ callback(current, void 0);
555
+ return this.watch(selector, callback, equalityFn);
556
+ }
557
+ // ---------------------------------------------------------------------------
558
+ // Internal — called by LeagueBroadcastClient
559
+ // ---------------------------------------------------------------------------
560
+ /** @internal Replace post-game data snapshot and notify listeners. */
561
+ _setPostGameData(data) {
562
+ this.version++;
563
+ this.snapshot = Object.freeze({
564
+ postGameData: data,
565
+ isActive: data.isActive,
566
+ version: this.version
567
+ });
568
+ this.emit();
569
+ }
570
+ /** @internal Replace entire snapshot (used on post-game hide / reset). */
571
+ _reset(data) {
572
+ this.version++;
573
+ this.snapshot = Object.freeze({
574
+ postGameData: data,
575
+ isActive: data.isActive,
576
+ version: this.version
577
+ });
578
+ this.emit();
579
+ }
580
+ emit() {
581
+ this.listeners.forEach((l) => l());
582
+ }
583
+ };
584
+
457
585
  // src/reactivity/structuralShare.ts
458
586
  function structuralShare(prev, next) {
459
587
  if (Object.is(prev, next)) {
@@ -512,7 +640,7 @@ function isObject(value) {
512
640
  return value !== null && typeof value === "object";
513
641
  }
514
642
 
515
- // types/shared/gameState.ts
643
+ // types/shared/GameState.ts
516
644
  var GameState = /* @__PURE__ */ ((GameState2) => {
517
645
  GameState2[GameState2["OutOfGame"] = 0] = "OutOfGame";
518
646
  GameState2[GameState2["Loading"] = 1] = "Loading";
@@ -551,6 +679,16 @@ var champSelectStateData = class {
551
679
  }
552
680
  };
553
681
 
682
+ // types/postgame/postGameStateData.ts
683
+ var postGameStateData = class {
684
+ constructor() {
685
+ this.isActive = false;
686
+ this.isConnected = false;
687
+ this.isMocking = false;
688
+ this.overview = null;
689
+ }
690
+ };
691
+
554
692
  // src/api/ApiClient.ts
555
693
  var ApiClient = class {
556
694
  constructor(baseUrl) {
@@ -1843,11 +1981,21 @@ var LeagueBroadcastClient = class {
1843
1981
  onChampSelectEnd: /* @__PURE__ */ new Set(),
1844
1982
  onRouteUpdate: /* @__PURE__ */ new Set()
1845
1983
  };
1984
+ // -- Post-game event handlers -----------------------------------------------
1985
+ this.postGameUpdateHandlers = /* @__PURE__ */ new Set();
1986
+ this.postGameEventHandlers = {
1987
+ onRouteUpdate: /* @__PURE__ */ new Set(),
1988
+ onMockingUpdate: /* @__PURE__ */ new Set(),
1989
+ onActiveComponentChanged: /* @__PURE__ */ new Set(),
1990
+ onPostGameShow: /* @__PURE__ */ new Set(),
1991
+ onPostGameHide: /* @__PURE__ */ new Set()
1992
+ };
1846
1993
  this.config = {
1847
1994
  host: config.host,
1848
1995
  port: config.port ?? 58869,
1849
1996
  ingameWsRoute: config.ingameWsRoute ?? "/ws/in",
1850
1997
  preGameWsRoute: config.preGameWsRoute ?? "/ws/pre",
1998
+ postGameWsRoute: config.postGameWsRoute ?? "/ws/post",
1851
1999
  apiRoute: config.apiRoute ?? "/api",
1852
2000
  cacheRoute: config.cacheRoute ?? "/cache",
1853
2001
  useHttps: config.useHttps ?? false,
@@ -1868,6 +2016,10 @@ var LeagueBroadcastClient = class {
1868
2016
  this.preGameStore = new ChampSelectStateStore(this.champSelectData);
1869
2017
  this.setupPreGameMessageHandler();
1870
2018
  this.preGameWs.onDisconnect(() => this.endChampSelect());
2019
+ this.postGameWs = new WebSocketManager();
2020
+ this.postGameData = new postGameStateData();
2021
+ this.postGameStore = new PostGameStateStore(this.postGameData);
2022
+ this.setupPostGameMessageHandler();
1871
2023
  if (this.config.autoConnect) {
1872
2024
  this.connect();
1873
2025
  }
@@ -1906,10 +2058,15 @@ var LeagueBroadcastClient = class {
1906
2058
  const base = `${protocol}://${this.config.host}:${this.config.port}`;
1907
2059
  const ingameUrl = `${base}${this.config.ingameWsRoute}`;
1908
2060
  const preGameUrl = `${base}${this.config.preGameWsRoute}`;
1909
- const results = await Promise.allSettled([
2061
+ const connections = [
1910
2062
  this.ingameWs.connect(ingameUrl),
1911
2063
  this.preGameWs.connect(preGameUrl)
1912
- ]);
2064
+ ];
2065
+ if (this.config.postGameWsRoute !== false) {
2066
+ const postGameUrl = `${base}${this.config.postGameWsRoute}`;
2067
+ connections.push(this.postGameWs.connect(postGameUrl));
2068
+ }
2069
+ const results = await Promise.allSettled(connections);
1913
2070
  const failures = results.filter((r) => r.status === "rejected");
1914
2071
  if (failures.length > 0) {
1915
2072
  const reasons = failures.map(
@@ -1928,6 +2085,7 @@ var LeagueBroadcastClient = class {
1928
2085
  disconnect() {
1929
2086
  this.ingameWs.disconnect();
1930
2087
  this.preGameWs.disconnect();
2088
+ this.postGameWs.disconnect();
1931
2089
  this._overlayHealth?.stop();
1932
2090
  this._overlayHealth = null;
1933
2091
  }
@@ -1963,6 +2121,12 @@ var LeagueBroadcastClient = class {
1963
2121
  isPreGameConnected() {
1964
2122
  return this.preGameWs.isConnected();
1965
2123
  }
2124
+ /**
2125
+ * Whether the post-game WebSocket is connected.
2126
+ */
2127
+ isPostGameConnected() {
2128
+ return this.postGameWs.isConnected();
2129
+ }
1966
2130
  // ===========================================================================
1967
2131
  // In-game data access
1968
2132
  // ===========================================================================
@@ -1990,6 +2154,17 @@ var LeagueBroadcastClient = class {
1990
2154
  return this.champSelectData.isActive;
1991
2155
  }
1992
2156
  // ===========================================================================
2157
+ // Post-game data access
2158
+ // ===========================================================================
2159
+ /** Get the current post-game state. */
2160
+ getPostGameData() {
2161
+ return this.postGameData;
2162
+ }
2163
+ /** Whether post-game is currently active. */
2164
+ isPostGameActive() {
2165
+ return this.postGameData.isActive;
2166
+ }
2167
+ // ===========================================================================
1993
2168
  // In-game event handlers
1994
2169
  // ===========================================================================
1995
2170
  /** Register a handler for in-game state updates. */
@@ -2049,6 +2224,32 @@ var LeagueBroadcastClient = class {
2049
2224
  };
2050
2225
  }
2051
2226
  // ===========================================================================
2227
+ // Post-game event handlers
2228
+ // ===========================================================================
2229
+ /** Register a handler for post-game state updates. */
2230
+ onPostGameUpdate(handler) {
2231
+ this.postGameUpdateHandlers.add(handler);
2232
+ return () => this.postGameUpdateHandlers.delete(handler);
2233
+ }
2234
+ /** Register handlers for post-game lifecycle and analysis events. Returns an unsubscribe function. */
2235
+ onPostGameEvents(handlers) {
2236
+ const entries = Object.entries(handlers);
2237
+ for (const [key, handler] of entries) {
2238
+ if (handler) {
2239
+ this.postGameEventHandlers[key].add(handler);
2240
+ }
2241
+ }
2242
+ return () => {
2243
+ for (const [key, handler] of entries) {
2244
+ if (handler) {
2245
+ this.postGameEventHandlers[key].delete(
2246
+ handler
2247
+ );
2248
+ }
2249
+ }
2250
+ };
2251
+ }
2252
+ // ===========================================================================
2052
2253
  // Connection event handlers
2053
2254
  // ===========================================================================
2054
2255
  /** Register a handler for in-game connection. */
@@ -2075,6 +2276,18 @@ var LeagueBroadcastClient = class {
2075
2276
  onPreGameError(handler) {
2076
2277
  return this.preGameWs.onError(handler);
2077
2278
  }
2279
+ /** Register a handler for post-game connection. */
2280
+ onPostGameConnect(handler) {
2281
+ return this.postGameWs.onConnect(handler);
2282
+ }
2283
+ /** Register a handler for post-game disconnection. */
2284
+ onPostGameDisconnect(handler) {
2285
+ return this.postGameWs.onDisconnect(handler);
2286
+ }
2287
+ /** Register a handler for post-game connection errors. */
2288
+ onPostGameError(handler) {
2289
+ return this.postGameWs.onError(handler);
2290
+ }
2078
2291
  // ===========================================================================
2079
2292
  // Reactive API — in-game (convenience wrappers around this.store)
2080
2293
  // ===========================================================================
@@ -2140,6 +2353,37 @@ var LeagueBroadcastClient = class {
2140
2353
  return this.preGameStore.watch(selector, callback, equalityFn);
2141
2354
  }
2142
2355
  // ===========================================================================
2356
+ // Reactive API — post-game (convenience wrappers around this.postGameStore)
2357
+ // ===========================================================================
2358
+ /**
2359
+ * Create a subscribable slice of **post-game** (analysis) state.
2360
+ *
2361
+ * ```tsx
2362
+ * const overview = client.selectPostGame(s => s.postGameData.overview);
2363
+ * function Winner() {
2364
+ * const value = useSyncExternalStore(overview.subscribe, overview.getSnapshot);
2365
+ * return <span>{value?.winnerSide}</span>;
2366
+ * }
2367
+ * ```
2368
+ */
2369
+ selectPostGame(selector, equalityFn) {
2370
+ return this.postGameStore.select(selector, equalityFn);
2371
+ }
2372
+ /**
2373
+ * Watch a derived **post-game** value and invoke `callback` whenever it
2374
+ * changes. Returns an unsubscribe function.
2375
+ *
2376
+ * ```ts
2377
+ * client.watchPostGame(
2378
+ * s => s.postGameData.overview?.winnerSide,
2379
+ * (winner, prev) => console.log(`Winner: ${prev} → ${winner}`),
2380
+ * );
2381
+ * ```
2382
+ */
2383
+ watchPostGame(selector, callback, equalityFn) {
2384
+ return this.postGameStore.watch(selector, callback, equalityFn);
2385
+ }
2386
+ // ===========================================================================
2143
2387
  // URLs
2144
2388
  // ===========================================================================
2145
2389
  /** Get the base HTTP URL for API requests. */
@@ -2348,6 +2592,96 @@ var LeagueBroadcastClient = class {
2348
2592
  (handler) => handler(this.champSelectData)
2349
2593
  );
2350
2594
  }
2595
+ // ===========================================================================
2596
+ // Private — post-game message handling
2597
+ // ===========================================================================
2598
+ setupPostGameMessageHandler() {
2599
+ this.postGameWs.onMessage((messageData) => {
2600
+ switch (messageData.type) {
2601
+ case "postgame-route-change":
2602
+ case "frontend-route-update":
2603
+ this.handlePostGameRouteUpdate(messageData.uri);
2604
+ break;
2605
+ case "postgame-mocking-update":
2606
+ this.handlePostGameMockingUpdate(
2607
+ messageData.mockingState ?? messageData.mocking
2608
+ );
2609
+ break;
2610
+ case "active-component-changed":
2611
+ this.handleActiveComponentChanged(messageData);
2612
+ break;
2613
+ }
2614
+ });
2615
+ }
2616
+ handlePostGameRouteUpdate(uri) {
2617
+ if (typeof uri !== "string" || uri.length === 0) return;
2618
+ this.postGameEventHandlers.onRouteUpdate.forEach((h) => h(uri));
2619
+ }
2620
+ handlePostGameMockingUpdate(mocking) {
2621
+ const isMocking = Boolean(mocking);
2622
+ const nextData = {
2623
+ ...this.postGameData,
2624
+ isMocking
2625
+ };
2626
+ this.postGameData = structuralShare(this.postGameData, nextData);
2627
+ this.postGameStore._setPostGameData(this.postGameData);
2628
+ this.postGameUpdateHandlers.forEach(
2629
+ (handler) => handler(this.postGameData)
2630
+ );
2631
+ this.postGameEventHandlers.onMockingUpdate.forEach((h) => h(isMocking));
2632
+ }
2633
+ handleActiveComponentChanged(messageData) {
2634
+ const { type: _type, ...rest } = messageData ?? {};
2635
+ const args = messageData?.args ?? rest;
2636
+ const nextData = {
2637
+ ...this.postGameData,
2638
+ activeComponent: args
2639
+ };
2640
+ this.postGameData = structuralShare(this.postGameData, nextData);
2641
+ this.postGameStore._setPostGameData(this.postGameData);
2642
+ this.postGameUpdateHandlers.forEach(
2643
+ (handler) => handler(this.postGameData)
2644
+ );
2645
+ this.postGameEventHandlers.onActiveComponentChanged.forEach((h) => h(args));
2646
+ }
2647
+ // ===========================================================================
2648
+ // Post-game data methods
2649
+ // ===========================================================================
2650
+ /** Fetch the postgame overview (current game, a specific game, or the mock overview when mocking) and activate the postgame state. */
2651
+ async showPostGame(gameId) {
2652
+ const overview = this.postGameData.isMocking ? await this.api.postGame.getMockGameOverview() : gameId !== void 0 ? await this.api.postGame.getGameOverview(gameId) : await this.api.postGame.getCurrentGameOverview();
2653
+ const nextData = {
2654
+ ...this.postGameData,
2655
+ isActive: true,
2656
+ gameId,
2657
+ overview
2658
+ };
2659
+ this.postGameData = structuralShare(this.postGameData, nextData);
2660
+ this.postGameStore._setPostGameData(this.postGameData);
2661
+ this.postGameUpdateHandlers.forEach(
2662
+ (handler) => handler(this.postGameData)
2663
+ );
2664
+ this.postGameEventHandlers.onPostGameShow.forEach((h) => h(overview));
2665
+ return overview;
2666
+ }
2667
+ /** Re-fetch the postgame overview using the stored game id / mocking state. No-op when postgame is not active. */
2668
+ async refreshPostGame() {
2669
+ if (!this.postGameData.isActive) return;
2670
+ await this.showPostGame(this.postGameData.gameId);
2671
+ }
2672
+ /** Hide / reset the postgame state (preserves `isMocking` and `isConnected`). */
2673
+ hidePostGame() {
2674
+ console.log("[LeagueBroadcastClient] Post-game hidden, resetting data");
2675
+ const reset = new postGameStateData();
2676
+ reset.isMocking = this.postGameData.isMocking;
2677
+ reset.isConnected = this.postGameData.isConnected;
2678
+ this.postGameData = reset;
2679
+ this.postGameStore._reset(this.postGameData);
2680
+ this.postGameEventHandlers.onPostGameHide.forEach((h) => h());
2681
+ this.postGameUpdateHandlers.forEach(
2682
+ (handler) => handler(this.postGameData)
2683
+ );
2684
+ }
2351
2685
  };
2352
2686
 
2353
2687
  // types/cloud/changeDetectionResponse.ts
@@ -2433,7 +2767,7 @@ var cloudSyncResult = class {
2433
2767
  }
2434
2768
  };
2435
2769
 
2436
- // types/shared/style/set/setPhaseType.ts
2770
+ // types/shared/style/set/SetPhaseType.ts
2437
2771
  var SetPhaseType = /* @__PURE__ */ ((SetPhaseType2) => {
2438
2772
  SetPhaseType2[SetPhaseType2["Pre"] = 0] = "Pre";
2439
2773
  SetPhaseType2[SetPhaseType2["In"] = 1] = "In";
@@ -2504,7 +2838,7 @@ var cloudOverlayUploadResponse = class {
2504
2838
  var casterModeConfigDto = class {
2505
2839
  };
2506
2840
 
2507
- // types/hotkey/lane.ts
2841
+ // types/hotkey/Lane.ts
2508
2842
  var Lane = /* @__PURE__ */ ((Lane2) => {
2509
2843
  Lane2[Lane2["Top"] = 0] = "Top";
2510
2844
  Lane2[Lane2["Jungle"] = 1] = "Jungle";
@@ -2553,7 +2887,7 @@ var singlePostgameHotkeyConfigDto = class {
2553
2887
  }
2554
2888
  };
2555
2889
 
2556
- // types/ingame/spellSlotIndex.ts
2890
+ // types/ingame/SpellSlotIndex.ts
2557
2891
  var SpellSlotIndex = /* @__PURE__ */ ((SpellSlotIndex2) => {
2558
2892
  SpellSlotIndex2[SpellSlotIndex2["Q"] = 0] = "Q";
2559
2893
  SpellSlotIndex2[SpellSlotIndex2["W"] = 1] = "W";
@@ -2629,7 +2963,7 @@ var announcementParameter = class {
2629
2963
  }
2630
2964
  };
2631
2965
 
2632
- // types/ingame/announcer/announcementType.ts
2966
+ // types/ingame/announcer/AnnouncementType.ts
2633
2967
  var AnnouncementType = /* @__PURE__ */ ((AnnouncementType2) => {
2634
2968
  AnnouncementType2[AnnouncementType2["Unknown"] = 0] = "Unknown";
2635
2969
  AnnouncementType2[AnnouncementType2["Kill"] = 1] = "Kill";
@@ -2687,7 +3021,7 @@ var championCombatStats = class {
2687
3021
  }
2688
3022
  };
2689
3023
 
2690
- // types/shared/style/team.ts
3024
+ // types/shared/style/Team.ts
2691
3025
  var Team = /* @__PURE__ */ ((Team2) => {
2692
3026
  Team2[Team2["None"] = 0] = "None";
2693
3027
  Team2[Team2["Order"] = 1] = "Order";
@@ -2763,7 +3097,7 @@ var ingameDamageCompositionData = class {
2763
3097
  }
2764
3098
  };
2765
3099
 
2766
- // types/ingame/damageEvent/damageEventType.ts
3100
+ // types/ingame/damageEvent/DamageEventType.ts
2767
3101
  var DamageEventType = /* @__PURE__ */ ((DamageEventType2) => {
2768
3102
  DamageEventType2[DamageEventType2["PlayerDeath"] = 0] = "PlayerDeath";
2769
3103
  DamageEventType2[DamageEventType2["ObjectiveKill"] = 1] = "ObjectiveKill";
@@ -2843,7 +3177,7 @@ var damageRecapEntry = class {
2843
3177
  }
2844
3178
  };
2845
3179
 
2846
- // types/ingame/damageRecap/damageType.ts
3180
+ // types/ingame/damageRecap/DamageType.ts
2847
3181
  var DamageType = /* @__PURE__ */ ((DamageType2) => {
2848
3182
  DamageType2[DamageType2["Physical"] = 0] = "Physical";
2849
3183
  DamageType2[DamageType2["Magic"] = 1] = "Magic";
@@ -2874,7 +3208,7 @@ var damageRecapTimelineEntry = class {
2874
3208
  }
2875
3209
  };
2876
3210
 
2877
- // types/ingame/damageRecap/objectiveRecapDisplayMode.ts
3211
+ // types/ingame/damageRecap/ObjectiveRecapDisplayMode.ts
2878
3212
  var ObjectiveRecapDisplayMode = /* @__PURE__ */ ((ObjectiveRecapDisplayMode2) => {
2879
3213
  ObjectiveRecapDisplayMode2[ObjectiveRecapDisplayMode2["None"] = 0] = "None";
2880
3214
  ObjectiveRecapDisplayMode2[ObjectiveRecapDisplayMode2["ObjectiveInfo"] = 1] = "ObjectiveInfo";
@@ -2895,7 +3229,7 @@ var ingameDamageRecapData = class {
2895
3229
  }
2896
3230
  };
2897
3231
 
2898
- // types/ingame/damageSplit/damageSplitMode.ts
3232
+ // types/ingame/damageSplit/DamageSplitMode.ts
2899
3233
  var DamageSplitMode = /* @__PURE__ */ ((DamageSplitMode2) => {
2900
3234
  DamageSplitMode2[DamageSplitMode2["Detail"] = 0] = "Detail";
2901
3235
  DamageSplitMode2[DamageSplitMode2["Flow"] = 1] = "Flow";
@@ -2950,7 +3284,7 @@ var killFeedEvent = class {
2950
3284
  }
2951
3285
  };
2952
3286
 
2953
- // types/ingame/event/objectiveEventType.ts
3287
+ // types/ingame/event/ObjectiveEventType.ts
2954
3288
  var ObjectiveEventType = /* @__PURE__ */ ((ObjectiveEventType2) => {
2955
3289
  ObjectiveEventType2[ObjectiveEventType2["Spawn"] = 0] = "Spawn";
2956
3290
  ObjectiveEventType2[ObjectiveEventType2["Kill"] = 1] = "Kill";
@@ -3027,7 +3361,7 @@ var singleGameGoldGraphData = class {
3027
3361
  }
3028
3362
  };
3029
3363
 
3030
- // types/ingame/objective/ingameObjectiveType.ts
3364
+ // types/ingame/objective/IngameObjectiveType.ts
3031
3365
  var IngameObjectiveType = /* @__PURE__ */ ((IngameObjectiveType2) => {
3032
3366
  IngameObjectiveType2[IngameObjectiveType2["GRUB"] = 0] = "GRUB";
3033
3367
  IngameObjectiveType2[IngameObjectiveType2["HERALD"] = 1] = "HERALD";
@@ -3095,7 +3429,7 @@ var killParticipationPlayer = class {
3095
3429
  }
3096
3430
  };
3097
3431
 
3098
- // types/ingame/objective/campLocation.ts
3432
+ // types/ingame/objective/CampLocation.ts
3099
3433
  var CampLocation = /* @__PURE__ */ ((CampLocation2) => {
3100
3434
  CampLocation2[CampLocation2["DragonPit"] = 2] = "DragonPit";
3101
3435
  CampLocation2[CampLocation2["BaronPit"] = 3] = "BaronPit";
@@ -3858,7 +4192,7 @@ var killFeed = class {
3858
4192
  }
3859
4193
  };
3860
4194
 
3861
- // types/shared/style/contentAlign.ts
4195
+ // types/shared/style/ContentAlign.ts
3862
4196
  var ContentAlign = /* @__PURE__ */ ((ContentAlign2) => {
3863
4197
  ContentAlign2[ContentAlign2["TopLeft"] = 0] = "TopLeft";
3864
4198
  ContentAlign2[ContentAlign2["TopCenter"] = 1] = "TopCenter";
@@ -3968,7 +4302,7 @@ var lFrameRotation = class {
3968
4302
  }
3969
4303
  };
3970
4304
 
3971
- // types/ingame/style/lframe/transitionType.ts
4305
+ // types/ingame/style/lframe/TransitionType.ts
3972
4306
  var TransitionType = /* @__PURE__ */ ((TransitionType2) => {
3973
4307
  TransitionType2[TransitionType2["Cut"] = 0] = "Cut";
3974
4308
  TransitionType2[TransitionType2["Fade"] = 1] = "Fade";
@@ -4706,7 +5040,7 @@ var ingameHealthData = class {
4706
5040
  }
4707
5041
  };
4708
5042
 
4709
- // types/ingame/tab/resourceType.ts
5043
+ // types/ingame/tab/ResourceType.ts
4710
5044
  var ResourceType = /* @__PURE__ */ ((ResourceType2) => {
4711
5045
  ResourceType2[ResourceType2["mana"] = 0] = "mana";
4712
5046
  ResourceType2[ResourceType2["energy"] = 1] = "energy";
@@ -4736,7 +5070,7 @@ var ingameResourceData = class {
4736
5070
  }
4737
5071
  };
4738
5072
 
4739
- // types/ingame/tab/ingameSideInfoPageType.ts
5073
+ // types/ingame/tab/IngameSideInfoPageType.ts
4740
5074
  var IngameSideInfoPageType = /* @__PURE__ */ ((IngameSideInfoPageType2) => {
4741
5075
  IngameSideInfoPageType2[IngameSideInfoPageType2["Gold"] = 1] = "Gold";
4742
5076
  IngameSideInfoPageType2[IngameSideInfoPageType2["Experience"] = 2] = "Experience";
@@ -4852,7 +5186,7 @@ var teamfightTimelineSample = class {
4852
5186
  }
4853
5187
  };
4854
5188
 
4855
- // types/shared/bestOfType.ts
5189
+ // types/shared/BestOfType.ts
4856
5190
  var BestOfType = /* @__PURE__ */ ((BestOfType2) => {
4857
5191
  BestOfType2[BestOfType2["BestOf1"] = 1] = "BestOf1";
4858
5192
  BestOfType2[BestOfType2["BestOf2"] = 2] = "BestOf2";
@@ -5160,7 +5494,7 @@ var applicationNotificationMessage = class {
5160
5494
  }
5161
5495
  };
5162
5496
 
5163
- // types/message/ui/assetType.ts
5497
+ // types/message/ui/AssetType.ts
5164
5498
  var AssetType = /* @__PURE__ */ ((AssetType2) => {
5165
5499
  AssetType2[AssetType2["Item"] = 0] = "Item";
5166
5500
  AssetType2[AssetType2["ItemModifier"] = 1] = "ItemModifier";
@@ -5184,7 +5518,7 @@ var brushPresetsChangedMessage = class {
5184
5518
  }
5185
5519
  };
5186
5520
 
5187
- // types/message/ui/cacheOperation.ts
5521
+ // types/message/ui/CacheOperation.ts
5188
5522
  var CacheOperation = /* @__PURE__ */ ((CacheOperation2) => {
5189
5523
  CacheOperation2[CacheOperation2["Starting"] = 0] = "Starting";
5190
5524
  CacheOperation2[CacheOperation2["FetchingMetadata"] = 1] = "FetchingMetadata";
@@ -5270,7 +5604,7 @@ var fontsChangedMessage = class {
5270
5604
  }
5271
5605
  };
5272
5606
 
5273
- // types/shared/databaseUpdateType.ts
5607
+ // types/shared/DatabaseUpdateType.ts
5274
5608
  var DatabaseUpdateType = /* @__PURE__ */ ((DatabaseUpdateType2) => {
5275
5609
  DatabaseUpdateType2[DatabaseUpdateType2["Add"] = 0] = "Add";
5276
5610
  DatabaseUpdateType2[DatabaseUpdateType2["Remove"] = 1] = "Remove";
@@ -5344,7 +5678,7 @@ var seasonDatabaseUpdateMessage = class {
5344
5678
  }
5345
5679
  };
5346
5680
 
5347
- // types/message/ui/strokeLayer.ts
5681
+ // types/message/ui/StrokeLayer.ts
5348
5682
  var StrokeLayer = /* @__PURE__ */ ((StrokeLayer2) => {
5349
5683
  StrokeLayer2[StrokeLayer2["underEverything"] = 0] = "underEverything";
5350
5684
  StrokeLayer2[StrokeLayer2["aboveTerrain"] = 1] = "aboveTerrain";
@@ -5354,7 +5688,7 @@ var StrokeLayer = /* @__PURE__ */ ((StrokeLayer2) => {
5354
5688
  return StrokeLayer2;
5355
5689
  })(StrokeLayer || {});
5356
5690
 
5357
- // types/message/ui/strokeLineStyle.ts
5691
+ // types/message/ui/StrokeLineStyle.ts
5358
5692
  var StrokeLineStyle = /* @__PURE__ */ ((StrokeLineStyle2) => {
5359
5693
  StrokeLineStyle2[StrokeLineStyle2["solid"] = 0] = "solid";
5360
5694
  StrokeLineStyle2[StrokeLineStyle2["dashed"] = 1] = "dashed";
@@ -5369,7 +5703,7 @@ var strokePropertiesChangedMessage = class {
5369
5703
  }
5370
5704
  };
5371
5705
 
5372
- // types/message/ui/strokeTipStyle.ts
5706
+ // types/message/ui/StrokeTipStyle.ts
5373
5707
  var StrokeTipStyle = /* @__PURE__ */ ((StrokeTipStyle2) => {
5374
5708
  StrokeTipStyle2[StrokeTipStyle2["circle"] = 0] = "circle";
5375
5709
  StrokeTipStyle2[StrokeTipStyle2["rectangle"] = 1] = "rectangle";
@@ -5416,7 +5750,7 @@ var teamDatabaseUpdateMessage = class {
5416
5750
  }
5417
5751
  };
5418
5752
 
5419
- // types/message/ui/tier.ts
5753
+ // types/message/ui/Tier.ts
5420
5754
  var Tier = /* @__PURE__ */ ((Tier2) => {
5421
5755
  Tier2[Tier2["Free"] = 0] = "Free";
5422
5756
  Tier2[Tier2["Basic"] = 1] = "Basic";
@@ -5494,7 +5828,7 @@ var playerDeath = class {
5494
5828
  }
5495
5829
  };
5496
5830
 
5497
- // types/postgame/postGameDataType.ts
5831
+ // types/postgame/PostGameDataType.ts
5498
5832
  var PostGameDataType = /* @__PURE__ */ ((PostGameDataType2) => {
5499
5833
  PostGameDataType2[PostGameDataType2["At14Min"] = 0] = "At14Min";
5500
5834
  PostGameDataType2[PostGameDataType2["FullGame"] = 1] = "FullGame";
@@ -5665,7 +5999,7 @@ var combinedViewStyle = class {
5665
5999
  }
5666
6000
  };
5667
6001
 
5668
- // types/postgame/style/combinedView/combinedViewTransitionType.ts
6002
+ // types/postgame/style/combinedView/CombinedViewTransitionType.ts
5669
6003
  var CombinedViewTransitionType = /* @__PURE__ */ ((CombinedViewTransitionType2) => {
5670
6004
  CombinedViewTransitionType2[CombinedViewTransitionType2["Cut"] = 0] = "Cut";
5671
6005
  CombinedViewTransitionType2[CombinedViewTransitionType2["Fade"] = 1] = "Fade";
@@ -6012,7 +6346,7 @@ var matchupVersusStyle = class {
6012
6346
  }
6013
6347
  };
6014
6348
 
6015
- // types/postgame/style/matchupTable/scoreDisplayMode.ts
6349
+ // types/postgame/style/matchupTable/ScoreDisplayMode.ts
6016
6350
  var ScoreDisplayMode = /* @__PURE__ */ ((ScoreDisplayMode2) => {
6017
6351
  ScoreDisplayMode2[ScoreDisplayMode2["Dots"] = 0] = "Dots";
6018
6352
  ScoreDisplayMode2[ScoreDisplayMode2["Squares"] = 1] = "Squares";
@@ -6021,7 +6355,7 @@ var ScoreDisplayMode = /* @__PURE__ */ ((ScoreDisplayMode2) => {
6021
6355
  return ScoreDisplayMode2;
6022
6356
  })(ScoreDisplayMode || {});
6023
6357
 
6024
- // types/postgame/style/matchupTable/scoreDotBorderMode.ts
6358
+ // types/postgame/style/matchupTable/ScoreDotBorderMode.ts
6025
6359
  var ScoreDotBorderMode = /* @__PURE__ */ ((ScoreDotBorderMode2) => {
6026
6360
  ScoreDotBorderMode2[ScoreDotBorderMode2["Always"] = 0] = "Always";
6027
6361
  ScoreDotBorderMode2[ScoreDotBorderMode2["EmptyOnly"] = 1] = "EmptyOnly";
@@ -6145,7 +6479,7 @@ var runeIcon = class {
6145
6479
  }
6146
6480
  };
6147
6481
 
6148
- // types/pregame/actionSubType.ts
6482
+ // types/pregame/ActionSubType.ts
6149
6483
  var ActionSubType = /* @__PURE__ */ ((ActionSubType2) => {
6150
6484
  ActionSubType2[ActionSubType2["START"] = 0] = "START";
6151
6485
  ActionSubType2[ActionSubType2["HOVER"] = 1] = "HOVER";
@@ -6153,7 +6487,7 @@ var ActionSubType = /* @__PURE__ */ ((ActionSubType2) => {
6153
6487
  return ActionSubType2;
6154
6488
  })(ActionSubType || {});
6155
6489
 
6156
- // types/pregame/actionType.ts
6490
+ // types/pregame/ActionType.ts
6157
6491
  var ActionType = /* @__PURE__ */ ((ActionType2) => {
6158
6492
  ActionType2[ActionType2["TEN_BANS_REVEAL"] = 0] = "TEN_BANS_REVEAL";
6159
6493
  ActionType2[ActionType2["PHASE_TRANSITION"] = 1] = "PHASE_TRANSITION";
@@ -6197,7 +6531,7 @@ var champSelectStatePerformanceData = class {
6197
6531
  }
6198
6532
  };
6199
6533
 
6200
- // types/shared/matchRuleSet.ts
6534
+ // types/shared/MatchRuleSet.ts
6201
6535
  var MatchRuleSet = /* @__PURE__ */ ((MatchRuleSet2) => {
6202
6536
  MatchRuleSet2[MatchRuleSet2["Standard"] = 0] = "Standard";
6203
6537
  MatchRuleSet2[MatchRuleSet2["PartialFearless"] = 1] = "PartialFearless";
@@ -6228,7 +6562,7 @@ var pickBanActionEventArgs = class {
6228
6562
  }
6229
6563
  };
6230
6564
 
6231
- // types/pregame/pickBanPhase.ts
6565
+ // types/pregame/PickBanPhase.ts
6232
6566
  var PickBanPhase = /* @__PURE__ */ ((PickBanPhase2) => {
6233
6567
  PickBanPhase2[PickBanPhase2["BEGIN"] = 0] = "BEGIN";
6234
6568
  PickBanPhase2[PickBanPhase2["BAN1"] = 1] = "BAN1";
@@ -6259,7 +6593,7 @@ var pickSlot = class {
6259
6593
  }
6260
6594
  };
6261
6595
 
6262
- // types/pregame/timeLineActionType.ts
6596
+ // types/pregame/TimeLineActionType.ts
6263
6597
  var TimeLineActionType = /* @__PURE__ */ ((TimeLineActionType2) => {
6264
6598
  TimeLineActionType2[TimeLineActionType2["HoverPick"] = 0] = "HoverPick";
6265
6599
  TimeLineActionType2[TimeLineActionType2["Pick"] = 1] = "Pick";
@@ -6292,7 +6626,7 @@ var banStyle = class {
6292
6626
  }
6293
6627
  };
6294
6628
 
6295
- // types/pregame/style/heroStatsDisplayMode.ts
6629
+ // types/pregame/style/HeroStatsDisplayMode.ts
6296
6630
  var HeroStatsDisplayMode = /* @__PURE__ */ ((HeroStatsDisplayMode2) => {
6297
6631
  HeroStatsDisplayMode2[HeroStatsDisplayMode2["None"] = 0] = "None";
6298
6632
  HeroStatsDisplayMode2[HeroStatsDisplayMode2["UGG"] = 1] = "UGG";
@@ -6729,7 +7063,7 @@ var checkoutCompleteResponse = class {
6729
7063
  }
6730
7064
  };
6731
7065
 
6732
- // types/rest/account/paymentInterval.ts
7066
+ // types/rest/account/PaymentInterval.ts
6733
7067
  var PaymentInterval = /* @__PURE__ */ ((PaymentInterval2) => {
6734
7068
  PaymentInterval2[PaymentInterval2["Monthly"] = 0] = "Monthly";
6735
7069
  PaymentInterval2[PaymentInterval2["Yearly"] = 1] = "Yearly";
@@ -6866,7 +7200,7 @@ var billingCycle = class {
6866
7200
  }
6867
7201
  };
6868
7202
 
6869
- // types/rest/billing_cycle/interval.ts
7203
+ // types/rest/billing_cycle/Interval.ts
6870
7204
  var Interval = /* @__PURE__ */ ((Interval2) => {
6871
7205
  Interval2[Interval2["day"] = 0] = "day";
6872
7206
  Interval2[Interval2["week"] = 1] = "week";
@@ -6875,7 +7209,7 @@ var Interval = /* @__PURE__ */ ((Interval2) => {
6875
7209
  return Interval2;
6876
7210
  })(Interval || {});
6877
7211
 
6878
- // types/shared/customoverlay/customOverlayMode.ts
7212
+ // types/shared/customoverlay/CustomOverlayMode.ts
6879
7213
  var CustomOverlayMode = /* @__PURE__ */ ((CustomOverlayMode2) => {
6880
7214
  CustomOverlayMode2[CustomOverlayMode2["Static"] = 0] = "Static";
6881
7215
  CustomOverlayMode2[CustomOverlayMode2["Dev"] = 1] = "Dev";
@@ -7074,7 +7408,7 @@ var simpleChampionData = class {
7074
7408
  }
7075
7409
  };
7076
7410
 
7077
- // types/shared/spellClassification.ts
7411
+ // types/shared/SpellClassification.ts
7078
7412
  var SpellClassification = /* @__PURE__ */ ((SpellClassification2) => {
7079
7413
  SpellClassification2[SpellClassification2["Ability"] = 0] = "Ability";
7080
7414
  SpellClassification2[SpellClassification2["Passive"] = 1] = "Passive";
@@ -7119,7 +7453,7 @@ var teamData = class {
7119
7453
  }
7120
7454
  };
7121
7455
 
7122
- // types/shared/teamMemberRole.ts
7456
+ // types/shared/TeamMemberRole.ts
7123
7457
  var TeamMemberRole = /* @__PURE__ */ ((TeamMemberRole2) => {
7124
7458
  TeamMemberRole2[TeamMemberRole2["Unknown"] = 0] = "Unknown";
7125
7459
  TeamMemberRole2[TeamMemberRole2["Player"] = 1] = "Player";
@@ -7199,7 +7533,7 @@ var customOverlayDescriptor = class {
7199
7533
  }
7200
7534
  };
7201
7535
 
7202
- // types/shared/customoverlay/devServerStatus.ts
7536
+ // types/shared/customoverlay/DevServerStatus.ts
7203
7537
  var DevServerStatus = /* @__PURE__ */ ((DevServerStatus2) => {
7204
7538
  DevServerStatus2[DevServerStatus2["Stopped"] = 0] = "Stopped";
7205
7539
  DevServerStatus2[DevServerStatus2["Starting"] = 1] = "Starting";
@@ -7225,7 +7559,7 @@ var borderStyle = class {
7225
7559
  }
7226
7560
  };
7227
7561
 
7228
- // types/shared/style/championIconType.ts
7562
+ // types/shared/style/ChampionIconType.ts
7229
7563
  var ChampionIconType = /* @__PURE__ */ ((ChampionIconType2) => {
7230
7564
  ChampionIconType2[ChampionIconType2["Splash"] = 0] = "Splash";
7231
7565
  ChampionIconType2[ChampionIconType2["SplashCentered"] = 1] = "SplashCentered";
@@ -7235,7 +7569,7 @@ var ChampionIconType = /* @__PURE__ */ ((ChampionIconType2) => {
7235
7569
  return ChampionIconType2;
7236
7570
  })(ChampionIconType || {});
7237
7571
 
7238
- // types/shared/style/objectFit.ts
7572
+ // types/shared/style/ObjectFit.ts
7239
7573
  var ObjectFit = /* @__PURE__ */ ((ObjectFit2) => {
7240
7574
  ObjectFit2[ObjectFit2["Fill"] = 0] = "Fill";
7241
7575
  ObjectFit2[ObjectFit2["Contain"] = 1] = "Contain";
@@ -7260,7 +7594,7 @@ var championIconStyle = class {
7260
7594
  }
7261
7595
  };
7262
7596
 
7263
- // types/shared/style/gradientType.ts
7597
+ // types/shared/style/GradientType.ts
7264
7598
  var GradientType = /* @__PURE__ */ ((GradientType2) => {
7265
7599
  GradientType2[GradientType2["Linear"] = 0] = "Linear";
7266
7600
  GradientType2[GradientType2["Radial"] = 1] = "Radial";
@@ -7361,7 +7695,7 @@ var layoutStyle = class {
7361
7695
  }
7362
7696
  };
7363
7697
 
7364
- // types/shared/style/text/textOrientation.ts
7698
+ // types/shared/style/text/TextOrientation.ts
7365
7699
  var TextOrientation = /* @__PURE__ */ ((TextOrientation2) => {
7366
7700
  TextOrientation2[TextOrientation2["None"] = 0] = "None";
7367
7701
  TextOrientation2[TextOrientation2["Upright"] = 1] = "Upright";
@@ -7369,7 +7703,7 @@ var TextOrientation = /* @__PURE__ */ ((TextOrientation2) => {
7369
7703
  return TextOrientation2;
7370
7704
  })(TextOrientation || {});
7371
7705
 
7372
- // types/shared/style/text/writingMode.ts
7706
+ // types/shared/style/text/WritingMode.ts
7373
7707
  var WritingMode = /* @__PURE__ */ ((WritingMode2) => {
7374
7708
  WritingMode2[WritingMode2["None"] = 0] = "None";
7375
7709
  WritingMode2[WritingMode2["Horizontal"] = 1] = "Horizontal";
@@ -7393,7 +7727,7 @@ var optionalTextStyle = class {
7393
7727
  }
7394
7728
  };
7395
7729
 
7396
- // types/shared/style/teamColorType.ts
7730
+ // types/shared/style/TeamColorType.ts
7397
7731
  var TeamColorType = /* @__PURE__ */ ((TeamColorType2) => {
7398
7732
  TeamColorType2[TeamColorType2["Primary"] = 0] = "Primary";
7399
7733
  TeamColorType2[TeamColorType2["Secondary"] = 1] = "Secondary";
@@ -7423,7 +7757,7 @@ var textStyle = class {
7423
7757
  }
7424
7758
  };
7425
7759
 
7426
- // types/shared/style/set/feature.ts
7760
+ // types/shared/style/set/Feature.ts
7427
7761
  var Feature = /* @__PURE__ */ ((Feature2) => {
7428
7762
  Feature2[Feature2["BasicTier"] = 0] = "BasicTier";
7429
7763
  Feature2[Feature2["ProTier"] = 1] = "ProTier";
@@ -7471,7 +7805,7 @@ var styleSetNameCollection = class {
7471
7805
  }
7472
7806
  };
7473
7807
 
7474
- // types/shared/window/appTheme.ts
7808
+ // types/shared/window/AppTheme.ts
7475
7809
  var AppTheme = /* @__PURE__ */ ((AppTheme2) => {
7476
7810
  AppTheme2[AppTheme2["Light"] = 0] = "Light";
7477
7811
  AppTheme2[AppTheme2["Dark"] = 1] = "Dark";
@@ -7479,7 +7813,7 @@ var AppTheme = /* @__PURE__ */ ((AppTheme2) => {
7479
7813
  return AppTheme2;
7480
7814
  })(AppTheme || {});
7481
7815
 
7482
- // types/shared/window/windowType.ts
7816
+ // types/shared/window/WindowType.ts
7483
7817
  var WindowType = /* @__PURE__ */ ((WindowType2) => {
7484
7818
  WindowType2[WindowType2["Main"] = 0] = "Main";
7485
7819
  WindowType2[WindowType2["Startup"] = 1] = "Startup";
@@ -7754,6 +8088,52 @@ function normalizeDamageEntries(entries, limit = 5) {
7754
8088
  return [...grouped.values()].sort((a, b) => b.totalDamage - a.totalDamage).slice(0, limit);
7755
8089
  }
7756
8090
 
7757
- export { ActionSubType, ActionType, AnnouncementType, ApiClient, ApiError, AppTheme, AssetType, BestOfType, CacheOperation, CampLocation, ChampSelectStateStore, ChampionIconType, CombinedViewTransitionType, ContentAlign, CustomOverlayMode, DamageEventType, DamageSplitMode, DamageType, DatabaseUpdateType, DevServerStatus, Feature, GameApi, GameState, GameStateApi, GameStateStore, GradientType, HeroStatsDisplayMode, IngameApi, IngameObjectiveType, IngameSideInfoPageType, Interval, Lane, LeagueBroadcastClient, MAGIC_COLOR, MatchApi, MatchRuleSet, ObjectFit, ObjectiveEventType, ObjectiveRecapDisplayMode, PHYS_COLOR, PaymentInterval, PickBanPhase, PostGameApi, PostGameDataType, damageBarStyle2 as PostgameDamageBarStyle, PreGameApi, divider2 as PregameDivider, ResourceType, RestApi, ScoreDisplayMode, ScoreDotBorderMode, SeasonApi, SetPhaseType, SpellClassification, SpellSlotIndex, StrokeLayer, StrokeLineStyle, StrokeTipStyle, TRUE_COLOR, Team, TeamColorType, TeamMemberRole, TextOrientation, Tier, TimeLineActionType, TransitionType, WebSocketManager, WindowType, WritingMode, activeComponentChangedEventArgs, activeComponentChangedMessage, addMatchRequestArgs, aggregateSpellEntries, announcementParameter, announcerColors, announcerEvent, announcerUniversalStyle, applicationLifetimeMessage, applicationNotificationCompletedMessage, applicationNotificationMessage, authHelloMessage, authHelloOkMessage, banSlot, banSlotLayoutStyling, banStyle, barStyle, billingCycle, borderStyle, bottomRowPickBanStyle, bottomRowSizeStyle, bottomRowTeamStyle, bottomRowTournamentData, brushPresetsChangedMessage, cDragonPerkInfo, casterModeConfigDto, centerContent, centerContentLayoutStyling, centerContentStyling, champSelectActionMessage, champSelectStateData, champSelectStateMessage, champSelectStateMetaData, champSelectStatePerformanceData, championAbilityData, championCombatStats, championContainer, championData, championDetailData, championIamgeStyle, championIconStyle, championImage, championImageStyle, championRuneStat, championSelectEUStyle, championSelectTeam, championSkinInfo, championSlot, championStackStyle, championStatistics, championStats, championStatsContainer, championStatusStyle, championTabContainerStyle, championTabNameStyle, championTabsStyle, championUltimateStyle, championsSlot, changeDetectionResponse, changeEmailRequest, changeEmailResponse, changePasswordRequest, chatVoteOption, chatVoteResultDto, checkoutCompleteResponse, checkoutRequestDTO, choiceBar, choiceTitel, choiceVotes, cloudOverlayDownloadResponse, cloudOverlayMetadata, cloudOverlayUploadRequest, cloudOverlayUploadResponse, cloudOverlaysResponse, cloudStyleSetDownloadResponse, cloudStyleSetMetadata, cloudStyleSetUploadRequest, cloudStyleSetUploadResponse, cloudStyleSetsResponse, cloudSyncConfig, cloudSyncResult, coachSlot, colorByDamageType, colorComponentStyling, colorGradientData, colorImageData, colorRGBA, colorStop, colorStyle, colorStyling, combinedViewStyle, combinedViewTransitionStyle, communityDragonCacheProgressMessage, communityDragonV2ProgressMessage, communityDragonV2StatusMessage, componentStyle, contentContainerStyle, createChoice, createIngameTimerUtils, createPollDto, createPredictionDto, creepScore, curveStyle, customOverlay, customOverlayDescriptor, customOverlayUpdateMessage, damageBarSegments, damageBarStyle, damageCompositionBarStyle, damageCompositionColors, damageCompositionDonutStyle, damageCompositionPlayer, damageCompositionStyle, damageCompositionTeam, damageDealtStyle, damageEventHistoryEntry, damageEventHistoryUpdateMessage, damageFlow, damageFlowEdge, damageFlowNode, damageFlowNodeStyle, damageFlowRibbonStyle, damageGraphEntry, damageGraphSide, damageRecapDamageBarStyle, damageRecapEntry, damageRecapEntryStyle, damageRecapSpellEntry, damageRecapStyle, damageRecapTimelineEntry, damageSplitBarStyle, damageSplitEntryStyle, damageSplitSpellEntry, damageSplitStyle, damageSplitTargetEntry, damageStatsStyle, devServerState, displayColorData, divider, dmgTypeColor, drawingEventMessage, drawingStateMessage, drawingStateRequestMessage, drawingStrokeDto, emailConfirmRequest, emailForgotPasswordRequest, emailLoginRequest, emailResendCodeRequest, emailResetPasswordRequest, emailSignUpRequest, endPollDto, endPredictionDto, fearLessByGame, fearLessSingleRow, fearlessChampionImage, fearlessDraftStyle, fearlessDraftStylePregame, fearlessTree, fearlessTreeBanRowStyle, fearlessTreeConnectorStyle, fearlessTreeGameNodeStyle, fearlessTreeHeaderStyle, fontsChangedMessage, formatDamage, frontendRouteUpdateMessage, fullPlayerScoreboardSlots, gameAnalysis, gameDatabaseUpdateMessage, gameInfoRotation, gameStatusMessage, gameTeamSidesSwappedMessage, gameTimer, gameTimerStyle, gameWithTeams, getAbilityCooldownFraction, getAbilityCooldownRemaining, getDamageByType, getItemCooldownFraction, getItemCooldownRemaining, getRemaining, getRespawnRemaining, getRoleQuest, getSortedInventory, getTrinket, globalPosition, globalScoreboard, globalScoreboardBooleanIndicator, globalScoreboardSection, globalStyleProperties, goldAdvantage, goldEfficiencyEntry, goldEfficiencyHeaderStyle, goldEfficiencyHeatStyle, goldEfficiencyPlayerRowStyle, goldEfficiencyStyle, goldGraph, goldGraphStyle, gridLineStyle, headline, healthBarStyle, hotkeyFiredMessage, hubErrorMessage, hubMemberDto, hubPingMessage, hubPongMessage, imageComponentStyle, imageStyle, infoContentColorStyling, infoContentLayoutStyling, infoContentTextStyle, infoRow, ingameAbilityInfo, ingameDamageCompositionData, ingameDamageFlowData, ingameDamageGraphData, ingameDamageRecapData, ingameDamageSplitData, ingameExperienceData, ingameFrontendData, ingameGoldEfficiencyData, ingameGoldGraphData, ingameHealthData, ingameKillParticipationData, ingameObjectiveDpsData, ingameObjectiveEvent, ingameObjectivePowerPlay, ingameResourceData, ingameRewindMessage, ingameRuneData, ingameScoreboardBottomData, ingameScoreboardBottomPlayerData, ingameScoreboardBottomTeamData, ingameScoreboardData, ingameScoreboardTeamData, ingameSideInfoPage, ingameSideInfoPageDisplayData, ingameSideInfoPageRow, ingameSingleRuneData, ingameSkinDisplayData, ingameSkinDisplayPlayerData, ingameSkinDisplayTeamData, ingameStateMessage, ingameStateSettingsWrapper, ingameTeamfightTimelineData, ingameTelemetry, ingameTelemetryMessage, inhibitorRespawnData, inhibitorTimer, inhibitorTimerContainer, inhibitorTimerDual, inhibitorTimerIconContainer, inhibitorTimerSingle, inhibitorTimerTimerContainer, isAbilityOnCooldown, isActive, isItemOnCooldown, isPlayerDead, itemAsset, itemIcon, itemSlot, itemStats, itemWithAsset, killFeed, killFeedAssistersStyle, killFeedContainerStyle, killFeedEntryStyle, killFeedEvent, killFeedIconStyle, killFeedKillIconStyle, killParticipationLink, killParticipationPlayer, killParticipationStyle, lFrameRotation, laneIconStyle, laneRowLayoutStyle, layoutComponentStyling, layoutStyle, legacyPickBanStyle, levelXpTrackerStyle, lineStyle, localSyncState, localizedPriceData, matchCardStyle, matchData, matchDatabaseUpdateMessage, matchOverviewData, matchOverviewGameSummary, matchOverviewTeamSummary, matchSummaryStyle, matchWithGamesAndTeams, matchupGridStyle, matchupHeaderStyle, matchupOverview, matchupOverviewGameRowStyle, matchupOverviewHeaderStyle, matchupOverviewTeamBarStyle, matchupScoreStyle, matchupTable, matchupTableContentStyle, matchupVersusStyle, normalizeDamageEntries, numberContainerStyle, objectiveDamagePerTeamStyle, objectiveDpsBarStyle, objectiveDpsHeaderStyle, objectiveDpsSample, objectiveDpsSmiteStrip, objectiveDpsTeamNumbersStyle, objectiveList, objectiveRecapCardStyle, objectiveRecapHeaderStyle, objectiveRecapSmiteBarStyle, objectiveRecapStyle, objectiveTimer, optionBar, optionTitel, optionVotes, optionalGameData, optionalMatchData, optionalTextStyle, partialStrokeProperties, perkData, perkInfoV2, perkStyleInfoV2, phaseTimer, phaseTimerColorStyling, phaseTimerLayoutStyling, pickBanActionEventArgs, pickBanTimer, pickBans, pickSlot, planDescriptorRecord, planDetails, playerDeath, playerHotkeyDto, playerKDA, playerScoreboard, playerScoreboardContainer, playerScoreboardGoldComparison, playerScoreboardSlot, playerSlot, playerSlotColorStyling, playerSlotLayoutStyling, playerSlotPickingStyle, playerSlotStyle, playerUpdateEvent, playerXpLevelStyle, pollChoice, pollWrapper, portalSessionResponse, postGameDamageGraph, postGameDamageGraphByTeam, postGameDamageGraphEntry, postGameGoldGraph, postGameOverview, postGamePlayerInfo, postGamePlayerPage, postGamePlayerRunesAndItems, postGamePlayerStats, postGameTeamInfo, postGameTeamOverview, predictionBar, predictionOutcome, predictionOutcomeRequest, predictionPoints, predictionWrapper, profileResponse, progressBarStyle, registerOverlayRequest, respawnTimer, roleQuestSlot, roomJoinMessage, roomJoinedMessage, roomLeaveMessage, roomMemberJoinedMessage, roomMemberLeftMessage, runeContainer, runeDisplayPerkStyle, runeDisplayStyle, runeDisplayTeamStyle, runeIcon, runeStyle, scoreStyle, scoreboardChampionSlot, scoreboardDamageGraphStyle, seasonData, seasonDatabaseUpdateMessage, shallowEqual, simpleChampionData, singleChampionDetailHotkeyConfigDto, singleGameGoldGraph, singleGameGoldGraphData, singleIngameHotkeyConfigDto, singlePostgameHotkeyConfigDto, skinDisplayInfoStyle, skinDisplayPoweredByStyle, skinDisplayRoleIconStyle, skinDisplayStyle, smiteReactionBadgeStyle, smiteReactionPoweredByStyle, smiteReactionResult, smiteReactionRingStyle, smiteReactionStyle, smiteReactionTextStyle, spawnTimer, spawnTimerIconContainerStyle, spawnTimerInfoContainerStyle, spawnTimerStyle, startChatVoteDto, startCheckoutResponse, strokePropertiesChangedMessage, styleSet, styleSetEntry, styleSetNameCollection, styleSetUpdatedMessage, styleVariantUpdateMessage, styleVariantUpdatedEventArgs, summonerSpellData, summonerSpellInfoV2, tabLevelUpStyle, tabPlayer, tabTeam, tabsStyle, teamColorStyling, teamDamageStyle, teamData, teamDatabaseUpdateMessage, teamFightDamageStyle, teamIconStyle, teamInfo, teamInfoStyle, teamInhibitorData, teamLayoutStyling, teamMember, teamName, teamScore, teamScores, teamSummaryStyle, teamTextStyle, teamUpdateResults, teamWithMembers, teamfightDamageEntryStyle, teamfightDeathIconStyle, teamfightKillEvent, teamfightTimelinePlayer, teamfightTimelineSample, teamfightTimelineStyle, teamsAndTimerStyle, textComponentStyling, textContentWithStyle, textOutline, textStyle, textStyleWithBorder, textWithContent, timelineEntry, timerBadgePoll, timerBadgePrediction, timerBarStyle, timerTeamStyle, totalBadge, totalVotes, tournamentData, tournamentLogo, transitionEvents, transitionStyle, turretPlatingFallEvent, twitchChatVote, twitchPoll, twitchPollDto, twitchPrediction, twitchPredictionDto, twitchStatusDTO, ultiAbilityStyle, updateNameRequest, updateOverlayRequest, userFeaturesUpdatedMessage, userTierUpdatedMessage, vector3, verifyEmailRequest, voteWrapper, websocketMessageTypes };
8091
+ // src/util/postGameUtils.ts
8092
+ function getPostGameSides(overview) {
8093
+ const source = overview.teamOverviewBySide && Object.keys(overview.teamOverviewBySide).length > 0 ? overview.teamOverviewBySide : overview.teamInfoBySide ?? {};
8094
+ return Object.keys(source).map(Number).sort((a, b) => a - b);
8095
+ }
8096
+ function buildGoldSeries(graph) {
8097
+ const goldAtTime = graph?.goldAtTime ?? {};
8098
+ return Object.keys(goldAtTime).map(Number).sort((a, b) => a - b).map((time) => ({
8099
+ time,
8100
+ goldBySide: goldAtTime[time]
8101
+ }));
8102
+ }
8103
+ function buildGoldDiffSeries(graph, referenceSide) {
8104
+ const series = buildGoldSeries(graph);
8105
+ if (series.length === 0) return [];
8106
+ const ref = referenceSide ?? Math.min(
8107
+ ...series.flatMap((entry) => Object.keys(entry.goldBySide).map(Number))
8108
+ );
8109
+ return series.map((entry) => {
8110
+ const refGold = entry.goldBySide[ref] ?? 0;
8111
+ let otherGold = 0;
8112
+ for (const [side, gold] of Object.entries(entry.goldBySide)) {
8113
+ if (Number(side) !== ref) otherGold += gold;
8114
+ }
8115
+ return { time: entry.time, diff: refGold - otherGold };
8116
+ });
8117
+ }
8118
+ function formatGameClock(seconds) {
8119
+ const total = Math.max(0, Math.floor(seconds));
8120
+ const hours = Math.floor(total / 3600);
8121
+ const minutes = Math.floor(total % 3600 / 60);
8122
+ const secs = total % 60;
8123
+ const ss = secs.toString().padStart(2, "0");
8124
+ if (hours > 0) {
8125
+ const mm = minutes.toString().padStart(2, "0");
8126
+ return `${hours}:${mm}:${ss}`;
8127
+ }
8128
+ return `${minutes}:${ss}`;
8129
+ }
8130
+ function damageGraphTeamTotal(team) {
8131
+ return (team?.entries ?? []).reduce((sum, entry) => sum + entry.damage, 0);
8132
+ }
8133
+ function sortDamageEntries(entries) {
8134
+ return [...entries].sort((a, b) => b.damage - a.damage);
8135
+ }
8136
+
8137
+ export { ActionSubType, ActionType, AnnouncementType, ApiClient, ApiError, AppTheme, AssetType, BestOfType, CacheOperation, CampLocation, ChampSelectStateStore, ChampionIconType, CombinedViewTransitionType, ContentAlign, CustomOverlayMode, DamageEventType, DamageSplitMode, DamageType, DatabaseUpdateType, DevServerStatus, Feature, GameApi, GameState, GameStateApi, GameStateStore, GradientType, HeroStatsDisplayMode, IngameApi, IngameObjectiveType, IngameSideInfoPageType, Interval, Lane, LeagueBroadcastClient, MAGIC_COLOR, MatchApi, MatchRuleSet, ObjectFit, ObjectiveEventType, ObjectiveRecapDisplayMode, PHYS_COLOR, PaymentInterval, PickBanPhase, PostGameApi, PostGameDataType, PostGameStateStore, damageBarStyle2 as PostgameDamageBarStyle, PreGameApi, divider2 as PregameDivider, ResourceType, RestApi, ScoreDisplayMode, ScoreDotBorderMode, SeasonApi, SetPhaseType, SpellClassification, SpellSlotIndex, StrokeLayer, StrokeLineStyle, StrokeTipStyle, TRUE_COLOR, Team, TeamColorType, TeamMemberRole, TextOrientation, Tier, TimeLineActionType, TransitionType, WebSocketManager, WindowType, WritingMode, activeComponentChangedEventArgs, activeComponentChangedMessage, addMatchRequestArgs, aggregateSpellEntries, announcementParameter, announcerColors, announcerEvent, announcerUniversalStyle, applicationLifetimeMessage, applicationNotificationCompletedMessage, applicationNotificationMessage, authHelloMessage, authHelloOkMessage, banSlot, banSlotLayoutStyling, banStyle, barStyle, billingCycle, borderStyle, bottomRowPickBanStyle, bottomRowSizeStyle, bottomRowTeamStyle, bottomRowTournamentData, brushPresetsChangedMessage, buildGoldDiffSeries, buildGoldSeries, cDragonPerkInfo, casterModeConfigDto, centerContent, centerContentLayoutStyling, centerContentStyling, champSelectActionMessage, champSelectStateData, champSelectStateMessage, champSelectStateMetaData, champSelectStatePerformanceData, championAbilityData, championCombatStats, championContainer, championData, championDetailData, championIamgeStyle, championIconStyle, championImage, championImageStyle, championRuneStat, championSelectEUStyle, championSelectTeam, championSkinInfo, championSlot, championStackStyle, championStatistics, championStats, championStatsContainer, championStatusStyle, championTabContainerStyle, championTabNameStyle, championTabsStyle, championUltimateStyle, championsSlot, changeDetectionResponse, changeEmailRequest, changeEmailResponse, changePasswordRequest, chatVoteOption, chatVoteResultDto, checkoutCompleteResponse, checkoutRequestDTO, choiceBar, choiceTitel, choiceVotes, cloudOverlayDownloadResponse, cloudOverlayMetadata, cloudOverlayUploadRequest, cloudOverlayUploadResponse, cloudOverlaysResponse, cloudStyleSetDownloadResponse, cloudStyleSetMetadata, cloudStyleSetUploadRequest, cloudStyleSetUploadResponse, cloudStyleSetsResponse, cloudSyncConfig, cloudSyncResult, coachSlot, colorByDamageType, colorComponentStyling, colorGradientData, colorImageData, colorRGBA, colorStop, colorStyle, colorStyling, combinedViewStyle, combinedViewTransitionStyle, communityDragonCacheProgressMessage, communityDragonV2ProgressMessage, communityDragonV2StatusMessage, componentStyle, contentContainerStyle, createChoice, createIngameTimerUtils, createPollDto, createPredictionDto, creepScore, curveStyle, customOverlay, customOverlayDescriptor, customOverlayUpdateMessage, damageBarSegments, damageBarStyle, damageCompositionBarStyle, damageCompositionColors, damageCompositionDonutStyle, damageCompositionPlayer, damageCompositionStyle, damageCompositionTeam, damageDealtStyle, damageEventHistoryEntry, damageEventHistoryUpdateMessage, damageFlow, damageFlowEdge, damageFlowNode, damageFlowNodeStyle, damageFlowRibbonStyle, damageGraphEntry, damageGraphSide, damageGraphTeamTotal, damageRecapDamageBarStyle, damageRecapEntry, damageRecapEntryStyle, damageRecapSpellEntry, damageRecapStyle, damageRecapTimelineEntry, damageSplitBarStyle, damageSplitEntryStyle, damageSplitSpellEntry, damageSplitStyle, damageSplitTargetEntry, damageStatsStyle, devServerState, displayColorData, divider, dmgTypeColor, drawingEventMessage, drawingStateMessage, drawingStateRequestMessage, drawingStrokeDto, emailConfirmRequest, emailForgotPasswordRequest, emailLoginRequest, emailResendCodeRequest, emailResetPasswordRequest, emailSignUpRequest, endPollDto, endPredictionDto, fearLessByGame, fearLessSingleRow, fearlessChampionImage, fearlessDraftStyle, fearlessDraftStylePregame, fearlessTree, fearlessTreeBanRowStyle, fearlessTreeConnectorStyle, fearlessTreeGameNodeStyle, fearlessTreeHeaderStyle, fontsChangedMessage, formatDamage, formatGameClock, frontendRouteUpdateMessage, fullPlayerScoreboardSlots, gameAnalysis, gameDatabaseUpdateMessage, gameInfoRotation, gameStatusMessage, gameTeamSidesSwappedMessage, gameTimer, gameTimerStyle, gameWithTeams, getAbilityCooldownFraction, getAbilityCooldownRemaining, getDamageByType, getItemCooldownFraction, getItemCooldownRemaining, getPostGameSides, getRemaining, getRespawnRemaining, getRoleQuest, getSortedInventory, getTrinket, globalPosition, globalScoreboard, globalScoreboardBooleanIndicator, globalScoreboardSection, globalStyleProperties, goldAdvantage, goldEfficiencyEntry, goldEfficiencyHeaderStyle, goldEfficiencyHeatStyle, goldEfficiencyPlayerRowStyle, goldEfficiencyStyle, goldGraph, goldGraphStyle, gridLineStyle, headline, healthBarStyle, hotkeyFiredMessage, hubErrorMessage, hubMemberDto, hubPingMessage, hubPongMessage, imageComponentStyle, imageStyle, infoContentColorStyling, infoContentLayoutStyling, infoContentTextStyle, infoRow, ingameAbilityInfo, ingameDamageCompositionData, ingameDamageFlowData, ingameDamageGraphData, ingameDamageRecapData, ingameDamageSplitData, ingameExperienceData, ingameFrontendData, ingameGoldEfficiencyData, ingameGoldGraphData, ingameHealthData, ingameKillParticipationData, ingameObjectiveDpsData, ingameObjectiveEvent, ingameObjectivePowerPlay, ingameResourceData, ingameRewindMessage, ingameRuneData, ingameScoreboardBottomData, ingameScoreboardBottomPlayerData, ingameScoreboardBottomTeamData, ingameScoreboardData, ingameScoreboardTeamData, ingameSideInfoPage, ingameSideInfoPageDisplayData, ingameSideInfoPageRow, ingameSingleRuneData, ingameSkinDisplayData, ingameSkinDisplayPlayerData, ingameSkinDisplayTeamData, ingameStateMessage, ingameStateSettingsWrapper, ingameTeamfightTimelineData, ingameTelemetry, ingameTelemetryMessage, inhibitorRespawnData, inhibitorTimer, inhibitorTimerContainer, inhibitorTimerDual, inhibitorTimerIconContainer, inhibitorTimerSingle, inhibitorTimerTimerContainer, isAbilityOnCooldown, isActive, isItemOnCooldown, isPlayerDead, itemAsset, itemIcon, itemSlot, itemStats, itemWithAsset, killFeed, killFeedAssistersStyle, killFeedContainerStyle, killFeedEntryStyle, killFeedEvent, killFeedIconStyle, killFeedKillIconStyle, killParticipationLink, killParticipationPlayer, killParticipationStyle, lFrameRotation, laneIconStyle, laneRowLayoutStyle, layoutComponentStyling, layoutStyle, legacyPickBanStyle, levelXpTrackerStyle, lineStyle, localSyncState, localizedPriceData, matchCardStyle, matchData, matchDatabaseUpdateMessage, matchOverviewData, matchOverviewGameSummary, matchOverviewTeamSummary, matchSummaryStyle, matchWithGamesAndTeams, matchupGridStyle, matchupHeaderStyle, matchupOverview, matchupOverviewGameRowStyle, matchupOverviewHeaderStyle, matchupOverviewTeamBarStyle, matchupScoreStyle, matchupTable, matchupTableContentStyle, matchupVersusStyle, normalizeDamageEntries, numberContainerStyle, objectiveDamagePerTeamStyle, objectiveDpsBarStyle, objectiveDpsHeaderStyle, objectiveDpsSample, objectiveDpsSmiteStrip, objectiveDpsTeamNumbersStyle, objectiveList, objectiveRecapCardStyle, objectiveRecapHeaderStyle, objectiveRecapSmiteBarStyle, objectiveRecapStyle, objectiveTimer, optionBar, optionTitel, optionVotes, optionalGameData, optionalMatchData, optionalTextStyle, partialStrokeProperties, perkData, perkInfoV2, perkStyleInfoV2, phaseTimer, phaseTimerColorStyling, phaseTimerLayoutStyling, pickBanActionEventArgs, pickBanTimer, pickBans, pickSlot, planDescriptorRecord, planDetails, playerDeath, playerHotkeyDto, playerKDA, playerScoreboard, playerScoreboardContainer, playerScoreboardGoldComparison, playerScoreboardSlot, playerSlot, playerSlotColorStyling, playerSlotLayoutStyling, playerSlotPickingStyle, playerSlotStyle, playerUpdateEvent, playerXpLevelStyle, pollChoice, pollWrapper, portalSessionResponse, postGameDamageGraph, postGameDamageGraphByTeam, postGameDamageGraphEntry, postGameGoldGraph, postGameOverview, postGamePlayerInfo, postGamePlayerPage, postGamePlayerRunesAndItems, postGamePlayerStats, postGameStateData, postGameTeamInfo, postGameTeamOverview, predictionBar, predictionOutcome, predictionOutcomeRequest, predictionPoints, predictionWrapper, profileResponse, progressBarStyle, registerOverlayRequest, respawnTimer, roleQuestSlot, roomJoinMessage, roomJoinedMessage, roomLeaveMessage, roomMemberJoinedMessage, roomMemberLeftMessage, runeContainer, runeDisplayPerkStyle, runeDisplayStyle, runeDisplayTeamStyle, runeIcon, runeStyle, scoreStyle, scoreboardChampionSlot, scoreboardDamageGraphStyle, seasonData, seasonDatabaseUpdateMessage, shallowEqual, simpleChampionData, singleChampionDetailHotkeyConfigDto, singleGameGoldGraph, singleGameGoldGraphData, singleIngameHotkeyConfigDto, singlePostgameHotkeyConfigDto, skinDisplayInfoStyle, skinDisplayPoweredByStyle, skinDisplayRoleIconStyle, skinDisplayStyle, smiteReactionBadgeStyle, smiteReactionPoweredByStyle, smiteReactionResult, smiteReactionRingStyle, smiteReactionStyle, smiteReactionTextStyle, sortDamageEntries, spawnTimer, spawnTimerIconContainerStyle, spawnTimerInfoContainerStyle, spawnTimerStyle, startChatVoteDto, startCheckoutResponse, strokePropertiesChangedMessage, styleSet, styleSetEntry, styleSetNameCollection, styleSetUpdatedMessage, styleVariantUpdateMessage, styleVariantUpdatedEventArgs, summonerSpellData, summonerSpellInfoV2, tabLevelUpStyle, tabPlayer, tabTeam, tabsStyle, teamColorStyling, teamDamageStyle, teamData, teamDatabaseUpdateMessage, teamFightDamageStyle, teamIconStyle, teamInfo, teamInfoStyle, teamInhibitorData, teamLayoutStyling, teamMember, teamName, teamScore, teamScores, teamSummaryStyle, teamTextStyle, teamUpdateResults, teamWithMembers, teamfightDamageEntryStyle, teamfightDeathIconStyle, teamfightKillEvent, teamfightTimelinePlayer, teamfightTimelineSample, teamfightTimelineStyle, teamsAndTimerStyle, textComponentStyling, textContentWithStyle, textOutline, textStyle, textStyleWithBorder, textWithContent, timelineEntry, timerBadgePoll, timerBadgePrediction, timerBarStyle, timerTeamStyle, totalBadge, totalVotes, tournamentData, tournamentLogo, transitionEvents, transitionStyle, turretPlatingFallEvent, twitchChatVote, twitchPoll, twitchPollDto, twitchPrediction, twitchPredictionDto, twitchStatusDTO, ultiAbilityStyle, updateNameRequest, updateOverlayRequest, userFeaturesUpdatedMessage, userTierUpdatedMessage, vector3, verifyEmailRequest, voteWrapper, websocketMessageTypes };
7758
8138
  //# sourceMappingURL=index.js.map
7759
8139
  //# sourceMappingURL=index.js.map