@tivio/sdk-react 9.7.1 → 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.
@@ -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,7 +107,6 @@ export declare type AdMetadata = {
104
107
  isSkippable: boolean;
105
108
  order: number | null;
106
109
  totalCount: number | null;
107
- customAdMetadata?: Record<string, unknown>;
108
110
  skip: () => void;
109
111
  } | null;
110
112
 
@@ -222,10 +224,6 @@ export declare interface AdSourceInterface extends CommonSourceInterface<SourceT
222
224
  skipAll(): void;
223
225
  onRemainingTimeChanged(ms: number): void;
224
226
  click(): void;
225
- /**
226
- * Rich IMA ad metadata including customAdMetadata (only available for IMA ads)
227
- */
228
- imaAdMetadata?: any;
229
227
  }
230
228
 
231
229
  /**
@@ -323,7 +321,9 @@ export declare enum AnalyticsConversionPage {
323
321
  Redeem = "redeem",
324
322
  Referral = "referral",
325
323
  Pair = "pair",
326
- Search = "search"
324
+ Search = "search",
325
+ QerkoPayment = "qerko-payment",
326
+ SubscriptionCard = "subscription-card"
327
327
  }
328
328
 
329
329
  /**
@@ -341,6 +341,31 @@ export declare enum AnalyticsConversionTargetBase {
341
341
  Monetization = "monetization"
342
342
  }
343
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
+
344
369
  export declare interface AnalyticsInterface {
345
370
  reportAdvertisementPlay: (params: AdvertisementAnalyticParams) => void;
346
371
  reportAdvertisementProgress: () => void;
@@ -537,7 +562,7 @@ export declare interface AssetsField<TAsset extends ScalableAsset = ScalableAsse
537
562
  /**
538
563
  * @public
539
564
  */
540
- export declare type AssetType = 'circled' | 'landscape' | 'portrait' | 'square';
565
+ export declare type AssetType = 'banner' | 'circled' | 'landscape' | 'portrait' | 'square';
541
566
 
