@tivio/sdk-react 9.8.0 → 10.0.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.d.ts CHANGED
@@ -1,17 +1,14 @@
1
- import { AD_SERVICE_PROXY_NAME } from '@tivio/common';
2
1
  import type { ComponentType } from 'react';
3
- import type dayjs from 'dayjs';
4
2
  import { DocumentReference } from '@firebase/firestore-types';
5
3
  import type duration from 'dayjs/plugin/duration';
6
4
  import type { default as firebase_2 } from '@firebase/app-types';
7
5
  import type { default as firebase_3 } from 'firebase';
8
6
  import { FunctionComponentElement } from 'react';
9
7
  import type { GeoPoint } from '@firebase/firestore-types';
10
- import type { google } from '@alugha/ima';
11
8
  import { OperatingSystem } from 'detect-browser';
12
9
  import type { PaletteType } from '@material-ui/core';
13
10
  import { default as React_2 } from 'react';
14
- import { RecommendationsQuery } from '@algolia/recommend';
11
+ import type { RecommendationsQuery } from '@algolia/recommend';
15
12
  import type { TagManagerArgs } from 'react-gtm-module';
16
13
  import type { Timestamp } from '@firebase/firestore-types';
17
14
 
@@ -36,8 +33,6 @@ declare interface actualPriceDetails {
36
33
  currency?: primaSupportedCurrency;
37
34
  }
38
35
 
39
- export { AD_SERVICE_PROXY_NAME }
40
-
41
36
  export declare type AdBannerScene = InteractiveWidgetSceneBase<InteractiveWidgetSceneTemplateType.AD_BANNER>;
42
37
 