542
567
  declare type Attributes = {
543
568
  created: string;
@@ -624,10 +649,78 @@ export declare interface BannerProps {
624
649
  */
625
650
  export declare type BannerPropsPartial = Partial<BannerProps>;
626
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
+
627
712
  declare interface BaseWidgetControlPayload {
628
713
  widgetPath: string;
629
714
  }
630
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
+
631
724
  /**
632
725
  * @public
633
726
  */
@@ -691,6 +784,7 @@ export declare interface ButtonOptions {
691
784
  */
692
785
  export declare interface ButtonVariantOptions {
693
786
  border?: string;
787
+ backgroundImage?: string;
694
788
  disabledBackgroundColor?: string;
695
789
  disabledColor?: string;
696
790
  }
@@ -700,6 +794,45 @@ export declare interface ButtonVariantOptions {
700
794
  */
701
795
  export declare type Callback<T = any> = (arg?: T) => void;
702
796
 
797
+ /**
798
+ * Camera switch transition progress information.
799
+ * Tracks the state of buffer loading during camera switches in interactive streaming.
800
+ * @public
801
+ */
802
+ export declare interface CameraSwitchProgress {
803
+ /**
804
+ * Whether a camera switch is currently in progress
805
+ */
806
+ isActive: boolean;
807
+ /**
808
+ * Time position (in seconds) where the transition content will begin.
809
+ * This is after any currently loading chunks finish.
810
+ */
811
+ transitionStartTime: number;
812
+ /**
813
+ * Number of segments that need to load before transition is ready
814
+ */
815
+ segmentsToLoad: number;
816
+ /**
817
+ * Number of segments that have already loaded
818
+ */
819
+ segmentsLoaded: number;
820
+ /**
821
+ * Progress percentage (0-1) of the transition loading
822
+ */
823
+ progress: number;
824
+ /**
825
+ * Estimated time remaining until camera switch completes (in seconds)
826
+ * Based on segment duration and remaining segments
827
+ */
828
+ estimatedTimeRemaining: number;
829
+ /**
830
+ * ID of the secondary source this transition is for.
831
+ * Used to track multiple camera switches in quick succession.
832
+ */
833
+ secondarySourceId?: string;
834
+ }
835
+
703
836
  export declare interface CancellingMonetizationsSummaryItem {
704
837
  date: number;
705
838
  monetizationId: string;
@@ -774,6 +907,10 @@ export declare interface ChannelSourceParams extends PlayerSourceParams<SourceTy
774
907
  from: Date;
775
908
  to: Date;
776
909
  tvMode?: TvMode | 'live' | null;
910
+ /**
911
+ * Current program from EPG. Available for VIRTUAL and SCHEDULED channels.
912
+ */
913
+ currentProgram?: TvProgram | null;
777
914
  }
778
915
 
779
916
  /**
@@ -843,12 +980,6 @@ export declare interface CommonSourceParams<T extends SourceType = SourceType> {
843
980
  videoPath?: string;
844
981
  }
845
982
 
846
- /**
847
- * @public
848
- * Re-export of Google IMA CompanionAd type for use throughout the SDK
849
- */
850
- export declare type CompanionAd = google.ima.CompanionAd;
851
-
852
983
  /**
853
984
  * TODO it's the same as Customizations, not?
854
985
  * @internal
@@ -925,6 +1056,13 @@ export declare interface ContentAvailability {
925
1056
  manual: boolean;
926
1057
  }
927
1058
 
1059
+ export declare type ContentMetadataFieldId = keyof NonNullable<OrganizationSettingsField['contentMetadata']>;
1060
+
1061
+ export declare interface ContentMetadataOptions {
1062
+ enabled: boolean;
1063
+ order: number;
1064
+ }
1065
+
928
1066
  /**
929
1067
  * @public
930
1068
  */
@@ -1182,10 +1320,23 @@ export declare interface CreatorsWithVoucherSubscriptions {
1182
1320
  name: string;
1183
1321
  }
1184
1322
 
1323
+ export declare interface CtaBannerExtendRowData {
1324
+ variant?: 'light' | 'dark';
1325
+ heading?: Translation;
1326
+ subtitle?: {
1327
+ text: Translation;
1328
+ showIcon?: boolean;
1329
+ };
1330
+ button?: {
1331
+ href: string;
1332
+ text: Translation;
1333
+ };
1334
+ }
1335
+
1185
1336
  /**
1186
1337
  * @public
1187
1338
  */
1188
- export declare const CURRENCIES: string[];
1339
+ export declare const CURRENCIES: Currency[];
1189
1340
 
1190
1341
  /**
1191
1342
  * Three upper-case letters according to ISO-4217.
@@ -1199,6 +1350,11 @@ export declare type Currency = 'CZK' | 'EUR' | 'USD' | 'PLN';
1199
1350
  */
1200
1351
  export declare type CurrencyLowerCase = 'czk' | 'eur' | 'usd' | 'pln';
1201
1352
 
1353
+ /**
1354
+ * @public
1355
+ */
1356
+ export declare const CurrencyToTitle: Record<Currency, string>;
1357
+
1202
1358
  export declare interface CurrentQuestion {
1203
1359
  id: string;
1204
1360
  question: Translation;
@@ -1278,7 +1434,21 @@ export declare enum CustomerId {
1278
1434
  UZ_BUDU = "UZ_BUDU",
1279
1435
  PRIMA = "PRIMA",
1280
1436
  NORA_FRIDRICHOVA = "NORA_FRIDRICHOVA",
1281
- LONGEVITY = "LONGEVITY"
1437
+ LONGEVITY = "LONGEVITY",
1438
+ ZASAHTV = "ZASAHTV",
1439
+ ELISKAFLOW = "ELISKAFLOW",
1440
+ PRIJIMACKY = "PRIJIMACKY",
1441
+ PADNI_KOMU_PADNI = "PADNI_KOMU_PADNI",
1442
+ KRYPTOSPACE = "KRYPTOSPACE",
1443
+ ERADIX = "ERADIX",
1444
+ VLADCI_PRAHY = "VLADCI_PRAHY",
1445
+ DOKTOR_EVZEN = "DOKTOR_EVZEN",
1446
+ INVESTUJ_CHYTRE = "INVESTUJ_CHYTRE",
1447
+ RESTART_MUZE = "RESTART_MUZE",
1448
+ THE_JOHNY = "THE_JOHNY",
1449
+ GOOD_MOVE = "GOOD_MOVE",
1450
+ JANA_HANZ = "JANA_HANZ",
1451
+ MYSTICO = "MYSTICO"
1282
1452
  }
1283
1453
 
1284
1454
  /**
@@ -1381,6 +1551,7 @@ export declare interface Customizations {
1381
1551
  iconColor?: string;
1382
1552
  roundedMenuColor?: string;
1383
1553
  roundedMenuHoverColor?: string;
1554
+ roundedMenuInactiveColor?: string;
1384
1555
  };
1385
1556
  CenteredMenu?: {
1386
1557
  backgroundColor: string;
@@ -1444,6 +1615,99 @@ export declare interface Customizations {
1444
1615
  row: {
1445
1616
  backgroundColor: string;
1446
1617
  };
1618
+ benefits?: {
1619
+ titleAccentColor?: string;
1620
+ descriptionColor?: string;
1621
+ ctaTextColor?: string;
1622
+ };
1623
+ featureCard?: {
1624
+ bgColor?: string;
1625
+ textColor?: string;
1626
+ borderColor?: string;
1627
+ hoverBorderColor?: string;
1628
+ iconBgColor?: string;
1629
+ iconColor?: string;
1630
+ descriptionColor?: string;
1631
+ };
1632
+ ctaBanner?: {
1633
+ lightBgColor?: string;
1634
+ darkBgColor?: string;
1635
+ borderColor?: string;
1636
+ lightTitleColor?: string;
1637
+ darkTitleColor?: string;
1638
+ lightDescriptionColor?: string;
1639
+ descriptionColor?: string;
1640
+ lightButtonBgColor?: string;
1641
+ lightButtonTextColor?: string;
1642
+ subtitleColor?: string;
1643
+ accentColor?: string;
1644
+ mutedTextColor?: string;
1645
+ textColor?: string;
1646
+ };
1647
+ testimonials?: {
1648
+ sectionBg?: string;
1649
+ cardBg?: string;
1650
+ cardBorder?: string;
1651
+ descriptionColor?: string;
1652
+ ratingColor?: string;
1653
+ roleColor?: string;
1654
+ textColor?: string;
1655
+ };
1656
+ mediaAccordeon?: {
1657
+ buttonBg?: string;
1658
+ buttonHoverBg?: string;
1659
+ titleActive?: string;
1660
+ titleInactive?: string;
1661
+ descriptionColor?: string;
1662
+ };
1663
+ numbers?: {
1664
+ sectionBg?: string;
1665
+ borderTop?: string;
1666
+ numberColor?: string;
1667
+ labelColor?: string;
1668
+ };
1669
+ faq?: {
1670
+ descriptionColor?: string;
1671
+ linkColor?: string;
1672
+ textColor?: string;
1673
+ mutedTextColor?: string;
1674
+ };
1675
+ explore?: {
1676
+ cardBg?: string;
1677
+ cardTextColor?: string;
1678
+ cardBorderColor?: string;
1679
+ hoverBorderColor?: string;
1680
+ descriptionColor?: string;
1681
+ };
1682
+ splitLayout?: {
1683
+ titleColor?: string;
1684
+ descriptionColor?: string;
1685
+ imageBg?: string;
1686
+ };
1687
+ accordion?: {
1688
+ itemBg?: string;
1689
+ itemBorder?: string;
1690
+ titleColor?: string;
1691
+ contentColor?: string;
1692
+ iconColor?: string;
1693
+ };
1694
+ presentBanner?: {
1695
+ badgeBg?: string;
1696
+ badgeBorder?: string;
1697
+ badgeTextColor?: string;
1698
+ subtitleColor?: string;
1699
+ avatarBorder?: string;
1700
+ textColor?: string;
1701
+ };
1702
+ videoSeries?: {
1703
+ buttonBg?: string;
1704
+ buttonHoverBg?: string;
1705
+ titleActive?: string;
1706
+ titleInactive?: string;
1707
+ };
1708
+ monetizationBanner?: {
1709
+ descriptionColor?: string;
1710
+ };
1447
1711
  };
1448
1712
  global: {
1449
1713
  /**
@@ -1466,6 +1730,9 @@ export declare interface Customizations {
1466
1730
  Avatar?: {
1467
1731
  backgroundColor: string;
1468
1732
  color: string;
1733
+ hoverBorderGradientStart?: string;
1734
+ hoverBorderGradientEnd?: string;
1735
+ hoverBackground?: string;
1469
1736
  };
1470
1737
  Paywall?: {
1471
1738
  backgroundColor?: string;
@@ -1485,6 +1752,8 @@ export declare interface Customizations {
1485
1752
  backgroundColorActive?: string;
1486
1753
  formBackgroundColor?: string;
1487
1754
  captionColor?: string;
1755
+ pageBackgroundColor?: string;
1756
+ gradientColor?: string;
1488
1757
  };
1489
1758
  QerkoOverlay?: {
1490
1759
  backgroundColor?: string;
@@ -1510,7 +1779,6 @@ export declare interface CustomScript {
1510
1779
  src: string;
1511
1780
  event?: EventName;
1512
1781
  isAsync?: boolean;
1513
- defer?: boolean;
1514
1782
  }
1515
1783
 
1516
1784
  /**
@@ -1546,6 +1814,11 @@ declare type Data = {
1546
1814
  type: 'tier' | 'member' | 'user';
1547
1815
  };
1548
1816
 
1817
+ /**
1818
+ * @public
1819
+ */
1820
+ export declare const DEFAULT_CURRENCY: Currency;
1821
+
1549
1822
  /**
1550
1823
  * @public
1551
1824
  */
@@ -1588,6 +1861,28 @@ export declare type DeviceInfo = ArrisDeviceInfo | ReactNativeDeviceInfo;
1588
1861
  */
1589
1862
  export declare type DeviceOs = OperatingSystem | 'Tizen' | 'webOS' | 'Arris' | 'Android TV' | 'tvOS';
1590
1863
 
1864
+ /**
1865
+ * User consent status for a specific purpose.
1866
+ */
1867
+ export declare interface DidomiPurposeStatus {
1868
+ enabled: boolean;
1869
+ }
1870
+
1871
+ /**
1872
+ * Didomi SDK API.
1873
+ */
1874
+ export declare interface DidomiSDK {
1875
+ getCurrentUserStatus(): DidomiUserStatus;
1876
+ }
1877
+
1878
+ /**
1879
+ * User consent status returned by Didomi SDK.
1880
+ */
1881
+ export declare interface DidomiUserStatus {
1882
+ purposes: Record<string, DidomiPurposeStatus>;
1883
+ consent_string?: string;
1884
+ }
1885
+
1591
1886
  /**
1592
1887
  * Window object with Didomi SDK properties.
1593
1888
  */
@@ -1603,6 +1898,10 @@ export declare interface DidomiWindow {
1603
1898
  * https://developers.didomi.io/cmp/web-sdk/reference/api
1604
1899
  */
1605
1900
  didomiOnReady: (() => void)[];
1901
+ /**
1902
+ * The Didomi SDK instance.
1903
+ */
1904
+ Didomi: DidomiSDK;
1606
1905
  }
1607
1906
 
1608
1907
  /**
@@ -1623,6 +1922,47 @@ export declare interface DividerProps {
1623
1922
  horizontalSpacing?: number;
1624
1923
  }
1625
1924
 
1925
+ export declare interface DocumentTileData<ItemSpecificData extends DocumentTileItemSpecificData = DocumentTileItemSpecificData> {
1926
+ /**
1927
+ * Tile item ID.
1928
+ */
1929
+ id: string;
1930
+ /**
1931
+ * Timestamp of the item creation.
1932
+ */
1933
+ created: number;
1934
+ /**
1935
+ * Type of the tile. VIDEO, TV_CHANNEL, TAG, ...
1936
+ */
1937
+ itemType: ROW_ITEM_TYPES;
1938
+ /**
1939
+ * Tile item name translation.
1940
+ */
1941
+ name: Translation;
1942
+ /**
1943
+ * Firestore path to the item.
1944
+ */
1945
+ path: string;
1946
+ /**
1947
+ * Application info including logo, name and number of videos.
1948
+ */
1949
+ application?: TileApplicationData;
1950
+ /**
1951
+ * Specific data for an item type (e.g. video, tv channel, tag, ...).
1952
+ */
1953
+ itemSpecificData: ItemSpecificData;
1954
+ /**
1955
+ * Optional label to display in the top-right corner of the tile (e.g., "Exclusive").
1956
+ */
1957
+ topLabel?: Translation;
1958
+ /**
1959
+ * CSS color for the topLabel background. Defaults to white.
1960
+ */
1961
+ topLabelColor?: string;
1962
+ }
1963
+
1964
+ export declare type DocumentTileItemSpecificData = VideoTileSpecificData | TvChannelTileSpecificData | TagTileSpecificData | ArticleTileSpecificData | SeriesTileSpecificData;
1965
+
1626
1966
  export declare interface Drm {
1627
1967
  encryption: VideoSourceEncryption;
1628
1968
  /**
@@ -1695,6 +2035,91 @@ export declare interface DurationWithUnit {
1695
2035
  unit: DurationUnit;
1696
2036
  }
1697
2037
 
2038
+ /**
2039
+ * Row components available for dynamic rows (filter, custom, topWatched, etc.)
2040
+ * Matches the rowComponent constraint in DynamicRow type definition
2041
+ * @public
2042
+ */
2043
+ export declare const DYNAMIC_ROW_COMPONENTS: readonly [RowComponent.ROW, RowComponent.BANNER];
2044
+
2045
+ /**
2046
+ * Dynamic row (filter, custom, continueToWatch, etc.) - has itemComponent and dynamic fields
2047
+ * Uses standard ROW or BANNER components
2048
+ * @public
2049
+ */
2050
+ export declare interface DynamicRow extends BaseRow {
2051
+ type: Exclude<ScreenRowType, 'static'>;
2052
+ numberOfLines?: number;
2053
+ monetizations?: Array<{
2054
+ monetizationRef: {
2055
+ id: string;
2056
+ path: string;
2057
+ };
2058
+ } | RowMonetizationData>;
2059
+ rowComponent: RowComponent.ROW | RowComponent.BANNER;
2060
+ itemComponent: RowItemComponent | BannerItemComponent;
2061
+ organizationId?: string;
2062
+ bottomComponent?: BottomComponent;
2063
+ showDescriptionAsTitle?: boolean;
2064
+ hideTitle?: boolean;
2065
+ externalUrl?: string;
2066
+ playButtonTitle?: string;
2067
+ tiles: PaginationInterface<ItemInRow>;
2068
+ /**
2069
+ * Side Banner specific configuration
2070
+ */
2071
+ sideBannerImagePosition?: 'left' | 'right';
2072
+ backgroundColor?: string;
2073
+ }
2074
+
2075
+ /**
2076
+ * Dynamic row type with dynamic-specific fields
2077
+ */
2078
+ export declare type DynamicRowInScreen = BaseRowInScreen & {
2079
+ type: Exclude<ScreenRowType, 'static'>;
2080
+ /**
2081
+ * Row filter based on which to pick tiles.
2082
+ */
2083
+ filter?: RowFilterField;
2084
+ /**
2085
+ * Number of lines of the title.
2086
+ */
2087
+ numberOfLines?: number;
2088
+ /**
2089
+ * Component to use to render the tiles in the row.
2090
+ */
2091
+ itemComponent: RowItemComponent | BannerItemComponent;
2092
+ /**
2093
+ * Items to display in the row.
2094
+ */
2095
+ tiles: GetTilesInRowResponse<DynamicScreenRowType>;
2096
+ /**
2097
+ * Setting for decided what to show bellow the tiles
2098
+ */
2099
+ bottomComponent?: BottomComponent;
2100
+ /**
2101
+ * Setting for decided whether to show description instead of title in the tiles
2102
+ */
2103
+ showDescriptionAsTitle?: boolean;
2104
+ /**
2105
+ * Setting for decided whether to hide title in the tiles/banners
2106
+ */
2107
+ hideTitle?: boolean;
2108
+ /**
2109
+ * Link to external URL
2110
+ */
2111
+ externalUrl?: string;
2112
+ /**
2113
+ * Title of Play button
2114
+ */
2115
+ playButtonTitle?: Translation;
2116
+ };
2117
+
2118
+ /**
2119
+ * @public
2120
+ */
2121
+ export declare type DynamicScreenRowType = Exclude<ScreenRowType, 'static'>;
2122
+
1698
2123
  /**
1699
2124
  * @public
1700
2125
  */
@@ -1813,7 +2238,6 @@ export declare interface EmitterInterface {
1813
2238
  isSupported: (even: string) => boolean;
1814
2239
  addListener: <T = unknown>(event: string, cb: (value: T) => Empty_2) => void;
1815
2240
  removeListener: <T = unknown>(event: string, cb: (value: T) => Empty_2) => void;
1816
- emitEvent: (event: string, value?: unknown) => void;
1817
2241
  }
1818
2242
 
1819
2243
  /**
@@ -1838,6 +2262,17 @@ export declare type Events = {
1838
2262
  'on-error': Error;
1839
2263
  };
1840
2264
 
2265
+ export declare interface ExploreItem {
2266
+ title: Translation;
2267
+ description: Translation;
2268
+ button?: {
2269
+ href: string;
2270
+ text: Translation;
2271
+ };
2272
+ }
2273
+
2274
+ export declare type ExploreTileSpecificData = ExploreItem;
2275
+
1841
2276
  export declare interface ExtensionMetadata {
1842
2277
  purchaseStatus: CloudflareStreamingPurchaseStatus;
1843
2278
  activeVideoId?: string;
@@ -1851,22 +2286,12 @@ export declare type ExternalTvConfig = {
1851
2286
  splashScreenBackgroundColor?: string;
1852
2287
  };
1853
2288
 
1854
- export declare interface FavoriteTagWithData {
1855
- content: Tag;
1856
- type: 'tag';
2289
+ export declare interface FaqItem {
2290
+ question: Translation;
2291
+ answer: Translation;
1857
2292
  }
1858
2293
 
1859
- export declare interface FavoriteVideoWithData {
1860
- content: Video;
1861
- type: 'video';
1862
- }
1863
-
1864
- /**
1865
- * @public
1866
- */
1867
- export declare type FavoriteWithData = FavoriteVideoWithData | (FavoriteTagWithData & {
1868
- profileId?: string;
1869
- });
2294
+ export declare type FaqTileSpecificData = FaqItem;
1870
2295
 
1871
2296
  /**
1872
2297
  * @throws if fetch fails
@@ -1916,7 +2341,6 @@ export declare interface ForbiddenOnCallError extends GenericOnCallError {
1916
2341
  }
1917
2342
 
1918
2343
  export declare enum ForbiddenReason {
1919
- AD_BLOCKING = "AD_BLOCKING",
1920
2344
  MONETIZATION = "MONETIZATION",
1921
2345
  GEO_BLOCKING = "GEO_BLOCKING",
1922
2346
  EMAIL_ALREADY_EXISTS = "EMAIL_ALREADY_EXISTS",
@@ -1927,8 +2351,7 @@ export declare enum ForbiddenReason {
1927
2351
  NAME_CONTAINS_INVALID_CHAR = "NAME_CONTAINS_INVALID_CHAR",
1928
2352
  USER_ACCOUNT_LOCKED = "USER_ACCOUNT_LOCKED",
1929
2353
  USER_NOT_FOUND = "USER_NOT_FOUND",
1930
- UNSUPPORTED_BROWSER = "UNSUPPORTED_BROWSER",
1931
- ANONYMOUS_USER = "ANONYMOUS_USER"
2354
+ UNSUPPORTED_BROWSER = "UNSUPPORTED_BROWSER"
1932
2355
  }
1933
2356
 
1934
2357
  /**
@@ -1936,7 +2359,7 @@ export declare enum ForbiddenReason {
1936
2359
  */
1937
2360
  export declare type FrequencyInfo = {
1938
2361
  title: Translation;
1939
- unit: string;
2362
+ unit: MONETIZATION_FREQUENCY;
1940
2363
  value: number;
1941
2364
  };
1942
2365
 
@@ -2055,6 +2478,9 @@ export declare type GetPurchaseInfoResponse = {
2055
2478
  };
2056
2479
  };
2057
2480
 
2481
+ /**
2482
+ * Response type for getRowsInScreen
2483
+ */
2058
2484
  export declare type GetRowsInScreenResponse = PaginatedResponse<RowInScreen, 'screenId'>;
2059
2485
 
2060
2486
  export declare interface GetSourceUrlRequest {
@@ -2111,6 +2537,16 @@ export declare interface GetSourceUrlRequest {
2111
2537
  * Parameters related to ads.
2112
2538
  */
2113
2539
  adParams?: Record<string, string | number | undefined>;
2540
+ /**
2541
+ * Which platform the resulting source should support.
2542
+ * If not present, any source that has non-empty `platforms` will be filtered out from the result.
2543
+ */
2544
+ platform?: PLATFORM;
2545
+ /**
2546
+ * Device ID for device tracking on purchase documents.
2547
+ * Used to track which devices are accessing paid content.
2548
+ */
2549
+ deviceId?: string;
2114
2550
  }
2115
2551
 
2116
2552
  export declare interface GetSourceUrlResponse {
@@ -2156,15 +2592,7 @@ export declare interface GetSourceUrlResponse {
2156
2592
  sessionType?: VideoSourceField['sessionType'];
2157
2593
  }
2158
2594
 
2159
- export declare type GetTilesInRowResponse<U extends NextPageParamType = NextPageParamType> = PaginatedResponse<TileData, U>;
2160
-
2161
- export declare interface GetUserProfileDataOptions {
2162
- /**
2163
- * If true, the data will be returned for all user profiles.
2164
- * If false, the data will be returned only for the active user profile.
2165
- */
2166
- ignoreActiveUserProfile?: boolean;
2167
- }
2595
+ export declare type GetTilesInRowResponse<T extends ScreenRowType = ScreenRowType, U extends NextPageParamType = NextPageParamType> = PaginatedResponse<TileData<T>, U>;
2168
2596
 
2169
2597
  export declare interface GetUserRssUrlRequest {
2170
2598
  organizationId: string;
@@ -2176,58 +2604,6 @@ export declare interface GetUserRssUrlResponse {
2176
2604
  expiresAt?: number;
2177
2605
  }
2178
2606
 
2179
- export declare interface GetVideoAnalyticsErrorItem {
2180
- count: number;
2181
- timestamp: number;
2182
- errorMessage: string;
2183
- }
2184
-
2185
- export declare interface GetVideoAnalyticsErrorResult {
2186
- totalCount: number;
2187
- errors: Array<GetVideoAnalyticsErrorItem>;
2188
- }
2189
-
2190
- export declare interface GetVideoAnalyticsRequest {
2191
- contentId: string;
2192
- timestamp?: number;
2193
- userId?: string;
2194
- source?: string;
2195
- limit?: number;
2196
- errorLimit?: number;
2197
- errorTimestampFrom?: number;
2198
- }
2199
-
2200
- export declare interface GetVideoAnalyticsResponse {
2201
- state?: GetVideoAnalyticsResult;
2202
- quality?: GetVideoAnalyticsResult;
2203
- error?: GetVideoAnalyticsErrorResult;
2204
- localities?: unknown;
2205
- }
2206
-
2207
- export declare type GetVideoAnalyticsResult = {
2208
- [timestamp: string]: {
2209
- totalDuration: number;
2210
- values: Array<{
2211
- value: string;
2212
- duration: number;
2213
- percentage: number;
2214
- }>;
2215
- };
2216
- };
2217
-
2218
- export declare interface GetVideoAnalyticsViewsRequest {
2219
- contentId: string;
2220
- currentViewsIntervalMs: number;
2221
- timestamp?: number;
2222
- source?: string;
2223
- }
2224
-
2225
- export declare interface GetVideoAnalyticsViewsResponse {
2226
- previousViews?: number;
2227
- currentViews?: number;
2228
- totalViews?: number;
2229
- }
2230
-
2231
2607
  export declare interface GetViewAnalyticsResponse {
2232
2608
  viewCountAnalytics: ViewCountItem[];
2233
2609
  topWatched: TopWatchItem[];
@@ -2246,6 +2622,22 @@ export declare enum GRID_TYPES {
2246
2622
  SERIES = "SERIES"
2247
2623
  }
2248
2624
 
2625
+ /**
2626
+ * @public
2627
+ */
2628
+ export declare interface HeroBannerProps {
2629
+ title: string;
2630
+ description?: string;
2631
+ cover: string;
2632
+ onPlayClick?: () => void;
2633
+ onWatchlistClick?: () => void;
2634
+ playButtonHref?: string;
2635
+ watchlistButtonHref?: string;
2636
+ playButtonText?: string;
2637
+ watchlistButtonText?: string;
2638
+ isFavorite?: boolean;
2639
+ }
2640
+
2249
2641
  /**
2250
2642
  * @public
2251
2643
  */
@@ -2254,6 +2646,61 @@ export declare interface HistoryContextData {
2254
2646
  backOrRedirectToRoot: (delta?: number) => void;
2255
2647
  }
2256
2648
 
2649
+ export declare interface HomepageBannerButton {
2650
+ href: string;
2651
+ text: Translation;
2652
+ variant: HomepageBannerButtonVariant;
2653
+ leftIcon?: HomepageBannerButtonIcon;
2654
+ /**
2655
+ * Controls when this button should be visible.
2656
+ * Defaults to 'always' if not specified.
2657
+ */
2658
+ visibility?: HomepageBannerButtonVisibility;
2659
+ }
2660
+
2661
+ export declare type HomepageBannerButtonIcon = 'play';
2662
+
2663
+ export declare type HomepageBannerButtonVariant = 'primary' | 'secondary';
2664
+
2665
+ /**
2666
+ * Visibility condition for banner buttons.
2667
+ * - 'always': Button is always visible (default)
2668
+ * - 'notSignedIn': Button is only visible when user is not signed in
2669
+ * - 'signedIn': Button is only visible when user is signed in
2670
+ */
2671
+ export declare type HomepageBannerButtonVisibility = 'always' | 'notSignedIn' | 'signedIn';
2672
+
2673
+ export declare interface HomepageBannerExtendRowData {
2674
+ /**
2675
+ * Main title displayed on the banner
2676
+ */
2677
+ title?: Translation;
2678
+ /**
2679
+ * Subtitle/tagline displayed below title
2680
+ */
2681
+ subtitle?: {
2682
+ text: Translation;
2683
+ showIcon?: boolean;
2684
+ };
2685
+ /**
2686
+ * Multiple lines of descriptive text for multiline display
2687
+ */
2688
+ descriptionLines?: Translation[];
2689
+ /**
2690
+ * Array of buttons to display on the banner
2691
+ */
2692
+ buttons?: HomepageBannerButton[];
2693
+ /**
2694
+ * Single background image asset (legacy, use backgroundAssets for random selection)
2695
+ */
2696
+ asset?: ScalableAsset;
2697
+ /**
2698
+ * Array of background assets for random selection per page load.
2699
+ * If provided, one will be randomly selected each time the banner loads.
2700
+ */
2701
+ backgroundAssets?: ScalableAsset[];
2702
+ }
2703
+
2257
2704
  export declare type IncludedItem = {
2258
2705
  attributes: {
2259
2706
  next_charge_date: string;
@@ -2289,10 +2736,23 @@ export declare interface IndexedTag extends IndexedObject {
2289
2736
  created: Date;
2290
2737
  name: Translation;
2291
2738
  description?: string;
2739
+ /**
2740
+ * True if the tag has assets (non-empty assets object).
2741
+ */
2742
+ hasAssets: boolean;
2743
+ /**
2744
+ * True if the tag has content (has videos or series episodes).
2745
+ */
2746
+ hasContent: boolean;
2292
2747
  /**
2293
2748
  * True if the tag is available in Tivio Pro (StarMe)
2294
2749
  */
2295
2750
  isTivioPro: boolean;
2751
+ /**
2752
+ * Parental guidance rating (e.g., "O", "07", "U", "7+")
2753
+ * Used for filtering content based on age restrictions for kids profiles
2754
+ */
2755
+ pgRating?: string;
2296
2756
  }
2297
2757
 
2298
2758
  /**
@@ -2338,6 +2798,11 @@ export declare interface IndexedVideo extends IndexedObject {
2338
2798
  defaultName: string;
2339
2799
  name: string | Translation;
2340
2800
  description: string | Translation;
2801
+ descriptionRich?: Translation;
2802
+ /**
2803
+ * EPG program-friendly name
2804
+ */
2805
+ shortName?: Translation;
2341
2806
  hide: boolean;
2342
2807
  isDuplicate: boolean;
2343
2808
  externals?: VideoExternals;
@@ -2356,6 +2821,14 @@ export declare interface IndexedVideo extends IndexedObject {
2356
2821
  * see https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-attributes/#filter-by-null-or-missing-attributes.
2357
2822
  */
2358
2823
  monetizationAccessIds: string[] | false;
2824
+ /**
2825
+ * See {@link VideoDocument.pgRating}
2826
+ */
2827
+ pgRating?: string;
2828
+ /**
2829
+ * See {@link VideoDocument.contentDescriptors}
2830
+ */
2831
+ contentDescriptors?: string[];
2359
2832
  }
2360
2833
 
2361
2834
  /**
@@ -2368,12 +2841,11 @@ export declare interface InputOptions {
2368
2841
  color?: string;
2369
2842
  }
2370
2843
 
2371
- export declare type InputSourceParams = SourceParams | VodExternalMultiSourceParams;
2372
-
2373
2844
  export declare type IntegrationType = 'discord' | 'patreon';
2374
2845
 
2375
2846
  export declare interface InteractiveWidget<T extends InteractiveWidgetScene = InteractiveWidgetScene> {
2376
2847
  readonly id: string;
2848
+ readonly name: string;
2377
2849
  readonly path: string;
2378
2850
  readonly currentQuestion: CurrentQuestion | null;
2379
2851
  readonly status: QuizGameStatus;
@@ -2573,17 +3045,35 @@ export declare type ItemInRow = Tag | Video | TvChannel | Advertisement | Applic
2573
3045
  * @public
2574
3046
  */
2575
3047
  export declare interface JojExternals {
3048
+ /**
3049
+ * e.g. '19876'
3050
+ */
2576
3051
  tvProfiProgramId?: string;
3052
+ /**
3053
+ * e.g. 'S19876'
3054
+ */
2577
3055
  tvProfiContentId?: string;
2578
3056
  tvProfiSerialId?: string;
3057
+ /**
3058
+ * e.g. '70368744177695432'
3059
+ */
2579
3060
  contentId?: string;
2580
3061
  /**
2581
3062
  * Temporary contentId used only for live channel. The video is already encoded and stored in our storage
2582
3063
  * but is also stored on nangu platform to be used for live channel.
2583
3064
  */
2584
3065
  dvtvExtraContentId?: string;
3066
+ /**
3067
+ * e.g. 'W278510'
3068
+ */
2585
3069
  provysId?: string;
3070
+ /**
3071
+ * real provysId unlike provysId, e.g. '2-231027-0009'
3072
+ */
2586
3073
  tvProfiProvysId?: string;
3074
+ /**
3075
+ * e.g. 'W278510'
3076
+ */
2587
3077
  tvProfiHouseId?: string;
2588
3078
  tvProfiTitleOriginal?: string;
2589
3079
  tvProfiTitleSk?: string;
@@ -2609,7 +3099,20 @@ export declare enum LangCode {
2609
3099
  HU = "hu"
2610
3100
  }
2611
3101
 
2612
- export declare const LangCodeToTitle: Partial<Record<LangCode, string>>;
3102
+ export declare const LangCodeToCountryCodeMap: Partial<Record<LangCode, string>>;
3103
+
3104
+ export declare const LangCodeToCurrencyMap: Partial<Record<LangCode, Currency>>;
3105
+
3106
+ export declare const LangCodeToTitle: Record<LangCode, string>;
3107
+
3108
+ /**
3109
+ * Generic type for items that can be restricted to specific languages.
3110
+ * Use with filterByLanguageRestricted utility from @tivio/common.
3111
+ */
3112
+ export declare interface LanguageRestricted {
3113
+ /** By default is available in every language */
3114
+ availableIn?: LangCode[];
3115
+ }
2613
3116
 
2614
3117
  /**
2615
3118
  * All supported languages codes as in ISO 639-1
@@ -2804,11 +3307,35 @@ export declare enum LoginRedirect {
2804
3307
  REMOTE_CONTROLLER = "remote-controller"
2805
3308
  }
2806
3309
 
3310
+ declare interface ManageMemberDeleteRequest extends ManageMemberRequestBase {
3311
+ action: 'deleteMember';
3312
+ }
3313
+
3314
+ export declare type ManageMemberRequest = ManageMemberUpdateRoleRequest | ManageMemberDeleteRequest;
3315
+
2807
3316
  /**
2808
- * @public
3317
+ * Request body for manageMember cloud function.
3318
+ * Handles member management operations (role update, deletion) within an organization.
2809
3319
  */
2810
- export declare interface MallTvExternals {
2811
- mallTvEntityId: string;
3320
+ declare interface ManageMemberRequestBase {
3321
+ organizationId: string;
3322
+ targetMemberUid: string;
3323
+ }
3324
+
3325
+ /**
3326
+ * Response body for manageMember cloud function.
3327
+ */
3328
+ export declare interface ManageMemberResponse {
3329
+ success: boolean;
3330
+ }
3331
+
3332
+ declare interface ManageMemberUpdateRoleRequest extends ManageMemberRequestBase {
3333
+ action: 'updateRole';
3334
+ /**
3335
+ * New role for the target member.
3336
+ * Value corresponds to OrganizationMemberRoles enum from @tivio/firebase.
3337
+ */
3338
+ role: number;
2812
3339
  }
2813
3340
 
2814
3341
  /**
@@ -2872,11 +3399,37 @@ export declare enum MarkerType {
2872
3399
  NONE = "none"
2873
3400
  }
2874
3401
 
3402
+ /**
3403
+ * Tile data for MEDIA_ACCORDEON rows.
3404
+ * Contains id, name, and path for video references.
3405
+ * @public
3406
+ */
3407
+ export declare interface MediaAccordeonTileSpecificData {
3408
+ /**
3409
+ * Custom item ID for unique identification.
3410
+ */
3411
+ id: string;
3412
+ /**
3413
+ * Custom item name for display purposes.
3414
+ */
3415
+ name: Translation;
3416
+ /**
3417
+ * Firestore path to the video.
3418
+ */
3419
+ path: string;
3420
+ }
3421
+
2875
3422
  declare type Membership = {
2876
3423
  id: string;
2877
3424
  type: string;
2878
3425
  };
2879
3426
 
3427
+ export declare type MergeUserAccountsPayload = {
3428
+ email: string;
3429
+ name?: string;
3430
+ password: string;
3431
+ };
3432
+
2880
3433
  /**
2881
3434
  * @public
2882
3435
  */
@@ -2912,6 +3465,17 @@ export declare interface MessageUser {
2912
3465
  email: string;
2913
3466
  }
2914
3467
 
3468
+ export declare enum MetadataFieldId {
3469
+ NAME = "name",// always required
3470
+ SHORT_NAME = "shortName",// optional, fixed position (not sortable)
3471
+ DESCRIPTION = "description",// always required
3472
+ RICH_DESCRIPTION = "richDescription",// optional, fixed position (not sortable)
3473
+ TAGS = "tags",
3474
+ FILM_DETAILS = "filmDetails",
3475
+ AUDIENCE_LIMITATIONS = "audienceLimitations",
3476
+ PRODUCT_PLACEMENT = "productPlacement"
3477
+ }
3478
+
2915
3479
  /**
2916
3480
  * External information of video migrated via our Public API.
2917
3481
  * @public
@@ -3133,11 +3697,6 @@ declare type Notification_2 = {
3133
3697
  } & EmailNotification;
3134
3698
  export { Notification_2 as Notification }
3135
3699
 
3136
- export declare interface NotificationDuration {
3137
- value: number;
3138
- unit: dayjs.ManipulateType;
3139
- }
3140
-
3141
3700
  export declare type NotificationFilterType = NotificationFirestoreFilterType | NotificationSurveyFilterType | NotificationLastActivityFilterType;
3142
3701
 
3143
3702
  export declare type NotificationFirestoreFilterType = NotificationSubscriptionFilterType | NotificationMembershipFilterType;
@@ -3160,12 +3719,21 @@ export declare interface NotificationMembershipFilterType {
3160
3719
  };
3161
3720
  }
3162
3721
 
3722
+ /**
3723
+ * Lifecycle status of a notification.
3724
+ */
3163
3725
  export declare enum NotificationStatus {
3726
+ /** Automatic trigger types (e.g. purchaseStatusChange, duration, userRegistration); not manually or scheduled sent. */
3164
3727
  AUTOMATIC = "automatic",
3728
+ /** Editable, not yet scheduled or sent. Initial state; can transition to PLANNED when scheduled. */
3165
3729
  DRAFT = "draft",
3730
+ /** Scheduled (e.g. Cloud Task created for email, or push scheduled). For push, sending runs on DRAFT→PLANNED then status becomes SENT. */
3166
3731
  PLANNED = "planned",
3732
+ /** Notification has been sent. Set after push send and after email send for manual/scheduled. */
3167
3733
  SENT = "sent",
3734
+ /** Manual trigger saved and waiting to be sent (no lastSent yet). */
3168
3735
  WAITING = "waiting",
3736
+ /** Currently being sent (e.g. EmailSender sets RUNNING before sendEmails). Saving and re-sending are blocked while RUNNING. */
3169
3737
  RUNNING = "running"
3170
3738
  }
3171
3739
 
@@ -3199,6 +3767,17 @@ export declare interface NotificationTargeting {
3199
3767
  to?: Date;
3200
3768
  }
3201
3769
 
3770
+ /**
3771
+ * How the notification is triggered.
3772
+ * - **scheduled**: Sent at a fixed time (scheduleTime). Status becomes PLANNED when scheduled;
3773
+ * used with Cloud Tasks for email and for push when moving from DRAFT to PLANNED.
3774
+ * - **manual**: Sent on demand from the admin. Status is WAITING until sent, then SENT.
3775
+ * - **purchaseStatusChange**: Fired when a user's purchase/subscription status changes (before/after).
3776
+ * Matched by getNotificationByPurchaseStatuses; status is AUTOMATIC.
3777
+ * - **duration**: Time-based (e.g. subscription duration). Used by the daily email job (sendEmailsDaily)
3778
+ * via DurationEmailSender to target users by duration criteria.
3779
+ * - **userRegistration**: Fired when a user registers. Resolved by getNotificationUserRegistration.
3780
+ */
3202
3781
  export declare type NotificationTriggerType = 'scheduled' | 'manual' | 'purchaseStatusChange' | 'duration' | 'userRegistration';
3203
3782
 
3204
3783
  export declare enum NotificationType {
@@ -3213,6 +3792,13 @@ export declare type Nullable<T> = {
3213
3792
  [P in keyof T]: T[P] | null;
3214
3793
  };
3215
3794
 
3795
+ export declare interface NumberItem {
3796
+ value: string;
3797
+ description: Translation;
3798
+ }
3799
+
3800
+ export declare type NumbersTileSpecificData = NumberItem;
3801
+
3216
3802
  /**
3217
3803
  * @public
3218
3804
  */
@@ -3288,6 +3874,20 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
3288
3874
  enabled: boolean;
3289
3875
  };
3290
3876
  allowedSignInProviders?: SignInProvider[];
3877
+ /**
3878
+ * Social authentication provider for this organization
3879
+ * 'auth0' - Use Auth0 for social login (Kviff)
3880
+ * 'firebase' - Use Firebase Auth for social login (default)
3881
+ */
3882
+ socialAuthProvider?: 'auth0' | 'firebase';
3883
+ /**
3884
+ * Auth0 configuration for organizations using Auth0 social login.
3885
+ * Only relevant when socialAuthProvider === 'auth0'.
3886
+ */
3887
+ auth0?: {
3888
+ domain: string;
3889
+ clientId: string;
3890
+ };
3291
3891
  disableComments?: boolean;
3292
3892
  /**
3293
3893
  * Used on CNC webs - When buying a yearly subscription the recalculated monthly price is display below the yearly price
@@ -3333,6 +3933,11 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
3333
3933
  id: string;
3334
3934
  };
3335
3935
  };
3936
+ /**
3937
+ * 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.
3938
+ * The logic can be found here: {@link apps/api/functions/src/model/purchase.ts}
3939
+ * 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.
3940
+ */
3336
3941
  cancelledSubscriptionDiscount?: {
3337
3942
  enabled: boolean;
3338
3943
  };
@@ -3348,6 +3953,28 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
3348
3953
  pushNotifications?: {
3349
3954
  enabled?: boolean;
3350
3955
  };
3956
+ recommendations?: {
3957
+ videosNoOlderThan?: {
3958
+ unit: 'month';
3959
+ value: number;
3960
+ };
3961
+ };
3962
+ /**
3963
+ * Payment flow configuration
3964
+ * @default PaymentFlow.NEW
3965
+ */
3966
+ paymentFlow?: PaymentFlow;
3967
+ contentMetadata?: {
3968
+ [MetadataFieldId.SHORT_NAME]?: ContentMetadataOptions;
3969
+ [MetadataFieldId.RICH_DESCRIPTION]?: ContentMetadataOptions;
3970
+ [MetadataFieldId.TAGS]?: ContentMetadataOptions;
3971
+ [MetadataFieldId.FILM_DETAILS]?: ContentMetadataOptions;
3972
+ [MetadataFieldId.AUDIENCE_LIMITATIONS]?: ContentMetadataOptions;
3973
+ [MetadataFieldId.PRODUCT_PLACEMENT]?: ContentMetadataOptions;
3974
+ };
3975
+ aiProcessing?: {
3976
+ assets?: boolean;
3977
+ };
3351
3978
  }
3352
3979
 
3353
3980
  /**
@@ -3362,7 +3989,7 @@ export declare type OtherSource = SourceBase & StartAndContinuePosition & {
3362
3989
 
3363
3990
  export declare interface PaginatedResponse<T = unknown, U extends NextPageParamType = NextPageParamType> {
3364
3991
  items: T[];
3365
- nextPageParams: {
3992
+ nextPageParams: ({
3366
3993
  offset: number;
3367
3994
  limit: number;
3368
3995
  } & (U extends 'screenId' ? {
@@ -3374,7 +4001,7 @@ export declare interface PaginatedResponse<T = unknown, U extends NextPageParamT
3374
4001
  rowId: string;
3375
4002
  } : U extends 'filter' ? {
3376
4003
  filter: Omit<RowFilterField, 'limit'>;
3377
- } : {}) | null;
4004
+ } : object)) | null;
3378
4005
  }
3379
4006
 
3380
4007
  /**
@@ -3409,20 +4036,6 @@ export declare interface PartialRegistrationOverlayContextState {
3409
4036
  voucher?: string;
3410
4037
  }
3411
4038
 
3412
- /**
3413
- * @public
3414
- * Generic interface for sources that can be identified by a path (video or TV channel)
3415
- */
3416
- export declare type PathSourceParams = PathSourceParamsTvChannel | PathSourceParamsVideo;
3417
-
3418
- declare interface PathSourceParamsTvChannel extends Partial<ChannelSourceParams> {
3419
- path: `tvChannels/${string}`;
3420
- }
3421
-
3422
- declare interface PathSourceParamsVideo extends Partial<Omit<VodTivioSourceParams, 'videoPath'>> {
3423
- path: `videos/${string}`;
3424
- }
3425
-
3426
4039
  export declare type PatreonCreatorData = {
3427
4040
  campaign: string;
3428
4041
  tiers: Tier[];
@@ -3466,6 +4079,17 @@ export declare type PatreonUserResponse = {
3466
4079
  errors?: PatreonError[];
3467
4080
  };
3468
4081
 
4082
+ /**
4083
+ * @public
4084
+ *
4085
+ * - NEW: Automatically show payment overlay when tasting video ends (ContentIsPaidOverlay with poster)
4086
+ * - LEGACY: Old behavior - users must manually click to purchase, no automatic overlay
4087
+ */
4088
+ export declare enum PaymentFlow {
4089
+ NEW = "new",
4090
+ LEGACY = "legacy"
4091
+ }
4092
+
3469
4093
  /**
3470
4094
  * @public
3471
4095
  */
@@ -3593,6 +4217,8 @@ export declare interface PlayerEngineConfig {
3593
4217
  isAd?: boolean;
3594
4218
  positionMs?: number;
3595
4219
  url: string;
4220
+ sessionType?: SessionType;
4221
+ sourcePlayMode?: SourcePlayMode;
3596
4222
  }
3597
4223
 
3598
4224
  /**
@@ -3695,9 +4321,46 @@ export declare interface PlayerEngineInterface {
3695
4321
  *
3696
4322
  * @param {number} playbackSpeed - playback speed to select (1 = normal speed, 2 = twice as fast, etc.)
3697
4323
  */
3698
- selectPlaybackSpeed?: (playbackSpeed: number) => void;
3699
- destroy(): Promise<void>;
3700
- getBufferedInfo?(): BufferChunk[];
4324
+ selectPlaybackSpeed?: (playbackSpeed: number) => void;
4325
+ destroy(): Promise<void>;
4326
+ getBufferedInfo?(): BufferChunk[];
4327
+ /**
4328
+ * Clears buffered segments ahead of the current playback position.
4329
+ * Used during interactive streaming camera switches to enable faster content transition.
4330
+ *
4331
+ * @param safeMarginMs - Milliseconds of buffer to keep ahead of current position (default: 0)
4332
+ * @param secondarySourceId - Optional ID of the secondary source being switched to
4333
+ * @returns Promise that resolves when buffer clearing is complete
4334
+ */
4335
+ clearBufferAhead?(safeMarginMs?: number, secondarySourceId?: string): Promise<void>;
4336
+ /**
4337
+ * Sets the streaming profile to configure buffer behavior.
4338
+ * Use 'low' for interactive streaming with fast camera switches,
4339
+ * 'medium' for balanced behavior, 'high' for maximum stability.
4340
+ *
4341
+ * @param profile - The streaming profile to apply
4342
+ */
4343
+ setStreamingProfile?(profile: StreamingProfile): void;
4344
+ /**
4345
+ * Gets the current streaming profile.
4346
+ */
4347
+ getStreamingProfile?(): StreamingProfile;
4348
+ /**
4349
+ * Set whether to prefer native HLS playback over MSE.
4350
+ * This is required for AirPlay to work properly in Safari.
4351
+ * Must be called before play() to take effect.
4352
+ *
4353
+ * @param preferNativeHls - Whether to prefer native HLS playback
4354
+ */
4355
+ setPreferNativeHls?(preferNativeHls: boolean): void;
4356
+ /**
4357
+ * Reload the current source with the current configuration (including preferNativeHls).
4358
+ * This is a lightweight reload that doesn't go through the full playerWrapper source pipeline.
4359
+ * Used for switching between MSE and native HLS playback for AirPlay.
4360
+ *
4361
+ * @returns Promise that resolves when reload is complete
4362
+ */
4363
+ reloadCurrentConfig?(): Promise<void>;
3701
4364
  lastQuality: number | null;
3702
4365
  /**
3703
4366
  * Attribute indicating that the video is to be played "inline"
@@ -3800,6 +4463,19 @@ export declare interface PlayerInterface {
3800
4463
  */
3801
4464
  setPlaysInline?: (value: boolean) => void;
3802
4465
  setControlsList?: (value: string[]) => void;
4466
+ /**
4467
+ * Clears buffered segments ahead of the current playback position.
4468
+ * Used during interactive streaming camera switches to enable faster content transition.
4469
+ *
4470
+ * @param safeMarginMs - Milliseconds of buffer to keep ahead of current position (default: 0)
4471
+ * @returns Promise that resolves when buffer clearing is complete
4472
+ */
4473
+ clearBufferAhead?: (safeMarginMs?: number, secondarySourceId?: string) => Promise<void>;
4474
+ /**
4475
+ * Callback to receive camera switch progress updates.
4476
+ * Called by the engine during interactive streaming camera switches.
4477
+ */
4478
+ onCameraSwitchProgress?: (progress: CameraSwitchProgress) => void;
3803
4479
  }
3804
4480
 
3805
4481
  /**
@@ -3869,7 +4545,6 @@ export declare interface PlayerSourceInterface<T extends NonAdSourceType = NonAd
3869
4545
  start?: Date;
3870
4546
  from?: Date;
3871
4547
  sourceHistory?: string[];
3872
- staticAdsConfig?: StaticAdsBreak[];
3873
4548
  }
3874
4549
 
3875
4550
  /**
@@ -3888,7 +4563,6 @@ export declare interface PlayerSourceParams<T extends NonAdSourceType = NonAdSou
3888
4563
  seekingMatrix?: SeekingMatrixTemplate;
3889
4564
  sessionType?: VideoSourceField['sessionType'];
3890
4565
  sessionId?: string;
3891
- staticAdsConfig?: StaticAdsBreak[];
3892
4566
  }
3893
4567
 
3894
4568
  export declare type PlayersScene = InteractiveWidgetSceneBase<InteractiveWidgetSceneTemplateType.PLAYERS>;
@@ -3940,6 +4614,11 @@ export declare interface PlayerWrapper {
3940
4614
  availableLanguages: LangCode[] | null;
3941
4615
  canReplay: boolean;
3942
4616
  currentSecondarySource: Video | null;
4617
+ /**
4618
+ * Camera switch transition progress for interactive streaming.
4619
+ * Non-null when a camera switch is in progress.
4620
+ */
4621
+ cameraSwitchProgress: CameraSwitchProgress | null;
3943
4622
  currentTime: number;
3944
4623
  /**
3945
4624
  * Currently playing source
@@ -3990,6 +4669,10 @@ export declare interface PlayerWrapper {
3990
4669
  * Retry to play a video that failed to start playing (e.g. due to a network error)
3991
4670
  */
3992
4671
  retry: () => void;
4672
+ /**
4673
+ * Refresh the current source by calling getSourceUrl without sourceHistory.
4674
+ */
4675
+ refreshSource: () => Promise<void>;
3993
4676
  togglePlayPause: () => void;
3994
4677
  seekTo: (ms: number) => void;
3995
4678
  /**
@@ -3998,6 +4681,21 @@ export declare interface PlayerWrapper {
3998
4681
  setVolume: (volume: number) => void;
3999
4682
  changeLanguage: (langCode: LangCode) => Promise<void>;
4000
4683
  changeToFallbackSource: () => Promise<void>;
4684
+ /**
4685
+ * Switch to HLS source for AirPlay (Safari/iOS only).
4686
+ * Preserves current playback position.
4687
+ */
4688
+ switchToHlsForAirplay: () => Promise<void>;
4689
+ /**
4690
+ * Switch back to DASH from HLS after AirPlay disconnects.
4691
+ * Preserves current playback position.
4692
+ */
4693
+ switchToDashFromAirplay: () => Promise<void>;
4694
+ /**
4695
+ * Reload the current source while preserving playback position.
4696
+ * Used when switching between native HLS and MSE playback modes.
4697
+ */
4698
+ reloadCurrentSource: () => Promise<void>;
4001
4699
  /**
4002
4700
  * change volume by value between -1,1
4003
4701
  */
@@ -4022,10 +4720,20 @@ export declare interface PlayerWrapper {
4022
4720
  seekToLive: () => void;
4023
4721
  seekToLiveInternal: () => void;
4024
4722
  setIsBuffering: (isBuffering: boolean) => void;
4723
+ isCasting: boolean;
4025
4724
  setIsCasting: (isCasting: boolean) => void;
4026
4725
  skipAd: () => void;
4027
4726
  skipAllAds: () => void;
4028
4727
  switchSecondarySource: (activeVideoId?: string) => Promise<void>;
4728
+ /**
4729
+ * Set whether to prefer HLS sources over DASH.
4730
+ * Used in Safari/iOS when AirPlay is available, as AirPlay only supports HLS streaming.
4731
+ */
4732
+ setPreferHls: (preferHls: boolean) => void;
4733
+ /**
4734
+ * Suppress watermark tamper detection during AirPlay source switching.
4735
+ */
4736
+ setAirplaySwitching?: (isSwitching: boolean) => void;
4029
4737
  }
4030
4738
 
4031
4739
  /**
@@ -4050,19 +4758,7 @@ export declare enum PlayerWrapperEvents {
4050
4758
  /**
4051
4759
  * Un-pause was triggered
4052
4760
  */
4053
- 'unpause_triggered' = "unpause_triggered",
4054
- /**
4055
- * Triggered when an ad starts playing
4056
- */
4057
- 'ad-started' = "ad-started",
4058
- /**
4059
- * Triggered when an ad finishes playing
4060
- */
4061
- 'ad-ended' = "ad-ended",
4062
- /**
4063
- * Triggered when companion ads are available for the current ad
4064
- */
4065
- 'companion-ads' = "companion-ads"
4761
+ 'unpause_triggered' = "unpause_triggered"
4066
4762
  }
4067
4763
 
4068
4764
  /**
@@ -4090,6 +4786,20 @@ export declare type PlayerWrapperEventTypeType = `${PlayerWrapperEventType}`;
4090
4786
  */
4091
4787
  export declare type PrerollCheck = (source: PlayerSource) => Promise<AdSourceInterface | null>;
4092
4788
 
4789
+ export declare type PresentBannerExtendRowData = {
4790
+ name: Translation;
4791
+ subname?: Translation;
4792
+ description?: Translation;
4793
+ avatars?: ScalableAsset[];
4794
+ avatarsText?: Translation;
4795
+ asset?: ScalableAsset;
4796
+ buttons?: RowButton[];
4797
+ };
4798
+
4799
+ export declare type PricesField = {
4800
+ [currency in Currency]?: number | null;
4801
+ };
4802
+
4093
4803
  export declare enum primaPlusMonetizationLevel {
4094
4804
  light = "z7soJTA2dYSxnOOJw7B0",
4095
4805
  premium = "kwfM0D7Vzv5wfLf5go8o",
@@ -4188,8 +4898,9 @@ export declare interface ProgressMetadata {
4188
4898
  * @public
4189
4899
  */
4190
4900
  export declare interface Promotion {
4901
+ id?: string;
4191
4902
  duration?: Duration;
4192
- price?: number;
4903
+ prices?: PricesField;
4193
4904
  requiresPaymentAuthorization?: boolean;
4194
4905
  hideOtherSubscriptions?: boolean;
4195
4906
  }
@@ -4239,7 +4950,9 @@ export declare interface PurchasableMonetization extends Monetization {
4239
4950
  */
4240
4951
  price?: string | number;
4241
4952
  promotion: Promotion | null;
4242
- frequency?: MONETIZATION_FREQUENCY;
4953
+ frequency?: Omit<FrequencyInfo, 'title'> & {
4954
+ title: string;
4955
+ };
4243
4956
  frequencyInfo?: FrequencyInfo;
4244
4957
  durationDays?: number;
4245
4958
  /**
@@ -4279,7 +4992,30 @@ export declare interface PurchasableMonetization extends Monetization {
4279
4992
  * Number of seats left for the subscription.
4280
4993
  */
4281
4994
  seatsLeft?: number;
4995
+ /**
4996
+ * Trial period in milliseconds for the subscription.
4997
+ */
4998
+ trialPeriod?: number;
4999
+ /**
5000
+ * Maximum quantity of the subscription.
5001
+ */
4282
5002
  maxQuantity?: number;
5003
+ /**
5004
+ * Currency of the monetization price.
5005
+ */
5006
+ currency?: Currency;
5007
+ /**
5008
+ * Detailed price information, including currency and amount - Takes the price getter from purchsable monetization entity.
5009
+ */
5010
+ detailedPrice?: DetailedPrice;
5011
+ /**
5012
+ * Subtitle for the monetization, used in UI.
5013
+ */
5014
+ subtitle?: string;
5015
+ /**
5016
+ * Banner title for the monetization, used in UI.
5017
+ */
5018
+ bannerTitle?: string;
4283
5019
  }
4284
5020
 
4285
5021
  /**
@@ -4311,6 +5047,7 @@ export declare type Purchase = {
4311
5047
  monetization: PurchaseMonetization | null;
4312
5048
  monetizationId: string | null;
4313
5049
  monetizationRef: any | null;
5050
+ nextPaymentDate: Date | null;
4314
5051
  status: PurchaseStatus | null;
4315
5052
  type: PurchaseType | null;
4316
5053
  /**
@@ -4697,6 +5434,7 @@ export declare interface QerkoTransaction {
4697
5434
  paymentStatus: string | null;
4698
5435
  getPaymentInfo: () => Promise<void>;
4699
5436
  voucherId?: string;
5437
+ isLoading: boolean;
4700
5438
  }
4701
5439
 
4702
5440
  export declare type QRCodeScene = InteractiveWidgetSceneBase<InteractiveWidgetSceneTemplateType.QR_CODE>;
@@ -4725,7 +5463,7 @@ export declare interface QuestionRepository {
4725
5463
  readonly selectedAnswerId: string | undefined;
4726
5464
  isSubmitted: boolean;
4727
5465
  isSubmitting: boolean;
4728
- setCurrentQuestion: (question: CurrentQuestion | null, role: QuizGameRole, secondsToAnswer: number, shouldEnterAtTimestampMs?: number) => void;
5466
+ setCurrentQuestion: (question: CurrentQuestion | null, role: QuizGameRole, secondsToAnswer: number, shouldEnterAtTimestampMs?: number, shouldAdjustEndTimestampMs?: boolean) => void;
4729
5467
  selectAnswer: (answerId: string | undefined) => void;
4730
5468
  setShowCountdown: (showCountdown: boolean) => void;
4731
5469
  reset: () => void;
@@ -4975,6 +5713,16 @@ export declare type RequiredNullable<T> = {
4975
5713
  [P in keyof T]-?: P extends OptionalKeys<T> ? T[P] | null : T[P];
4976
5714
  };
4977
5715
 
5716
+ export declare interface ReviewItem {
5717
+ asset: ScalableAsset;
5718
+ name: Translation;
5719
+ subname?: Translation;
5720
+ rating: 1 | 2 | 3 | 4 | 5;
5721
+ description?: Translation;
5722
+ }
5723
+
5724
+ export declare type ReviewTileSpecificData = ReviewItem;
5725
+
4978
5726
  /**
4979
5727
  * @public
4980
5728
  */
@@ -4997,6 +5745,7 @@ export declare interface RouterOverrides {
4997
5745
  gridType: GRID_TYPES.ROW;
4998
5746
  rowId: string;
4999
5747
  organizationId?: string;
5748
+ applicationHandle?: string;
5000
5749
  } | {
5001
5750
  gridType: GRID_TYPES.VIDEO;
5002
5751
  videoId: string;
@@ -5028,6 +5777,7 @@ export declare interface RouterOverrides {
5028
5777
  goToRecommendedFromOrganizationRow: (screenId: string, rowId: string) => void;
5029
5778
  goToMagentaMomentsPage: (voucher?: string) => void;
5030
5779
  goToVoucherRedeemPage: () => void;
5780
+ goToSubscriptionsPage: (organizationHandle?: string) => void;
5031
5781
  updateParams: (params: URLSearchParams) => void;
5032
5782
  navigate: (path: string) => void;
5033
5783
  }
@@ -5046,25 +5796,7 @@ export declare interface RouterOverridesContextState {
5046
5796
  /**
5047
5797
  * @public
5048
5798
  */
5049
- export declare interface Row {
5050
- id: string;
5051
- rowId: string;
5052
- name: string;
5053
- description?: string;
5054
- assets: AssetsField;
5055
- type: ScreenRowType;
5056
- isLiveRow: boolean;
5057
- tiles: PaginationInterface<ItemInRow>;
5058
- numberOfLines?: number;
5059
- monetizations?: {
5060
- monetizationRef: any;
5061
- }[];
5062
- rowComponent: RowComponent.ROW | RowComponent.BANNER;
5063
- itemComponent: RowItemComponent | BannerItemComponent;
5064
- organizationId?: string;
5065
- bottomComponent?: BottomComponent;
5066
- showDescriptionAsTitle?: boolean;
5067
- }
5799
+ export declare type Row = StaticRow | DynamicRow;
5068
5800
 
5069
5801
  /**
5070
5802
  * @public
@@ -5082,17 +5814,41 @@ export declare enum ROW_ITEM_TYPES {
5082
5814
  /**
5083
5815
  * @public
5084
5816
  */
5085
- export declare interface RowBanner extends Row {
5817
+ export declare interface RowBanner extends DynamicRow {
5086
5818
  rowComponent: RowComponent.BANNER;
5087
5819
  itemComponent: BannerItemComponent;
5088
5820
  }
5089
5821
 
5822
+ export declare interface RowButton {
5823
+ id: string;
5824
+ enabled: boolean;
5825
+ href: string;
5826
+ text: Translation;
5827
+ variant: 'primary' | 'secondary';
5828
+ leftIcon?: 'play';
5829
+ }
5830
+
5090
5831
  /**
5091
5832
  * @public
5092
5833
  */
5093
5834
  export declare enum RowComponent {
5094
5835
  ROW = "ROW",
5095
- BANNER = "BANNER"
5836
+ BANNER = "BANNER",
5837
+ BENEFITS = "BENEFITS",
5838
+ REVIEWS = "REVIEWS",
5839
+ MONETIZATIONS = "MONETIZATIONS",
5840
+ SPLIT_LAYOUT = "SPLIT_LAYOUT",
5841
+ NUMBERS = "NUMBERS",
5842
+ FAQ = "FAQ",
5843
+ CTA_BANNER = "CTA_BANNER",
5844
+ PRESENT_BANNER = "PRESENT_BANNER",
5845
+ MONETIZATION_BANNER = "MONETIZATION_BANNER",
5846
+ VIDEO_BANNER = "VIDEO_BANNER",
5847
+ MEDIA_ACCORDEON = "MEDIA_ACCORDEON",
5848
+ EXPLORE = "EXPLORE",
5849
+ BACKGROUND_BANNER = "BACKGROUND_BANNER",
5850
+ PARTNER_LOGOS = "PARTNER_LOGOS",
5851
+ HOMEPAGE_BANNER = "HOMEPAGE_BANNER"
5096
5852
  }
5097
5853
 
5098
5854
  export declare enum RowFilterCollection {
@@ -5126,72 +5882,10 @@ export declare interface RowFilterWhereField {
5126
5882
  value: any;
5127
5883
  }
5128
5884
 
5129
- export declare type RowInScreen = {
5130
- /**
5131
- * Firebase document path. If not provided, the row is not defined in db and is dynamically generated (e.g. recommendation row).
5132
- */
5133
- path?: string;
5134
- /**
5135
- * Tivio row ID.
5136
- */
5137
- rowId: string;
5138
- /**
5139
- * If all items are from the same organization this will be set.
5140
- */
5141
- organizationId?: string;
5142
- /**
5143
- * Row name.
5144
- */
5145
- name: Translation;
5146
- /**
5147
- * Row filter based on which to pick tiles.
5148
- */
5149
- filter?: RowFilterField;
5150
- /**
5151
- * Row order in the screen.
5152
- */
5153
- order?: number;
5154
- /**
5155
- * Number of lines of the title.
5156
- */
5157
- numberOfLines?: number;
5158
- /**
5159
- * Standard row or a Banner.
5160
- */
5161
- rowComponent: RowComponent;
5162
- /**
5163
- * Component to use to render the tiles in the row.
5164
- */
5165
- itemComponent: RowItemComponent | BannerItemComponent;
5166
- /**
5167
- * Type of the row (continue to watch, custom, filter, ...).
5168
- */
5169
- type: ScreenRowType;
5170
- /**
5171
- * Items to display in the row.
5172
- */
5173
- tiles: GetTilesInRowResponse;
5174
- /**
5175
- * Setting for decided what to show bellow the tiles
5176
- */
5177
- bottomComponent?: BottomComponent;
5178
- /**
5179
- * Setting for decided whether to show description instead of title in the tiles
5180
- */
5181
- showDescriptionAsTitle?: boolean;
5182
- /**
5183
- * Setting for decided whether to hide title in the tiles/banners
5184
- */
5185
- hideTitle?: boolean;
5186
- /**
5187
- * Link to external URL
5188
- */
5189
- externalUrl?: string;
5190
- /**
5191
- * Title of Play button
5192
- */
5193
- playButtonTitle?: Translation;
5194
- };
5885
+ /**
5886
+ * Row in screen - can be either static or dynamic
5887
+ */
5888
+ export declare type RowInScreen = StaticRowInScreen | DynamicRowInScreen;
5195
5889
 
5196
5890
  /**
5197
5891
  * @public
@@ -5204,6 +5898,7 @@ export declare interface RowItem extends RowItemAssets {
5204
5898
  assets: AssetsField | null;
5205
5899
  application: RowItemApplicationData | null;
5206
5900
  feedVisible?: boolean;
5901
+ tileProps?: TileProps;
5207
5902
  }
5208
5903
 
5209
5904
  /**
@@ -5241,7 +5936,11 @@ export declare enum RowItemComponent {
5241
5936
  ROW_ITEM_CREATORS_LANDSCAPE = "ROW_ITEM_CREATORS_LANDSCAPE",
5242
5937
  ROW_ITEM_CIRCLED = "ROW_ITEM_CIRCLED",
5243
5938
  ROW_ITEM_HIGHLIGHTED = "ROW_ITEM_HIGHLIGHTED",
5244
- ROW_ITEM_PLAIN = "ROW_ITEM_PLAIN"
5939
+ ROW_ITEM_PLAIN = "ROW_ITEM_PLAIN",
5940
+ SIDE_BANNER = "SIDE_BANNER",
5941
+ ROW_ITEM_FEATURED = "ROW_ITEM_FEATURED",
5942
+ CATEGORY_GRID = "CATEGORY_GRID",
5943
+ HERO_BANNER = "HERO_BANNER"
5245
5944
  }
5246
5945
 
5247
5946
  /**
@@ -5258,6 +5957,16 @@ export declare type RowItemsSubscription = (rowId: string, cb: (error: Error | n
5258
5957
  hasNextPage: boolean;
5259
5958
  } | null, fetchMore: null | ((count?: number) => void), isLoading: boolean) => void, limit?: number) => Disposer_2;
5260
5959
 
5960
+ /**
5961
+ * @public
5962
+ */
5963
+ export declare interface RowMonetizationData {
5964
+ id: string;
5965
+ path: string;
5966
+ placementType: 'channel' | 'tvChannel' | 'condition' | 'video' | 'section' | 'row';
5967
+ type: MonetizationType;
5968
+ }
5969
+
5261
5970
  /**
5262
5971
  * RowOrderByFieldPath that is used in @tivio/firebase needs to be retyped here.
5263
5972
  * @public
@@ -5270,7 +5979,7 @@ export declare enum RowOrderByFieldPath {
5270
5979
  /**
5271
5980
  * @public
5272
5981
  */
5273
- export declare interface RowStandard extends Row {
5982
+ export declare interface RowStandard extends DynamicRow {
5274
5983
  rowComponent: RowComponent.ROW;
5275
5984
  itemComponent: RowItemComponent;
5276
5985
  }
@@ -5383,6 +6092,11 @@ declare interface Screen_2 {
5383
6092
  hasNextPage: boolean;
5384
6093
  refetchIfNeeded: () => Promise<void>;
5385
6094
  allowOrganizationBanner?: boolean;
6095
+ /**
6096
+ * Path to content (e.g., "videos/ID" or "tvChannels/ID").
6097
+ * Used for PLAYER screen type to specify which content to play.
6098
+ */
6099
+ contentPath?: string;
5386
6100
  }
5387
6101
  export { Screen_2 as Screen }
5388
6102
 
@@ -5414,7 +6128,7 @@ export declare type ScreenConfig = {
5414
6128
  /**
5415
6129
  * @public
5416
6130
  */
5417
- export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites' | 'topWatched' | 'applications';
6131
+ export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites' | 'topWatched' | 'applications' | 'static';
5418
6132
 
5419
6133
  /**
5420
6134
  * Listen to screen data
@@ -5431,7 +6145,9 @@ export declare enum ScreenType {
5431
6145
  EMBED = "embed",
5432
6146
  RECOMMENDATION = "recommendation",
5433
6147
  FEED = "feed",
5434
- EPG = "epg"
6148
+ EPG = "epg",
6149
+ LANDING = "landing",
6150
+ PLAYER = "player"
5435
6151
  }
5436
6152
 
5437
6153
  /**
@@ -5455,14 +6171,6 @@ export declare type SdkReactConfig = Omit<TivioConfig, 'language'> & {
5455
6171
  language?: LangCode;
5456
6172
  };
5457
6173
 
5458
- /**
5459
- * @public
5460
- */
5461
- export declare interface SDKUserAuthCallbacks {
5462
- onGoToLogin?: () => void;
5463
- onGoToRegistration?: () => void;
5464
- }
5465
-
5466
6174
  /**
5467
6175
  * @public
5468
6176
  * @deprecated sections are no longer used.
@@ -5677,7 +6385,22 @@ export declare const showGdprConsentPreferences: () => Promise<void>;
5677
6385
  /**
5678
6386
  * @public
5679
6387
  */
5680
- export declare type SignInProvider = 'google' | 'patreon' | 'apple';
6388
+ export declare interface SideBannerProps {
6389
+ title: string;
6390
+ description: string;
6391
+ cover: string;
6392
+ backgroundColor?: string;
6393
+ buttonText?: string;
6394
+ onButtonClick?: () => void;
6395
+ buttonHref?: string;
6396
+ imagePosition?: 'left' | 'right';
6397
+ textBackgroundColor?: string;
6398
+ }
6399
+
6400
+ /**
6401
+ * @public
6402
+ */
6403
+ export declare type SignInProvider = 'google' | 'patreon' | 'apple' | 'facebook';
5681
6404
 
5682
6405
  /**
5683
6406
  * Simplified VideoController interface for external rendering
@@ -5766,27 +6489,6 @@ export declare interface SimplifiedVideoController {
5766
6489
  muted: boolean;
5767
6490
  volume: number;
5768
6491
  }) => void): void;
5769
- /**
5770
- * Add an event listener for ad started events
5771
- * @param event - Must be 'ad-started'
5772
- * @param callback - Function called when an ad starts playing
5773
- */
5774
- addEventListener(event: 'ad-started', callback: (adMetadata: AdMetadata & {
5775
- customAdMetadata?: Record<string, unknown> | null;
5776
- ctaElement: HTMLElement | null;
5777
- }) => void): void;
5778
- /**
5779
- * Add an event listener for ad ended events
5780
- * @param event - Must be 'ad-ended'
5781
- * @param callback - Function called when an ad finishes playing
5782
- */
5783
- addEventListener(event: 'ad-ended', callback: () => void): void;
5784
- /**
5785
- * Add an event listener for companion ads events
5786
- * @param event - Must be 'companion-ads'
5787
- * @param callback - Function called when companion ads are available
5788
- */
5789
- addEventListener(event: 'companion-ads', callback: (companionAds: CompanionAd[]) => void): void;
5790
6492
  /**
5791
6493
  * Remove an event listener
5792
6494
  * @param event - The event name to stop listening for
@@ -5798,7 +6500,6 @@ export declare interface SimplifiedVideoController {
5798
6500
  * @param source - The new source to load (can be a video path, channel path, or source parameters)
5799
6501
  */
5800
6502
  setSource(source: WebPlayerProps['source']): void;
5801
- setAdsConfig(adsConfig: StaticAdsBreak[]): void;
5802
6503
  /**
5803
6504
  * Destroy the player and clean up all resources
5804
6505
  */
@@ -5871,6 +6572,14 @@ export declare enum SourceType {
5871
6572
  VOD_EXTERNAL = "vod_external"
5872
6573
  }
5873
6574
 
6575
+ export declare interface SplitLayoutItem {
6576
+ asset: ScalableAsset;
6577
+ name: Translation;
6578
+ description?: Translation;
6579
+ }
6580
+
6581
+ export declare type SplitLayoutSpecificData = SplitLayoutItem;
6582
+
5874
6583
  /**
5875
6584
  * External information of video from SportyTv EPG import
5876
6585
  * @public
@@ -5907,35 +6616,241 @@ export declare type StartAndContinuePosition = {
5907
6616
 
5908
6617
  export declare type StartLiveStreamPayload = BaseWidgetControlPayload;
5909
6618
 
5910
- declare interface StartLiveStreamRequest {
5911
- action: 'startLiveStream';
5912
- payload: StartLiveStreamPayload;
6619
+ declare interface StartLiveStreamRequest {
6620
+ action: 'startLiveStream';
6621
+ payload: StartLiveStreamPayload;
6622
+ }
6623
+
6624
+ export declare interface StartLiveStreamResponse {
6625
+ liveStreamProcessPath: string;
6626
+ streamingStudioProcessPath: string;
6627
+ error?: string;
6628
+ }
6629
+
6630
+ /**
6631
+ * Row components available for static rows (BENEFITS, FAQ, etc.)
6632
+ * Matches the rowComponent constraint in StaticRow type definition
6633
+ * @public
6634
+ */
6635
+ 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];
6636
+
6637
+ /**
6638
+ * Static row (e.g. benefits, reviews, FAQ) - doesn't have itemComponent or dynamic fields
6639
+ * Uses special row components like BENEFITS, REVIEWS, FAQ, etc.
6640
+ * @public
6641
+ */
6642
+ export declare type StaticRow = StaticRowBenefits | StaticRowReviews | StaticRowNumbers | StaticRowSplitLayout | StaticRowFaq | StaticRowPresentBanner | StaticRowExplore | StaticRowCtaBanner | StaticRowWithoutCustomItems;
6643
+
6644
+ /**
6645
+ * Benefits row
6646
+ * @public
6647
+ */
6648
+ export declare interface StaticRowBenefits extends BaseRow {
6649
+ type: 'static';
6650
+ rowComponent: RowComponent.BENEFITS;
6651
+ customItems: BenefitTileSpecificData;
6652
+ screenRef?: string;
6653
+ videoRef?: string;
6654
+ buttons?: RowButton[];
6655
+ }
6656
+
6657
+ /**
6658
+ * CTA Banner row
6659
+ * @public
6660
+ */
6661
+ export declare interface StaticRowCtaBanner extends BaseRow {
6662
+ type: 'static';
6663
+ rowComponent: RowComponent.CTA_BANNER;
6664
+ customItems: CtaBannerExtendRowData;
6665
+ screenRef?: string;
6666
+ videoRef?: string;
6667
+ variant?: 'light' | 'dark' | 'default' | 'large';
6668
+ heading?: Translation;
6669
+ subtitle?: {
6670
+ text: Translation;
6671
+ showIcon?: boolean;
6672
+ };
6673
+ button?: {
6674
+ href: string;
6675
+ text: Translation;
6676
+ };
6677
+ }
6678
+
6679
+ /**
6680
+ * Explore row
6681
+ * @public
6682
+ */
6683
+ export declare interface StaticRowExplore extends BaseRow {
6684
+ type: 'static';
6685
+ rowComponent: RowComponent.EXPLORE;
6686
+ customItems: ExploreTileSpecificData;
6687
+ screenRef?: string;
6688
+ videoRef?: string;
6689
+ }
6690
+
6691
+ /**
6692
+ * FAQ row
6693
+ * @public
6694
+ */
6695
+ export declare interface StaticRowFaq extends BaseRow {
6696
+ type: 'static';
6697
+ rowComponent: RowComponent.FAQ;
6698
+ customItems: FaqTileSpecificData;
6699
+ screenRef?: string;
6700
+ videoRef?: string;
6701
+ email?: string;
6702
+ }
6703
+
6704
+ /**
6705
+ * Static row type - discriminated union by rowComponent
6706
+ */
6707
+ export declare type StaticRowInScreen = StaticRowInScreenCtaBanner | StaticRowInScreenPresentBanner | StaticRowInScreenVideoBanner | StaticRowInScreenHomepageBanner | StaticRowInScreenFaq | StaticRowInScreenBenefits | StaticRowInScreenWithTiles;
6708
+
6709
+ /**
6710
+ * Benefits static row - has tiles + buttons
6711
+ */
6712
+ declare type StaticRowInScreenBenefits = BaseStaticRowInScreen & {
6713
+ rowComponent: RowComponent.BENEFITS;
6714
+ buttons?: RowButton[];
6715
+ tiles: PaginatedResponse<TileData<'static'>, 'rowId'>;
6716
+ };
6717
+
6718
+ /**
6719
+ * CTA Banner static row - data flatten to row level (no tiles)
6720
+ */
6721
+ declare type StaticRowInScreenCtaBanner = BaseStaticRowInScreen & {
6722
+ rowComponent: RowComponent.CTA_BANNER;
6723
+ } & CtaBannerExtendRowData;
6724
+
6725
+ /**
6726
+ * FAQ static row - has description and email fields specific to FAQ
6727
+ */
6728
+ declare type StaticRowInScreenFaq = BaseStaticRowInScreen & {
6729
+ rowComponent: RowComponent.FAQ;
6730
+ description?: Translation;
6731
+ email?: string;
6732
+ tiles: PaginatedResponse<TileData<'static'>, 'rowId'>;
6733
+ };
6734
+
6735
+ /**
6736
+ * Homepage Banner static row - multiline banner for homepage (no tiles)
6737
+ */
6738
+ declare type StaticRowInScreenHomepageBanner = BaseStaticRowInScreen & {
6739
+ rowComponent: RowComponent.HOMEPAGE_BANNER;
6740
+ } & HomepageBannerExtendRowData;
6741
+
6742
+ /**
6743
+ * Present Banner static row - organization fields + videoPath flatten to row level (no tiles)
6744
+ */
6745
+ declare type StaticRowInScreenPresentBanner = BaseStaticRowInScreen & {
6746
+ rowComponent: RowComponent.PRESENT_BANNER;
6747
+ videoPath?: string;
6748
+ } & Omit<PresentBannerExtendRowData, 'name' | 'description'>;
6749
+
6750
+ /**
6751
+ * Video Banner static row - videoPath flatten to row level (no tiles)
6752
+ */
6753
+ declare type StaticRowInScreenVideoBanner = BaseStaticRowInScreen & {
6754
+ rowComponent: RowComponent.VIDEO_BANNER;
6755
+ videoPath?: string;
6756
+ };
6757
+
6758
+ /**
6759
+ * Static rows with tiles (NUMBERS, EXPLORE, etc.)
6760
+ */
6761
+ declare type StaticRowInScreenWithTiles = BaseStaticRowInScreen & {
6762
+ rowComponent: Exclude<RowComponent, RowComponent.CTA_BANNER | RowComponent.PRESENT_BANNER | RowComponent.VIDEO_BANNER | RowComponent.HOMEPAGE_BANNER | RowComponent.FAQ | RowComponent.BENEFITS>;
6763
+ tiles: PaginatedResponse<TileData<'static'>, 'rowId'>;
6764
+ };
6765
+
6766
+ /**
6767
+ * Numbers row
6768
+ * @public
6769
+ */
6770
+ export declare interface StaticRowNumbers extends BaseRow {
6771
+ type: 'static';
6772
+ rowComponent: RowComponent.NUMBERS;
6773
+ customItems: NumbersTileSpecificData;
6774
+ screenRef?: string;
6775
+ videoRef?: string;
6776
+ variant?: 'default' | 'large';
5913
6777
  }
5914
6778
 
5915
- export declare interface StartLiveStreamResponse {
5916
- liveStreamProcessPath: string;
5917
- streamingStudioProcessPath: string;
5918
- error?: string;
6779
+ /**
6780
+ * Present banner row
6781
+ * @public
6782
+ */
6783
+ export declare interface StaticRowPresentBanner extends BaseRow {
6784
+ type: 'static';
6785
+ rowComponent: RowComponent.PRESENT_BANNER;
6786
+ customItems: PresentBannerExtendRowData;
6787
+ screenRef?: string;
6788
+ videoRef?: string;
6789
+ subname?: Translation;
6790
+ avatars?: ScalableAsset[];
6791
+ avatarsText?: Translation;
6792
+ asset?: ScalableAsset;
6793
+ videoPath?: string;
6794
+ buttons?: RowButton[];
5919
6795
  }
5920
6796
 
5921
- export declare type StaticAdsBreak = StaticAdsBreakPostrollPreroll | StaticAdsBreakMidroll | StaticAdsBreakReplacement;
6797
+ /**
6798
+ * Reviews row
6799
+ * @public
6800
+ */
6801
+ export declare interface StaticRowReviews extends BaseRow {
6802
+ type: 'static';
6803
+ rowComponent: RowComponent.REVIEWS;
6804
+ customItems: ReviewTileSpecificData;
6805
+ screenRef?: string;
6806
+ videoRef?: string;
6807
+ }
5922
6808
 
5923
- export declare interface StaticAdsBreakMidroll {
5924
- type: 'midroll';
5925
- from: number;
5926
- url: string;
6809
+ /**
6810
+ * Split layout row
6811
+ * @public
6812
+ */
6813
+ export declare interface StaticRowSplitLayout extends BaseRow {
6814
+ type: 'static';
6815
+ rowComponent: RowComponent.SPLIT_LAYOUT;
6816
+ customItems: SplitLayoutSpecificData;
6817
+ screenRef?: string;
6818
+ videoRef?: string;
5927
6819
  }
5928
6820
 
5929
- declare interface StaticAdsBreakPostrollPreroll {
5930
- type: 'preroll' | 'postroll';
5931
- url: string;
6821
+ /**
6822
+ * Static row without customItems (video banner, media accordion, monetization banner, background banner)
6823
+ * @public
6824
+ */
6825
+ export declare interface StaticRowWithoutCustomItems extends BaseRow {
6826
+ type: 'static';
6827
+ rowComponent: RowComponent.VIDEO_BANNER | RowComponent.MEDIA_ACCORDEON | RowComponent.MONETIZATION_BANNER | RowComponent.BACKGROUND_BANNER | RowComponent.PARTNER_LOGOS;
6828
+ screenRef?: string;
6829
+ videoRef?: string;
6830
+ videoPath?: string;
5932
6831
  }
5933
6832
 
5934
- export declare interface StaticAdsBreakReplacement {
5935
- type: 'replacement';
5936
- url: string;
6833
+ /**
6834
+ * Tile data for static rows with itemSpecificData (BENEFITS, FAQ, NUMBERS, SPLIT_LAYOUT, REVIEWS, EXPLORE).
6835
+ * @public
6836
+ */
6837
+ export declare interface StaticTileData<ItemSpecificData extends StaticTileItemSpecificData = StaticTileItemSpecificData> {
6838
+ /**
6839
+ * Specific data for an item type (e.g. benefit, faq, numbers, split layout, etc.).
6840
+ */
6841
+ itemSpecificData: ItemSpecificData;
5937
6842
  }
5938
6843
 
6844
+ /**
6845
+ * Type for itemSpecificData in API tile responses.
6846
+ * Excludes types that don't use itemSpecificData in tiles:
6847
+ * - MediaAccordeonTileSpecificData: MEDIA_ACCORDEON only uses path/id/name fields
6848
+ * - PresentBannerExtendRowData: PRESENT_BANNER data is flatten to row level (no tiles)
6849
+ * - CtaBannerExtendRowData: CTA_BANNER data is flatten to row level (no tiles)
6850
+ * @public
6851
+ */
6852
+ export declare type StaticTileItemSpecificData = BenefitTileSpecificData | ReviewTileSpecificData | NumbersTileSpecificData | SplitLayoutSpecificData | FaqTileSpecificData | ExploreTileSpecificData | MediaAccordeonTileSpecificData;
6853
+
5939
6854
  /**
5940
6855
  * @public
5941
6856
  */
@@ -5950,6 +6865,15 @@ export declare interface StoreBadgeConfig {
5950
6865
  appId: string;
5951
6866
  }
5952
6867
 
6868
+ /**
6869
+ * @public
6870
+ * Streaming profile for buffer configuration.
6871
+ * - 'low': Minimal buffering for fastest camera switches (bufferingGoal: 3s)
6872
+ * - 'medium': Balanced buffering (bufferingGoal: 5s) - default
6873
+ * - 'high': Maximum buffering for stable playback (bufferingGoal: 15s)
6874
+ */
6875
+ export declare type StreamingProfile = 'low' | 'medium' | 'high';
6876
+
5953
6877
  export declare interface SubmitAnswerRequest {
5954
6878
  answerOptionId?: string;
5955
6879
  answerText?: string;
@@ -6018,6 +6942,25 @@ declare interface SubscriptionInfo {
6018
6942
  frequency: string;
6019
6943
  }
6020
6944
 
6945
+ /**
6946
+ * Extended language codes for subtitle tracks.
6947
+ * Includes all LangCode values plus additional languages only needed for subtitles.
6948
+ * @public
6949
+ */
6950
+ export declare type SubtitleLangCode = LangCode | 'uk' | 'zh';
6951
+
6952
+ /**
6953
+ * Mapping of subtitle language codes to their English names.
6954
+ * @public
6955
+ */
6956
+ export declare const SubtitleLangCodeToTitle: Record<SubtitleLangCode, string>;
6957
+
6958
+ /**
6959
+ * All subtitle language codes including extra languages not in LangCode.
6960
+ * @public
6961
+ */
6962
+ export declare const subtitleLanguages: SubtitleLangCode[];
6963
+
6021
6964
  /**
6022
6965
  * @public
6023
6966
  */
@@ -6058,8 +7001,8 @@ export declare interface Tag extends RowItem {
6058
7001
  detailBanner?: string;
6059
7002
  availableSeasons?: AvailableSeason[];
6060
7003
  isFavorite: boolean;
6061
- addToFavorites: () => Promise<void>;
6062
- removeFromFavorites: () => Promise<void>;
7004
+ addToFavorites: () => void;
7005
+ removeFromFavorites: () => void;
6063
7006
  cover: string;
6064
7007
  getApplicationName: () => string | undefined;
6065
7008
  seriesRef?: DocumentReference<any>;
@@ -6172,37 +7115,66 @@ export declare interface TileApplicationData {
6172
7115
  isMainApplication?: boolean;
6173
7116
  }
6174
7117
 
6175
- export declare interface TileData<ItemSpecificData = VideoTileSpecificData | TvChannelTileSpecificData | TagTileSpecificData | ArticleTileSpecificData | SeriesTileSpecificData> {
6176
- /**
6177
- * Tile item ID.
6178
- */
6179
- id: string;
6180
- /**
6181
- * Timestamp of the item creation.
6182
- */
6183
- created: number;
6184
- /**
6185
- * Type of the tile. VIDEO, TV_CHANNEL, TAG, ...
6186
- */
6187
- itemType: ROW_ITEM_TYPES;
7118
+ /**
7119
+ * @public
7120
+ */
7121
+ export declare interface TileComponentProps {
7122
+ children?: React_2.ReactNode;
7123
+ cover?: string;
7124
+ bottomLabel: string;
7125
+ bottomLabelAreaHeight: number;
7126
+ bottomItem?: React_2.ReactNode;
7127
+ innerLabel: string;
6188
7128
  /**
6189
- * Tile item name translation.
7129
+ * Override font size of component type specific tile based on viewport width
6190
7130
  */
6191
- name: Translation;
7131
+ innerLabelFontSize?: number;
7132
+ duration: string;
7133
+ price: string | null;
7134
+ focused: boolean;
7135
+ onClick?: () => void;
7136
+ hoverable: boolean;
7137
+ coverPadding: CoverPadding;
7138
+ variant: RowItemComponent;
7139
+ coverWidth: number;
7140
+ progress?: number;
7141
+ time?: string;
7142
+ logo?: string;
7143
+ bigLogo?: string;
7144
+ coverHeight: number;
7145
+ aspectRatio?: number;
6192
7146
  /**
6193
- * Firestore path to the item.
7147
+ * Margin of inner TileContainer.
7148
+ * Now used for backward compatibility for WebTileGrid. Consider to use it other way.
6194
7149
  */
6195
- path: string;
7150
+ containerMargin?: number | string;
7151
+ created?: Date;
7152
+ numberOfLines?: number;
7153
+ applicationName?: string;
7154
+ applicationLogo?: string;
7155
+ hasBranding?: boolean;
7156
+ applicationHandle?: string;
7157
+ fullWidth?: boolean;
7158
+ bottomComponent?: BottomComponent;
7159
+ showAlreadyWatchedOverlay?: boolean;
7160
+ itemType?: ROW_ITEM_TYPES;
7161
+ description?: string;
7162
+ showDescriptionAsTitle?: boolean;
7163
+ isSeries?: boolean;
7164
+ episodeCount?: number;
6196
7165
  /**
6197
- * Application info including logo, name and number of videos.
7166
+ * Optional label to display in the top-right corner of the tile (e.g., "Exclusive").
7167
+ * Label text (already resolved for the current language).
6198
7168
  */
6199
- application?: TileApplicationData;
7169
+ topLabel?: string;
6200
7170
  /**
6201
- * Specific data for an item type (e.g. video, tv channel, tag, ...).
7171
+ * CSS color for the topLabel background. Defaults to white.
6202
7172
  */
6203
- itemSpecificData: ItemSpecificData;
7173
+ topLabelColor?: string;
6204
7174
  }
6205
7175
 
7176
+ export declare type TileData<T extends ScreenRowType = ScreenRowType> = T extends 'static' ? StaticTileData : DocumentTileData;
7177
+
6206
7178
  export declare interface TileMonetizationData {
6207
7179
  id: string;
6208
7180
  path: string;
@@ -6259,56 +7231,17 @@ export declare interface TileOptions {
6259
7231
  }
6260
7232
 
6261
7233
  /**
7234
+ * Additional properties that can be applied to tiles for visual customization
6262
7235
  * @public
6263
7236
  */
6264
7237
  export declare interface TileProps {
6265
- children?: React_2.ReactNode;
6266
- cover?: string;
6267
- bottomLabel: string;
6268
- bottomLabelAreaHeight: number;
6269
- bottomItem?: React_2.ReactNode;
6270
- innerLabel: string;
6271
- /**
6272
- * Override font size of component type specific tile based on viewport width
6273
- */
6274
- innerLabelFontSize?: number;
6275
- duration: string;
6276
- price: string | null;
6277
- focused: boolean;
6278
- onClick?: () => void;
6279
- hoverable: boolean;
6280
- coverPadding: CoverPadding;
6281
- variant: RowItemComponent;
6282
- coverWidth: number;
6283
- progress?: number;
6284
- time?: string;
6285
- logo?: string;
6286
- bigLogo?: string;
6287
- coverHeight: number;
6288
- aspectRatio?: number;
6289
- /**
6290
- * Margin of inner TileContainer.
6291
- * Now used for backward compatibility for WebTileGrid. Consider to use it other way.
6292
- */
6293
- containerMargin?: number | string;
6294
- created?: Date;
6295
- numberOfLines?: number;
6296
- applicationName?: string;
6297
- applicationLogo?: string;
6298
- hasBranding?: boolean;
6299
- applicationHandle?: string;
6300
- fullWidth?: boolean;
6301
- bottomComponent?: BottomComponent;
6302
- showAlreadyWatchedOverlay?: boolean;
6303
- itemType?: ROW_ITEM_TYPES;
6304
- description?: string;
6305
- showDescriptionAsTitle?: boolean;
7238
+ topRightLabel?: TileTopRightLabel;
6306
7239
  }
6307
7240
 
6308
7241
  /**
6309
7242
  * @public
6310
7243
  */
6311
- export declare type TilePropsPartial = Partial<TileProps>;
7244
+ export declare type TilePropsPartial = Partial<TileComponentProps>;
6312
7245
 
6313
7246
  /**
6314
7247
  * @internal
@@ -6348,6 +7281,15 @@ export declare type TileSizesMap = {
6348
7281
  */
6349
7282
  export declare type TileSizeVariant = 'default' | 'mobile';
6350
7283
 
7284
+ /**
7285
+ * Custom label to be displayed on a tile (e.g., "Exclusive" badge)
7286
+ * @public
7287
+ */
7288
+ export declare interface TileTopRightLabel {
7289
+ text: string;
7290
+ color?: string;
7291
+ }
7292
+
6351
7293
  /**
6352
7294
  * @public
6353
7295
  */
@@ -6438,10 +7380,6 @@ export declare interface TivioComponents {
6438
7380
  ContentSortPicker: React_2.ComponentType<ContentSortPickerProps>;
6439
7381
  WebTivioProVideoScreen: React_2.ComponentType<WebTivioProVideoScreenProps>;
6440
7382
  RemoteController: React_2.ComponentType<RemoteControllerProps>;
6441
- MonetizationsSelectOverlay: React_2.ComponentType;
6442
- MonetizationsSelectOverlayContextProvider: React_2.ComponentType<{
6443
- children: React_2.ReactNode;
6444
- }>;
6445
7383
  }
6446
7384
 
6447
7385
  /**
@@ -6478,7 +7416,10 @@ export declare interface TivioConfig {
6478
7416
  * @deprecated this field is no longer in use and has no impact when set.
6479
7417
  */
6480
7418
  firestore?: any | null;
6481
- currency: Currency;
7419
+ /**
7420
+ * @deprecated currency should be determined by `currencies` field in organization document in database, do not rely on this field.
7421
+ */
7422
+ currency?: Currency;
6482
7423
  /**
6483
7424
  * Represents an optional array of LanguageSelector objects.
6484
7425
  * Used to define and manage a list of supported languages for different language-usages (user, content,...).
@@ -6637,6 +7578,10 @@ export declare type TivioInternalComponents = {
6637
7578
  }>;
6638
7579
  Banner: React_2.ComponentType<BannerPropsPartial>;
6639
7580
  CustomAppHistoryContext: React_2.Context<HistoryContextData | undefined>;
7581
+ ScrollableSubscriptionList: React_2.ComponentType<{
7582
+ subscriptions: PurchasableMonetization[];
7583
+ renderSubscription: (subscription: PurchasableMonetization) => React_2.ReactNode;
7584
+ }>;
6640
7585
  };
6641
7586
 
6642
7587
  /**
@@ -6687,6 +7632,13 @@ export declare type TivioInternalHooks = {
6687
7632
  error: Error | null;
6688
7633
  loading: boolean;
6689
7634
  });
7635
+ useScrollShadows: () => {
7636
+ scrollRef: React_2.RefObject<HTMLDivElement>;
7637
+ showLeftShadow: boolean;
7638
+ showRightShadow: boolean;
7639
+ shouldCenter: boolean;
7640
+ checkScrollShadows: () => void;
7641
+ };
6690
7642
  useTvChannel: UseTvChannel;
6691
7643
  useUser: () => {
6692
7644
  user: User | null;
@@ -6714,9 +7666,7 @@ export declare type TivioInternalProviders = {
6714
7666
  UserContextProvider: React_2.ComponentType<{
6715
7667
  children?: React_2.ReactNode;
6716
7668
  }>;
6717
- MonetizationsSelectOverlayContextProvider: React_2.ComponentType<{
6718
- children: React_2.ReactNode;
6719
- }>;
7669
+ MonetizationsSelectOverlayContextProvider: React_2.ComponentType;
6720
7670
  QerkoOverlayContextProvider: React_2.ComponentType;
6721
7671
  /**
6722
7672
  * @deprecated do not use, this provider will be removed in the future
@@ -6821,7 +7771,7 @@ export declare type TivioReactBundle = {
6821
7771
  subscriptions: TivioSubscriptions;
6822
7772
  purchaseVideoWithQerko: (videoId: string, monetizationId: string, voucher?: {
6823
7773
  expirationDate: Date;
6824
- }) => Promise<QerkoPaymentInfo>;
7774
+ }, email?: string) => Promise<QerkoPaymentInfo>;
6825
7775
  purchaseSubscriptionWithQerko: (monetizationId: string, voucher?: {
6826
7776
  expirationDate: Date;
6827
7777
  }) => Promise<QerkoPaymentInfo>;
@@ -6962,7 +7912,7 @@ export declare interface TvAppProps {
6962
7912
  /**
6963
7913
  * @public
6964
7914
  */
6965
- export declare interface TvChannel extends RowItem, MonetizableItem {
7915
+ export declare interface TvChannel extends RowItem {
6966
7916
  id: string;
6967
7917
  itemType: ROW_ITEM_TYPES.TV_CHANNEL;
6968
7918
  name: string;
@@ -6973,11 +7923,17 @@ export declare interface TvChannel extends RowItem, MonetizableItem {
6973
7923
  logoPendingOverlayWidth?: string;
6974
7924
  hls: string;
6975
7925
  dash: string;
7926
+ /**
7927
+ * Returns all transactions and subscriptions applied to this tv channel.
7928
+ * Transactions before subscriptions, sorted by price ascending.
7929
+ */
7930
+ getPurchasableMonetizations(options?: GetPurchasableMonetizationsOptions): PurchasableMonetization[];
6976
7931
  getSourceUrl(options?: {
6977
7932
  language?: LangCode;
6978
7933
  }): Promise<GetSourceUrlResponse & {
6979
7934
  language?: LangCode;
6980
7935
  }>;
7936
+ purchasableMonetization: any | null;
6981
7937
  price: number;
6982
7938
  cover: string;
6983
7939
  isPlayable: boolean;
@@ -7007,7 +7963,12 @@ export declare enum TvChannelType {
7007
7963
  /**
7008
7964
  * "Virtual" tv channel constructed from separate videos
7009
7965
  */
7010
- VIRTUAL = "VIRTUAL"
7966
+ VIRTUAL = "VIRTUAL",
7967
+ /**
7968
+ * Scheduled channel - has EPG like VIRTUAL (admin can edit schedule)
7969
+ * but streams like CLASSIC (calls getSourceUrl on the channel, not per-video).
7970
+ */
7971
+ SCHEDULED = "SCHEDULED"
7011
7972
  }
7012
7973
 
7013
7974
  /**
@@ -7089,6 +8050,13 @@ export declare type UpdateNotificationSettingsRequest = {
7089
8050
 
7090
8051
  export declare type UpdateNotificationSettingsResponse = Promise<boolean>;
7091
8052
 
8053
+ export declare type UpdateUserEmailPayload = {
8054
+ newEmail: string;
8055
+ password: string;
8056
+ name: string;
8057
+ token?: string;
8058
+ };
8059
+
7092
8060
  export declare type UpsertCommentResponse = AddEditCommentResponse | DeleteCommentResponse;
7093
8061
 
7094
8062
  export declare type UrlNamesType = {
@@ -7151,7 +8119,7 @@ export declare const useCancelSubscription: UseCancelSubscription;
7151
8119
  * @public
7152
8120
  */
7153
8121
  export declare interface UseCancelSubscriptionsResult {
7154
- cancelSubscriptions: (subscriptionIds: string[]) => Promise<void>;
8122
+ cancelSubscriptions: (subscriptionIds: string[]) => Promise<boolean>;
7155
8123
  cancellationInfos: QerkoCancellationInfo[];
7156
8124
  errors: string[];
7157
8125
  }
@@ -7360,9 +8328,17 @@ export declare type User = {
7360
8328
  * Returns all PAID or CANCELLED user purchases (expired and non-expired)
7361
8329
  */
7362
8330
  allPurchases: Purchase[];
8331
+ /**
8332
+ * Returns all PAID or CANCELLED user purchases (expired and non-expired)
8333
+ */
8334
+ pastPurchases: Purchase[];
8335
+ /**
8336
+ * IDs of available promotions (promotion document IDs).
8337
+ * Example: ['kaGHeCMcOCEF2OcaJCcr']
8338
+ */
7363
8339
  availablePromotionsIds: string[];
7364
8340
  /**
7365
- * Returns "active" (not CANCELLED) VoD purchases ("transaction" type)
8341
+ * Returns "active" (not CANCELLED) VoD purchases ("transaction" type")
7366
8342
  */
7367
8343
  purchasedVods: Purchase[];
7368
8344
  /**
@@ -7450,9 +8426,6 @@ export declare type User = {
7450
8426
  getAllExtendableSubscriptions: () => Promise<Purchase[]>;
7451
8427
  getRssValidToken: () => Promise<TokenInterface | undefined>;
7452
8428
  getRssUrl: () => Promise<GetUserRssUrlResponse>;
7453
- getFavorites: (options?: GetUserProfileDataOptions) => Promise<FavoriteWithData[]>;
7454
- getWatchPositions: (options?: GetUserProfileDataOptions) => Promise<WatchPositionWithData[]>;
7455
- getWatchHistory: (options?: GetUserProfileDataOptions) => Promise<WatchPositionWithData[]>;
7456
8429
  invalidateAllTokens: (type: TokenType) => Promise<void>;
7457
8430
  isPartiallyRegistered: boolean;
7458
8431
  conversationStore: ConversationStore;
@@ -7498,7 +8471,7 @@ export declare interface UserNotificationSettings {
7498
8471
  * @public
7499
8472
  */
7500
8473
  export declare type UseRow = (rowId: string | null, organizationId?: string) => {
7501
- row: Row | null;
8474
+ row: BaseRow | null;
7502
8475
  error: Error | null;
7503
8476
  };
7504
8477
 
@@ -7740,7 +8713,6 @@ export declare enum VastProvider {
7740
8713
  TEST = "test",
7741
8714
  TEST_VPAID = "test-vpaid",
7742
8715
  TIVIO_ADS = "tivio-ads",
7743
- STATIC_ADS_PROVIDER = "static-ads-provider",
7744
8716
  JOJ_TEST_AD_FORM_PROGRAMMATIC = "joj-test-ad-form-programmatic",
7745
8717
  JOJ_TEST_TESTER_VASTERIX = "joj-test-tester-vasterix",
7746
8718
  JOJ_TEST_TESTER_ADFORM_30 = "joj-test-tester-adform-30"
@@ -7824,8 +8796,8 @@ export declare interface Video extends RowItem, MonetizableItem, ReactableConten
7824
8796
  tasting: Video | null;
7825
8797
  watchPosition: number | null;
7826
8798
  isFavorite: boolean;
7827
- addToFavorites: () => Promise<void>;
7828
- removeFromFavorites: () => Promise<void>;
8799
+ addToFavorites: () => void;
8800
+ removeFromFavorites: () => void;
7829
8801
  availability: ContentAvailability | null;
7830
8802
  sourceLanguages: LangCode[];
7831
8803
  urlByLanguage: (lang: LangCode) => string | undefined;
@@ -7883,10 +8855,6 @@ export declare interface VideoController {
7883
8855
  muted: boolean;
7884
8856
  volume: number;
7885
8857
  }) => void): void;
7886
- addEventListener(event: 'ad-started', callback: (value: AdMetadata & {
7887
- adCtaElement: HTMLElement | null;
7888
- }) => void): void;
7889
- addEventListener(event: 'companion-ads', callback: (value: CompanionAd[]) => void): void;
7890
8858
  /**
7891
8859
  * Remove an event listener
7892
8860
  * @param event - The event name to stop listening for
@@ -7922,6 +8890,10 @@ export declare interface VideoController {
7922
8890
  * Replay the current video from the beginning
7923
8891
  */
7924
8892
  replay(): Promise<void>;
8893
+ /**
8894
+ * Refresh the current source by calling getSourceUrl without sourceHistory.
8895
+ */
8896
+ refreshSource(): Promise<void>;
7925
8897
  /**
7926
8898
  * Retry playback if it failed to start
7927
8899
  */
@@ -8012,7 +8984,30 @@ export declare interface VideoController {
8012
8984
  * @param mutations - Array of DOM mutation records
8013
8985
  */
8014
8986
  onWatermarkElementChange(mutations: MutationRecord[]): void;
8015
- setAdCtaElement: (element: HTMLElement | null) => void;
8987
+ /**
8988
+ * Switch to HLS source for AirPlay (Safari/iOS only).
8989
+ * Preserves current playback position.
8990
+ */
8991
+ switchToHlsForAirplay(): Promise<void>;
8992
+ /**
8993
+ * Switch back to DASH from HLS after AirPlay disconnects.
8994
+ * Preserves current playback position.
8995
+ */
8996
+ switchToDashFromAirplay(): Promise<void>;
8997
+ /**
8998
+ * Reload the current source while preserving playback position.
8999
+ * Used when switching between native HLS and MSE playback modes.
9000
+ */
9001
+ reloadCurrentSource(): Promise<void>;
9002
+ /**
9003
+ * Set whether to prefer HLS sources over DASH.
9004
+ * Used in Safari/iOS when AirPlay is available, as AirPlay only supports HLS streaming.
9005
+ */
9006
+ setPreferHls(preferHls: boolean): void;
9007
+ /**
9008
+ * Suppress watermark tamper detection during AirPlay source switching.
9009
+ */
9010
+ setAirplaySwitching(isSwitching: boolean): void;
8016
9011
  }
8017
9012
 
8018
9013
  declare type VideoDetailResponsiveField = OrganizationResponsiveSetting<{
@@ -8033,7 +9028,7 @@ declare type VideoDetailResponsiveField = OrganizationResponsiveSetting<{
8033
9028
  /**
8034
9029
  * @public
8035
9030
  */
8036
- export declare type VideoExternals = (JojExternals | MallTvExternals | OktagonExternals | MigratedVideoExternals | SportyExternals) & {
9031
+ export declare type VideoExternals = (JojExternals | OktagonExternals | MigratedVideoExternals | SportyExternals | AdExternals) & {
8037
9032
  channelKey?: string;
8038
9033
  };
8039
9034
 
@@ -8096,6 +9091,11 @@ export declare type VideoSourceField = {
8096
9091
  * because content id in source url and authentication will not match.
8097
9092
  */
8098
9093
  contentId?: string;
9094
+ /**
9095
+ * List of platforms that this source is restricted to.
9096
+ * If empty or not defined, there are no restrictions, and source is available for all platforms.
9097
+ */
9098
+ platforms?: PLATFORM[];
8099
9099
  } & ({
8100
9100
  url: string;
8101
9101
  provider?: Exclude<VideoSourceProvider, VideoSourceProvider.CLOUDFLARE>;
@@ -8145,6 +9145,7 @@ export declare interface VideoTileSpecificData {
8145
9145
  urlName?: UrlNamesType;
8146
9146
  monetizations?: VideoTileMonetizationData[];
8147
9147
  description?: Translation;
9148
+ duration?: number;
8148
9149
  }
8149
9150
 
8150
9151
  /**
@@ -8246,18 +9247,9 @@ export declare interface VirtualChannelSourceInterface extends ChannelSourceInte
8246
9247
  */
8247
9248
  export declare interface VirtualChannelSourceParams extends ChannelSourceParams {
8248
9249
  tvChannelType: TvChannelType.VIRTUAL;
8249
- currentProgram?: TvProgram | null;
8250
9250
  drm?: Drm;
8251
9251
  }
8252
9252
 
8253
- /**
8254
- * Interface representing the parameters for a VOD (Video On Demand) external multi-source configuration.
8255
- * Multi-source means an array of string URLs representing the external sources for the video content.
8256
- */
8257
- export declare interface VodExternalMultiSourceParams extends Omit<VodExternalSourceParams, 'url'> {
8258
- urls: string[];
8259
- }
8260
-
8261
9253
  /**
8262
9254
  * @public
8263
9255
  */
@@ -8356,21 +9348,6 @@ export declare interface WarningConfirmationOverlayPayload extends ConfirmationO
8356
9348
  subscriptionExpirationText?: string;
8357
9349
  }
8358
9350
 
8359
- /**
8360
- * @public
8361
- */
8362
- export declare interface WatchPositionWithData extends Omit<UserWatchPositionField, 'videoRef' | 'tagRef'> {
8363
- /**
8364
- * Video that given watch position is related to.
8365
- */
8366
- video: Video;
8367
- /**
8368
- * If user watches episode of series, we have to save series ref as well.
8369
- * Same for {@link episodeNumber} and {@link seasonNumber}.
8370
- */
8371
- tag?: Tag;
8372
- }
8373
-
8374
9351
  /**
8375
9352
  * @public
8376
9353
  */
@@ -8381,7 +9358,6 @@ export declare interface Watermark {
8381
9358
 
8382
9359
  export declare interface WebConfig {
8383
9360
  customer: CustomerId;
8384
- customerName?: string;
8385
9361
  title?: string;
8386
9362
  description?: string;
8387
9363
  logo: string;
@@ -8395,37 +9371,31 @@ export declare interface WebConfig {
8395
9371
  header?: {
8396
9372
  /**
8397
9373
  * Text on buy voucher button, if not provided the default text will be used.
9374
+ * Can be a string or an array of language-specific texts.
9375
+ * @deprecated Use headerButton instead
8398
9376
  */
8399
9377
  buyVoucherButtonText?: string;
8400
9378
  /**
8401
- * If true, the voucher button will be shown in the header.
9379
+ * Configurable button shown in the header (e.g., for vouchers, creator signup, etc.)
9380
+ * Array of language-specific button configurations.
8402
9381
  */
8403
- showVoucherButton?: boolean;
9382
+ headerButton?: (LanguageRestricted & {
9383
+ label: string;
9384
+ href: string;
9385
+ /** Icon to show on the button (mobile only) */
9386
+ icon?: 'gift' | 'star' | 'videoRecorder';
9387
+ variant?: 'primary' | 'secondary' | 'transparent';
9388
+ })[];
8404
9389
  allowSearch?: boolean;
8405
9390
  logoHeight?: string;
8406
9391
  mobileLogoHeight?: string;
8407
9392
  buySubscriptionButtonText?: string;
8408
- isHidden?: boolean;
8409
- /**
8410
- * Additional menu items to be shown in the rounded menu in the header (external or internal)
8411
- */
8412
- additionalMenuItems?: {
8413
- name: string;
8414
- href: string;
8415
- newTab?: boolean;
8416
- }[];
8417
9393
  };
8418
9394
  footer?: {
8419
- isHidden?: boolean;
8420
9395
  /**
8421
9396
  * If logo is different from logo in header
8422
9397
  */
8423
9398
  logo?: string;
8424
- /**
8425
- * @fixme https://app.clickup.com/t/90151157205/TIV-1515
8426
- * If multiple logos are provided, the multiple logos are prioritized over the single logo.
8427
- */
8428
- multipleLogos?: string[];
8429
9399
  showLogo?: boolean;
8430
9400
  /**
8431
9401
  * right panel - various type of contacts to owners of website
@@ -8468,19 +9438,6 @@ export declare interface WebConfig {
8468
9438
  email?: string;
8469
9439
  };
8470
9440
  cookieSettingsLabel?: string;
8471
- disclaimer?: string;
8472
- showDivider?: boolean;
8473
- /**
8474
- * Additional links to be shown in the footer
8475
- */
8476
- additionalLinks?: {
8477
- name: string;
8478
- href: string;
8479
- }[];
8480
- /**
8481
- * Hide footer on these paths
8482
- */
8483
- hideFooter?: string[];
8484
9441
  partners?: {
8485
9442
  name: string;
8486
9443
  logo: string;
@@ -8496,14 +9453,6 @@ export declare interface WebConfig {
8496
9453
  * so app requires authorization to see them.
8497
9454
  */
8498
9455
  securedContent?: boolean;
8499
- /**
8500
- * If true, then auth is required for all pages.
8501
- */
8502
- isAuthRequired?: boolean;
8503
- /**
8504
- * If true, then buy subscription button is hidden.
8505
- */
8506
- hideBuySubscriptionButton?: boolean;
8507
9456
  /**
8508
9457
  * CSS styles for application background.
8509
9458
  */
@@ -8522,10 +9471,6 @@ export declare interface WebConfig {
8522
9471
  * Default is TRUE (see {@link AppLoadingOverlay}
8523
9472
  */
8524
9473
  showProgressBar?: boolean;
8525
- /**
8526
- * URL to background image shown on loading screen.
8527
- */
8528
- backgroundUrl?: string;
8529
9474
  };
8530
9475
  /**
8531
9476
  * Slug of all pages where user will be forced to fill login form if he's not logged in.
@@ -8553,7 +9498,6 @@ export declare interface WebConfig {
8553
9498
  */
8554
9499
  showChooseSubscription?: boolean;
8555
9500
  registration?: {
8556
- logoMarginTop?: string;
8557
9501
  /**
8558
9502
  * Customization of auth form
8559
9503
  */
@@ -8573,18 +9517,18 @@ export declare interface WebConfig {
8573
9517
  showAcceptanceOfTermsAndConditions?: boolean;
8574
9518
  };
8575
9519
  registrationConsent?: string;
8576
- socialRegistrationConsent?: string;
8577
9520
  };
8578
9521
  payment?: {
8579
9522
  paymentConsent?: string;
8580
9523
  paymentRenewalConsent?: boolean;
9524
+ allowFrequencySwitcher?: boolean;
8581
9525
  };
8582
9526
  /**
8583
9527
  * If web supports entering vouchers
8584
9528
  */
8585
9529
  supportVouchers?: boolean;
8586
9530
  /**
8587
- * Config for Google Tag Manager with optional shouldWaitForDidomi flag
9531
+ * Config for Google Tag Manager
8588
9532
  */
8589
9533
  googleTagManagerConfig?: TagManagerArgs & {
8590
9534
  shouldWaitForDidomi?: boolean;
@@ -8607,8 +9551,6 @@ export declare interface WebConfig {
8607
9551
  };
8608
9552
  monetizationSelectOverlay?: {
8609
9553
  title?: string;
8610
- benefitLeftIcon?: string;
8611
- showFullMonetizationOnMobile?: boolean;
8612
9554
  };
8613
9555
  /**
8614
9556
  * Google Analytics ID. If provided, Google Analytics will be enabled.
@@ -8620,7 +9562,6 @@ export declare interface WebConfig {
8620
9562
  centeredMenu?: boolean;
8621
9563
  /**
8622
9564
  * All values are considered as false if not provided.
8623
- * @deprecated - use settings.allowedSignInProviders inside OrganizationDocument
8624
9565
  */
8625
9566
  socialLogins?: {
8626
9567
  showAppleLogin?: boolean;
@@ -8635,24 +9576,11 @@ export declare interface WebConfig {
8635
9576
  * If true, robots.txt will prevent crawling of the website.
8636
9577
  */
8637
9578
  norobots?: boolean;
8638
- voucher?: {
8639
- voucherConsent: string;
8640
- };
8641
- customTranslations?: Record<string, Record<string, string>>;
8642
- onPurchase?: (monetization: Purchase) => void;
8643
- facebookPixelConfig?: {
8644
- pixelId: string;
8645
- shouldWaitForDidomi?: boolean;
9579
+ customTranslations?: {
9580
+ [key: string]: {
9581
+ [key: string]: string;
9582
+ };
8646
9583
  };
8647
- /**
8648
- * If true, the app will be locked in the "remote controller" mode.
8649
- * This means that the app will not be able to navigate to other pages and will only show the remote controller.
8650
- */
8651
- isRemoteControllerApp?: boolean;
8652
- /**
8653
- * Determines if application should check allowed URL handles when switching applications.
8654
- */
8655
- disableUrlHandleCheck?: boolean;
8656
9584
  /**
8657
9585
  * Map for all handlers
8658
9586
  */
@@ -8679,7 +9607,7 @@ export declare interface WebGridScreenProps {
8679
9607
  */
8680
9608
  export declare interface WebPlayerProps {
8681
9609
  id: string;
8682
- source?: InputSourceParams | PathSourceParams | VideoPath | ChannelPath | null;
9610
+ source?: SourceParams | VideoPath | ChannelPath | null;
8683
9611
  onEnded?: () => any;
8684
9612
  /**
8685
9613
  * If true, the player will inherit the width and height of its parent element.
@@ -8765,8 +9693,6 @@ export declare interface WebPlayerProps {
8765
9693
  setPaymentOverlayVisible?: React_2.Dispatch<React_2.SetStateAction<boolean>>;
8766
9694
  hideOverlay?: boolean;
8767
9695
  sourcePlayMode?: SourcePlayMode;
8768
- adsConfig?: StaticAdsBreak[];
8769
- userAuthCallbacks?: SDKUserAuthCallbacks;
8770
9696
  }
8771
9697
 
8772
9698
  /**