43
38
  export declare type AddEditCommentResponse = {
@@ -89,6 +84,14 @@ export declare interface AdExternal {
89
84
  skip: () => void;
90
85
  }
91
86
 
87
+ /**
88
+ * External information of Ad video.
89
+ * @public
90
+ */
91
+ export declare interface AdExternals {
92
+ creativeId: string;
93
+ }
94
+
92
95
  /**
93
96
  * @public
94
97
  */
@@ -104,8 +107,6 @@ export declare type AdMetadata = {
104
107
  isSkippable: boolean;
105
108
  order: number | null;
106
109
  totalCount: number | null;
107
- adPlacementStrategy: AdPlacementStrategy;
108
- customAdMetadata?: Record<string, unknown>;
109
110
  skip: () => void;
110
111
  } | null;
111
112
 
@@ -119,10 +120,7 @@ export declare interface AdPackInfo {
119
120
  total: number;
120
121
  }
121
122
 
122
- export declare type AdPlacementStrategy = 'preroll' | 'midroll' | 'postroll' | 'replacement';
123
-
124
123
  export declare interface AdSegment {
125
- adPlacementStrategy: AdPlacementStrategy;
126
124
  id: string;
127
125
  /**
128
126
  * @deprecated alias to secondsToEnd * 1000
@@ -187,7 +185,6 @@ export declare interface AdSourceActions {
187
185
  */
188
186
  export declare interface AdSourceInterface extends CommonSourceInterface<SourceType.ADVERTISEMENT> {
189
187
  adType: AdType;
190
- adPlacementStrategy: AdPlacementStrategy;
191
188
  durationMs: number;
192
189
  skipDelayMs: number | null;
193
190
  /**
@@ -227,10 +224,6 @@ export declare interface AdSourceInterface extends CommonSourceInterface<SourceT
227
224
  skipAll(): void;
228
225
  onRemainingTimeChanged(ms: number): void;
229
226
  click(): void;
230
- /**
231
- * Rich IMA ad metadata including customAdMetadata (only available for IMA ads)
232
- */
233
- imaAdMetadata?: any;
234
227
  }
235
228
 
236
229
  /**
@@ -238,7 +231,6 @@ export declare interface AdSourceInterface extends CommonSourceInterface<SourceT
238
231
  */
239
232
  export declare interface AdSourceParams extends CommonSourceParams<SourceType.ADVERTISEMENT> {
240
233
  id: string;
241
- adPlacementStrategy: AdPlacementStrategy;
242
234
  adType?: AdType;
243
235
  actions?: AdSourceActions | null;
244
236
  apiFramework?: VastApiFramework | null;
@@ -329,7 +321,9 @@ export declare enum AnalyticsConversionPage {
329
321
  Redeem = "redeem",
330
322
  Referral = "referral",
331
323
  Pair = "pair",
332
- Search = "search"
324
+ Search = "search",
325
+ QerkoPayment = "qerko-payment",
326
+ SubscriptionCard = "subscription-card"
333
327
  }
334
328
 
335
329
  /**
@@ -347,6 +341,31 @@ export declare enum AnalyticsConversionTargetBase {
347
341
  Monetization = "monetization"
348
342
  }
349
343
 
344
+ export declare enum AnalyticsElementId {
345
+ BTN_LOGIN = "stargaze-btn-login",
346
+ BTN_REGISTRATION = "stargaze-btn-registration",
347
+ BTN_SUBSCRIBE = "stargaze-btn-subscribe",
348
+ BTN_FOLLOW = "stargaze-btn-follow",
349
+ BTN_CHOOSE_SUBSCRIPTION = "stargaze-btn-choose-subscription",
350
+ BTN_CANCEL_SUBSCRIPTION = "stargaze-btn-cancel-subscription",
351
+ BTN_RENEW_SUBSCRIPTION = "stargaze-btn-renew-subscription",
352
+ BTN_CHANGE_SUBSCRIPTION = "stargaze-btn-change-subscription",
353
+ BTN_GIFT_VOUCHER = "stargaze-btn-gift-voucher",
354
+ BTN_BUY_SUBSCRIPTION = "stargaze-btn-buy-subscription",
355
+ BTN_PAY_BY_APPLE_PAY = "stargaze-btn-pay-by-apple-pay",
356
+ BTN_PAY_BY_GOOGLE_PAY = "stargaze-btn-pay-by-google-pay",
357
+ BTN_PAY_BY_CARD = "stargaze-btn-pay-by-card",
358
+ BTN_PAY_WITH_PAYPAL = "stargaze-btn-pay-with-paypal",
359
+ BTN_PAY_BY_QERKO = "stargaze-btn-pay-by-qerko",
360
+ BTN_ACTIVATE_VOUCHER = "stargaze-btn-activate-voucher",
361
+ BTN_ACTIVATE_VOUCHER_OVERLAY = "stargaze-btn-activate-voucher-overlay",
362
+ BTN_ACTIVATE_VOUCHER_PROFILE = "stargaze-btn-activate-voucher-profile",
363
+ BTN_GO_TO_REDEEM_PAGE = "stargaze-btn-go-to-redeem-page",
364
+ BTN_REDEEM_CODE = "stargaze-btn-redeem-code",
365
+ BTN_CONTINUE_TO_PAYMENT = "stargaze-btn-continue-to-payment",
366
+ BTN_SELECT_MONETIZATION = "stargaze-btn-select-monetization"
367
+ }
368
+
350
369
  export declare interface AnalyticsInterface {
351
370
  reportAdvertisementPlay: (params: AdvertisementAnalyticParams) => void;
352
371
  reportAdvertisementProgress: () => void;
@@ -543,7 +562,7 @@ export declare interface AssetsField<TAsset extends ScalableAsset = ScalableAsse
543
562
  /**
544
563
  * @public
545
564
  */
546
- export declare type AssetType = 'circled' | 'landscape' | 'portrait' | 'square';
565
+ export declare type AssetType = 'banner' | 'circled' | 'landscape' | 'portrait' | 'square';
547
566
 
548
567
  declare type Attributes = {
549
568
  created: string;
@@ -630,10 +649,78 @@ export declare interface BannerProps {
630
649
  */
631
650
  export declare type BannerPropsPartial = Partial<BannerProps>;
632
651
 
652
+ /**
653
+ * Base row interface with common fields
654
+ * @public
655
+ */
656
+ export declare interface BaseRow {
657
+ id: string;
658
+ rowId: string;
659
+ name: string;
660
+ description?: string;
661
+ assets: AssetsField;
662
+ type: ScreenRowType;
663
+ isLiveRow: boolean;
664
+ organizationId?: string;
665
+ }
666
+
667
+ /**
668
+ * Base row type with fields common to all row types
669
+ */
670
+ declare type BaseRowInScreen = {
671
+ /**
672
+ * Firebase document path. If not provided, the row is not defined in db and is dynamically generated (e.g. recommendation row).
673
+ */
674
+ path?: string;
675
+ /**
676
+ * Tivio row ID.
677
+ */
678
+ rowId: string;
679
+ /**
680
+ * If all items are from the same organization this will be set.
681
+ */
682
+ organizationId?: string;
683
+ /**
684
+ * Row name.
685
+ */
686
+ name: Translation;
687
+ /**
688
+ * Row order in the screen.
689
+ */
690
+ order?: number;
691
+ /**
692
+ * Standard row or a Banner.
693
+ */
694
+ rowComponent: RowComponent;
695
+ /**
696
+ * Type of the row (continue to watch, custom, filter, static, ...).
697
+ */
698
+ type: ScreenRowType;
699
+ /**
700
+ * Assets for the row (images, videos, etc.)
701
+ */
702
+ assets?: AssetsField;
703
+ };
704
+
705
+ /**
706
+ * Base static row fields shared by all static row types
707
+ */
708
+ declare type BaseStaticRowInScreen = BaseRowInScreen & {
709
+ type: 'static';
710
+ };
711
+
633
712
  declare interface BaseWidgetControlPayload {
634
713
  widgetPath: string;
635
714
  }
636
715
 
716
+ export declare interface BenefitItem {
717
+ iconType: 'Verified' | 'Badge' | 'Clock' | 'Trending' | 'Message' | 'Eye' | 'Info' | 'Chart' | 'Users' | 'Zap' | 'Star' | 'Email' | 'Discord';
718
+ name: Translation;
719
+ description?: Translation;
720
+ }
721
+
722
+ export declare type BenefitTileSpecificData = BenefitItem;
723
+
637
724
  /**
638
725
  * @public
639
726
  */
@@ -682,6 +769,45 @@ export declare const bundlePromise: Promise<RemoteBundleState>;
682
769
  */
683
770
  export declare type Callback<T = any> = (arg?: T) => void;
684
771
 
772
+ /**
773
+ * Camera switch transition progress information.
774
+ * Tracks the state of buffer loading during camera switches in interactive streaming.
775
+ * @public
776
+ */
777
+ export declare interface CameraSwitchProgress {
778
+ /**
779
+ * Whether a camera switch is currently in progress
780
+ */
781
+ isActive: boolean;
782
+ /**
783
+ * Time position (in seconds) where the transition content will begin.
784
+ * This is after any currently loading chunks finish.
785
+ */
786
+ transitionStartTime: number;
787
+ /**
788
+ * Number of segments that need to load before transition is ready
789
+ */
790
+ segmentsToLoad: number;
791
+ /**
792
+ * Number of segments that have already loaded
793
+ */
794
+ segmentsLoaded: number;
795
+ /**
796
+ * Progress percentage (0-1) of the transition loading
797
+ */
798
+ progress: number;
799
+ /**
800
+ * Estimated time remaining until camera switch completes (in seconds)
801
+ * Based on segment duration and remaining segments
802
+ */
803
+ estimatedTimeRemaining: number;
804
+ /**
805
+ * ID of the secondary source this transition is for.
806
+ * Used to track multiple camera switches in quick succession.
807
+ */
808
+ secondarySourceId?: string;
809
+ }
810
+
685
811
  export declare interface CancellingMonetizationsSummaryItem {
686
812
  date: number;
687
813
  monetizationId: string;
@@ -743,7 +869,6 @@ export declare interface ChannelSourceInterface extends PlayerSourceInterface<So
743
869
  to: Date;
744
870
  poster: string | null;
745
871
  tvMode: TvMode | 'live' | null;
746
- clone: (params?: Partial<ChannelSourceParams>) => ChannelSourceInterface;
747
872
  }
748
873
 
749
874
  /**
@@ -757,6 +882,10 @@ export declare interface ChannelSourceParams extends PlayerSourceParams<SourceTy
757
882
  from: Date;
758
883
  to: Date;
759
884
  tvMode?: TvMode | 'live' | null;
885
+ /**
886
+ * Current program from EPG. Available for VIRTUAL and SCHEDULED channels.
887
+ */
888
+ currentProgram?: TvProgram | null;
760
889
  }
761
890
 
762
891
  /**
@@ -826,12 +955,6 @@ export declare interface CommonSourceParams<T extends SourceType = SourceType> {
826
955
  videoPath?: string;
827
956
  }
828
957
 
829
- /**
830
- * @public
831
- * Re-export of Google IMA CompanionAd type for use throughout the SDK
832
- */
833
- export declare type CompanionAd = google.ima.CompanionAd;
834
-
835
958
  /**
836
959
  * Just another alias. Reexported for backward compatibility.
837
960
  * @public
@@ -891,6 +1014,13 @@ export declare interface ContentAvailability {
891
1014
  manual: boolean;
892
1015
  }
893
1016
 
1017
+ export declare type ContentMetadataFieldId = keyof NonNullable<OrganizationSettingsField['contentMetadata']>;
1018
+
1019
+ export declare interface ContentMetadataOptions {
1020
+ enabled: boolean;
1021
+ order: number;
1022
+ }
1023
+
894
1024
  /**
895
1025
  * @public
896
1026
  */
@@ -1148,10 +1278,23 @@ export declare interface CreatorsWithVoucherSubscriptions {
1148
1278
  name: string;
1149
1279
  }
1150
1280
 
1281
+ export declare interface CtaBannerExtendRowData {
1282
+ variant?: 'light' | 'dark';
1283
+ heading?: Translation;
1284
+ subtitle?: {
1285
+ text: Translation;
1286
+ showIcon?: boolean;
1287
+ };
1288
+ button?: {
1289
+ href: string;
1290
+ text: Translation;
1291
+ };
1292
+ }
1293
+
1151
1294
  /**
1152
1295
  * @public
1153
1296
  */
1154
- export declare const CURRENCIES: string[];
1297
+ export declare const CURRENCIES: Currency[];
1155
1298
 
1156
1299
  /**
1157
1300
  * Three upper-case letters according to ISO-4217.
@@ -1165,6 +1308,11 @@ export declare type Currency = 'CZK' | 'EUR' | 'USD' | 'PLN';
1165
1308
  */
1166
1309
  export declare type CurrencyLowerCase = 'czk' | 'eur' | 'usd' | 'pln';
1167
1310
 
1311
+ /**
1312
+ * @public
1313
+ */
1314
+ export declare const CurrencyToTitle: Record<Currency, string>;
1315
+
1168
1316
  export declare interface CurrentQuestion {
1169
1317
  id: string;
1170
1318
  question: Translation;
@@ -1244,14 +1392,27 @@ export declare enum CustomerId {
1244
1392
  UZ_BUDU = "UZ_BUDU",
1245
1393
  PRIMA = "PRIMA",
1246
1394
  NORA_FRIDRICHOVA = "NORA_FRIDRICHOVA",
1247
- LONGEVITY = "LONGEVITY"
1395
+ LONGEVITY = "LONGEVITY",
1396
+ ZASAHTV = "ZASAHTV",
1397
+ ELISKAFLOW = "ELISKAFLOW",
1398
+ PRIJIMACKY = "PRIJIMACKY",
1399
+ PADNI_KOMU_PADNI = "PADNI_KOMU_PADNI",
1400
+ KRYPTOSPACE = "KRYPTOSPACE",
1401
+ ERADIX = "ERADIX",
1402
+ VLADCI_PRAHY = "VLADCI_PRAHY",
1403
+ DOKTOR_EVZEN = "DOKTOR_EVZEN",
1404
+ INVESTUJ_CHYTRE = "INVESTUJ_CHYTRE",
1405
+ RESTART_MUZE = "RESTART_MUZE",
1406
+ THE_JOHNY = "THE_JOHNY",
1407
+ GOOD_MOVE = "GOOD_MOVE",
1408
+ JANA_HANZ = "JANA_HANZ",
1409
+ MYSTICO = "MYSTICO"
1248
1410
  }
1249
1411
 
1250
1412
  export declare interface CustomScript {
1251
1413
  src: string;
1252
1414
  event?: EventName;
1253
1415
  isAsync?: boolean;
1254
- defer?: boolean;
1255
1416
  }
1256
1417
 
1257
1418
  /**
@@ -1269,6 +1430,11 @@ declare type Data = {
1269
1430
  type: 'tier' | 'member' | 'user';
1270
1431
  };
1271
1432
 
1433
+ /**
1434
+ * @public
1435
+ */
1436
+ export declare const DEFAULT_CURRENCY: Currency;
1437
+
1272
1438
  /**
1273
1439
  * @public
1274
1440
  */
@@ -1311,6 +1477,28 @@ export declare type DeviceInfo = ArrisDeviceInfo | ReactNativeDeviceInfo;
1311
1477
  */
1312
1478
  export declare type DeviceOs = OperatingSystem | 'Tizen' | 'webOS' | 'Arris' | 'Android TV' | 'tvOS';
1313
1479
 
1480
+ /**
1481
+ * User consent status for a specific purpose.
1482
+ */
1483
+ export declare interface DidomiPurposeStatus {
1484
+ enabled: boolean;
1485
+ }
1486
+
1487
+ /**
1488
+ * Didomi SDK API.
1489
+ */
1490
+ export declare interface DidomiSDK {
1491
+ getCurrentUserStatus(): DidomiUserStatus;
1492
+ }
1493
+
1494
+ /**
1495
+ * User consent status returned by Didomi SDK.
1496
+ */
1497
+ export declare interface DidomiUserStatus {
1498
+ purposes: Record<string, DidomiPurposeStatus>;
1499
+ consent_string?: string;
1500
+ }
1501
+
1314
1502
  /**
1315
1503
  * Window object with Didomi SDK properties.
1316
1504
  */
@@ -1326,9 +1514,10 @@ export declare interface DidomiWindow {
1326
1514
  * https://developers.didomi.io/cmp/web-sdk/reference/api
1327
1515
  */
1328
1516
  didomiOnReady: (() => void)[];
1329
- Didomi?: {
1330
- getUserConsentStatusForPurpose: (category: string) => boolean;
1331
- };
1517
+ /**
1518
+ * The Didomi SDK instance.
1519
+ */
1520
+ Didomi: DidomiSDK;
1332
1521
  }
1333
1522
 
1334
1523
  /**
@@ -1349,6 +1538,47 @@ export declare interface DividerProps {
1349
1538
  horizontalSpacing?: number;
1350
1539
  }
1351
1540
 
1541
+ export declare interface DocumentTileData<ItemSpecificData extends DocumentTileItemSpecificData = DocumentTileItemSpecificData> {
1542
+ /**
1543
+ * Tile item ID.
1544
+ */
1545
+ id: string;
1546
+ /**
1547
+ * Timestamp of the item creation.
1548
+ */
1549
+ created: number;
1550
+ /**
1551
+ * Type of the tile. VIDEO, TV_CHANNEL, TAG, ...
1552
+ */
1553
+ itemType: ROW_ITEM_TYPES;
1554
+ /**
1555
+ * Tile item name translation.
1556
+ */
1557
+ name: Translation;
1558
+ /**
1559
+ * Firestore path to the item.
1560
+ */
1561
+ path: string;
1562
+ /**
1563
+ * Application info including logo, name and number of videos.
1564
+ */
1565
+ application?: TileApplicationData;
1566
+ /**
1567
+ * Specific data for an item type (e.g. video, tv channel, tag, ...).
1568
+ */
1569
+ itemSpecificData: ItemSpecificData;
1570
+ /**
1571
+ * Optional label to display in the top-right corner of the tile (e.g., "Exclusive").
1572
+ */
1573
+ topLabel?: Translation;
1574
+ /**
1575
+ * CSS color for the topLabel background. Defaults to white.
1576
+ */
1577
+ topLabelColor?: string;
1578
+ }
1579
+
1580
+ export declare type DocumentTileItemSpecificData = VideoTileSpecificData | TvChannelTileSpecificData | TagTileSpecificData | ArticleTileSpecificData | SeriesTileSpecificData;
1581
+
1352
1582
  export declare interface Drm {
1353
1583
  encryption: VideoSourceEncryption;
1354
1584
  /**
@@ -1421,6 +1651,91 @@ export declare interface DurationWithUnit {
1421
1651
  unit: DurationUnit;
1422
1652
  }
1423
1653
 
1654
+ /**
1655
+ * Row components available for dynamic rows (filter, custom, topWatched, etc.)
1656
+ * Matches the rowComponent constraint in DynamicRow type definition
1657
+ * @public
1658
+ */
1659
+ export declare const DYNAMIC_ROW_COMPONENTS: readonly [RowComponent.ROW, RowComponent.BANNER];
1660
+
1661
+ /**
1662
+ * Dynamic row (filter, custom, continueToWatch, etc.) - has itemComponent and dynamic fields
1663
+ * Uses standard ROW or BANNER components
1664
+ * @public
1665
+ */
1666
+ export declare interface DynamicRow extends BaseRow {
1667
+ type: Exclude<ScreenRowType, 'static'>;
1668
+ numberOfLines?: number;
1669
+ monetizations?: Array<{
1670
+ monetizationRef: {
1671
+ id: string;
1672
+ path: string;
1673
+ };
1674
+ } | RowMonetizationData>;
1675
+ rowComponent: RowComponent.ROW | RowComponent.BANNER;
1676
+ itemComponent: RowItemComponent | BannerItemComponent;
1677
+ organizationId?: string;
1678
+ bottomComponent?: BottomComponent;
1679
+ showDescriptionAsTitle?: boolean;
1680
+ hideTitle?: boolean;
1681
+ externalUrl?: string;
1682
+ playButtonTitle?: string;
1683
+ tiles: PaginationInterface<ItemInRow>;
1684
+ /**
1685
+ * Side Banner specific configuration
1686
+ */
1687
+ sideBannerImagePosition?: 'left' | 'right';
1688
+ backgroundColor?: string;
1689
+ }
1690
+
1691
+ /**
1692
+ * Dynamic row type with dynamic-specific fields
1693
+ */
1694
+ export declare type DynamicRowInScreen = BaseRowInScreen & {
1695
+ type: Exclude<ScreenRowType, 'static'>;
1696
+ /**
1697
+ * Row filter based on which to pick tiles.
1698
+ */
1699
+ filter?: RowFilterField;
1700
+ /**
1701
+ * Number of lines of the title.
1702
+ */
1703
+ numberOfLines?: number;
1704
+ /**
1705
+ * Component to use to render the tiles in the row.
1706
+ */
1707
+ itemComponent: RowItemComponent | BannerItemComponent;
1708
+ /**
1709
+ * Items to display in the row.
1710
+ */
1711
+ tiles: GetTilesInRowResponse<DynamicScreenRowType>;
1712
+ /**
1713
+ * Setting for decided what to show bellow the tiles
1714
+ */
1715
+ bottomComponent?: BottomComponent;
1716
+ /**
1717
+ * Setting for decided whether to show description instead of title in the tiles
1718
+ */
1719
+ showDescriptionAsTitle?: boolean;
1720
+ /**
1721
+ * Setting for decided whether to hide title in the tiles/banners
1722
+ */
1723
+ hideTitle?: boolean;
1724
+ /**
1725
+ * Link to external URL
1726
+ */
1727
+ externalUrl?: string;
1728
+ /**
1729
+ * Title of Play button
1730
+ */
1731
+ playButtonTitle?: Translation;
1732
+ };
1733
+
1734
+ /**
1735
+ * @public
1736
+ */
1737
+ export declare type DynamicScreenRowType = Exclude<ScreenRowType, 'static'>;
1738
+
1424
1739
  /**
1425
1740
  * @public
1426
1741
  */
@@ -1539,7 +1854,6 @@ export declare interface EmitterInterface {
1539
1854
  isSupported: (even: string) => boolean;
1540
1855
  addListener: <T = unknown>(event: string, cb: (value: T) => Empty_2) => void;
1541
1856
  removeListener: <T = unknown>(event: string, cb: (value: T) => Empty_2) => void;
1542
- emitEvent: (event: string, value?: unknown) => void;
1543
1857
  }
1544
1858
 
1545
1859
  /**
@@ -1564,6 +1878,17 @@ export declare type Events = {
1564
1878
  'on-error': Error;
1565
1879
  };
1566
1880
 
1881
+ export declare interface ExploreItem {
1882
+ title: Translation;
1883
+ description: Translation;
1884
+ button?: {
1885
+ href: string;
1886
+ text: Translation;
1887
+ };
1888
+ }
1889
+
1890
+ export declare type ExploreTileSpecificData = ExploreItem;
1891
+
1567
1892
  export declare interface ExtensionMetadata {
1568
1893
  purchaseStatus: CloudflareStreamingPurchaseStatus;
1569
1894
  activeVideoId?: string;
@@ -1577,22 +1902,12 @@ export declare type ExternalTvConfig = {
1577
1902
  splashScreenBackgroundColor?: string;
1578
1903
  };
1579
1904
 
1580
- export declare interface FavoriteTagWithData {
1581
- content: Tag;
1582
- type: 'tag';
1583
- }
1584
-
1585
- export declare interface FavoriteVideoWithData {
1586
- content: Video;
1587
- type: 'video';
1905
+ export declare interface FaqItem {
1906
+ question: Translation;
1907
+ answer: Translation;
1588
1908
  }
1589
1909
 
1590
- /**
1591
- * @public
1592
- */
1593
- export declare type FavoriteWithData = FavoriteVideoWithData | (FavoriteTagWithData & {
1594
- profileId?: string;
1595
- });
1910
+ export declare type FaqTileSpecificData = FaqItem;
1596
1911
 
1597
1912
  /**
1598
1913
  * @throws if fetch fails
@@ -1642,7 +1957,6 @@ export declare interface ForbiddenOnCallError extends GenericOnCallError {
1642
1957
  }
1643
1958
 
1644
1959
  export declare enum ForbiddenReason {
1645
- AD_BLOCKING = "AD_BLOCKING",
1646
1960
  MONETIZATION = "MONETIZATION",
1647
1961
  GEO_BLOCKING = "GEO_BLOCKING",
1648
1962
  EMAIL_ALREADY_EXISTS = "EMAIL_ALREADY_EXISTS",
@@ -1653,8 +1967,7 @@ export declare enum ForbiddenReason {
1653
1967
  NAME_CONTAINS_INVALID_CHAR = "NAME_CONTAINS_INVALID_CHAR",
1654
1968
  USER_ACCOUNT_LOCKED = "USER_ACCOUNT_LOCKED",
1655
1969
  USER_NOT_FOUND = "USER_NOT_FOUND",
1656
- UNSUPPORTED_BROWSER = "UNSUPPORTED_BROWSER",
1657
- ANONYMOUS_USER = "ANONYMOUS_USER"
1970
+ UNSUPPORTED_BROWSER = "UNSUPPORTED_BROWSER"
1658
1971
  }
1659
1972
 
1660
1973
  /**
@@ -1662,7 +1975,7 @@ export declare enum ForbiddenReason {
1662
1975
  */
1663
1976
  export declare type FrequencyInfo = {
1664
1977
  title: Translation;
1665
- unit: string;
1978
+ unit: MONETIZATION_FREQUENCY;
1666
1979
  value: number;
1667
1980
  };
1668
1981
 
@@ -1781,6 +2094,9 @@ export declare type GetPurchaseInfoResponse = {
1781
2094
  };
1782
2095
  };
1783
2096
 
2097
+ /**
2098
+ * Response type for getRowsInScreen
2099
+ */
1784
2100
  export declare type GetRowsInScreenResponse = PaginatedResponse<RowInScreen, 'screenId'>;
1785
2101
 
1786
2102
  export declare interface GetSourceUrlRequest {
@@ -1837,6 +2153,16 @@ export declare interface GetSourceUrlRequest {
1837
2153
  * Parameters related to ads.
1838
2154
  */
1839
2155
  adParams?: Record<string, string | number | undefined>;
2156
+ /**
2157
+ * Which platform the resulting source should support.
2158
+ * If not present, any source that has non-empty `platforms` will be filtered out from the result.
2159
+ */
2160
+ platform?: PLATFORM;
2161
+ /**
2162
+ * Device ID for device tracking on purchase documents.
2163
+ * Used to track which devices are accessing paid content.
2164
+ */
2165
+ deviceId?: string;
1840
2166
  }
1841
2167
 
1842
2168
  export declare interface GetSourceUrlResponse {
@@ -1880,21 +2206,9 @@ export declare interface GetSourceUrlResponse {
1880
2206
  * Determines session type generated for source. If no provided it will be considered 'ondemand' session type.
1881
2207
  */
1882
2208
  sessionType?: VideoSourceField['sessionType'];
1883
- /**
1884
- * Language of the source.
1885
- */
1886
- language?: LangCode;
1887
2209
  }
1888
2210
 
1889
- export declare type GetTilesInRowResponse<U extends NextPageParamType = NextPageParamType> = PaginatedResponse<TileData, U>;
1890
-
1891
- export declare interface GetUserProfileDataOptions {
1892
- /**
1893
- * If true, the data will be returned for all user profiles.
1894
- * If false, the data will be returned only for the active user profile.
1895
- */
1896
- ignoreActiveUserProfile?: boolean;
1897
- }
2211
+ export declare type GetTilesInRowResponse<T extends ScreenRowType = ScreenRowType, U extends NextPageParamType = NextPageParamType> = PaginatedResponse<TileData<T>, U>;
1898
2212
 
1899
2213
  export declare interface GetUserRssUrlRequest {
1900
2214
  organizationId: string;
@@ -1906,58 +2220,6 @@ export declare interface GetUserRssUrlResponse {
1906
2220
  expiresAt?: number;
1907
2221
  }
1908
2222
 
1909
- export declare interface GetVideoAnalyticsErrorItem {
1910
- count: number;
1911
- timestamp: number;
1912
- errorMessage: string;
1913
- }
1914
-
1915
- export declare interface GetVideoAnalyticsErrorResult {
1916
- totalCount: number;
1917
- errors: Array<GetVideoAnalyticsErrorItem>;
1918
- }
1919
-
1920
- export declare interface GetVideoAnalyticsRequest {
1921
- contentId: string;
1922
- timestamp?: number;
1923
- userId?: string;
1924
- source?: string;
1925
- limit?: number;
1926
- errorLimit?: number;
1927
- errorTimestampFrom?: number;
1928
- }
1929
-
1930
- export declare interface GetVideoAnalyticsResponse {
1931
- state?: GetVideoAnalyticsResult;
1932
- quality?: GetVideoAnalyticsResult;
1933
- error?: GetVideoAnalyticsErrorResult;
1934
- localities?: unknown;
1935
- }
1936
-
1937
- export declare type GetVideoAnalyticsResult = {
1938
- [timestamp: string]: {
1939
- totalDuration: number;
1940
- values: Array<{
1941
- value: string;
1942
- duration: number;
1943
- percentage: number;
1944
- }>;
1945
- };
1946
- };
1947
-
1948
- export declare interface GetVideoAnalyticsViewsRequest {
1949
- contentId: string;
1950
- currentViewsIntervalMs: number;
1951
- timestamp?: number;
1952
- source?: string;
1953
- }
1954
-
1955
- export declare interface GetVideoAnalyticsViewsResponse {
1956
- previousViews?: number;
1957
- currentViews?: number;
1958
- totalViews?: number;
1959
- }
1960
-
1961
2223
  export declare interface GetViewAnalyticsResponse {
1962
2224
  viewCountAnalytics: ViewCountItem[];
1963
2225
  topWatched: TopWatchItem[];
@@ -1976,6 +2238,22 @@ export declare enum GRID_TYPES {
1976
2238
  SERIES = "SERIES"
1977
2239
  }
1978
2240
 
2241
+ /**
2242
+ * @public
2243
+ */
2244
+ export declare interface HeroBannerProps {
2245
+ title: string;
2246
+ description?: string;
2247
+ cover: string;
2248
+ onPlayClick?: () => void;
2249
+ onWatchlistClick?: () => void;
2250
+ playButtonHref?: string;
2251
+ watchlistButtonHref?: string;
2252
+ playButtonText?: string;
2253
+ watchlistButtonText?: string;
2254
+ isFavorite?: boolean;
2255
+ }
2256
+
1979
2257
  /**
1980
2258
  * @public
1981
2259
  */
@@ -1984,6 +2262,61 @@ export declare interface HistoryContextData {
1984
2262
  backOrRedirectToRoot: (delta?: number) => void;
1985
2263
  }
1986
2264
 
2265
+ export declare interface HomepageBannerButton {
2266
+ href: string;
2267
+ text: Translation;
2268
+ variant: HomepageBannerButtonVariant;
2269
+ leftIcon?: HomepageBannerButtonIcon;
2270
+ /**
2271
+ * Controls when this button should be visible.
2272
+ * Defaults to 'always' if not specified.
2273
+ */
2274
+ visibility?: HomepageBannerButtonVisibility;
2275
+ }
2276
+
2277
+ export declare type HomepageBannerButtonIcon = 'play';
2278
+
2279
+ export declare type HomepageBannerButtonVariant = 'primary' | 'secondary';
2280
+
2281
+ /**
2282
+ * Visibility condition for banner buttons.
2283
+ * - 'always': Button is always visible (default)
2284
+ * - 'notSignedIn': Button is only visible when user is not signed in
2285
+ * - 'signedIn': Button is only visible when user is signed in
2286
+ */
2287
+ export declare type HomepageBannerButtonVisibility = 'always' | 'notSignedIn' | 'signedIn';
2288
+
2289
+ export declare interface HomepageBannerExtendRowData {
2290
+ /**
2291
+ * Main title displayed on the banner
2292
+ */
2293
+ title?: Translation;
2294
+ /**
2295
+ * Subtitle/tagline displayed below title
2296
+ */
2297
+ subtitle?: {
2298
+ text: Translation;
2299
+ showIcon?: boolean;
2300
+ };
2301
+ /**
2302
+ * Multiple lines of descriptive text for multiline display
2303
+ */
2304
+ descriptionLines?: Translation[];
2305
+ /**
2306
+ * Array of buttons to display on the banner
2307
+ */
2308
+ buttons?: HomepageBannerButton[];
2309
+ /**
2310
+ * Single background image asset (legacy, use backgroundAssets for random selection)
2311
+ */
2312
+ asset?: ScalableAsset;
2313
+ /**
2314
+ * Array of background assets for random selection per page load.
2315
+ * If provided, one will be randomly selected each time the banner loads.
2316
+ */
2317
+ backgroundAssets?: ScalableAsset[];
2318
+ }
2319
+
1987
2320
  export declare type IncludedItem = {
1988
2321
  attributes: {
1989
2322
  next_charge_date: string;
@@ -2019,10 +2352,23 @@ export declare interface IndexedTag extends IndexedObject {
2019
2352
  created: Date;
2020
2353
  name: Translation;
2021
2354
  description?: string;
2355
+ /**
2356
+ * True if the tag has assets (non-empty assets object).
2357
+ */
2358
+ hasAssets: boolean;
2359
+ /**
2360
+ * True if the tag has content (has videos or series episodes).
2361
+ */
2362
+ hasContent: boolean;
2022
2363
  /**
2023
2364
  * True if the tag is available in Tivio Pro (StarMe)
2024
2365
  */
2025
2366
  isTivioPro: boolean;
2367
+ /**
2368
+ * Parental guidance rating (e.g., "O", "07", "U", "7+")
2369
+ * Used for filtering content based on age restrictions for kids profiles
2370
+ */
2371
+ pgRating?: string;
2026
2372
  }
2027
2373
 
2028
2374
  /**
@@ -2068,6 +2414,11 @@ export declare interface IndexedVideo extends IndexedObject {
2068
2414
  defaultName: string;
2069
2415
  name: string | Translation;
2070
2416
  description: string | Translation;
2417
+ descriptionRich?: Translation;
2418
+ /**
2419
+ * EPG program-friendly name
2420
+ */
2421
+ shortName?: Translation;
2071
2422
  hide: boolean;
2072
2423
  isDuplicate: boolean;
2073
2424
  externals?: VideoExternals;
@@ -2086,14 +2437,21 @@ export declare interface IndexedVideo extends IndexedObject {
2086
2437
  * see https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-attributes/#filter-by-null-or-missing-attributes.
2087
2438
  */
2088
2439
  monetizationAccessIds: string[] | false;
2440
+ /**
2441
+ * See {@link VideoDocument.pgRating}
2442
+ */
2443
+ pgRating?: string;
2444
+ /**
2445
+ * See {@link VideoDocument.contentDescriptors}
2446
+ */
2447
+ contentDescriptors?: string[];
2089
2448
  }
2090
2449
 
2091
- export declare type InputSourceParams = SourceParams | VodExternalMultiSourceParams;
2092
-
2093
2450
  export declare type IntegrationType = 'discord' | 'patreon';
2094
2451
 
2095
2452
  export declare interface InteractiveWidget<T extends InteractiveWidgetScene = InteractiveWidgetScene> {
2096
2453
  readonly id: string;
2454
+ readonly name: string;
2097
2455
  readonly path: string;
2098
2456
  readonly currentQuestion: CurrentQuestion | null;
2099
2457
  readonly status: QuizGameStatus;
@@ -2293,17 +2651,35 @@ export declare type ItemInRow = Tag | Video | TvChannel | Advertisement | Applic
2293
2651
  * @public
2294
2652
  */
2295
2653
  export declare interface JojExternals {
2654
+ /**
2655
+ * e.g. '19876'
2656
+ */
2296
2657
  tvProfiProgramId?: string;
2658
+ /**
2659
+ * e.g. 'S19876'
2660
+ */
2297
2661
  tvProfiContentId?: string;
2298
2662
  tvProfiSerialId?: string;
2663
+ /**
2664
+ * e.g. '70368744177695432'
2665
+ */
2299
2666
  contentId?: string;
2300
2667
  /**
2301
2668
  * Temporary contentId used only for live channel. The video is already encoded and stored in our storage
2302
2669
  * but is also stored on nangu platform to be used for live channel.
2303
2670
  */
2304
2671
  dvtvExtraContentId?: string;
2672
+ /**
2673
+ * e.g. 'W278510'
2674
+ */
2305
2675
  provysId?: string;
2676
+ /**
2677
+ * real provysId unlike provysId, e.g. '2-231027-0009'
2678
+ */
2306
2679
  tvProfiProvysId?: string;
2680
+ /**
2681
+ * e.g. 'W278510'
2682
+ */
2307
2683
  tvProfiHouseId?: string;
2308
2684
  tvProfiTitleOriginal?: string;
2309
2685
  tvProfiTitleSk?: string;
@@ -2329,7 +2705,20 @@ export declare enum LangCode {
2329
2705
  HU = "hu"
2330
2706
  }
2331
2707
 
2332
- export declare const LangCodeToTitle: Partial<Record<LangCode, string>>;
2708
+ export declare const LangCodeToCountryCodeMap: Partial<Record<LangCode, string>>;
2709
+
2710
+ export declare const LangCodeToCurrencyMap: Partial<Record<LangCode, Currency>>;
2711
+
2712
+ export declare const LangCodeToTitle: Record<LangCode, string>;
2713
+
2714
+ /**
2715
+ * Generic type for items that can be restricted to specific languages.
2716
+ * Use with filterByLanguageRestricted utility from @tivio/common.
2717
+ */
2718
+ export declare interface LanguageRestricted {
2719
+ /** By default is available in every language */
2720
+ availableIn?: LangCode[];
2721
+ }
2333
2722
 
2334
2723
  /**
2335
2724
  * All supported languages codes as in ISO 639-1
@@ -2524,11 +2913,35 @@ export declare enum LoginRedirect {
2524
2913
  REMOTE_CONTROLLER = "remote-controller"
2525
2914
  }
2526
2915
 
2916
+ declare interface ManageMemberDeleteRequest extends ManageMemberRequestBase {
2917
+ action: 'deleteMember';
2918
+ }
2919
+
2920
+ export declare type ManageMemberRequest = ManageMemberUpdateRoleRequest | ManageMemberDeleteRequest;
2921
+
2527
2922
  /**
2528
- * @public
2923
+ * Request body for manageMember cloud function.
2924
+ * Handles member management operations (role update, deletion) within an organization.
2925
+ */
2926
+ declare interface ManageMemberRequestBase {
2927
+ organizationId: string;
2928
+ targetMemberUid: string;
2929
+ }
2930
+
2931
+ /**
2932
+ * Response body for manageMember cloud function.
2529
2933
  */
2530
- export declare interface MallTvExternals {
2531
- mallTvEntityId: string;
2934
+ export declare interface ManageMemberResponse {
2935
+ success: boolean;
2936
+ }
2937
+
2938
+ declare interface ManageMemberUpdateRoleRequest extends ManageMemberRequestBase {
2939
+ action: 'updateRole';
2940
+ /**
2941
+ * New role for the target member.
2942
+ * Value corresponds to OrganizationMemberRoles enum from @tivio/firebase.
2943
+ */
2944
+ role: number;
2532
2945
  }
2533
2946
 
2534
2947
  /**
@@ -2592,11 +3005,37 @@ export declare enum MarkerType {
2592
3005
  NONE = "none"
2593
3006
  }
2594
3007
 
3008
+ /**
3009
+ * Tile data for MEDIA_ACCORDEON rows.
3010
+ * Contains id, name, and path for video references.
3011
+ * @public
3012
+ */
3013
+ export declare interface MediaAccordeonTileSpecificData {
3014
+ /**
3015
+ * Custom item ID for unique identification.
3016
+ */
3017
+ id: string;
3018
+ /**
3019
+ * Custom item name for display purposes.
3020
+ */
3021
+ name: Translation;
3022
+ /**
3023
+ * Firestore path to the video.
3024
+ */
3025
+ path: string;
3026
+ }
3027
+
2595
3028
  declare type Membership = {
2596
3029
  id: string;
2597
3030
  type: string;
2598
3031
  };
2599
3032
 
3033
+ export declare type MergeUserAccountsPayload = {
3034
+ email: string;
3035
+ name?: string;
3036
+ password: string;
3037
+ };
3038
+
2600
3039
  /**
2601
3040
  * @public
2602
3041
  */
@@ -2632,6 +3071,17 @@ export declare interface MessageUser {
2632
3071
  email: string;
2633
3072
  }
2634
3073
 
3074
+ export declare enum MetadataFieldId {
3075
+ NAME = "name",// always required
3076
+ SHORT_NAME = "shortName",// optional, fixed position (not sortable)
3077
+ DESCRIPTION = "description",// always required
3078
+ RICH_DESCRIPTION = "richDescription",// optional, fixed position (not sortable)
3079
+ TAGS = "tags",
3080
+ FILM_DETAILS = "filmDetails",
3081
+ AUDIENCE_LIMITATIONS = "audienceLimitations",
3082
+ PRODUCT_PLACEMENT = "productPlacement"
3083
+ }
3084
+
2635
3085
  /**
2636
3086
  * External information of video migrated via our Public API.
2637
3087
  * @public
@@ -2853,11 +3303,6 @@ declare type Notification_2 = {
2853
3303
  } & EmailNotification;
2854
3304
  export { Notification_2 as Notification }
2855
3305
 
2856
- export declare interface NotificationDuration {
2857
- value: number;
2858
- unit: dayjs.ManipulateType;
2859
- }
2860
-
2861
3306
  export declare type NotificationFilterType = NotificationFirestoreFilterType | NotificationSurveyFilterType | NotificationLastActivityFilterType;
2862
3307
 
2863
3308
  export declare type NotificationFirestoreFilterType = NotificationSubscriptionFilterType | NotificationMembershipFilterType;
@@ -2880,12 +3325,21 @@ export declare interface NotificationMembershipFilterType {
2880
3325
  };
2881
3326
  }
2882
3327
 
3328
+ /**
3329
+ * Lifecycle status of a notification.
3330
+ */
2883
3331
  export declare enum NotificationStatus {
3332
+ /** Automatic trigger types (e.g. purchaseStatusChange, duration, userRegistration); not manually or scheduled sent. */
2884
3333
  AUTOMATIC = "automatic",
3334
+ /** Editable, not yet scheduled or sent. Initial state; can transition to PLANNED when scheduled. */
2885
3335
  DRAFT = "draft",
3336
+ /** Scheduled (e.g. Cloud Task created for email, or push scheduled). For push, sending runs on DRAFT→PLANNED then status becomes SENT. */
2886
3337
  PLANNED = "planned",
3338
+ /** Notification has been sent. Set after push send and after email send for manual/scheduled. */
2887
3339
  SENT = "sent",
3340
+ /** Manual trigger saved and waiting to be sent (no lastSent yet). */
2888
3341
  WAITING = "waiting",
3342
+ /** Currently being sent (e.g. EmailSender sets RUNNING before sendEmails). Saving and re-sending are blocked while RUNNING. */
2889
3343
  RUNNING = "running"
2890
3344
  }
2891
3345
 
@@ -2919,6 +3373,17 @@ export declare interface NotificationTargeting {
2919
3373
  to?: Date;
2920
3374
  }
2921
3375
 
3376
+ /**
3377
+ * How the notification is triggered.
3378
+ * - **scheduled**: Sent at a fixed time (scheduleTime). Status becomes PLANNED when scheduled;
3379
+ * used with Cloud Tasks for email and for push when moving from DRAFT to PLANNED.
3380
+ * - **manual**: Sent on demand from the admin. Status is WAITING until sent, then SENT.
3381
+ * - **purchaseStatusChange**: Fired when a user's purchase/subscription status changes (before/after).
3382
+ * Matched by getNotificationByPurchaseStatuses; status is AUTOMATIC.
3383
+ * - **duration**: Time-based (e.g. subscription duration). Used by the daily email job (sendEmailsDaily)
3384
+ * via DurationEmailSender to target users by duration criteria.
3385
+ * - **userRegistration**: Fired when a user registers. Resolved by getNotificationUserRegistration.
3386
+ */
2922
3387
  export declare type NotificationTriggerType = 'scheduled' | 'manual' | 'purchaseStatusChange' | 'duration' | 'userRegistration';
2923
3388
 
2924
3389
  export declare enum NotificationType {
@@ -2933,6 +3398,13 @@ export declare type Nullable<T> = {
2933
3398
  [P in keyof T]: T[P] | null;
2934
3399
  };
2935
3400
 
3401
+ export declare interface NumberItem {
3402
+ value: string;
3403
+ description: Translation;
3404
+ }
3405
+
3406
+ export declare type NumbersTileSpecificData = NumberItem;
3407
+
2936
3408
  /**
2937
3409
  * @public
2938
3410
  */
@@ -2998,6 +3470,20 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
2998
3470
  enabled: boolean;
2999
3471
  };
3000
3472
  allowedSignInProviders?: SignInProvider[];
3473
+ /**
3474
+ * Social authentication provider for this organization
3475
+ * 'auth0' - Use Auth0 for social login (Kviff)
3476
+ * 'firebase' - Use Firebase Auth for social login (default)
3477
+ */
3478
+ socialAuthProvider?: 'auth0' | 'firebase';
3479
+ /**
3480
+ * Auth0 configuration for organizations using Auth0 social login.
3481
+ * Only relevant when socialAuthProvider === 'auth0'.
3482
+ */
3483
+ auth0?: {
3484
+ domain: string;
3485
+ clientId: string;
3486
+ };
3001
3487
  disableComments?: boolean;
3002
3488
  /**
3003
3489
  * Used on CNC webs - When buying a yearly subscription the recalculated monthly price is display below the yearly price
@@ -3043,6 +3529,11 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
3043
3529
  id: string;
3044
3530
  };
3045
3531
  };
3532
+ /**
3533
+ * With this setting, it's possible for the users to purchase with discounted price for the same monetization, if it expired before 1 month ago.
3534
+ * The logic can be found here: {@link apps/api/functions/src/model/purchase.ts}
3535
+ * At the same time `allowExpired: true` setting on a monetization variant will enable discounted variant if the user has active or expired purchase of monetizationRef.
3536
+ */
3046
3537
  cancelledSubscriptionDiscount?: {
3047
3538
  enabled: boolean;
3048
3539
  };
@@ -3058,6 +3549,28 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
3058
3549
  pushNotifications?: {
3059
3550
  enabled?: boolean;
3060
3551
  };
3552
+ recommendations?: {
3553
+ videosNoOlderThan?: {
3554
+ unit: 'month';
3555
+ value: number;
3556
+ };
3557
+ };
3558
+ /**
3559
+ * Payment flow configuration
3560
+ * @default PaymentFlow.NEW
3561
+ */
3562
+ paymentFlow?: PaymentFlow;
3563
+ contentMetadata?: {
3564
+ [MetadataFieldId.SHORT_NAME]?: ContentMetadataOptions;
3565
+ [MetadataFieldId.RICH_DESCRIPTION]?: ContentMetadataOptions;
3566
+ [MetadataFieldId.TAGS]?: ContentMetadataOptions;
3567
+ [MetadataFieldId.FILM_DETAILS]?: ContentMetadataOptions;
3568
+ [MetadataFieldId.AUDIENCE_LIMITATIONS]?: ContentMetadataOptions;
3569
+ [MetadataFieldId.PRODUCT_PLACEMENT]?: ContentMetadataOptions;
3570
+ };
3571
+ aiProcessing?: {
3572
+ assets?: boolean;
3573
+ };
3061
3574
  }
3062
3575
 
3063
3576
  /**
@@ -3072,7 +3585,7 @@ export declare type OtherSource = SourceBase & StartAndContinuePosition & {
3072
3585
 
3073
3586
  export declare interface PaginatedResponse<T = unknown, U extends NextPageParamType = NextPageParamType> {
3074
3587
  items: T[];
3075
- nextPageParams: {
3588
+ nextPageParams: ({
3076
3589
  offset: number;
3077
3590
  limit: number;
3078
3591
  } & (U extends 'screenId' ? {
@@ -3084,7 +3597,7 @@ export declare interface PaginatedResponse<T = unknown, U extends NextPageParamT
3084
3597
  rowId: string;
3085
3598
  } : U extends 'filter' ? {
3086
3599
  filter: Omit<RowFilterField, 'limit'>;
3087
- } : {}) | null;
3600
+ } : object)) | null;
3088
3601
  }
3089
3602
 
3090
3603
  /**
@@ -3119,20 +3632,6 @@ export declare interface PartialRegistrationOverlayContextState {
3119
3632
  voucher?: string;
3120
3633
  }
3121
3634
 
3122
- /**
3123
- * @public
3124
- * Generic interface for sources that can be identified by a path (video or TV channel)
3125
- */
3126
- export declare type PathSourceParams = PathSourceParamsTvChannel | PathSourceParamsVideo;
3127
-
3128
- declare interface PathSourceParamsTvChannel extends Partial<ChannelSourceParams> {
3129
- path: `tvChannels/${string}`;
3130
- }
3131
-
3132
- declare interface PathSourceParamsVideo extends Partial<Omit<VodTivioSourceParams, 'videoPath'>> {
3133
- path: `videos/${string}`;
3134
- }
3135
-
3136
3635
  export declare type PatreonCreatorData = {
3137
3636
  campaign: string;
3138
3637
  tiers: Tier[];
@@ -3176,6 +3675,17 @@ export declare type PatreonUserResponse = {
3176
3675
  errors?: PatreonError[];
3177
3676
  };
3178
3677
 
3678
+ /**
3679
+ * @public
3680
+ *
3681
+ * - NEW: Automatically show payment overlay when tasting video ends (ContentIsPaidOverlay with poster)
3682
+ * - LEGACY: Old behavior - users must manually click to purchase, no automatic overlay
3683
+ */
3684
+ export declare enum PaymentFlow {
3685
+ NEW = "new",
3686
+ LEGACY = "legacy"
3687
+ }
3688
+
3179
3689
  /**
3180
3690
  * @public
3181
3691
  */
@@ -3292,11 +3802,6 @@ export declare type PlayerConfig = {
3292
3802
  */
3293
3803
  name: 'IMA SDK' | 'TIVIO AD SERVICE';
3294
3804
  };
3295
- /**
3296
- * If true, then TV channels are not available for anonymous users and they will be shown an overlay to sign in.
3297
- * @default false
3298
- */
3299
- disableTvChannelsForAnonymousUsers?: boolean;
3300
3805
  };
3301
3806
 
3302
3807
  /**
@@ -3308,6 +3813,8 @@ export declare interface PlayerEngineConfig {
3308
3813
  isAd?: boolean;
3309
3814
  positionMs?: number;
3310
3815
  url: string;
3816
+ sessionType?: SessionType;
3817
+ sourcePlayMode?: SourcePlayMode;
3311
3818
  }
3312
3819
 
3313
3820
  /**
@@ -3413,6 +3920,43 @@ export declare interface PlayerEngineInterface {
3413
3920
  selectPlaybackSpeed?: (playbackSpeed: number) => void;
3414
3921
  destroy(): Promise<void>;
3415
3922
  getBufferedInfo?(): BufferChunk[];
3923
+ /**
3924
+ * Clears buffered segments ahead of the current playback position.
3925
+ * Used during interactive streaming camera switches to enable faster content transition.
3926
+ *
3927
+ * @param safeMarginMs - Milliseconds of buffer to keep ahead of current position (default: 0)
3928
+ * @param secondarySourceId - Optional ID of the secondary source being switched to
3929
+ * @returns Promise that resolves when buffer clearing is complete
3930
+ */
3931
+ clearBufferAhead?(safeMarginMs?: number, secondarySourceId?: string): Promise<void>;
3932
+ /**
3933
+ * Sets the streaming profile to configure buffer behavior.
3934
+ * Use 'low' for interactive streaming with fast camera switches,
3935
+ * 'medium' for balanced behavior, 'high' for maximum stability.
3936
+ *
3937
+ * @param profile - The streaming profile to apply
3938
+ */
3939
+ setStreamingProfile?(profile: StreamingProfile): void;
3940
+ /**
3941
+ * Gets the current streaming profile.
3942
+ */
3943
+ getStreamingProfile?(): StreamingProfile;
3944
+ /**
3945
+ * Set whether to prefer native HLS playback over MSE.
3946
+ * This is required for AirPlay to work properly in Safari.
3947
+ * Must be called before play() to take effect.
3948
+ *
3949
+ * @param preferNativeHls - Whether to prefer native HLS playback
3950
+ */
3951
+ setPreferNativeHls?(preferNativeHls: boolean): void;
3952
+ /**
3953
+ * Reload the current source with the current configuration (including preferNativeHls).
3954
+ * This is a lightweight reload that doesn't go through the full playerWrapper source pipeline.
3955
+ * Used for switching between MSE and native HLS playback for AirPlay.
3956
+ *
3957
+ * @returns Promise that resolves when reload is complete
3958
+ */
3959
+ reloadCurrentConfig?(): Promise<void>;
3416
3960
  lastQuality: number | null;
3417
3961
  /**
3418
3962
  * Attribute indicating that the video is to be played "inline"
@@ -3420,11 +3964,6 @@ export declare interface PlayerEngineInterface {
3420
3964
  */
3421
3965
  setPlaysInline(value: boolean): void;
3422
3966
  setControlsList(value: string[]): void;
3423
- /** Gets resolution of the video element in pixels - container size, not the actual source quality resolution */
3424
- getVideoResolution(): {
3425
- width: number;
3426
- height: number;
3427
- };
3428
3967
  }
3429
3968
 
3430
3969
  /**
@@ -3520,11 +4059,19 @@ export declare interface PlayerInterface {
3520
4059
  */
3521
4060
  setPlaysInline?: (value: boolean) => void;
3522
4061
  setControlsList?: (value: string[]) => void;
3523
- /** Gets resolution of the video element in pixels - container size, not the actual source quality resolution */
3524
- getVideoResolution(): {
3525
- width: number;
3526
- height: number;
3527
- };
4062
+ /**
4063
+ * Clears buffered segments ahead of the current playback position.
4064
+ * Used during interactive streaming camera switches to enable faster content transition.
4065
+ *
4066
+ * @param safeMarginMs - Milliseconds of buffer to keep ahead of current position (default: 0)
4067
+ * @returns Promise that resolves when buffer clearing is complete
4068
+ */
4069
+ clearBufferAhead?: (safeMarginMs?: number, secondarySourceId?: string) => Promise<void>;
4070
+ /**
4071
+ * Callback to receive camera switch progress updates.
4072
+ * Called by the engine during interactive streaming camera switches.
4073
+ */
4074
+ onCameraSwitchProgress?: (progress: CameraSwitchProgress) => void;
3528
4075
  }
3529
4076
 
3530
4077
  /**
@@ -3594,7 +4141,6 @@ export declare interface PlayerSourceInterface<T extends NonAdSourceType = NonAd
3594
4141
  start?: Date;
3595
4142
  from?: Date;
3596
4143
  sourceHistory?: string[];
3597
- staticAdsConfig?: StaticAdsBreak[];
3598
4144
  }
3599
4145
 
3600
4146
  /**
@@ -3613,7 +4159,6 @@ export declare interface PlayerSourceParams<T extends NonAdSourceType = NonAdSou
3613
4159
  seekingMatrix?: SeekingMatrixTemplate;
3614
4160
  sessionType?: VideoSourceField['sessionType'];
3615
4161
  sessionId?: string;
3616
- staticAdsConfig?: StaticAdsBreak[];
3617
4162
  }
3618
4163
 
3619
4164
  export declare type PlayersScene = InteractiveWidgetSceneBase<InteractiveWidgetSceneTemplateType.PLAYERS>;
@@ -3627,13 +4172,6 @@ export declare type PlayerState = 'idle' | 'playing' | 'paused';
3627
4172
  * @public
3628
4173
  */
3629
4174
  export declare interface PlayerWrapper {
3630
- /**
3631
- * Unique id of the player wrapper instance, set at construction time
3632
- * (e.g. by `tivio.getPlayerWrapper(id)`). Used to scope DOM ids of
3633
- * player-owned elements (IMA ad containers, content video element, …)
3634
- * so multiple players on the same page don't collide.
3635
- */
3636
- readonly id: string;
3637
4175
  /**
3638
4176
  * Report that playback of video has finished
3639
4177
  */
@@ -3672,6 +4210,11 @@ export declare interface PlayerWrapper {
3672
4210
  availableLanguages: LangCode[] | null;
3673
4211
  canReplay: boolean;
3674
4212
  currentSecondarySource: Video | null;
4213
+ /**
4214
+ * Camera switch transition progress for interactive streaming.
4215
+ * Non-null when a camera switch is in progress.
4216
+ */
4217
+ cameraSwitchProgress: CameraSwitchProgress | null;
3675
4218
  currentTime: number;
3676
4219
  /**
3677
4220
  * Currently playing source
@@ -3722,6 +4265,10 @@ export declare interface PlayerWrapper {
3722
4265
  * Retry to play a video that failed to start playing (e.g. due to a network error)
3723
4266
  */
3724
4267
  retry: () => void;
4268
+ /**
4269
+ * Refresh the current source by calling getSourceUrl without sourceHistory.
4270
+ */
4271
+ refreshSource: () => Promise<void>;
3725
4272
  togglePlayPause: () => void;
3726
4273
  seekTo: (ms: number) => void;
3727
4274
  /**
@@ -3730,6 +4277,21 @@ export declare interface PlayerWrapper {
3730
4277
  setVolume: (volume: number) => void;
3731
4278
  changeLanguage: (langCode: LangCode) => Promise<void>;
3732
4279
  changeToFallbackSource: () => Promise<void>;
4280
+ /**
4281
+ * Switch to HLS source for AirPlay (Safari/iOS only).
4282
+ * Preserves current playback position.
4283
+ */
4284
+ switchToHlsForAirplay: () => Promise<void>;
4285
+ /**
4286
+ * Switch back to DASH from HLS after AirPlay disconnects.
4287
+ * Preserves current playback position.
4288
+ */
4289
+ switchToDashFromAirplay: () => Promise<void>;
4290
+ /**
4291
+ * Reload the current source while preserving playback position.
4292
+ * Used when switching between native HLS and MSE playback modes.
4293
+ */
4294
+ reloadCurrentSource: () => Promise<void>;
3733
4295
  /**
3734
4296
  * change volume by value between -1,1
3735
4297
  */
@@ -3738,10 +4300,6 @@ export declare interface PlayerWrapper {
3738
4300
  setCanPlay: (canPlay: boolean) => void;
3739
4301
  toggleMuted: () => void;
3740
4302
  getQualities: () => Track[];
3741
- getVideoResolution: () => {
3742
- width: number;
3743
- height: number;
3744
- };
3745
4303
  playNativeImaAd: (url: string) => void;
3746
4304
  playSourceAfterAdsRun: () => void;
3747
4305
  putAd: (ad: AdSourceInterface) => void;
@@ -3758,10 +4316,20 @@ export declare interface PlayerWrapper {
3758
4316
  seekToLive: () => void;
3759
4317
  seekToLiveInternal: () => void;
3760
4318
  setIsBuffering: (isBuffering: boolean) => void;
4319
+ isCasting: boolean;
3761
4320
  setIsCasting: (isCasting: boolean) => void;
3762
4321
  skipAd: () => void;
3763
4322
  skipAllAds: () => void;
3764
4323
  switchSecondarySource: (activeVideoId?: string) => Promise<void>;
4324
+ /**
4325
+ * Set whether to prefer HLS sources over DASH.
4326
+ * Used in Safari/iOS when AirPlay is available, as AirPlay only supports HLS streaming.
4327
+ */
4328
+ setPreferHls: (preferHls: boolean) => void;
4329
+ /**
4330
+ * Suppress watermark tamper detection during AirPlay source switching.
4331
+ */
4332
+ setAirplaySwitching?: (isSwitching: boolean) => void;
3765
4333
  }
3766
4334
 
3767
4335
  /**
@@ -3786,19 +4354,7 @@ export declare enum PlayerWrapperEvents {
3786
4354
  /**
3787
4355
  * Un-pause was triggered
3788
4356
  */
3789
- 'unpause_triggered' = "unpause_triggered",
3790
- /**
3791
- * Triggered when an ad starts playing
3792
- */
3793
- 'ad-started' = "ad-started",
3794
- /**
3795
- * Triggered when an ad finishes playing
3796
- */
3797
- 'ad-ended' = "ad-ended",
3798
- /**
3799
- * Triggered when companion ads are available for the current ad
3800
- */
3801
- 'companion-ads' = "companion-ads"
4357
+ 'unpause_triggered' = "unpause_triggered"
3802
4358
  }
3803
4359
 
3804
4360
  /**
@@ -3826,6 +4382,20 @@ export declare type PlayerWrapperEventTypeType = `${PlayerWrapperEventType}`;
3826
4382
  */
3827
4383
  export declare type PrerollCheck = (source: PlayerSource) => Promise<AdSourceInterface | null>;
3828
4384
 
4385
+ export declare type PresentBannerExtendRowData = {
4386
+ name: Translation;
4387
+ subname?: Translation;
4388
+ description?: Translation;
4389
+ avatars?: ScalableAsset[];
4390
+ avatarsText?: Translation;
4391
+ asset?: ScalableAsset;
4392
+ buttons?: RowButton[];
4393
+ };
4394
+
4395
+ export declare type PricesField = {
4396
+ [currency in Currency]?: number | null;
4397
+ };
4398
+
3829
4399
  export declare enum primaPlusMonetizationLevel {
3830
4400
  light = "z7soJTA2dYSxnOOJw7B0",
3831
4401
  premium = "kwfM0D7Vzv5wfLf5go8o",
@@ -3924,8 +4494,9 @@ export declare interface ProgressMetadata {
3924
4494
  * @public
3925
4495
  */
3926
4496
  export declare interface Promotion {
4497
+ id?: string;
3927
4498
  duration?: Duration;
3928
- price?: number;
4499
+ prices?: PricesField;
3929
4500
  requiresPaymentAuthorization?: boolean;
3930
4501
  hideOtherSubscriptions?: boolean;
3931
4502
  }
@@ -3975,7 +4546,9 @@ export declare interface PurchasableMonetization extends Monetization {
3975
4546
  */
3976
4547
  price?: string | number;
3977
4548
  promotion: Promotion | null;
3978
- frequency?: MONETIZATION_FREQUENCY;
4549
+ frequency?: Omit<FrequencyInfo, 'title'> & {
4550
+ title: string;
4551
+ };
3979
4552
  frequencyInfo?: FrequencyInfo;
3980
4553
  durationDays?: number;
3981
4554
  /**
@@ -4015,7 +4588,30 @@ export declare interface PurchasableMonetization extends Monetization {
4015
4588
  * Number of seats left for the subscription.
4016
4589
  */
4017
4590
  seatsLeft?: number;
4591
+ /**
4592
+ * Trial period in milliseconds for the subscription.
4593
+ */
4594
+ trialPeriod?: number;
4595
+ /**
4596
+ * Maximum quantity of the subscription.
4597
+ */
4018
4598
  maxQuantity?: number;
4599
+ /**
4600
+ * Currency of the monetization price.
4601
+ */
4602
+ currency?: Currency;
4603
+ /**
4604
+ * Detailed price information, including currency and amount - Takes the price getter from purchsable monetization entity.
4605
+ */
4606
+ detailedPrice?: DetailedPrice;
4607
+ /**
4608
+ * Subtitle for the monetization, used in UI.
4609
+ */
4610
+ subtitle?: string;
4611
+ /**
4612
+ * Banner title for the monetization, used in UI.
4613
+ */
4614
+ bannerTitle?: string;
4019
4615
  }
4020
4616
 
4021
4617
  /**
@@ -4047,6 +4643,7 @@ export declare type Purchase = {
4047
4643
  monetization: PurchaseMonetization | null;
4048
4644
  monetizationId: string | null;
4049
4645
  monetizationRef: any | null;
4646
+ nextPaymentDate: Date | null;
4050
4647
  status: PurchaseStatus | null;
4051
4648
  type: PurchaseType | null;
4052
4649
  /**
@@ -4433,6 +5030,7 @@ export declare interface QerkoTransaction {
4433
5030
  paymentStatus: string | null;
4434
5031
  getPaymentInfo: () => Promise<void>;
4435
5032
  voucherId?: string;
5033
+ isLoading: boolean;
4436
5034
  }
4437
5035
 
4438
5036
  export declare type QRCodeScene = InteractiveWidgetSceneBase<InteractiveWidgetSceneTemplateType.QR_CODE>;
@@ -4461,7 +5059,7 @@ export declare interface QuestionRepository {
4461
5059
  readonly selectedAnswerId: string | undefined;
4462
5060
  isSubmitted: boolean;
4463
5061
  isSubmitting: boolean;
4464
- setCurrentQuestion: (question: CurrentQuestion | null, role: QuizGameRole, secondsToAnswer: number, shouldEnterAtTimestampMs?: number) => void;
5062
+ setCurrentQuestion: (question: CurrentQuestion | null, role: QuizGameRole, secondsToAnswer: number, shouldEnterAtTimestampMs?: number, shouldAdjustEndTimestampMs?: boolean) => void;
4465
5063
  selectAnswer: (answerId: string | undefined) => void;
4466
5064
  setShowCountdown: (showCountdown: boolean) => void;
4467
5065
  reset: () => void;
@@ -4702,6 +5300,16 @@ export declare type RequiredNonNullable<T> = {
4702
5300
  [P in keyof T]-?: NonNullable<T[P]>;
4703
5301
  };
4704
5302
 
5303
+ export declare interface ReviewItem {
5304
+ asset: ScalableAsset;
5305
+ name: Translation;
5306
+ subname?: Translation;
5307
+ rating: 1 | 2 | 3 | 4 | 5;
5308
+ description?: Translation;
5309
+ }
5310
+
5311
+ export declare type ReviewTileSpecificData = ReviewItem;
5312
+
4705
5313
  /**
4706
5314
  * @public
4707
5315
  */
@@ -4724,6 +5332,7 @@ export declare interface RouterOverrides {
4724
5332
  gridType: GRID_TYPES.ROW;
4725
5333
  rowId: string;
4726
5334
  organizationId?: string;
5335
+ applicationHandle?: string;
4727
5336
  } | {
4728
5337
  gridType: GRID_TYPES.VIDEO;
4729
5338
  videoId: string;
@@ -4755,6 +5364,7 @@ export declare interface RouterOverrides {
4755
5364
  goToRecommendedFromOrganizationRow: (screenId: string, rowId: string) => void;
4756
5365
  goToMagentaMomentsPage: (voucher?: string) => void;
4757
5366
  goToVoucherRedeemPage: () => void;
5367
+ goToSubscriptionsPage: (organizationHandle?: string) => void;
4758
5368
  updateParams: (params: URLSearchParams) => void;
4759
5369
  navigate: (path: string) => void;
4760
5370
  }
@@ -4773,25 +5383,7 @@ export declare interface RouterOverridesContextState {
4773
5383
  /**
4774
5384
  * @public
4775
5385
  */
4776
- export declare interface Row {
4777
- id: string;
4778
- rowId: string;
4779
- name: string;
4780
- description?: string;
4781
- assets: AssetsField;
4782
- type: ScreenRowType;
4783
- isLiveRow: boolean;
4784
- tiles: PaginationInterface<ItemInRow>;
4785
- numberOfLines?: number;
4786
- monetizations?: {
4787
- monetizationRef: any;
4788
- }[];
4789
- rowComponent: RowComponent.ROW | RowComponent.BANNER;
4790
- itemComponent: RowItemComponent | BannerItemComponent;
4791
- organizationId?: string;
4792
- bottomComponent?: BottomComponent;
4793
- showDescriptionAsTitle?: boolean;
4794
- }
5386
+ export declare type Row = StaticRow | DynamicRow;
4795
5387
 
4796
5388
  /**
4797
5389
  * @public
@@ -4809,17 +5401,41 @@ export declare enum ROW_ITEM_TYPES {
4809
5401
  /**
4810
5402
  * @public
4811
5403
  */
4812
- export declare interface RowBanner extends Row {
5404
+ export declare interface RowBanner extends DynamicRow {
4813
5405
  rowComponent: RowComponent.BANNER;
4814
5406
  itemComponent: BannerItemComponent;
4815
5407
  }
4816
5408
 
5409
+ export declare interface RowButton {
5410
+ id: string;
5411
+ enabled: boolean;
5412
+ href: string;
5413
+ text: Translation;
5414
+ variant: 'primary' | 'secondary';
5415
+ leftIcon?: 'play';
5416
+ }
5417
+
4817
5418
  /**
4818
5419
  * @public
4819
5420
  */
4820
5421
  export declare enum RowComponent {
4821
5422
  ROW = "ROW",
4822
- BANNER = "BANNER"
5423
+ BANNER = "BANNER",
5424
+ BENEFITS = "BENEFITS",
5425
+ REVIEWS = "REVIEWS",
5426
+ MONETIZATIONS = "MONETIZATIONS",
5427
+ SPLIT_LAYOUT = "SPLIT_LAYOUT",
5428
+ NUMBERS = "NUMBERS",
5429
+ FAQ = "FAQ",
5430
+ CTA_BANNER = "CTA_BANNER",
5431
+ PRESENT_BANNER = "PRESENT_BANNER",
5432
+ MONETIZATION_BANNER = "MONETIZATION_BANNER",
5433
+ VIDEO_BANNER = "VIDEO_BANNER",
5434
+ MEDIA_ACCORDEON = "MEDIA_ACCORDEON",
5435
+ EXPLORE = "EXPLORE",
5436
+ BACKGROUND_BANNER = "BACKGROUND_BANNER",
5437
+ PARTNER_LOGOS = "PARTNER_LOGOS",
5438
+ HOMEPAGE_BANNER = "HOMEPAGE_BANNER"
4823
5439
  }
4824
5440
 
4825
5441
  export declare enum RowFilterCollection {
@@ -4853,72 +5469,10 @@ export declare interface RowFilterWhereField {
4853
5469
  value: any;
4854
5470
  }
4855
5471
 
4856
- export declare type RowInScreen = {
4857
- /**
4858
- * Firebase document path. If not provided, the row is not defined in db and is dynamically generated (e.g. recommendation row).
4859
- */
4860
- path?: string;
4861
- /**
4862
- * Tivio row ID.
4863
- */
4864
- rowId: string;
4865
- /**
4866
- * If all items are from the same organization this will be set.
4867
- */
4868
- organizationId?: string;
4869
- /**
4870
- * Row name.
4871
- */
4872
- name: Translation;
4873
- /**
4874
- * Row filter based on which to pick tiles.
4875
- */
4876
- filter?: RowFilterField;
4877
- /**
4878
- * Row order in the screen.
4879
- */
4880
- order?: number;
4881
- /**
4882
- * Number of lines of the title.
4883
- */
4884
- numberOfLines?: number;
4885
- /**
4886
- * Standard row or a Banner.
4887
- */
4888
- rowComponent: RowComponent;
4889
- /**
4890
- * Component to use to render the tiles in the row.
4891
- */
4892
- itemComponent: RowItemComponent | BannerItemComponent;
4893
- /**
4894
- * Type of the row (continue to watch, custom, filter, ...).
4895
- */
4896
- type: ScreenRowType;
4897
- /**
4898
- * Items to display in the row.
4899
- */
4900
- tiles: GetTilesInRowResponse;
4901
- /**
4902
- * Setting for decided what to show bellow the tiles
4903
- */
4904
- bottomComponent?: BottomComponent;
4905
- /**
4906
- * Setting for decided whether to show description instead of title in the tiles
4907
- */
4908
- showDescriptionAsTitle?: boolean;
4909
- /**
4910
- * Setting for decided whether to hide title in the tiles/banners
4911
- */
4912
- hideTitle?: boolean;
4913
- /**
4914
- * Link to external URL
4915
- */
4916
- externalUrl?: string;
4917
- /**
4918
- * Title of Play button
4919
- */
4920
- playButtonTitle?: Translation;
4921
- };
5472
+ /**
5473
+ * Row in screen - can be either static or dynamic
5474
+ */
5475
+ export declare type RowInScreen = StaticRowInScreen | DynamicRowInScreen;
4922
5476
 
4923
5477
  /**
4924
5478
  * @public
@@ -4931,6 +5485,7 @@ export declare interface RowItem extends RowItemAssets {
4931
5485
  assets: AssetsField | null;
4932
5486
  application: RowItemApplicationData | null;
4933
5487
  feedVisible?: boolean;
5488
+ tileProps?: TileProps;
4934
5489
  }
4935
5490
 
4936
5491
  /**
@@ -4968,7 +5523,11 @@ export declare enum RowItemComponent {
4968
5523
  ROW_ITEM_CREATORS_LANDSCAPE = "ROW_ITEM_CREATORS_LANDSCAPE",
4969
5524
  ROW_ITEM_CIRCLED = "ROW_ITEM_CIRCLED",
4970
5525
  ROW_ITEM_HIGHLIGHTED = "ROW_ITEM_HIGHLIGHTED",
4971
- ROW_ITEM_PLAIN = "ROW_ITEM_PLAIN"
5526
+ ROW_ITEM_PLAIN = "ROW_ITEM_PLAIN",
5527
+ SIDE_BANNER = "SIDE_BANNER",
5528
+ ROW_ITEM_FEATURED = "ROW_ITEM_FEATURED",
5529
+ CATEGORY_GRID = "CATEGORY_GRID",
5530
+ HERO_BANNER = "HERO_BANNER"
4972
5531
  }
4973
5532
 
4974
5533
  /**
@@ -4985,6 +5544,16 @@ export declare type RowItemsSubscription = (rowId: string, cb: (error: Error | n
4985
5544
  hasNextPage: boolean;
4986
5545
  } | null, fetchMore: null | ((count?: number) => void), isLoading: boolean) => void, limit?: number) => Disposer_2;
4987
5546
 
5547
+ /**
5548
+ * @public
5549
+ */
5550
+ export declare interface RowMonetizationData {
5551
+ id: string;
5552
+ path: string;
5553
+ placementType: 'channel' | 'tvChannel' | 'condition' | 'video' | 'section' | 'row';
5554
+ type: MonetizationType;
5555
+ }
5556
+
4988
5557
  /**
4989
5558
  * RowOrderByFieldPath that is used in @tivio/firebase needs to be retyped here.
4990
5559
  * @public
@@ -4997,7 +5566,7 @@ export declare enum RowOrderByFieldPath {
4997
5566
  /**
4998
5567
  * @public
4999
5568
  */
5000
- export declare interface RowStandard extends Row {
5569
+ export declare interface RowStandard extends DynamicRow {
5001
5570
  rowComponent: RowComponent.ROW;
5002
5571
  itemComponent: RowItemComponent;
5003
5572
  }
@@ -5110,6 +5679,11 @@ declare interface Screen_2 {
5110
5679
  hasNextPage: boolean;
5111
5680
  refetchIfNeeded: () => Promise<void>;
5112
5681
  allowOrganizationBanner?: boolean;
5682
+ /**
5683
+ * Path to content (e.g., "videos/ID" or "tvChannels/ID").
5684
+ * Used for PLAYER screen type to specify which content to play.
5685
+ */
5686
+ contentPath?: string;
5113
5687
  }
5114
5688
  export { Screen_2 as Screen }
5115
5689
 
@@ -5141,7 +5715,7 @@ export declare type ScreenConfig = {
5141
5715
  /**
5142
5716
  * @public
5143
5717
  */
5144
- export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites' | 'topWatched' | 'applications';
5718
+ export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites' | 'topWatched' | 'applications' | 'static';
5145
5719
 
5146
5720
  /**
5147
5721
  * Listen to screen data
@@ -5158,7 +5732,9 @@ export declare enum ScreenType {
5158
5732
  EMBED = "embed",
5159
5733
  RECOMMENDATION = "recommendation",
5160
5734
  FEED = "feed",
5161
- EPG = "epg"
5735
+ EPG = "epg",
5736
+ LANDING = "landing",
5737
+ PLAYER = "player"
5162
5738
  }
5163
5739
 
5164
5740
  /**
@@ -5182,14 +5758,6 @@ export declare type SdkReactConfig = Omit<TivioConfig, 'language'> & {
5182
5758
  language?: LangCode;
5183
5759
  };
5184
5760
 
5185
- /**
5186
- * @public
5187
- */
5188
- export declare interface SDKUserAuthCallbacks {
5189
- onGoToLogin?: () => void;
5190
- onGoToRegistration?: () => void;
5191
- }
5192
-
5193
5761
  /**
5194
5762
  * @public
5195
5763
  * @deprecated sections are no longer used.
@@ -5404,7 +5972,22 @@ export declare const showGdprConsentPreferences: () => Promise<void>;
5404
5972
  /**
5405
5973
  * @public
5406
5974
  */
5407
- export declare type SignInProvider = 'google' | 'patreon' | 'apple';
5975
+ export declare interface SideBannerProps {
5976
+ title: string;
5977
+ description: string;
5978
+ cover: string;
5979
+ backgroundColor?: string;
5980
+ buttonText?: string;
5981
+ onButtonClick?: () => void;
5982
+ buttonHref?: string;
5983
+ imagePosition?: 'left' | 'right';
5984
+ textBackgroundColor?: string;
5985
+ }
5986
+
5987
+ /**
5988
+ * @public
5989
+ */
5990
+ export declare type SignInProvider = 'google' | 'patreon' | 'apple' | 'facebook';
5408
5991
 
5409
5992
  /**
5410
5993
  * Simplified VideoController interface for external rendering
@@ -5493,27 +6076,6 @@ export declare interface SimplifiedVideoController {
5493
6076
  muted: boolean;
5494
6077
  volume: number;
5495
6078
  }) => void): void;
5496
- /**
5497
- * Add an event listener for ad started events
5498
- * @param event - Must be 'ad-started'
5499
- * @param callback - Function called when an ad starts playing
5500
- */
5501
- addEventListener(event: 'ad-started', callback: (adMetadata: AdMetadata & {
5502
- customAdMetadata?: Record<string, unknown> | null;
5503
- ctaElement: HTMLElement | null;
5504
- }) => void): void;
5505
- /**
5506
- * Add an event listener for ad ended events
5507
- * @param event - Must be 'ad-ended'
5508
- * @param callback - Function called when an ad finishes playing
5509
- */
5510
- addEventListener(event: 'ad-ended', callback: () => void): void;
5511
- /**
5512
- * Add an event listener for companion ads events
5513
- * @param event - Must be 'companion-ads'
5514
- * @param callback - Function called when companion ads are available
5515
- */
5516
- addEventListener(event: 'companion-ads', callback: (companionAds: CompanionAd[]) => void): void;
5517
6079
  /**
5518
6080
  * Remove an event listener
5519
6081
  * @param event - The event name to stop listening for
@@ -5525,19 +6087,6 @@ export declare interface SimplifiedVideoController {
5525
6087
  * @param source - The new source to load (can be a video path, channel path, or source parameters)
5526
6088
  */
5527
6089
  setSource(source: WebPlayerProps['source']): void;
5528
- setAdsConfig(adsConfig: StaticAdsBreak[]): void;
5529
- /**
5530
- * Toggle the minimal OSD mode.
5531
- *
5532
- * When enabled, the player shows only a minimal set of controls (play/pause,
5533
- * volume and fullscreen) and a small center play/pause icon that briefly
5534
- * flashes when the state changes. Intended for small/pinned containers such
5535
- * as a scroll-fixed mini player in the corner of the page or a full-width
5536
- * mobile player pinned to the top of the viewport.
5537
- *
5538
- * @param isMinimal - Whether the minimal OSD should be used
5539
- */
5540
- setIsMinimal(isMinimal: boolean): void;
5541
6090
  /**
5542
6091
  * Destroy the player and clean up all resources
5543
6092
  */
@@ -5580,100 +6129,314 @@ export declare type SourceBase = {
5580
6129
  };
5581
6130
 
5582
6131
  /**
5583
- * Used to instantiate types of corresponding interfaces (children of {@link PlayerSourceInterface}).
5584
- * @public
6132
+ * Used to instantiate types of corresponding interfaces (children of {@link PlayerSourceInterface}).
6133
+ * @public
6134
+ */
6135
+ export declare type SourceParams = VodTivioSourceParams | VodExternalSourceParams | ChannelSourceParams | VirtualChannelSourceParams;
6136
+
6137
+ /**
6138
+ * Based on this value player will change how the source is played. This, for example, affects whether source:
6139
+ * - will be seekable or not
6140
+ * - duration will be dynamically updated as time goes on
6141
+ * - live button will be shown in ui
6142
+ */
6143
+ export declare enum SourcePlayMode {
6144
+ ON_DEMAND = "ON_DEMAND",
6145
+ LIVE = "LIVE",
6146
+ /**
6147
+ * ON_DEMAND and LIVE at the same time.
6148
+ */
6149
+ HYBRID = "HYBRID"
6150
+ }
6151
+
6152
+ /**
6153
+ * @public
6154
+ */
6155
+ export declare enum SourceType {
6156
+ ADVERTISEMENT = "ad",
6157
+ CHANNEL = "channel",
6158
+ VOD_TIVIO = "vod_tivio",
6159
+ VOD_EXTERNAL = "vod_external"
6160
+ }
6161
+
6162
+ export declare interface SplitLayoutItem {
6163
+ asset: ScalableAsset;
6164
+ name: Translation;
6165
+ description?: Translation;
6166
+ }
6167
+
6168
+ export declare type SplitLayoutSpecificData = SplitLayoutItem;
6169
+
6170
+ /**
6171
+ * External information of video from SportyTv EPG import
6172
+ * @public
6173
+ */
6174
+ export declare interface SportyExternals {
6175
+ showId?: string;
6176
+ showGroup?: string;
6177
+ showTitle?: string;
6178
+ }
6179
+
6180
+ /**
6181
+ * @public
6182
+ */
6183
+ export declare type StartAndContinuePosition = {
6184
+ /**
6185
+ * Relative from stream start, in ms.
6186
+ *
6187
+ * On input to Tivio either `startFromPosition` or `continueFromPosition` must always be provided.
6188
+ *
6189
+ * On output from Tivio it is always defined. Tivio can change this value.
6190
+ * (e.g. in order to fix start position of a TV program)
6191
+ */
6192
+ startFromPosition?: number;
6193
+ /**
6194
+ * Relative from stream start, in ms.
6195
+ *
6196
+ * On input to Tivio either `startFromPosition` or `continueFromPosition` must always be provided.
6197
+ *
6198
+ * If provided, tivio will not correct it and will send this value back in startFromPosition.
6199
+ * If provided, startFromPosition is ignored.
6200
+ */
6201
+ continueFromPosition?: number;
6202
+ };
6203
+
6204
+ export declare type StartLiveStreamPayload = BaseWidgetControlPayload;
6205
+
6206
+ declare interface StartLiveStreamRequest {
6207
+ action: 'startLiveStream';
6208
+ payload: StartLiveStreamPayload;
6209
+ }
6210
+
6211
+ export declare interface StartLiveStreamResponse {
6212
+ liveStreamProcessPath: string;
6213
+ streamingStudioProcessPath: string;
6214
+ error?: string;
6215
+ }
6216
+
6217
+ /**
6218
+ * Row components available for static rows (BENEFITS, FAQ, etc.)
6219
+ * Matches the rowComponent constraint in StaticRow type definition
6220
+ * @public
6221
+ */
6222
+ export declare const STATIC_ROW_COMPONENTS: readonly [RowComponent.BENEFITS, RowComponent.REVIEWS, RowComponent.MONETIZATIONS, RowComponent.SPLIT_LAYOUT, RowComponent.NUMBERS, RowComponent.FAQ, RowComponent.CTA_BANNER, RowComponent.PRESENT_BANNER, RowComponent.MONETIZATION_BANNER, RowComponent.VIDEO_BANNER, RowComponent.MEDIA_ACCORDEON, RowComponent.EXPLORE, RowComponent.BACKGROUND_BANNER, RowComponent.PARTNER_LOGOS, RowComponent.HOMEPAGE_BANNER];
6223
+
6224
+ /**
6225
+ * Static row (e.g. benefits, reviews, FAQ) - doesn't have itemComponent or dynamic fields
6226
+ * Uses special row components like BENEFITS, REVIEWS, FAQ, etc.
6227
+ * @public
6228
+ */
6229
+ export declare type StaticRow = StaticRowBenefits | StaticRowReviews | StaticRowNumbers | StaticRowSplitLayout | StaticRowFaq | StaticRowPresentBanner | StaticRowExplore | StaticRowCtaBanner | StaticRowWithoutCustomItems;
6230
+
6231
+ /**
6232
+ * Benefits row
6233
+ * @public
6234
+ */
6235
+ export declare interface StaticRowBenefits extends BaseRow {
6236
+ type: 'static';
6237
+ rowComponent: RowComponent.BENEFITS;
6238
+ customItems: BenefitTileSpecificData;
6239
+ screenRef?: string;
6240
+ videoRef?: string;
6241
+ buttons?: RowButton[];
6242
+ }
6243
+
6244
+ /**
6245
+ * CTA Banner row
6246
+ * @public
6247
+ */
6248
+ export declare interface StaticRowCtaBanner extends BaseRow {
6249
+ type: 'static';
6250
+ rowComponent: RowComponent.CTA_BANNER;
6251
+ customItems: CtaBannerExtendRowData;
6252
+ screenRef?: string;
6253
+ videoRef?: string;
6254
+ variant?: 'light' | 'dark' | 'default' | 'large';
6255
+ heading?: Translation;
6256
+ subtitle?: {
6257
+ text: Translation;
6258
+ showIcon?: boolean;
6259
+ };
6260
+ button?: {
6261
+ href: string;
6262
+ text: Translation;
6263
+ };
6264
+ }
6265
+
6266
+ /**
6267
+ * Explore row
6268
+ * @public
6269
+ */
6270
+ export declare interface StaticRowExplore extends BaseRow {
6271
+ type: 'static';
6272
+ rowComponent: RowComponent.EXPLORE;
6273
+ customItems: ExploreTileSpecificData;
6274
+ screenRef?: string;
6275
+ videoRef?: string;
6276
+ }
6277
+
6278
+ /**
6279
+ * FAQ row
6280
+ * @public
6281
+ */
6282
+ export declare interface StaticRowFaq extends BaseRow {
6283
+ type: 'static';
6284
+ rowComponent: RowComponent.FAQ;
6285
+ customItems: FaqTileSpecificData;
6286
+ screenRef?: string;
6287
+ videoRef?: string;
6288
+ email?: string;
6289
+ }
6290
+
6291
+ /**
6292
+ * Static row type - discriminated union by rowComponent
6293
+ */
6294
+ export declare type StaticRowInScreen = StaticRowInScreenCtaBanner | StaticRowInScreenPresentBanner | StaticRowInScreenVideoBanner | StaticRowInScreenHomepageBanner | StaticRowInScreenFaq | StaticRowInScreenBenefits | StaticRowInScreenWithTiles;
6295
+
6296
+ /**
6297
+ * Benefits static row - has tiles + buttons
6298
+ */
6299
+ declare type StaticRowInScreenBenefits = BaseStaticRowInScreen & {
6300
+ rowComponent: RowComponent.BENEFITS;
6301
+ buttons?: RowButton[];
6302
+ tiles: PaginatedResponse<TileData<'static'>, 'rowId'>;
6303
+ };
6304
+
6305
+ /**
6306
+ * CTA Banner static row - data flatten to row level (no tiles)
6307
+ */
6308
+ declare type StaticRowInScreenCtaBanner = BaseStaticRowInScreen & {
6309
+ rowComponent: RowComponent.CTA_BANNER;
6310
+ } & CtaBannerExtendRowData;
6311
+
6312
+ /**
6313
+ * FAQ static row - has description and email fields specific to FAQ
6314
+ */
6315
+ declare type StaticRowInScreenFaq = BaseStaticRowInScreen & {
6316
+ rowComponent: RowComponent.FAQ;
6317
+ description?: Translation;
6318
+ email?: string;
6319
+ tiles: PaginatedResponse<TileData<'static'>, 'rowId'>;
6320
+ };
6321
+
6322
+ /**
6323
+ * Homepage Banner static row - multiline banner for homepage (no tiles)
6324
+ */
6325
+ declare type StaticRowInScreenHomepageBanner = BaseStaticRowInScreen & {
6326
+ rowComponent: RowComponent.HOMEPAGE_BANNER;
6327
+ } & HomepageBannerExtendRowData;
6328
+
6329
+ /**
6330
+ * Present Banner static row - organization fields + videoPath flatten to row level (no tiles)
6331
+ */
6332
+ declare type StaticRowInScreenPresentBanner = BaseStaticRowInScreen & {
6333
+ rowComponent: RowComponent.PRESENT_BANNER;
6334
+ videoPath?: string;
6335
+ } & Omit<PresentBannerExtendRowData, 'name' | 'description'>;
6336
+
6337
+ /**
6338
+ * Video Banner static row - videoPath flatten to row level (no tiles)
5585
6339
  */
5586
- export declare type SourceParams = VodTivioSourceParams | VodExternalSourceParams | ChannelSourceParams | VirtualChannelSourceParams;
6340
+ declare type StaticRowInScreenVideoBanner = BaseStaticRowInScreen & {
6341
+ rowComponent: RowComponent.VIDEO_BANNER;
6342
+ videoPath?: string;
6343
+ };
5587
6344
 
5588
6345
  /**
5589
- * Based on this value player will change how the source is played. This, for example, affects whether source:
5590
- * - will be seekable or not
5591
- * - duration will be dynamically updated as time goes on
5592
- * - live button will be shown in ui
6346
+ * Static rows with tiles (NUMBERS, EXPLORE, etc.)
5593
6347
  */
5594
- export declare enum SourcePlayMode {
5595
- ON_DEMAND = "ON_DEMAND",
5596
- LIVE = "LIVE",
5597
- /**
5598
- * ON_DEMAND and LIVE at the same time.
5599
- */
5600
- HYBRID = "HYBRID"
5601
- }
6348
+ declare type StaticRowInScreenWithTiles = BaseStaticRowInScreen & {
6349
+ rowComponent: Exclude<RowComponent, RowComponent.CTA_BANNER | RowComponent.PRESENT_BANNER | RowComponent.VIDEO_BANNER | RowComponent.HOMEPAGE_BANNER | RowComponent.FAQ | RowComponent.BENEFITS>;
6350
+ tiles: PaginatedResponse<TileData<'static'>, 'rowId'>;
6351
+ };
5602
6352
 
5603
6353
  /**
6354
+ * Numbers row
5604
6355
  * @public
5605
6356
  */
5606
- export declare enum SourceType {
5607
- ADVERTISEMENT = "ad",
5608
- CHANNEL = "channel",
5609
- VOD_TIVIO = "vod_tivio",
5610
- VOD_EXTERNAL = "vod_external"
6357
+ export declare interface StaticRowNumbers extends BaseRow {
6358
+ type: 'static';
6359
+ rowComponent: RowComponent.NUMBERS;
6360
+ customItems: NumbersTileSpecificData;
6361
+ screenRef?: string;
6362
+ videoRef?: string;
6363
+ variant?: 'default' | 'large';
5611
6364
  }
5612
6365
 
5613
6366
  /**
5614
- * External information of video from SportyTv EPG import
6367
+ * Present banner row
5615
6368
  * @public
5616
6369
  */
5617
- export declare interface SportyExternals {
5618
- showId?: string;
5619
- showGroup?: string;
5620
- showTitle?: string;
6370
+ export declare interface StaticRowPresentBanner extends BaseRow {
6371
+ type: 'static';
6372
+ rowComponent: RowComponent.PRESENT_BANNER;
6373
+ customItems: PresentBannerExtendRowData;
6374
+ screenRef?: string;
6375
+ videoRef?: string;
6376
+ subname?: Translation;
6377
+ avatars?: ScalableAsset[];
6378
+ avatarsText?: Translation;
6379
+ asset?: ScalableAsset;
6380
+ videoPath?: string;
6381
+ buttons?: RowButton[];
5621
6382
  }
5622
6383
 
5623
6384
  /**
6385
+ * Reviews row
5624
6386
  * @public
5625
6387
  */
5626
- export declare type StartAndContinuePosition = {
5627
- /**
5628
- * Relative from stream start, in ms.
5629
- *
5630
- * On input to Tivio either `startFromPosition` or `continueFromPosition` must always be provided.
5631
- *
5632
- * On output from Tivio it is always defined. Tivio can change this value.
5633
- * (e.g. in order to fix start position of a TV program)
5634
- */
5635
- startFromPosition?: number;
5636
- /**
5637
- * Relative from stream start, in ms.
5638
- *
5639
- * On input to Tivio either `startFromPosition` or `continueFromPosition` must always be provided.
5640
- *
5641
- * If provided, tivio will not correct it and will send this value back in startFromPosition.
5642
- * If provided, startFromPosition is ignored.
5643
- */
5644
- continueFromPosition?: number;
5645
- };
5646
-
5647
- export declare type StartLiveStreamPayload = BaseWidgetControlPayload;
5648
-
5649
- declare interface StartLiveStreamRequest {
5650
- action: 'startLiveStream';
5651
- payload: StartLiveStreamPayload;
6388
+ export declare interface StaticRowReviews extends BaseRow {
6389
+ type: 'static';
6390
+ rowComponent: RowComponent.REVIEWS;
6391
+ customItems: ReviewTileSpecificData;
6392
+ screenRef?: string;
6393
+ videoRef?: string;
5652
6394
  }
5653
6395
 
5654
- export declare interface StartLiveStreamResponse {
5655
- liveStreamProcessPath: string;
5656
- streamingStudioProcessPath: string;
5657
- error?: string;
6396
+ /**
6397
+ * Split layout row
6398
+ * @public
6399
+ */
6400
+ export declare interface StaticRowSplitLayout extends BaseRow {
6401
+ type: 'static';
6402
+ rowComponent: RowComponent.SPLIT_LAYOUT;
6403
+ customItems: SplitLayoutSpecificData;
6404
+ screenRef?: string;
6405
+ videoRef?: string;
5658
6406
  }
5659
6407
 
5660
- export declare type StaticAdsBreak = StaticAdsBreakPostrollPreroll | StaticAdsBreakMidroll | StaticAdsBreakReplacement;
5661
-
5662
- export declare interface StaticAdsBreakMidroll {
5663
- type: 'midroll';
5664
- from: number;
5665
- url: string;
6408
+ /**
6409
+ * Static row without customItems (video banner, media accordion, monetization banner, background banner)
6410
+ * @public
6411
+ */
6412
+ export declare interface StaticRowWithoutCustomItems extends BaseRow {
6413
+ type: 'static';
6414
+ rowComponent: RowComponent.VIDEO_BANNER | RowComponent.MEDIA_ACCORDEON | RowComponent.MONETIZATION_BANNER | RowComponent.BACKGROUND_BANNER | RowComponent.PARTNER_LOGOS;
6415
+ screenRef?: string;
6416
+ videoRef?: string;
6417
+ videoPath?: string;
5666
6418
  }
5667
6419
 
5668
- declare interface StaticAdsBreakPostrollPreroll {
5669
- type: 'preroll' | 'postroll';
5670
- url: string;
6420
+ /**
6421
+ * Tile data for static rows with itemSpecificData (BENEFITS, FAQ, NUMBERS, SPLIT_LAYOUT, REVIEWS, EXPLORE).
6422
+ * @public
6423
+ */
6424
+ export declare interface StaticTileData<ItemSpecificData extends StaticTileItemSpecificData = StaticTileItemSpecificData> {
6425
+ /**
6426
+ * Specific data for an item type (e.g. benefit, faq, numbers, split layout, etc.).
6427
+ */
6428
+ itemSpecificData: ItemSpecificData;
5671
6429
  }
5672
6430
 
5673
- export declare interface StaticAdsBreakReplacement {
5674
- type: 'replacement';
5675
- url: string;
5676
- }
6431
+ /**
6432
+ * Type for itemSpecificData in API tile responses.
6433
+ * Excludes types that don't use itemSpecificData in tiles:
6434
+ * - MediaAccordeonTileSpecificData: MEDIA_ACCORDEON only uses path/id/name fields
6435
+ * - PresentBannerExtendRowData: PRESENT_BANNER data is flatten to row level (no tiles)
6436
+ * - CtaBannerExtendRowData: CTA_BANNER data is flatten to row level (no tiles)
6437
+ * @public
6438
+ */
6439
+ export declare type StaticTileItemSpecificData = BenefitTileSpecificData | ReviewTileSpecificData | NumbersTileSpecificData | SplitLayoutSpecificData | FaqTileSpecificData | ExploreTileSpecificData | MediaAccordeonTileSpecificData;
5677
6440
 
5678
6441
  /**
5679
6442
  * @public
@@ -5689,6 +6452,15 @@ export declare interface StoreBadgeConfig {
5689
6452
  appId: string;
5690
6453
  }
5691
6454
 
6455
+ /**
6456
+ * @public
6457
+ * Streaming profile for buffer configuration.
6458
+ * - 'low': Minimal buffering for fastest camera switches (bufferingGoal: 3s)
6459
+ * - 'medium': Balanced buffering (bufferingGoal: 5s) - default
6460
+ * - 'high': Maximum buffering for stable playback (bufferingGoal: 15s)
6461
+ */
6462
+ export declare type StreamingProfile = 'low' | 'medium' | 'high';
6463
+
5692
6464
  export declare interface SubmitAnswerRequest {
5693
6465
  answerOptionId?: string;
5694
6466
  answerText?: string;
@@ -5757,6 +6529,25 @@ declare interface SubscriptionInfo {
5757
6529
  frequency: string;
5758
6530
  }
5759
6531
 
6532
+ /**
6533
+ * Extended language codes for subtitle tracks.
6534
+ * Includes all LangCode values plus additional languages only needed for subtitles.
6535
+ * @public
6536
+ */
6537
+ export declare type SubtitleLangCode = LangCode | 'uk' | 'zh';
6538
+
6539
+ /**
6540
+ * Mapping of subtitle language codes to their English names.
6541
+ * @public
6542
+ */
6543
+ export declare const SubtitleLangCodeToTitle: Record<SubtitleLangCode, string>;
6544
+
6545
+ /**
6546
+ * All subtitle language codes including extra languages not in LangCode.
6547
+ * @public
6548
+ */
6549
+ export declare const subtitleLanguages: SubtitleLangCode[];
6550
+
5760
6551
  /**
5761
6552
  * @public
5762
6553
  */
@@ -5797,8 +6588,8 @@ export declare interface Tag extends RowItem {
5797
6588
  detailBanner?: string;
5798
6589
  availableSeasons?: AvailableSeason[];
5799
6590
  isFavorite: boolean;
5800
- addToFavorites: () => Promise<void>;
5801
- removeFromFavorites: () => Promise<void>;
6591
+ addToFavorites: () => void;
6592
+ removeFromFavorites: () => void;
5802
6593
  cover: string;
5803
6594
  getApplicationName: () => string | undefined;
5804
6595
  seriesRef?: DocumentReference<any>;
@@ -5911,48 +6702,10 @@ export declare interface TileApplicationData {
5911
6702
  isMainApplication?: boolean;
5912
6703
  }
5913
6704
 
5914
- export declare interface TileData<ItemSpecificData = VideoTileSpecificData | TvChannelTileSpecificData | TagTileSpecificData | ArticleTileSpecificData | SeriesTileSpecificData> {
5915
- /**
5916
- * Tile item ID.
5917
- */
5918
- id: string;
5919
- /**
5920
- * Timestamp of the item creation.
5921
- */
5922
- created: number;
5923
- /**
5924
- * Type of the tile. VIDEO, TV_CHANNEL, TAG, ...
5925
- */
5926
- itemType: ROW_ITEM_TYPES;
5927
- /**
5928
- * Tile item name translation.
5929
- */
5930
- name: Translation;
5931
- /**
5932
- * Firestore path to the item.
5933
- */
5934
- path: string;
5935
- /**
5936
- * Application info including logo, name and number of videos.
5937
- */
5938
- application?: TileApplicationData;
5939
- /**
5940
- * Specific data for an item type (e.g. video, tv channel, tag, ...).
5941
- */
5942
- itemSpecificData: ItemSpecificData;
5943
- }
5944
-
5945
- export declare interface TileMonetizationData {
5946
- id: string;
5947
- path: string;
5948
- placementType: 'channel' | 'tvChannel' | 'condition' | 'video' | 'section' | 'row';
5949
- type: MonetizationType;
5950
- }
5951
-
5952
6705
  /**
5953
6706
  * @public
5954
6707
  */
5955
- export declare interface TileProps {
6708
+ export declare interface TileComponentProps {
5956
6709
  children?: React_2.ReactNode;
5957
6710
  cover?: string;
5958
6711
  bottomLabel: string;
@@ -5994,12 +6747,49 @@ export declare interface TileProps {
5994
6747
  itemType?: ROW_ITEM_TYPES;
5995
6748
  description?: string;
5996
6749
  showDescriptionAsTitle?: boolean;
6750
+ isSeries?: boolean;
6751
+ episodeCount?: number;
6752
+ /**
6753
+ * Optional label to display in the top-right corner of the tile (e.g., "Exclusive").
6754
+ * Label text (already resolved for the current language).
6755
+ */
6756
+ topLabel?: string;
6757
+ /**
6758
+ * CSS color for the topLabel background. Defaults to white.
6759
+ */
6760
+ topLabelColor?: string;
6761
+ }
6762
+
6763
+ export declare type TileData<T extends ScreenRowType = ScreenRowType> = T extends 'static' ? StaticTileData : DocumentTileData;
6764
+
6765
+ export declare interface TileMonetizationData {
6766
+ id: string;
6767
+ path: string;
6768
+ placementType: 'channel' | 'tvChannel' | 'condition' | 'video' | 'section' | 'row';
6769
+ type: MonetizationType;
6770
+ }
6771
+
6772
+ /**
6773
+ * Additional properties that can be applied to tiles for visual customization
6774
+ * @public
6775
+ */
6776
+ export declare interface TileProps {
6777
+ topRightLabel?: TileTopRightLabel;
5997
6778
  }
5998
6779
 
5999
6780
  /**
6000
6781
  * @public
6001
6782
  */
6002
- export declare type TilePropsPartial = Partial<TileProps>;
6783
+ export declare type TilePropsPartial = Partial<TileComponentProps>;
6784
+
6785
+ /**
6786
+ * Custom label to be displayed on a tile (e.g., "Exclusive" badge)
6787
+ * @public
6788
+ */
6789
+ export declare interface TileTopRightLabel {
6790
+ text: string;
6791
+ color?: string;
6792
+ }
6003
6793
 
6004
6794
  /**
6005
6795
  * @public
@@ -6091,10 +6881,6 @@ export declare interface TivioComponents {
6091
6881
  ContentSortPicker: React_2.ComponentType<ContentSortPickerProps>;
6092
6882
  WebTivioProVideoScreen: React_2.ComponentType<WebTivioProVideoScreenProps>;
6093
6883
  RemoteController: React_2.ComponentType<RemoteControllerProps>;
6094
- MonetizationsSelectOverlay: React_2.ComponentType;
6095
- MonetizationsSelectOverlayContextProvider: React_2.ComponentType<{
6096
- children: React_2.ReactNode;
6097
- }>;
6098
6884
  }
6099
6885
 
6100
6886
  /**
@@ -6131,7 +6917,10 @@ export declare interface TivioConfig {
6131
6917
  * @deprecated this field is no longer in use and has no impact when set.
6132
6918
  */
6133
6919
  firestore?: any | null;
6134
- currency: Currency;
6920
+ /**
6921
+ * @deprecated currency should be determined by `currencies` field in organization document in database, do not rely on this field.
6922
+ */
6923
+ currency?: Currency;
6135
6924
  /**
6136
6925
  * Represents an optional array of LanguageSelector objects.
6137
6926
  * Used to define and manage a list of supported languages for different language-usages (user, content,...).
@@ -6290,6 +7079,10 @@ export declare type TivioInternalComponents = {
6290
7079
  }>;
6291
7080
  Banner: React_2.ComponentType<BannerPropsPartial>;
6292
7081
  CustomAppHistoryContext: React_2.Context<HistoryContextData | undefined>;
7082
+ ScrollableSubscriptionList: React_2.ComponentType<{
7083
+ subscriptions: PurchasableMonetization[];
7084
+ renderSubscription: (subscription: PurchasableMonetization) => React_2.ReactNode;
7085
+ }>;
6293
7086
  };
6294
7087
 
6295
7088
  /**
@@ -6340,6 +7133,13 @@ export declare type TivioInternalHooks = {
6340
7133
  error: Error | null;
6341
7134
  loading: boolean;
6342
7135
  });
7136
+ useScrollShadows: () => {
7137
+ scrollRef: React_2.RefObject<HTMLDivElement>;
7138
+ showLeftShadow: boolean;
7139
+ showRightShadow: boolean;
7140
+ shouldCenter: boolean;
7141
+ checkScrollShadows: () => void;
7142
+ };
6343
7143
  useTvChannel: UseTvChannel;
6344
7144
  useUser: () => {
6345
7145
  user: User | null;
@@ -6367,9 +7167,7 @@ export declare type TivioInternalProviders = {
6367
7167
  UserContextProvider: React_2.ComponentType<{
6368
7168
  children?: React_2.ReactNode;
6369
7169
  }>;
6370
- MonetizationsSelectOverlayContextProvider: React_2.ComponentType<{
6371
- children: React_2.ReactNode;
6372
- }>;
7170
+ MonetizationsSelectOverlayContextProvider: React_2.ComponentType;
6373
7171
  QerkoOverlayContextProvider: React_2.ComponentType;
6374
7172
  /**
6375
7173
  * @deprecated do not use, this provider will be removed in the future
@@ -6466,7 +7264,7 @@ export declare type TivioReactBundle = {
6466
7264
  subscriptions: TivioSubscriptions;
6467
7265
  purchaseVideoWithQerko: (videoId: string, monetizationId: string, voucher?: {
6468
7266
  expirationDate: Date;
6469
- }) => Promise<QerkoPaymentInfo>;
7267
+ }, email?: string) => Promise<QerkoPaymentInfo>;
6470
7268
  purchaseSubscriptionWithQerko: (monetizationId: string, voucher?: {
6471
7269
  expirationDate: Date;
6472
7270
  }) => Promise<QerkoPaymentInfo>;
@@ -6479,8 +7277,6 @@ export declare type TivioReactBundle = {
6479
7277
  */
6480
7278
  internal: TivioInternalBundle;
6481
7279
  analytics: TivioAnalytics;
6482
- addToFavoritesByPath: (path: string) => Promise<void>;
6483
- removeFromFavoritesByPath: (path: string) => Promise<void>;
6484
7280
  destroy: () => Promise<void>;
6485
7281
  } & Pick<TivioSetters, 'setBundleVersion' | 'setUser' | 'setLanguage' | 'setStorageManager'> & Omit<Partial<TivioJsBundleExposedApi>, 'createPlayerWrapper'>;
6486
7282
 
@@ -6609,7 +7405,7 @@ export declare interface TvAppProps {
6609
7405
  /**
6610
7406
  * @public
6611
7407
  */
6612
- export declare interface TvChannel extends RowItem, MonetizableItem {
7408
+ export declare interface TvChannel extends RowItem {
6613
7409
  id: string;
6614
7410
  itemType: ROW_ITEM_TYPES.TV_CHANNEL;
6615
7411
  name: string;
@@ -6620,11 +7416,17 @@ export declare interface TvChannel extends RowItem, MonetizableItem {
6620
7416
  logoPendingOverlayWidth?: string;
6621
7417
  hls: string;
6622
7418
  dash: string;
7419
+ /**
7420
+ * Returns all transactions and subscriptions applied to this tv channel.
7421
+ * Transactions before subscriptions, sorted by price ascending.
7422
+ */
7423
+ getPurchasableMonetizations(options?: GetPurchasableMonetizationsOptions): PurchasableMonetization[];
6623
7424
  getSourceUrl(options?: {
6624
7425
  language?: LangCode;
6625
7426
  }): Promise<GetSourceUrlResponse & {
6626
7427
  language?: LangCode;
6627
7428
  }>;
7429
+ purchasableMonetization: any | null;
6628
7430
  price: number;
6629
7431
  cover: string;
6630
7432
  isPlayable: boolean;
@@ -6654,7 +7456,12 @@ export declare enum TvChannelType {
6654
7456
  /**
6655
7457
  * "Virtual" tv channel constructed from separate videos
6656
7458
  */
6657
- VIRTUAL = "VIRTUAL"
7459
+ VIRTUAL = "VIRTUAL",
7460
+ /**
7461
+ * Scheduled channel - has EPG like VIRTUAL (admin can edit schedule)
7462
+ * but streams like CLASSIC (calls getSourceUrl on the channel, not per-video).
7463
+ */
7464
+ SCHEDULED = "SCHEDULED"
6658
7465
  }
6659
7466
 
6660
7467
  /**
@@ -6736,6 +7543,13 @@ export declare type UpdateNotificationSettingsRequest = {
6736
7543
 
6737
7544
  export declare type UpdateNotificationSettingsResponse = Promise<boolean>;
6738
7545
 
7546
+ export declare type UpdateUserEmailPayload = {
7547
+ newEmail: string;
7548
+ password: string;
7549
+ name: string;
7550
+ token?: string;
7551
+ };
7552
+
6739
7553
  export declare type UpsertCommentResponse = AddEditCommentResponse | DeleteCommentResponse;
6740
7554
 
6741
7555
  export declare type UrlNamesType = {
@@ -6798,7 +7612,7 @@ export declare const useCancelSubscription: UseCancelSubscription;
6798
7612
  * @public
6799
7613
  */
6800
7614
  export declare interface UseCancelSubscriptionsResult {
6801
- cancelSubscriptions: (subscriptionIds: string[]) => Promise<void>;
7615
+ cancelSubscriptions: (subscriptionIds: string[]) => Promise<boolean>;
6802
7616
  cancellationInfos: QerkoCancellationInfo[];
6803
7617
  errors: string[];
6804
7618
  }
@@ -7007,9 +7821,17 @@ export declare type User = {
7007
7821
  * Returns all PAID or CANCELLED user purchases (expired and non-expired)
7008
7822
  */
7009
7823
  allPurchases: Purchase[];
7824
+ /**
7825
+ * Returns all PAID or CANCELLED user purchases (expired and non-expired)
7826
+ */
7827
+ pastPurchases: Purchase[];
7828
+ /**
7829
+ * IDs of available promotions (promotion document IDs).
7830
+ * Example: ['kaGHeCMcOCEF2OcaJCcr']
7831
+ */
7010
7832
  availablePromotionsIds: string[];
7011
7833
  /**
7012
- * Returns "active" (not CANCELLED) VoD purchases ("transaction" type)
7834
+ * Returns "active" (not CANCELLED) VoD purchases ("transaction" type")
7013
7835
  */
7014
7836
  purchasedVods: Purchase[];
7015
7837
  /**
@@ -7097,9 +7919,6 @@ export declare type User = {
7097
7919
  getAllExtendableSubscriptions: () => Promise<Purchase[]>;
7098
7920
  getRssValidToken: () => Promise<TokenInterface | undefined>;
7099
7921
  getRssUrl: () => Promise<GetUserRssUrlResponse>;
7100
- getFavorites: (options?: GetUserProfileDataOptions) => Promise<FavoriteWithData[]>;
7101
- getWatchPositions: (options?: GetUserProfileDataOptions) => Promise<WatchPositionWithData[]>;
7102
- getWatchHistory: (options?: GetUserProfileDataOptions) => Promise<WatchPositionWithData[]>;
7103
7922
  invalidateAllTokens: (type: TokenType) => Promise<void>;
7104
7923
  isPartiallyRegistered: boolean;
7105
7924
  conversationStore: ConversationStore;
@@ -7145,7 +7964,7 @@ export declare interface UserNotificationSettings {
7145
7964
  * @public
7146
7965
  */
7147
7966
  export declare type UseRow = (rowId: string | null, organizationId?: string) => {
7148
- row: Row | null;
7967
+ row: BaseRow | null;
7149
7968
  error: Error | null;
7150
7969
  };
7151
7970
 
@@ -7387,7 +8206,6 @@ export declare enum VastProvider {
7387
8206
  TEST = "test",
7388
8207
  TEST_VPAID = "test-vpaid",
7389
8208
  TIVIO_ADS = "tivio-ads",
7390
- STATIC_ADS_PROVIDER = "static-ads-provider",
7391
8209
  JOJ_TEST_AD_FORM_PROGRAMMATIC = "joj-test-ad-form-programmatic",
7392
8210
  JOJ_TEST_TESTER_VASTERIX = "joj-test-tester-vasterix",
7393
8211
  JOJ_TEST_TESTER_ADFORM_30 = "joj-test-tester-adform-30"
@@ -7471,8 +8289,8 @@ export declare interface Video extends RowItem, MonetizableItem, ReactableConten
7471
8289
  tasting: Video | null;
7472
8290
  watchPosition: number | null;
7473
8291
  isFavorite: boolean;
7474
- addToFavorites: () => Promise<void>;
7475
- removeFromFavorites: () => Promise<void>;
8292
+ addToFavorites: () => void;
8293
+ removeFromFavorites: () => void;
7476
8294
  availability: ContentAvailability | null;
7477
8295
  sourceLanguages: LangCode[];
7478
8296
  urlByLanguage: (lang: LangCode) => string | undefined;
@@ -7530,10 +8348,6 @@ export declare interface VideoController {
7530
8348
  muted: boolean;
7531
8349
  volume: number;
7532
8350
  }) => void): void;
7533
- addEventListener(event: 'ad-started', callback: (value: AdMetadata & {
7534
- adCtaElement: HTMLElement | null;
7535
- }) => void): void;
7536
- addEventListener(event: 'companion-ads', callback: (value: CompanionAd[]) => void): void;
7537
8351
  /**
7538
8352
  * Remove an event listener
7539
8353
  * @param event - The event name to stop listening for
@@ -7569,6 +8383,10 @@ export declare interface VideoController {
7569
8383
  * Replay the current video from the beginning
7570
8384
  */
7571
8385
  replay(): Promise<void>;
8386
+ /**
8387
+ * Refresh the current source by calling getSourceUrl without sourceHistory.
8388
+ */
8389
+ refreshSource(): Promise<void>;
7572
8390
  /**
7573
8391
  * Retry playback if it failed to start
7574
8392
  */
@@ -7659,7 +8477,30 @@ export declare interface VideoController {
7659
8477
  * @param mutations - Array of DOM mutation records
7660
8478
  */
7661
8479
  onWatermarkElementChange(mutations: MutationRecord[]): void;
7662
- setAdCtaElement: (element: HTMLElement | null) => void;
8480
+ /**
8481
+ * Switch to HLS source for AirPlay (Safari/iOS only).
8482
+ * Preserves current playback position.
8483
+ */
8484
+ switchToHlsForAirplay(): Promise<void>;
8485
+ /**
8486
+ * Switch back to DASH from HLS after AirPlay disconnects.
8487
+ * Preserves current playback position.
8488
+ */
8489
+ switchToDashFromAirplay(): Promise<void>;
8490
+ /**
8491
+ * Reload the current source while preserving playback position.
8492
+ * Used when switching between native HLS and MSE playback modes.
8493
+ */
8494
+ reloadCurrentSource(): Promise<void>;
8495
+ /**
8496
+ * Set whether to prefer HLS sources over DASH.
8497
+ * Used in Safari/iOS when AirPlay is available, as AirPlay only supports HLS streaming.
8498
+ */
8499
+ setPreferHls(preferHls: boolean): void;
8500
+ /**
8501
+ * Suppress watermark tamper detection during AirPlay source switching.
8502
+ */
8503
+ setAirplaySwitching(isSwitching: boolean): void;
7663
8504
  }
7664
8505
 
7665
8506
  declare type VideoDetailResponsiveField = OrganizationResponsiveSetting<{
@@ -7680,7 +8521,7 @@ declare type VideoDetailResponsiveField = OrganizationResponsiveSetting<{
7680
8521
  /**
7681
8522
  * @public
7682
8523
  */
7683
- export declare type VideoExternals = (JojExternals | MallTvExternals | OktagonExternals | MigratedVideoExternals | SportyExternals) & {
8524
+ export declare type VideoExternals = (JojExternals | OktagonExternals | MigratedVideoExternals | SportyExternals | AdExternals) & {
7684
8525
  channelKey?: string;
7685
8526
  };
7686
8527
 
@@ -7743,6 +8584,11 @@ export declare type VideoSourceField = {
7743
8584
  * because content id in source url and authentication will not match.
7744
8585
  */
7745
8586
  contentId?: string;
8587
+ /**
8588
+ * List of platforms that this source is restricted to.
8589
+ * If empty or not defined, there are no restrictions, and source is available for all platforms.
8590
+ */
8591
+ platforms?: PLATFORM[];
7746
8592
  } & ({
7747
8593
  url: string;
7748
8594
  provider?: Exclude<VideoSourceProvider, VideoSourceProvider.CLOUDFLARE>;
@@ -7792,6 +8638,7 @@ export declare interface VideoTileSpecificData {
7792
8638
  urlName?: UrlNamesType;
7793
8639
  monetizations?: VideoTileMonetizationData[];
7794
8640
  description?: Translation;
8641
+ duration?: number;
7795
8642
  }
7796
8643
 
7797
8644
  /**
@@ -7880,7 +8727,7 @@ export declare interface ViewCountItem {
7880
8727
  /**
7881
8728
  * @public
7882
8729
  */
7883
- export declare interface VirtualChannelSourceInterface extends Omit<ChannelSourceInterface, 'clone'> {
8730
+ export declare interface VirtualChannelSourceInterface extends ChannelSourceInterface {
7884
8731
  tvChannelType: TvChannelType.VIRTUAL;
7885
8732
  program?: TvProgram | null;
7886
8733
  video?: Video | null;
@@ -7893,18 +8740,9 @@ export declare interface VirtualChannelSourceInterface extends Omit<ChannelSourc
7893
8740
  */
7894
8741
  export declare interface VirtualChannelSourceParams extends ChannelSourceParams {
7895
8742
  tvChannelType: TvChannelType.VIRTUAL;
7896
- currentProgram?: TvProgram | null;
7897
8743
  drm?: Drm;
7898
8744
  }
7899
8745
 
7900
- /**
7901
- * Interface representing the parameters for a VOD (Video On Demand) external multi-source configuration.
7902
- * Multi-source means an array of string URLs representing the external sources for the video content.
7903
- */
7904
- export declare interface VodExternalMultiSourceParams extends Omit<VodExternalSourceParams, 'url'> {
7905
- urls: string[];
7906
- }
7907
-
7908
8746
  /**
7909
8747
  * @public
7910
8748
  */
@@ -8003,21 +8841,6 @@ export declare interface WarningConfirmationOverlayPayload extends ConfirmationO
8003
8841
  subscriptionExpirationText?: string;
8004
8842
  }
8005
8843
 
8006
- /**
8007
- * @public
8008
- */
8009
- export declare interface WatchPositionWithData extends Omit<UserWatchPositionField, 'videoRef' | 'tagRef'> {
8010
- /**
8011
- * Video that given watch position is related to.
8012
- */
8013
- video: Video;
8014
- /**
8015
- * If user watches episode of series, we have to save series ref as well.
8016
- * Same for {@link episodeNumber} and {@link seasonNumber}.
8017
- */
8018
- tag?: Tag;
8019
- }
8020
-
8021
8844
  /**
8022
8845
  * @public
8023
8846
  */
@@ -8028,7 +8851,6 @@ export declare interface Watermark {
8028
8851
 
8029
8852
  export declare interface WebConfig {
8030
8853
  customer: CustomerId;
8031
- customerName?: string;
8032
8854
  title?: string;
8033
8855
  description?: string;
8034
8856
  logo: string;
@@ -8042,37 +8864,31 @@ export declare interface WebConfig {
8042
8864
  header?: {
8043
8865
  /**
8044
8866
  * Text on buy voucher button, if not provided the default text will be used.
8867
+ * Can be a string or an array of language-specific texts.
8868
+ * @deprecated Use headerButton instead
8045
8869
  */
8046
8870
  buyVoucherButtonText?: string;
8047
8871
  /**
8048
- * If true, the voucher button will be shown in the header.
8872
+ * Configurable button shown in the header (e.g., for vouchers, creator signup, etc.)
8873
+ * Array of language-specific button configurations.
8049
8874
  */
8050
- showVoucherButton?: boolean;
8875
+ headerButton?: (LanguageRestricted & {
8876
+ label: string;
8877
+ href: string;
8878
+ /** Icon to show on the button (mobile only) */
8879
+ icon?: 'gift' | 'star' | 'videoRecorder';
8880
+ variant?: 'primary' | 'secondary' | 'transparent';
8881
+ })[];
8051
8882
  allowSearch?: boolean;
8052
8883
  logoHeight?: string;
8053
8884
  mobileLogoHeight?: string;
8054
8885
  buySubscriptionButtonText?: string;
8055
- isHidden?: boolean;
8056
- /**
8057
- * Additional menu items to be shown in the rounded menu in the header (external or internal)
8058
- */
8059
- additionalMenuItems?: {
8060
- name: string;
8061
- href: string;
8062
- newTab?: boolean;
8063
- }[];
8064
8886
  };
8065
8887
  footer?: {
8066
- isHidden?: boolean;
8067
8888
  /**
8068
8889
  * If logo is different from logo in header
8069
8890
  */
8070
8891
  logo?: string;
8071
- /**
8072
- * @fixme https://app.clickup.com/t/90151157205/TIV-1515
8073
- * If multiple logos are provided, the multiple logos are prioritized over the single logo.
8074
- */
8075
- multipleLogos?: string[];
8076
8892
  showLogo?: boolean;
8077
8893
  /**
8078
8894
  * right panel - various type of contacts to owners of website
@@ -8115,19 +8931,6 @@ export declare interface WebConfig {
8115
8931
  email?: string;
8116
8932
  };
8117
8933
  cookieSettingsLabel?: string;
8118
- disclaimer?: string;
8119
- showDivider?: boolean;
8120
- /**
8121
- * Additional links to be shown in the footer
8122
- */
8123
- additionalLinks?: {
8124
- name: string;
8125
- href: string;
8126
- }[];
8127
- /**
8128
- * Hide footer on these paths
8129
- */
8130
- hideFooter?: string[];
8131
8934
  partners?: {
8132
8935
  name: string;
8133
8936
  logo: string;
@@ -8143,14 +8946,6 @@ export declare interface WebConfig {
8143
8946
  * so app requires authorization to see them.
8144
8947
  */
8145
8948
  securedContent?: boolean;
8146
- /**
8147
- * If true, then auth is required for all pages.
8148
- */
8149
- isAuthRequired?: boolean;
8150
- /**
8151
- * If true, then buy subscription button is hidden.
8152
- */
8153
- hideBuySubscriptionButton?: boolean;
8154
8949
  /**
8155
8950
  * CSS styles for application background.
8156
8951
  */
@@ -8169,10 +8964,6 @@ export declare interface WebConfig {
8169
8964
  * Default is TRUE (see {@link AppLoadingOverlay}
8170
8965
  */
8171
8966
  showProgressBar?: boolean;
8172
- /**
8173
- * URL to background image shown on loading screen.
8174
- */
8175
- backgroundUrl?: string;
8176
8967
  };
8177
8968
  /**
8178
8969
  * Slug of all pages where user will be forced to fill login form if he's not logged in.
@@ -8200,7 +8991,6 @@ export declare interface WebConfig {
8200
8991
  */
8201
8992
  showChooseSubscription?: boolean;
8202
8993
  registration?: {
8203
- logoMarginTop?: string;
8204
8994
  /**
8205
8995
  * Customization of auth form
8206
8996
  */
@@ -8220,18 +9010,18 @@ export declare interface WebConfig {
8220
9010
  showAcceptanceOfTermsAndConditions?: boolean;
8221
9011
  };
8222
9012
  registrationConsent?: string;
8223
- socialRegistrationConsent?: string;
8224
9013
  };
8225
9014
  payment?: {
8226
9015
  paymentConsent?: string;
8227
9016
  paymentRenewalConsent?: boolean;
9017
+ allowFrequencySwitcher?: boolean;
8228
9018
  };
8229
9019
  /**
8230
9020
  * If web supports entering vouchers
8231
9021
  */
8232
9022
  supportVouchers?: boolean;
8233
9023
  /**
8234
- * Config for Google Tag Manager with optional shouldWaitForDidomi flag
9024
+ * Config for Google Tag Manager
8235
9025
  */
8236
9026
  googleTagManagerConfig?: TagManagerArgs & {
8237
9027
  shouldWaitForDidomi?: boolean;
@@ -8254,8 +9044,6 @@ export declare interface WebConfig {
8254
9044
  };
8255
9045
  monetizationSelectOverlay?: {
8256
9046
  title?: string;
8257
- benefitLeftIcon?: string;
8258
- showFullMonetizationOnMobile?: boolean;
8259
9047
  };
8260
9048
  /**
8261
9049
  * Google Analytics ID. If provided, Google Analytics will be enabled.
@@ -8267,7 +9055,6 @@ export declare interface WebConfig {
8267
9055
  centeredMenu?: boolean;
8268
9056
  /**
8269
9057
  * All values are considered as false if not provided.
8270
- * @deprecated - use settings.allowedSignInProviders inside OrganizationDocument
8271
9058
  */
8272
9059
  socialLogins?: {
8273
9060
  showAppleLogin?: boolean;
@@ -8282,24 +9069,11 @@ export declare interface WebConfig {
8282
9069
  * If true, robots.txt will prevent crawling of the website.
8283
9070
  */
8284
9071
  norobots?: boolean;
8285
- voucher?: {
8286
- voucherConsent: string;
8287
- };
8288
- customTranslations?: Record<string, Record<string, string>>;
8289
- onPurchase?: (monetization: Purchase) => void;
8290
- facebookPixelConfig?: {
8291
- pixelId: string;
8292
- shouldWaitForDidomi?: boolean;
9072
+ customTranslations?: {
9073
+ [key: string]: {
9074
+ [key: string]: string;
9075
+ };
8293
9076
  };
8294
- /**
8295
- * If true, the app will be locked in the "remote controller" mode.
8296
- * This means that the app will not be able to navigate to other pages and will only show the remote controller.
8297
- */
8298
- isRemoteControllerApp?: boolean;
8299
- /**
8300
- * Determines if application should check allowed URL handles when switching applications.
8301
- */
8302
- disableUrlHandleCheck?: boolean;
8303
9077
  /**
8304
9078
  * Map for all handlers
8305
9079
  */
@@ -8326,7 +9100,7 @@ export declare interface WebGridScreenProps {
8326
9100
  */
8327
9101
  export declare interface WebPlayerProps {
8328
9102
  id: string;
8329
- source?: InputSourceParams | PathSourceParams | VideoPath | ChannelPath | null;
9103
+ source?: SourceParams | VideoPath | ChannelPath | null;
8330
9104
  onEnded?: () => any;
8331
9105
  /**
8332
9106
  * If true, the player will inherit the width and height of its parent element.
@@ -8390,14 +9164,6 @@ export declare interface WebPlayerProps {
8390
9164
  * If true then OSD is shown based on condition resolved in HidableOsdContainer, e.g. on pause, on mouse move etc.
8391
9165
  */
8392
9166
  showOsd?: boolean;
8393
- /**
8394
- * If true, then only a minimal set of OSD controls is shown (play/pause, volume, fullscreen)
8395
- * and the big center play/pause button only flashes briefly on state change.
8396
- *
8397
- * Intended for small fixed containers (e.g. a scroll-pinned mini player in the corner
8398
- * of the page, or a full-width mobile player pinned to the top of the viewport).
8399
- */
8400
- isMinimal?: boolean;
8401
9167
  /**
8402
9168
  * If false, then buffering spinner is never shown.
8403
9169
  * If true then buffering spinner is shown while buffering.
@@ -8420,8 +9186,6 @@ export declare interface WebPlayerProps {
8420
9186
  setPaymentOverlayVisible?: React_2.Dispatch<React_2.SetStateAction<boolean>>;
8421
9187
  hideOverlay?: boolean;
8422
9188
  sourcePlayMode?: SourcePlayMode;
8423
- adsConfig?: StaticAdsBreak[];
8424
- userAuthCallbacks?: SDKUserAuthCallbacks;
8425
9189
  }
8426
9190
 
8427
9191
  /**