@tivio/sdk-react 9.8.0 → 10.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,17 +1,14 @@
1
- import { AD_SERVICE_PROXY_NAME } from '@tivio/common';
2
1
  import type { ComponentType } from 'react';
3
- import type dayjs from 'dayjs';
4
2
  import { DocumentReference } from '@firebase/firestore-types';
5
3
  import type duration from 'dayjs/plugin/duration';
6
4
  import type { default as firebase_2 } from '@firebase/app-types';
7
5
  import type { default as firebase_3 } from 'firebase';
8
6
  import { FunctionComponentElement } from 'react';
9
7
  import type { GeoPoint } from '@firebase/firestore-types';
10
- import type { google } from '@alugha/ima';
11
8
  import { OperatingSystem } from 'detect-browser';
12
9
  import type { PaletteType } from '@material-ui/core';
13
10
  import { default as React_2 } from 'react';
14
- import { RecommendationsQuery } from '@algolia/recommend';
11
+ import type { RecommendationsQuery } from '@algolia/recommend';
15
12
  import type { TagManagerArgs } from 'react-gtm-module';
16
13
  import type { Timestamp } from '@firebase/firestore-types';
17
14
 
@@ -36,8 +33,6 @@ declare interface actualPriceDetails {
36
33
  currency?: primaSupportedCurrency;
37
34
  }
38
35
 
39
- export { AD_SERVICE_PROXY_NAME }
40
-
41
36
  export declare type AdBannerScene = InteractiveWidgetSceneBase<InteractiveWidgetSceneTemplateType.AD_BANNER>;
42
37
 
43
38
  export declare type AddEditCommentResponse = {
@@ -89,6 +84,14 @@ export declare interface AdExternal {
89
84
  skip: () => void;
90
85
  }
91
86
 
87
+ /**
88
+ * External information of Ad video.
89
+ * @public
90
+ */
91
+ export declare interface AdExternals {
92
+ creativeId: string;
93
+ }
94
+
92
95
  /**
93
96
  * @public
94
97
  */
@@ -104,8 +107,6 @@ export declare type AdMetadata = {
104
107
  isSkippable: boolean;
105
108
  order: number | null;
106
109
  totalCount: number | null;
107
- adPlacementStrategy: AdPlacementStrategy;
108
- customAdMetadata?: Record<string, unknown>;
109
110
  skip: () => void;
110
111
  } | null;
111
112
 
@@ -119,10 +120,7 @@ export declare interface AdPackInfo {
119
120
  total: number;
120
121
  }
121
122
 
122
- export declare type AdPlacementStrategy = 'preroll' | 'midroll' | 'postroll' | 'replacement';
123
-
124
123
  export declare interface AdSegment {
125
- adPlacementStrategy: AdPlacementStrategy;
126
124
  id: string;
127
125
  /**
128
126
  * @deprecated alias to secondsToEnd * 1000
@@ -187,7 +185,6 @@ export declare interface AdSourceActions {
187
185
  */
188
186
  export declare interface AdSourceInterface extends CommonSourceInterface<SourceType.ADVERTISEMENT> {
189
187
  adType: AdType;
190
- adPlacementStrategy: AdPlacementStrategy;
191
188
  durationMs: number;
192
189
  skipDelayMs: number | null;
193
190
  /**
@@ -227,10 +224,6 @@ export declare interface AdSourceInterface extends CommonSourceInterface<SourceT
227
224
  skipAll(): void;
228
225
  onRemainingTimeChanged(ms: number): void;
229
226
  click(): void;
230
- /**
231
- * Rich IMA ad metadata including customAdMetadata (only available for IMA ads)
232
- */
233
- imaAdMetadata?: any;
234
227
  }
235
228
 
236
229
  /**
@@ -238,7 +231,6 @@ export declare interface AdSourceInterface extends CommonSourceInterface<SourceT
238
231
  */
239
232
  export declare interface AdSourceParams extends CommonSourceParams<SourceType.ADVERTISEMENT> {
240
233
  id: string;
241
- adPlacementStrategy: AdPlacementStrategy;
242
234
  adType?: AdType;
243
235
  actions?: AdSourceActions | null;
244
236
  apiFramework?: VastApiFramework | null;
@@ -329,7 +321,9 @@ export declare enum AnalyticsConversionPage {
329
321
  Redeem = "redeem",
330
322
  Referral = "referral",
331
323
  Pair = "pair",
332
- Search = "search"
324
+ Search = "search",
325
+ QerkoPayment = "qerko-payment",
326
+ SubscriptionCard = "subscription-card"
333
327
  }
334
328
 
335
329
  /**
@@ -347,6 +341,31 @@ export declare enum AnalyticsConversionTargetBase {
347
341
  Monetization = "monetization"
348
342
  }
349
343
 
344
+ export declare enum AnalyticsElementId {
345
+ BTN_LOGIN = "stargaze-btn-login",
346
+ BTN_REGISTRATION = "stargaze-btn-registration",
347
+ BTN_SUBSCRIBE = "stargaze-btn-subscribe",
348
+ BTN_FOLLOW = "stargaze-btn-follow",
349
+ BTN_CHOOSE_SUBSCRIPTION = "stargaze-btn-choose-subscription",
350
+ BTN_CANCEL_SUBSCRIPTION = "stargaze-btn-cancel-subscription",
351
+ BTN_RENEW_SUBSCRIPTION = "stargaze-btn-renew-subscription",
352
+ BTN_CHANGE_SUBSCRIPTION = "stargaze-btn-change-subscription",
353
+ BTN_GIFT_VOUCHER = "stargaze-btn-gift-voucher",
354
+ BTN_BUY_SUBSCRIPTION = "stargaze-btn-buy-subscription",
355
+ BTN_PAY_BY_APPLE_PAY = "stargaze-btn-pay-by-apple-pay",
356
+ BTN_PAY_BY_GOOGLE_PAY = "stargaze-btn-pay-by-google-pay",
357
+ BTN_PAY_BY_CARD = "stargaze-btn-pay-by-card",
358
+ BTN_PAY_WITH_PAYPAL = "stargaze-btn-pay-with-paypal",
359
+ BTN_PAY_BY_QERKO = "stargaze-btn-pay-by-qerko",
360
+ BTN_ACTIVATE_VOUCHER = "stargaze-btn-activate-voucher",
361
+ BTN_ACTIVATE_VOUCHER_OVERLAY = "stargaze-btn-activate-voucher-overlay",
362
+ BTN_ACTIVATE_VOUCHER_PROFILE = "stargaze-btn-activate-voucher-profile",
363
+ BTN_GO_TO_REDEEM_PAGE = "stargaze-btn-go-to-redeem-page",
364
+ BTN_REDEEM_CODE = "stargaze-btn-redeem-code",
365
+ BTN_CONTINUE_TO_PAYMENT = "stargaze-btn-continue-to-payment",
366
+ BTN_SELECT_MONETIZATION = "stargaze-btn-select-monetization"
367
+ }
368
+
350
369
  export declare interface AnalyticsInterface {
351
370
  reportAdvertisementPlay: (params: AdvertisementAnalyticParams) => void;
352
371
  reportAdvertisementProgress: () => void;
@@ -543,7 +562,7 @@ export declare interface AssetsField<TAsset extends ScalableAsset = ScalableAsse
543
562
  /**
544
563
  * @public
545
564
  */
546
- export declare type AssetType = 'circled' | 'landscape' | 'portrait' | 'square';
565
+ export declare type AssetType = 'banner' | 'circled' | 'landscape' | 'portrait' | 'square';
547
566
 
548
567
  declare type Attributes = {
549
568
  created: string;
@@ -630,10 +649,78 @@ export declare interface BannerProps {
630
649
  */
631
650
  export declare type BannerPropsPartial = Partial<BannerProps>;
632
651
 
652
+ /**
653
+ * Base row interface with common fields
654
+ * @public
655
+ */
656
+ export declare interface BaseRow {
657
+ id: string;
658
+ rowId: string;
659
+ name: string;
660
+ description?: string;
661
+ assets: AssetsField;
662
+ type: ScreenRowType;
663
+ isLiveRow: boolean;
664
+ organizationId?: string;
665
+ }
666
+
667
+ /**
668
+ * Base row type with fields common to all row types
669
+ */
670
+ declare type BaseRowInScreen = {
671
+ /**
672
+ * Firebase document path. If not provided, the row is not defined in db and is dynamically generated (e.g. recommendation row).
673
+ */
674
+ path?: string;
675
+ /**
676
+ * Tivio row ID.
677
+ */
678
+ rowId: string;
679
+ /**
680
+ * If all items are from the same organization this will be set.
681
+ */
682
+ organizationId?: string;
683
+ /**
684
+ * Row name.
685
+ */
686
+ name: Translation;
687
+ /**
688
+ * Row order in the screen.
689
+ */
690
+ order?: number;
691
+ /**
692
+ * Standard row or a Banner.
693
+ */
694
+ rowComponent: RowComponent;
695
+ /**
696
+ * Type of the row (continue to watch, custom, filter, static, ...).
697
+ */
698
+ type: ScreenRowType;
699
+ /**
700
+ * Assets for the row (images, videos, etc.)
701
+ */
702
+ assets?: AssetsField;
703
+ };
704
+
705
+ /**
706
+ * Base static row fields shared by all static row types
707
+ */
708
+ declare type BaseStaticRowInScreen = BaseRowInScreen & {
709
+ type: 'static';
710
+ };
711
+
633
712
  declare interface BaseWidgetControlPayload {
634
713
  widgetPath: string;
635
714
  }
636
715
 
716
+ export declare interface BenefitItem {
717
+ iconType: 'Verified' | 'Badge' | 'Clock' | 'Trending' | 'Message' | 'Eye' | 'Info' | 'Chart' | 'Users' | 'Zap' | 'Star' | 'Email' | 'Discord';
718
+ name: Translation;
719
+ description?: Translation;
720
+ }
721
+
722
+ export declare type BenefitTileSpecificData = BenefitItem;
723
+
637
724
  /**
638
725
  * @public
639
726
  */
@@ -697,6 +784,7 @@ export declare interface ButtonOptions {
697
784
  */
698
785
  export declare interface ButtonVariantOptions {
699
786
  border?: string;
787
+ backgroundImage?: string;
700
788
  disabledBackgroundColor?: string;
701
789
  disabledColor?: string;
702
790
  }
@@ -706,6 +794,45 @@ export declare interface ButtonVariantOptions {
706
794
  */
707
795
  export declare type Callback<T = any> = (arg?: T) => void;
708
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
+
709
836
  export declare interface CancellingMonetizationsSummaryItem {
710
837
  date: number;
711
838
  monetizationId: string;
@@ -767,7 +894,6 @@ export declare interface ChannelSourceInterface extends PlayerSourceInterface<So
767
894
  to: Date;
768
895
  poster: string | null;
769
896
  tvMode: TvMode | 'live' | null;
770
- clone: (params?: Partial<ChannelSourceParams>) => ChannelSourceInterface;
771
897
  }
772
898
 
773
899
  /**
@@ -781,6 +907,10 @@ export declare interface ChannelSourceParams extends PlayerSourceParams<SourceTy
781
907
  from: Date;
782
908
  to: Date;
783
909
  tvMode?: TvMode | 'live' | null;
910
+ /**
911
+ * Current program from EPG. Available for VIRTUAL and SCHEDULED channels.
912
+ */
913
+ currentProgram?: TvProgram | null;
784
914
  }
785
915
 
786
916
  /**
@@ -850,12 +980,6 @@ export declare interface CommonSourceParams<T extends SourceType = SourceType> {
850
980
  videoPath?: string;
851
981
  }
852
982
 
853
- /**
854
- * @public
855
- * Re-export of Google IMA CompanionAd type for use throughout the SDK
856
- */
857
- export declare type CompanionAd = google.ima.CompanionAd;
858
-
859
983
  /**
860
984
  * TODO it's the same as Customizations, not?
861
985
  * @internal
@@ -932,6 +1056,13 @@ export declare interface ContentAvailability {
932
1056
  manual: boolean;
933
1057
  }
934
1058
 
1059
+ export declare type ContentMetadataFieldId = keyof NonNullable<OrganizationSettingsField['contentMetadata']>;
1060
+
1061
+ export declare interface ContentMetadataOptions {
1062
+ enabled: boolean;
1063
+ order: number;
1064
+ }
1065
+
935
1066
  /**
936
1067
  * @public
937
1068
  */
@@ -1189,10 +1320,23 @@ export declare interface CreatorsWithVoucherSubscriptions {
1189
1320
  name: string;
1190
1321
  }
1191
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
+
1192
1336
  /**
1193
1337
  * @public
1194
1338
  */
1195
- export declare const CURRENCIES: string[];
1339
+ export declare const CURRENCIES: Currency[];
1196
1340
 
1197
1341
  /**
1198
1342
  * Three upper-case letters according to ISO-4217.
@@ -1206,6 +1350,11 @@ export declare type Currency = 'CZK' | 'EUR' | 'USD' | 'PLN';
1206
1350
  */
1207
1351
  export declare type CurrencyLowerCase = 'czk' | 'eur' | 'usd' | 'pln';
1208
1352
 
1353
+ /**
1354
+ * @public
1355
+ */
1356
+ export declare const CurrencyToTitle: Record<Currency, string>;
1357
+
1209
1358
  export declare interface CurrentQuestion {
1210
1359
  id: string;
1211
1360
  question: Translation;
@@ -1285,7 +1434,21 @@ export declare enum CustomerId {
1285
1434
  UZ_BUDU = "UZ_BUDU",
1286
1435
  PRIMA = "PRIMA",
1287
1436
  NORA_FRIDRICHOVA = "NORA_FRIDRICHOVA",
1288
- 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"
1289
1452
  }
1290
1453
 
1291
1454
  /**
@@ -1388,6 +1551,7 @@ export declare interface Customizations {
1388
1551
  iconColor?: string;
1389
1552
  roundedMenuColor?: string;
1390
1553
  roundedMenuHoverColor?: string;
1554
+ roundedMenuInactiveColor?: string;
1391
1555
  };
1392
1556
  CenteredMenu?: {
1393
1557
  backgroundColor: string;
@@ -1451,6 +1615,99 @@ export declare interface Customizations {
1451
1615
  row: {
1452
1616
  backgroundColor: string;
1453
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
+ };
1454
1711
  };
1455
1712
  global: {
1456
1713
  /**
@@ -1473,6 +1730,9 @@ export declare interface Customizations {
1473
1730
  Avatar?: {
1474
1731
  backgroundColor: string;
1475
1732
  color: string;
1733
+ hoverBorderGradientStart?: string;
1734
+ hoverBorderGradientEnd?: string;
1735
+ hoverBackground?: string;
1476
1736
  };
1477
1737
  Paywall?: {
1478
1738
  backgroundColor?: string;
@@ -1492,6 +1752,8 @@ export declare interface Customizations {
1492
1752
  backgroundColorActive?: string;
1493
1753
  formBackgroundColor?: string;
1494
1754
  captionColor?: string;
1755
+ pageBackgroundColor?: string;
1756
+ gradientColor?: string;
1495
1757
  };
1496
1758
  QerkoOverlay?: {
1497
1759
  backgroundColor?: string;
@@ -1517,7 +1779,6 @@ export declare interface CustomScript {
1517
1779
  src: string;
1518
1780
  event?: EventName;
1519
1781
  isAsync?: boolean;
1520
- defer?: boolean;
1521
1782
  }
1522
1783
 
1523
1784
  /**
@@ -1553,6 +1814,11 @@ declare type Data = {
1553
1814
  type: 'tier' | 'member' | 'user';
1554
1815
  };
1555
1816
 
1817
+ /**
1818
+ * @public
1819
+ */
1820
+ export declare const DEFAULT_CURRENCY: Currency;
1821
+
1556
1822
  /**
1557
1823
  * @public
1558
1824
  */
@@ -1595,6 +1861,28 @@ export declare type DeviceInfo = ArrisDeviceInfo | ReactNativeDeviceInfo;
1595
1861
  */
1596
1862
  export declare type DeviceOs = OperatingSystem | 'Tizen' | 'webOS' | 'Arris' | 'Android TV' | 'tvOS';
1597
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
+
1598
1886
  /**
1599
1887
  * Window object with Didomi SDK properties.
1600
1888
  */
@@ -1610,9 +1898,10 @@ export declare interface DidomiWindow {
1610
1898
  * https://developers.didomi.io/cmp/web-sdk/reference/api
1611
1899
  */
1612
1900
  didomiOnReady: (() => void)[];
1613
- Didomi?: {
1614
- getUserConsentStatusForPurpose: (category: string) => boolean;
1615
- };
1901
+ /**
1902
+ * The Didomi SDK instance.
1903
+ */
1904
+ Didomi: DidomiSDK;
1616
1905
  }
1617
1906
 
1618
1907
  /**
@@ -1633,6 +1922,47 @@ export declare interface DividerProps {
1633
1922
  horizontalSpacing?: number;
1634
1923
  }
1635
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
+
1636
1966
  export declare interface Drm {
1637
1967
  encryption: VideoSourceEncryption;
1638
1968
  /**
@@ -1705,6 +2035,91 @@ export declare interface DurationWithUnit {
1705
2035
  unit: DurationUnit;
1706
2036
  }
1707
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
+
1708
2123
  /**
1709
2124
  * @public
1710
2125
  */
@@ -1823,7 +2238,6 @@ export declare interface EmitterInterface {
1823
2238
  isSupported: (even: string) => boolean;
1824
2239
  addListener: <T = unknown>(event: string, cb: (value: T) => Empty_2) => void;
1825
2240
  removeListener: <T = unknown>(event: string, cb: (value: T) => Empty_2) => void;
1826
- emitEvent: (event: string, value?: unknown) => void;
1827
2241
  }
1828
2242
 
1829
2243
  /**
@@ -1848,6 +2262,17 @@ export declare type Events = {
1848
2262
  'on-error': Error;
1849
2263
  };
1850
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
+
1851
2276
  export declare interface ExtensionMetadata {
1852
2277
  purchaseStatus: CloudflareStreamingPurchaseStatus;
1853
2278
  activeVideoId?: string;
@@ -1861,22 +2286,12 @@ export declare type ExternalTvConfig = {
1861
2286
  splashScreenBackgroundColor?: string;
1862
2287
  };
1863
2288
 
1864
- export declare interface FavoriteTagWithData {
1865
- content: Tag;
1866
- type: 'tag';
1867
- }
1868
-
1869
- export declare interface FavoriteVideoWithData {
1870
- content: Video;
1871
- type: 'video';
2289
+ export declare interface FaqItem {
2290
+ question: Translation;
2291
+ answer: Translation;
1872
2292
  }
1873
2293
 
1874
- /**
1875
- * @public
1876
- */
1877
- export declare type FavoriteWithData = FavoriteVideoWithData | (FavoriteTagWithData & {
1878
- profileId?: string;
1879
- });
2294
+ export declare type FaqTileSpecificData = FaqItem;
1880
2295
 
1881
2296
  /**
1882
2297
  * @throws if fetch fails
@@ -1926,7 +2341,6 @@ export declare interface ForbiddenOnCallError extends GenericOnCallError {
1926
2341
  }
1927
2342
 
1928
2343
  export declare enum ForbiddenReason {
1929
- AD_BLOCKING = "AD_BLOCKING",
1930
2344
  MONETIZATION = "MONETIZATION",
1931
2345
  GEO_BLOCKING = "GEO_BLOCKING",
1932
2346
  EMAIL_ALREADY_EXISTS = "EMAIL_ALREADY_EXISTS",
@@ -1937,8 +2351,7 @@ export declare enum ForbiddenReason {
1937
2351
  NAME_CONTAINS_INVALID_CHAR = "NAME_CONTAINS_INVALID_CHAR",
1938
2352
  USER_ACCOUNT_LOCKED = "USER_ACCOUNT_LOCKED",
1939
2353
  USER_NOT_FOUND = "USER_NOT_FOUND",
1940
- UNSUPPORTED_BROWSER = "UNSUPPORTED_BROWSER",
1941
- ANONYMOUS_USER = "ANONYMOUS_USER"
2354
+ UNSUPPORTED_BROWSER = "UNSUPPORTED_BROWSER"
1942
2355
  }
1943
2356
 
1944
2357
  /**
@@ -1946,7 +2359,7 @@ export declare enum ForbiddenReason {
1946
2359
  */
1947
2360
  export declare type FrequencyInfo = {
1948
2361
  title: Translation;
1949
- unit: string;
2362
+ unit: MONETIZATION_FREQUENCY;
1950
2363
  value: number;
1951
2364
  };
1952
2365
 
@@ -2065,6 +2478,9 @@ export declare type GetPurchaseInfoResponse = {
2065
2478
  };
2066
2479
  };
2067
2480
 
2481
+ /**
2482
+ * Response type for getRowsInScreen
2483
+ */
2068
2484
  export declare type GetRowsInScreenResponse = PaginatedResponse<RowInScreen, 'screenId'>;
2069
2485
 
2070
2486
  export declare interface GetSourceUrlRequest {
@@ -2121,7 +2537,17 @@ export declare interface GetSourceUrlRequest {
2121
2537
  * Parameters related to ads.
2122
2538
  */
2123
2539
  adParams?: Record<string, string | number | undefined>;
2124
- }
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;
2550
+ }
2125
2551
 
2126
2552
  export declare interface GetSourceUrlResponse {
2127
2553
  /**
@@ -2164,21 +2590,9 @@ export declare interface GetSourceUrlResponse {
2164
2590
  * Determines session type generated for source. If no provided it will be considered 'ondemand' session type.
2165
2591
  */
2166
2592
  sessionType?: VideoSourceField['sessionType'];
2167
- /**
2168
- * Language of the source.
2169
- */
2170
- language?: LangCode;
2171
2593
  }
2172
2594
 
2173
- export declare type GetTilesInRowResponse<U extends NextPageParamType = NextPageParamType> = PaginatedResponse<TileData, U>;
2174
-
2175
- export declare interface GetUserProfileDataOptions {
2176
- /**
2177
- * If true, the data will be returned for all user profiles.
2178
- * If false, the data will be returned only for the active user profile.
2179
- */
2180
- ignoreActiveUserProfile?: boolean;
2181
- }
2595
+ export declare type GetTilesInRowResponse<T extends ScreenRowType = ScreenRowType, U extends NextPageParamType = NextPageParamType> = PaginatedResponse<TileData<T>, U>;
2182
2596
 
2183
2597
  export declare interface GetUserRssUrlRequest {
2184
2598
  organizationId: string;
@@ -2190,58 +2604,6 @@ export declare interface GetUserRssUrlResponse {
2190
2604
  expiresAt?: number;
2191
2605
  }
2192
2606
 
2193
- export declare interface GetVideoAnalyticsErrorItem {
2194
- count: number;
2195
- timestamp: number;
2196
- errorMessage: string;
2197
- }
2198
-
2199
- export declare interface GetVideoAnalyticsErrorResult {
2200
- totalCount: number;
2201
- errors: Array<GetVideoAnalyticsErrorItem>;
2202
- }
2203
-
2204
- export declare interface GetVideoAnalyticsRequest {
2205
- contentId: string;
2206
- timestamp?: number;
2207
- userId?: string;
2208
- source?: string;
2209
- limit?: number;
2210
- errorLimit?: number;
2211
- errorTimestampFrom?: number;
2212
- }
2213
-
2214
- export declare interface GetVideoAnalyticsResponse {
2215
- state?: GetVideoAnalyticsResult;
2216
- quality?: GetVideoAnalyticsResult;
2217
- error?: GetVideoAnalyticsErrorResult;
2218
- localities?: unknown;
2219
- }
2220
-
2221
- export declare type GetVideoAnalyticsResult = {
2222
- [timestamp: string]: {
2223
- totalDuration: number;
2224
- values: Array<{
2225
- value: string;
2226
- duration: number;
2227
- percentage: number;
2228
- }>;
2229
- };
2230
- };
2231
-
2232
- export declare interface GetVideoAnalyticsViewsRequest {
2233
- contentId: string;
2234
- currentViewsIntervalMs: number;
2235
- timestamp?: number;
2236
- source?: string;
2237
- }
2238
-
2239
- export declare interface GetVideoAnalyticsViewsResponse {
2240
- previousViews?: number;
2241
- currentViews?: number;
2242
- totalViews?: number;
2243
- }
2244
-
2245
2607
  export declare interface GetViewAnalyticsResponse {
2246
2608
  viewCountAnalytics: ViewCountItem[];
2247
2609
  topWatched: TopWatchItem[];
@@ -2260,6 +2622,22 @@ export declare enum GRID_TYPES {
2260
2622
  SERIES = "SERIES"
2261
2623
  }
2262
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
+
2263
2641
  /**
2264
2642
  * @public
2265
2643
  */
@@ -2268,6 +2646,61 @@ export declare interface HistoryContextData {
2268
2646
  backOrRedirectToRoot: (delta?: number) => void;
2269
2647
  }
2270
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
+
2271
2704
  export declare type IncludedItem = {
2272
2705
  attributes: {
2273
2706
  next_charge_date: string;
@@ -2303,10 +2736,23 @@ export declare interface IndexedTag extends IndexedObject {
2303
2736
  created: Date;
2304
2737
  name: Translation;
2305
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;
2306
2747
  /**
2307
2748
  * True if the tag is available in Tivio Pro (StarMe)
2308
2749
  */
2309
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;
2310
2756
  }
2311
2757
 
2312
2758
  /**
@@ -2352,6 +2798,11 @@ export declare interface IndexedVideo extends IndexedObject {
2352
2798
  defaultName: string;
2353
2799
  name: string | Translation;
2354
2800
  description: string | Translation;
2801
+ descriptionRich?: Translation;
2802
+ /**
2803
+ * EPG program-friendly name
2804
+ */
2805
+ shortName?: Translation;
2355
2806
  hide: boolean;
2356
2807
  isDuplicate: boolean;
2357
2808
  externals?: VideoExternals;
@@ -2370,6 +2821,14 @@ export declare interface IndexedVideo extends IndexedObject {
2370
2821
  * see https://www.algolia.com/doc/guides/managing-results/refine-results/filtering/how-to/filter-by-attributes/#filter-by-null-or-missing-attributes.
2371
2822
  */
2372
2823
  monetizationAccessIds: string[] | false;
2824
+ /**
2825
+ * See {@link VideoDocument.pgRating}
2826
+ */
2827
+ pgRating?: string;
2828
+ /**
2829
+ * See {@link VideoDocument.contentDescriptors}
2830
+ */
2831
+ contentDescriptors?: string[];
2373
2832
  }
2374
2833
 
2375
2834
  /**
@@ -2382,12 +2841,11 @@ export declare interface InputOptions {
2382
2841
  color?: string;
2383
2842
  }
2384
2843
 
2385
- export declare type InputSourceParams = SourceParams | VodExternalMultiSourceParams;
2386
-
2387
2844
  export declare type IntegrationType = 'discord' | 'patreon';
2388
2845
 
2389
2846
  export declare interface InteractiveWidget<T extends InteractiveWidgetScene = InteractiveWidgetScene> {
2390
2847
  readonly id: string;
2848
+ readonly name: string;
2391
2849
  readonly path: string;
2392
2850
  readonly currentQuestion: CurrentQuestion | null;
2393
2851
  readonly status: QuizGameStatus;
@@ -2587,17 +3045,35 @@ export declare type ItemInRow = Tag | Video | TvChannel | Advertisement | Applic
2587
3045
  * @public
2588
3046
  */
2589
3047
  export declare interface JojExternals {
3048
+ /**
3049
+ * e.g. '19876'
3050
+ */
2590
3051
  tvProfiProgramId?: string;
3052
+ /**
3053
+ * e.g. 'S19876'
3054
+ */
2591
3055
  tvProfiContentId?: string;
2592
3056
  tvProfiSerialId?: string;
3057
+ /**
3058
+ * e.g. '70368744177695432'
3059
+ */
2593
3060
  contentId?: string;
2594
3061
  /**
2595
3062
  * Temporary contentId used only for live channel. The video is already encoded and stored in our storage
2596
3063
  * but is also stored on nangu platform to be used for live channel.
2597
3064
  */
2598
3065
  dvtvExtraContentId?: string;
3066
+ /**
3067
+ * e.g. 'W278510'
3068
+ */
2599
3069
  provysId?: string;
3070
+ /**
3071
+ * real provysId unlike provysId, e.g. '2-231027-0009'
3072
+ */
2600
3073
  tvProfiProvysId?: string;
3074
+ /**
3075
+ * e.g. 'W278510'
3076
+ */
2601
3077
  tvProfiHouseId?: string;
2602
3078
  tvProfiTitleOriginal?: string;
2603
3079
  tvProfiTitleSk?: string;
@@ -2623,7 +3099,20 @@ export declare enum LangCode {
2623
3099
  HU = "hu"
2624
3100
  }
2625
3101
 
2626
- 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
+ }
2627
3116
 
2628
3117
  /**
2629
3118
  * All supported languages codes as in ISO 639-1
@@ -2818,11 +3307,35 @@ export declare enum LoginRedirect {
2818
3307
  REMOTE_CONTROLLER = "remote-controller"
2819
3308
  }
2820
3309
 
3310
+ declare interface ManageMemberDeleteRequest extends ManageMemberRequestBase {
3311
+ action: 'deleteMember';
3312
+ }
3313
+
3314
+ export declare type ManageMemberRequest = ManageMemberUpdateRoleRequest | ManageMemberDeleteRequest;
3315
+
2821
3316
  /**
2822
- * @public
3317
+ * Request body for manageMember cloud function.
3318
+ * Handles member management operations (role update, deletion) within an organization.
3319
+ */
3320
+ declare interface ManageMemberRequestBase {
3321
+ organizationId: string;
3322
+ targetMemberUid: string;
3323
+ }
3324
+
3325
+ /**
3326
+ * Response body for manageMember cloud function.
2823
3327
  */
2824
- export declare interface MallTvExternals {
2825
- mallTvEntityId: string;
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;
2826
3339
  }
2827
3340
 
2828
3341
  /**
@@ -2886,11 +3399,37 @@ export declare enum MarkerType {
2886
3399
  NONE = "none"
2887
3400
  }
2888
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
+
2889
3422
  declare type Membership = {
2890
3423
  id: string;
2891
3424
  type: string;
2892
3425
  };
2893
3426
 
3427
+ export declare type MergeUserAccountsPayload = {
3428
+ email: string;
3429
+ name?: string;
3430
+ password: string;
3431
+ };
3432
+
2894
3433
  /**
2895
3434
  * @public
2896
3435
  */
@@ -2926,6 +3465,17 @@ export declare interface MessageUser {
2926
3465
  email: string;
2927
3466
  }
2928
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
+
2929
3479
  /**
2930
3480
  * External information of video migrated via our Public API.
2931
3481
  * @public
@@ -3147,11 +3697,6 @@ declare type Notification_2 = {
3147
3697
  } & EmailNotification;
3148
3698
  export { Notification_2 as Notification }
3149
3699
 
3150
- export declare interface NotificationDuration {
3151
- value: number;
3152
- unit: dayjs.ManipulateType;
3153
- }
3154
-
3155
3700
  export declare type NotificationFilterType = NotificationFirestoreFilterType | NotificationSurveyFilterType | NotificationLastActivityFilterType;
3156
3701
 
3157
3702
  export declare type NotificationFirestoreFilterType = NotificationSubscriptionFilterType | NotificationMembershipFilterType;
@@ -3174,12 +3719,21 @@ export declare interface NotificationMembershipFilterType {
3174
3719
  };
3175
3720
  }
3176
3721
 
3722
+ /**
3723
+ * Lifecycle status of a notification.
3724
+ */
3177
3725
  export declare enum NotificationStatus {
3726
+ /** Automatic trigger types (e.g. purchaseStatusChange, duration, userRegistration); not manually or scheduled sent. */
3178
3727
  AUTOMATIC = "automatic",
3728
+ /** Editable, not yet scheduled or sent. Initial state; can transition to PLANNED when scheduled. */
3179
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. */
3180
3731
  PLANNED = "planned",
3732
+ /** Notification has been sent. Set after push send and after email send for manual/scheduled. */
3181
3733
  SENT = "sent",
3734
+ /** Manual trigger saved and waiting to be sent (no lastSent yet). */
3182
3735
  WAITING = "waiting",
3736
+ /** Currently being sent (e.g. EmailSender sets RUNNING before sendEmails). Saving and re-sending are blocked while RUNNING. */
3183
3737
  RUNNING = "running"
3184
3738
  }
3185
3739
 
@@ -3213,6 +3767,17 @@ export declare interface NotificationTargeting {
3213
3767
  to?: Date;
3214
3768
  }
3215
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
+ */
3216
3781
  export declare type NotificationTriggerType = 'scheduled' | 'manual' | 'purchaseStatusChange' | 'duration' | 'userRegistration';
3217
3782
 
3218
3783
  export declare enum NotificationType {
@@ -3227,6 +3792,13 @@ export declare type Nullable<T> = {
3227
3792
  [P in keyof T]: T[P] | null;
3228
3793
  };
3229
3794
 
3795
+ export declare interface NumberItem {
3796
+ value: string;
3797
+ description: Translation;
3798
+ }
3799
+
3800
+ export declare type NumbersTileSpecificData = NumberItem;
3801
+
3230
3802
  /**
3231
3803
  * @public
3232
3804
  */
@@ -3302,6 +3874,20 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
3302
3874
  enabled: boolean;
3303
3875
  };
3304
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
+ };
3305
3891
  disableComments?: boolean;
3306
3892
  /**
3307
3893
  * Used on CNC webs - When buying a yearly subscription the recalculated monthly price is display below the yearly price
@@ -3347,6 +3933,11 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
3347
3933
  id: string;
3348
3934
  };
3349
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
+ */
3350
3941
  cancelledSubscriptionDiscount?: {
3351
3942
  enabled: boolean;
3352
3943
  };
@@ -3362,6 +3953,28 @@ export declare interface OrganizationSettingsField extends OrganizationResponsiv
3362
3953
  pushNotifications?: {
3363
3954
  enabled?: boolean;
3364
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
+ };
3365
3978
  }
3366
3979
 
3367
3980
  /**
@@ -3376,7 +3989,7 @@ export declare type OtherSource = SourceBase & StartAndContinuePosition & {
3376
3989
 
3377
3990
  export declare interface PaginatedResponse<T = unknown, U extends NextPageParamType = NextPageParamType> {
3378
3991
  items: T[];
3379
- nextPageParams: {
3992
+ nextPageParams: ({
3380
3993
  offset: number;
3381
3994
  limit: number;
3382
3995
  } & (U extends 'screenId' ? {
@@ -3388,7 +4001,7 @@ export declare interface PaginatedResponse<T = unknown, U extends NextPageParamT
3388
4001
  rowId: string;
3389
4002
  } : U extends 'filter' ? {
3390
4003
  filter: Omit<RowFilterField, 'limit'>;
3391
- } : {}) | null;
4004
+ } : object)) | null;
3392
4005
  }
3393
4006
 
3394
4007
  /**
@@ -3423,20 +4036,6 @@ export declare interface PartialRegistrationOverlayContextState {
3423
4036
  voucher?: string;
3424
4037
  }
3425
4038
 
3426
- /**
3427
- * @public
3428
- * Generic interface for sources that can be identified by a path (video or TV channel)
3429
- */
3430
- export declare type PathSourceParams = PathSourceParamsTvChannel | PathSourceParamsVideo;
3431
-
3432
- declare interface PathSourceParamsTvChannel extends Partial<ChannelSourceParams> {
3433
- path: `tvChannels/${string}`;
3434
- }
3435
-
3436
- declare interface PathSourceParamsVideo extends Partial<Omit<VodTivioSourceParams, 'videoPath'>> {
3437
- path: `videos/${string}`;
3438
- }
3439
-
3440
4039
  export declare type PatreonCreatorData = {
3441
4040
  campaign: string;
3442
4041
  tiers: Tier[];
@@ -3480,6 +4079,17 @@ export declare type PatreonUserResponse = {
3480
4079
  errors?: PatreonError[];
3481
4080
  };
3482
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
+
3483
4093
  /**
3484
4094
  * @public
3485
4095
  */
@@ -3596,11 +4206,6 @@ export declare type PlayerConfig = {
3596
4206
  */
3597
4207
  name: 'IMA SDK' | 'TIVIO AD SERVICE';
3598
4208
  };
3599
- /**
3600
- * If true, then TV channels are not available for anonymous users and they will be shown an overlay to sign in.
3601
- * @default false
3602
- */
3603
- disableTvChannelsForAnonymousUsers?: boolean;
3604
4209
  };
3605
4210
 
3606
4211
  /**
@@ -3612,6 +4217,8 @@ export declare interface PlayerEngineConfig {
3612
4217
  isAd?: boolean;
3613
4218
  positionMs?: number;
3614
4219
  url: string;
4220
+ sessionType?: SessionType;
4221
+ sourcePlayMode?: SourcePlayMode;
3615
4222
  }
3616
4223
 
3617
4224
  /**
@@ -3717,6 +4324,43 @@ export declare interface PlayerEngineInterface {
3717
4324
  selectPlaybackSpeed?: (playbackSpeed: number) => void;
3718
4325
  destroy(): Promise<void>;
3719
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>;
3720
4364
  lastQuality: number | null;
3721
4365
  /**
3722
4366
  * Attribute indicating that the video is to be played "inline"
@@ -3724,11 +4368,6 @@ export declare interface PlayerEngineInterface {
3724
4368
  */
3725
4369
  setPlaysInline(value: boolean): void;
3726
4370
  setControlsList(value: string[]): void;
3727
- /** Gets resolution of the video element in pixels - container size, not the actual source quality resolution */
3728
- getVideoResolution(): {
3729
- width: number;
3730
- height: number;
3731
- };
3732
4371
  }
3733
4372
 
3734
4373
  /**
@@ -3824,11 +4463,19 @@ export declare interface PlayerInterface {
3824
4463
  */
3825
4464
  setPlaysInline?: (value: boolean) => void;
3826
4465
  setControlsList?: (value: string[]) => void;
3827
- /** Gets resolution of the video element in pixels - container size, not the actual source quality resolution */
3828
- getVideoResolution(): {
3829
- width: number;
3830
- height: number;
3831
- };
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;
3832
4479
  }
3833
4480
 
3834
4481
  /**
@@ -3898,7 +4545,6 @@ export declare interface PlayerSourceInterface<T extends NonAdSourceType = NonAd
3898
4545
  start?: Date;
3899
4546
  from?: Date;
3900
4547
  sourceHistory?: string[];
3901
- staticAdsConfig?: StaticAdsBreak[];
3902
4548
  }
3903
4549
 
3904
4550
  /**
@@ -3917,7 +4563,6 @@ export declare interface PlayerSourceParams<T extends NonAdSourceType = NonAdSou
3917
4563
  seekingMatrix?: SeekingMatrixTemplate;
3918
4564
  sessionType?: VideoSourceField['sessionType'];
3919
4565
  sessionId?: string;
3920
- staticAdsConfig?: StaticAdsBreak[];
3921
4566
  }
3922
4567
 
3923
4568
  export declare type PlayersScene = InteractiveWidgetSceneBase<InteractiveWidgetSceneTemplateType.PLAYERS>;
@@ -3931,13 +4576,6 @@ export declare type PlayerState = 'idle' | 'playing' | 'paused';
3931
4576
  * @public
3932
4577
  */
3933
4578
  export declare interface PlayerWrapper {
3934
- /**
3935
- * Unique id of the player wrapper instance, set at construction time
3936
- * (e.g. by `tivio.getPlayerWrapper(id)`). Used to scope DOM ids of
3937
- * player-owned elements (IMA ad containers, content video element, …)
3938
- * so multiple players on the same page don't collide.
3939
- */
3940
- readonly id: string;
3941
4579
  /**
3942
4580
  * Report that playback of video has finished
3943
4581
  */
@@ -3976,6 +4614,11 @@ export declare interface PlayerWrapper {
3976
4614
  availableLanguages: LangCode[] | null;
3977
4615
  canReplay: boolean;
3978
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;
3979
4622
  currentTime: number;
3980
4623
  /**
3981
4624
  * Currently playing source
@@ -4026,6 +4669,10 @@ export declare interface PlayerWrapper {
4026
4669
  * Retry to play a video that failed to start playing (e.g. due to a network error)
4027
4670
  */
4028
4671
  retry: () => void;
4672
+ /**
4673
+ * Refresh the current source by calling getSourceUrl without sourceHistory.
4674
+ */
4675
+ refreshSource: () => Promise<void>;
4029
4676
  togglePlayPause: () => void;
4030
4677
  seekTo: (ms: number) => void;
4031
4678
  /**
@@ -4034,6 +4681,21 @@ export declare interface PlayerWrapper {
4034
4681
  setVolume: (volume: number) => void;
4035
4682
  changeLanguage: (langCode: LangCode) => Promise<void>;
4036
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>;
4037
4699
  /**
4038
4700
  * change volume by value between -1,1
4039
4701
  */
@@ -4042,10 +4704,6 @@ export declare interface PlayerWrapper {
4042
4704
  setCanPlay: (canPlay: boolean) => void;
4043
4705
  toggleMuted: () => void;
4044
4706
  getQualities: () => Track[];
4045
- getVideoResolution: () => {
4046
- width: number;
4047
- height: number;
4048
- };
4049
4707
  playNativeImaAd: (url: string) => void;
4050
4708
  playSourceAfterAdsRun: () => void;
4051
4709
  putAd: (ad: AdSourceInterface) => void;
@@ -4062,10 +4720,20 @@ export declare interface PlayerWrapper {
4062
4720
  seekToLive: () => void;
4063
4721
  seekToLiveInternal: () => void;
4064
4722
  setIsBuffering: (isBuffering: boolean) => void;
4723
+ isCasting: boolean;
4065
4724
  setIsCasting: (isCasting: boolean) => void;
4066
4725
  skipAd: () => void;
4067
4726
  skipAllAds: () => void;
4068
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;
4069
4737
  }
4070
4738
 
4071
4739
  /**
@@ -4090,19 +4758,7 @@ export declare enum PlayerWrapperEvents {
4090
4758
  /**
4091
4759
  * Un-pause was triggered
4092
4760
  */
4093
- 'unpause_triggered' = "unpause_triggered",
4094
- /**
4095
- * Triggered when an ad starts playing
4096
- */
4097
- 'ad-started' = "ad-started",
4098
- /**
4099
- * Triggered when an ad finishes playing
4100
- */
4101
- 'ad-ended' = "ad-ended",
4102
- /**
4103
- * Triggered when companion ads are available for the current ad
4104
- */
4105
- 'companion-ads' = "companion-ads"
4761
+ 'unpause_triggered' = "unpause_triggered"
4106
4762
  }
4107
4763
 
4108
4764
  /**
@@ -4130,6 +4786,20 @@ export declare type PlayerWrapperEventTypeType = `${PlayerWrapperEventType}`;
4130
4786
  */
4131
4787
  export declare type PrerollCheck = (source: PlayerSource) => Promise<AdSourceInterface | null>;
4132
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
+
4133
4803
  export declare enum primaPlusMonetizationLevel {
4134
4804
  light = "z7soJTA2dYSxnOOJw7B0",
4135
4805
  premium = "kwfM0D7Vzv5wfLf5go8o",
@@ -4228,8 +4898,9 @@ export declare interface ProgressMetadata {
4228
4898
  * @public
4229
4899
  */
4230
4900
  export declare interface Promotion {
4901
+ id?: string;
4231
4902
  duration?: Duration;
4232
- price?: number;
4903
+ prices?: PricesField;
4233
4904
  requiresPaymentAuthorization?: boolean;
4234
4905
  hideOtherSubscriptions?: boolean;
4235
4906
  }
@@ -4279,7 +4950,9 @@ export declare interface PurchasableMonetization extends Monetization {
4279
4950
  */
4280
4951
  price?: string | number;
4281
4952
  promotion: Promotion | null;
4282
- frequency?: MONETIZATION_FREQUENCY;
4953
+ frequency?: Omit<FrequencyInfo, 'title'> & {
4954
+ title: string;
4955
+ };
4283
4956
  frequencyInfo?: FrequencyInfo;
4284
4957
  durationDays?: number;
4285
4958
  /**
@@ -4319,7 +4992,30 @@ export declare interface PurchasableMonetization extends Monetization {
4319
4992
  * Number of seats left for the subscription.
4320
4993
  */
4321
4994
  seatsLeft?: number;
4995
+ /**
4996
+ * Trial period in milliseconds for the subscription.
4997
+ */
4998
+ trialPeriod?: number;
4999
+ /**
5000
+ * Maximum quantity of the subscription.
5001
+ */
4322
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;
4323
5019
  }
4324
5020
 
4325
5021
  /**
@@ -4351,6 +5047,7 @@ export declare type Purchase = {
4351
5047
  monetization: PurchaseMonetization | null;
4352
5048
  monetizationId: string | null;
4353
5049
  monetizationRef: any | null;
5050
+ nextPaymentDate: Date | null;
4354
5051
  status: PurchaseStatus | null;
4355
5052
  type: PurchaseType | null;
4356
5053
  /**
@@ -4737,6 +5434,7 @@ export declare interface QerkoTransaction {
4737
5434
  paymentStatus: string | null;
4738
5435
  getPaymentInfo: () => Promise<void>;
4739
5436
  voucherId?: string;
5437
+ isLoading: boolean;
4740
5438
  }
4741
5439
 
4742
5440
  export declare type QRCodeScene = InteractiveWidgetSceneBase<InteractiveWidgetSceneTemplateType.QR_CODE>;
@@ -4765,7 +5463,7 @@ export declare interface QuestionRepository {
4765
5463
  readonly selectedAnswerId: string | undefined;
4766
5464
  isSubmitted: boolean;
4767
5465
  isSubmitting: boolean;
4768
- 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;
4769
5467
  selectAnswer: (answerId: string | undefined) => void;
4770
5468
  setShowCountdown: (showCountdown: boolean) => void;
4771
5469
  reset: () => void;
@@ -5015,6 +5713,16 @@ export declare type RequiredNullable<T> = {
5015
5713
  [P in keyof T]-?: P extends OptionalKeys<T> ? T[P] | null : T[P];
5016
5714
  };
5017
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
+
5018
5726
  /**
5019
5727
  * @public
5020
5728
  */
@@ -5037,6 +5745,7 @@ export declare interface RouterOverrides {
5037
5745
  gridType: GRID_TYPES.ROW;
5038
5746
  rowId: string;
5039
5747
  organizationId?: string;
5748
+ applicationHandle?: string;
5040
5749
  } | {
5041
5750
  gridType: GRID_TYPES.VIDEO;
5042
5751
  videoId: string;
@@ -5068,6 +5777,7 @@ export declare interface RouterOverrides {
5068
5777
  goToRecommendedFromOrganizationRow: (screenId: string, rowId: string) => void;
5069
5778
  goToMagentaMomentsPage: (voucher?: string) => void;
5070
5779
  goToVoucherRedeemPage: () => void;
5780
+ goToSubscriptionsPage: (organizationHandle?: string) => void;
5071
5781
  updateParams: (params: URLSearchParams) => void;
5072
5782
  navigate: (path: string) => void;
5073
5783
  }
@@ -5086,25 +5796,7 @@ export declare interface RouterOverridesContextState {
5086
5796
  /**
5087
5797
  * @public
5088
5798
  */
5089
- export declare interface Row {
5090
- id: string;
5091
- rowId: string;
5092
- name: string;
5093
- description?: string;
5094
- assets: AssetsField;
5095
- type: ScreenRowType;
5096
- isLiveRow: boolean;
5097
- tiles: PaginationInterface<ItemInRow>;
5098
- numberOfLines?: number;
5099
- monetizations?: {
5100
- monetizationRef: any;
5101
- }[];
5102
- rowComponent: RowComponent.ROW | RowComponent.BANNER;
5103
- itemComponent: RowItemComponent | BannerItemComponent;
5104
- organizationId?: string;
5105
- bottomComponent?: BottomComponent;
5106
- showDescriptionAsTitle?: boolean;
5107
- }
5799
+ export declare type Row = StaticRow | DynamicRow;
5108
5800
 
5109
5801
  /**
5110
5802
  * @public
@@ -5122,17 +5814,41 @@ export declare enum ROW_ITEM_TYPES {
5122
5814
  /**
5123
5815
  * @public
5124
5816
  */
5125
- export declare interface RowBanner extends Row {
5817
+ export declare interface RowBanner extends DynamicRow {
5126
5818
  rowComponent: RowComponent.BANNER;
5127
5819
  itemComponent: BannerItemComponent;
5128
5820
  }
5129
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
+
5130
5831
  /**
5131
5832
  * @public
5132
5833
  */
5133
5834
  export declare enum RowComponent {
5134
5835
  ROW = "ROW",
5135
- 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"
5136
5852
  }
5137
5853
 
5138
5854
  export declare enum RowFilterCollection {
@@ -5166,72 +5882,10 @@ export declare interface RowFilterWhereField {
5166
5882
  value: any;
5167
5883
  }
5168
5884
 
5169
- export declare type RowInScreen = {
5170
- /**
5171
- * Firebase document path. If not provided, the row is not defined in db and is dynamically generated (e.g. recommendation row).
5172
- */
5173
- path?: string;
5174
- /**
5175
- * Tivio row ID.
5176
- */
5177
- rowId: string;
5178
- /**
5179
- * If all items are from the same organization this will be set.
5180
- */
5181
- organizationId?: string;
5182
- /**
5183
- * Row name.
5184
- */
5185
- name: Translation;
5186
- /**
5187
- * Row filter based on which to pick tiles.
5188
- */
5189
- filter?: RowFilterField;
5190
- /**
5191
- * Row order in the screen.
5192
- */
5193
- order?: number;
5194
- /**
5195
- * Number of lines of the title.
5196
- */
5197
- numberOfLines?: number;
5198
- /**
5199
- * Standard row or a Banner.
5200
- */
5201
- rowComponent: RowComponent;
5202
- /**
5203
- * Component to use to render the tiles in the row.
5204
- */
5205
- itemComponent: RowItemComponent | BannerItemComponent;
5206
- /**
5207
- * Type of the row (continue to watch, custom, filter, ...).
5208
- */
5209
- type: ScreenRowType;
5210
- /**
5211
- * Items to display in the row.
5212
- */
5213
- tiles: GetTilesInRowResponse;
5214
- /**
5215
- * Setting for decided what to show bellow the tiles
5216
- */
5217
- bottomComponent?: BottomComponent;
5218
- /**
5219
- * Setting for decided whether to show description instead of title in the tiles
5220
- */
5221
- showDescriptionAsTitle?: boolean;
5222
- /**
5223
- * Setting for decided whether to hide title in the tiles/banners
5224
- */
5225
- hideTitle?: boolean;
5226
- /**
5227
- * Link to external URL
5228
- */
5229
- externalUrl?: string;
5230
- /**
5231
- * Title of Play button
5232
- */
5233
- playButtonTitle?: Translation;
5234
- };
5885
+ /**
5886
+ * Row in screen - can be either static or dynamic
5887
+ */
5888
+ export declare type RowInScreen = StaticRowInScreen | DynamicRowInScreen;
5235
5889
 
5236
5890
  /**
5237
5891
  * @public
@@ -5244,6 +5898,7 @@ export declare interface RowItem extends RowItemAssets {
5244
5898
  assets: AssetsField | null;
5245
5899
  application: RowItemApplicationData | null;
5246
5900
  feedVisible?: boolean;
5901
+ tileProps?: TileProps;
5247
5902
  }
5248
5903
 
5249
5904
  /**
@@ -5281,7 +5936,11 @@ export declare enum RowItemComponent {
5281
5936
  ROW_ITEM_CREATORS_LANDSCAPE = "ROW_ITEM_CREATORS_LANDSCAPE",
5282
5937
  ROW_ITEM_CIRCLED = "ROW_ITEM_CIRCLED",
5283
5938
  ROW_ITEM_HIGHLIGHTED = "ROW_ITEM_HIGHLIGHTED",
5284
- 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"
5285
5944
  }
5286
5945
 
5287
5946
  /**
@@ -5298,6 +5957,16 @@ export declare type RowItemsSubscription = (rowId: string, cb: (error: Error | n
5298
5957
  hasNextPage: boolean;
5299
5958
  } | null, fetchMore: null | ((count?: number) => void), isLoading: boolean) => void, limit?: number) => Disposer_2;
5300
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
+
5301
5970
  /**
5302
5971
  * RowOrderByFieldPath that is used in @tivio/firebase needs to be retyped here.
5303
5972
  * @public
@@ -5310,7 +5979,7 @@ export declare enum RowOrderByFieldPath {
5310
5979
  /**
5311
5980
  * @public
5312
5981
  */
5313
- export declare interface RowStandard extends Row {
5982
+ export declare interface RowStandard extends DynamicRow {
5314
5983
  rowComponent: RowComponent.ROW;
5315
5984
  itemComponent: RowItemComponent;
5316
5985
  }
@@ -5423,6 +6092,11 @@ declare interface Screen_2 {
5423
6092
  hasNextPage: boolean;
5424
6093
  refetchIfNeeded: () => Promise<void>;
5425
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;
5426
6100
  }
5427
6101
  export { Screen_2 as Screen }
5428
6102
 
@@ -5454,7 +6128,7 @@ export declare type ScreenConfig = {
5454
6128
  /**
5455
6129
  * @public
5456
6130
  */
5457
- export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites' | 'topWatched' | 'applications';
6131
+ export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites' | 'topWatched' | 'applications' | 'static';
5458
6132
 
5459
6133
  /**
5460
6134
  * Listen to screen data
@@ -5471,7 +6145,9 @@ export declare enum ScreenType {
5471
6145
  EMBED = "embed",
5472
6146
  RECOMMENDATION = "recommendation",
5473
6147
  FEED = "feed",
5474
- EPG = "epg"
6148
+ EPG = "epg",
6149
+ LANDING = "landing",
6150
+ PLAYER = "player"
5475
6151
  }
5476
6152
 
5477
6153
  /**
@@ -5495,14 +6171,6 @@ export declare type SdkReactConfig = Omit<TivioConfig, 'language'> & {
5495
6171
  language?: LangCode;
5496
6172
  };
5497
6173
 
5498
- /**
5499
- * @public
5500
- */
5501
- export declare interface SDKUserAuthCallbacks {
5502
- onGoToLogin?: () => void;
5503
- onGoToRegistration?: () => void;
5504
- }
5505
-
5506
6174
  /**
5507
6175
  * @public
5508
6176
  * @deprecated sections are no longer used.
@@ -5717,7 +6385,22 @@ export declare const showGdprConsentPreferences: () => Promise<void>;
5717
6385
  /**
5718
6386
  * @public
5719
6387
  */
5720
- 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';
5721
6404
 
5722
6405
  /**
5723
6406
  * Simplified VideoController interface for external rendering
@@ -5806,27 +6489,6 @@ export declare interface SimplifiedVideoController {
5806
6489
  muted: boolean;
5807
6490
  volume: number;
5808
6491
  }) => void): void;
5809
- /**
5810
- * Add an event listener for ad started events
5811
- * @param event - Must be 'ad-started'
5812
- * @param callback - Function called when an ad starts playing
5813
- */
5814
- addEventListener(event: 'ad-started', callback: (adMetadata: AdMetadata & {
5815
- customAdMetadata?: Record<string, unknown> | null;
5816
- ctaElement: HTMLElement | null;
5817
- }) => void): void;
5818
- /**
5819
- * Add an event listener for ad ended events
5820
- * @param event - Must be 'ad-ended'
5821
- * @param callback - Function called when an ad finishes playing
5822
- */
5823
- addEventListener(event: 'ad-ended', callback: () => void): void;
5824
- /**
5825
- * Add an event listener for companion ads events
5826
- * @param event - Must be 'companion-ads'
5827
- * @param callback - Function called when companion ads are available
5828
- */
5829
- addEventListener(event: 'companion-ads', callback: (companionAds: CompanionAd[]) => void): void;
5830
6492
  /**
5831
6493
  * Remove an event listener
5832
6494
  * @param event - The event name to stop listening for
@@ -5838,19 +6500,6 @@ export declare interface SimplifiedVideoController {
5838
6500
  * @param source - The new source to load (can be a video path, channel path, or source parameters)
5839
6501
  */
5840
6502
  setSource(source: WebPlayerProps['source']): void;
5841
- setAdsConfig(adsConfig: StaticAdsBreak[]): void;
5842
- /**
5843
- * Toggle the minimal OSD mode.
5844
- *
5845
- * When enabled, the player shows only a minimal set of controls (play/pause,
5846
- * volume and fullscreen) and a small center play/pause icon that briefly
5847
- * flashes when the state changes. Intended for small/pinned containers such
5848
- * as a scroll-fixed mini player in the corner of the page or a full-width
5849
- * mobile player pinned to the top of the viewport.
5850
- *
5851
- * @param isMinimal - Whether the minimal OSD should be used
5852
- */
5853
- setIsMinimal(isMinimal: boolean): void;
5854
6503
  /**
5855
6504
  * Destroy the player and clean up all resources
5856
6505
  */
@@ -5923,6 +6572,14 @@ export declare enum SourceType {
5923
6572
  VOD_EXTERNAL = "vod_external"
5924
6573
  }
5925
6574
 
6575
+ export declare interface SplitLayoutItem {
6576
+ asset: ScalableAsset;
6577
+ name: Translation;
6578
+ description?: Translation;
6579
+ }
6580
+
6581
+ export declare type SplitLayoutSpecificData = SplitLayoutItem;
6582
+
5926
6583
  /**
5927
6584
  * External information of video from SportyTv EPG import
5928
6585
  * @public
@@ -5964,30 +6621,236 @@ declare interface StartLiveStreamRequest {
5964
6621
  payload: StartLiveStreamPayload;
5965
6622
  }
5966
6623
 
5967
- export declare interface StartLiveStreamResponse {
5968
- liveStreamProcessPath: string;
5969
- streamingStudioProcessPath: string;
5970
- error?: string;
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';
6777
+ }
6778
+
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[];
5971
6795
  }
5972
6796
 
5973
- 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
+ }
5974
6808
 
5975
- export declare interface StaticAdsBreakMidroll {
5976
- type: 'midroll';
5977
- from: number;
5978
- 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;
5979
6819
  }
5980
6820
 
5981
- declare interface StaticAdsBreakPostrollPreroll {
5982
- type: 'preroll' | 'postroll';
5983
- 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;
5984
6831
  }
5985
6832
 
5986
- export declare interface StaticAdsBreakReplacement {
5987
- type: 'replacement';
5988
- 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;
5989
6842
  }
5990
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
+
5991
6854
  /**
5992
6855
  * @public
5993
6856
  */
@@ -6002,6 +6865,15 @@ export declare interface StoreBadgeConfig {
6002
6865
  appId: string;
6003
6866
  }
6004
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
+
6005
6877
  export declare interface SubmitAnswerRequest {
6006
6878
  answerOptionId?: string;
6007
6879
  answerText?: string;
@@ -6070,6 +6942,25 @@ declare interface SubscriptionInfo {
6070
6942
  frequency: string;
6071
6943
  }
6072
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
+
6073
6964
  /**
6074
6965
  * @public
6075
6966
  */
@@ -6110,8 +7001,8 @@ export declare interface Tag extends RowItem {
6110
7001
  detailBanner?: string;
6111
7002
  availableSeasons?: AvailableSeason[];
6112
7003
  isFavorite: boolean;
6113
- addToFavorites: () => Promise<void>;
6114
- removeFromFavorites: () => Promise<void>;
7004
+ addToFavorites: () => void;
7005
+ removeFromFavorites: () => void;
6115
7006
  cover: string;
6116
7007
  getApplicationName: () => string | undefined;
6117
7008
  seriesRef?: DocumentReference<any>;
@@ -6224,37 +7115,66 @@ export declare interface TileApplicationData {
6224
7115
  isMainApplication?: boolean;
6225
7116
  }
6226
7117
 
6227
- export declare interface TileData<ItemSpecificData = VideoTileSpecificData | TvChannelTileSpecificData | TagTileSpecificData | ArticleTileSpecificData | SeriesTileSpecificData> {
6228
- /**
6229
- * Tile item ID.
6230
- */
6231
- id: string;
6232
- /**
6233
- * Timestamp of the item creation.
6234
- */
6235
- created: number;
6236
- /**
6237
- * Type of the tile. VIDEO, TV_CHANNEL, TAG, ...
6238
- */
6239
- 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;
6240
7128
  /**
6241
- * Tile item name translation.
7129
+ * Override font size of component type specific tile based on viewport width
6242
7130
  */
6243
- 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;
6244
7146
  /**
6245
- * Firestore path to the item.
7147
+ * Margin of inner TileContainer.
7148
+ * Now used for backward compatibility for WebTileGrid. Consider to use it other way.
6246
7149
  */
6247
- 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;
6248
7165
  /**
6249
- * 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).
6250
7168
  */
6251
- application?: TileApplicationData;
7169
+ topLabel?: string;
6252
7170
  /**
6253
- * Specific data for an item type (e.g. video, tv channel, tag, ...).
7171
+ * CSS color for the topLabel background. Defaults to white.
6254
7172
  */
6255
- itemSpecificData: ItemSpecificData;
7173
+ topLabelColor?: string;
6256
7174
  }
6257
7175
 
7176
+ export declare type TileData<T extends ScreenRowType = ScreenRowType> = T extends 'static' ? StaticTileData : DocumentTileData;
7177
+
6258
7178
  export declare interface TileMonetizationData {
6259
7179
  id: string;
6260
7180
  path: string;
@@ -6311,56 +7231,17 @@ export declare interface TileOptions {
6311
7231
  }
6312
7232
 
6313
7233
  /**
7234
+ * Additional properties that can be applied to tiles for visual customization
6314
7235
  * @public
6315
7236
  */
6316
7237
  export declare interface TileProps {
6317
- children?: React_2.ReactNode;
6318
- cover?: string;
6319
- bottomLabel: string;
6320
- bottomLabelAreaHeight: number;
6321
- bottomItem?: React_2.ReactNode;
6322
- innerLabel: string;
6323
- /**
6324
- * Override font size of component type specific tile based on viewport width
6325
- */
6326
- innerLabelFontSize?: number;
6327
- duration: string;
6328
- price: string | null;
6329
- focused: boolean;
6330
- onClick?: () => void;
6331
- hoverable: boolean;
6332
- coverPadding: CoverPadding;
6333
- variant: RowItemComponent;
6334
- coverWidth: number;
6335
- progress?: number;
6336
- time?: string;
6337
- logo?: string;
6338
- bigLogo?: string;
6339
- coverHeight: number;
6340
- aspectRatio?: number;
6341
- /**
6342
- * Margin of inner TileContainer.
6343
- * Now used for backward compatibility for WebTileGrid. Consider to use it other way.
6344
- */
6345
- containerMargin?: number | string;
6346
- created?: Date;
6347
- numberOfLines?: number;
6348
- applicationName?: string;
6349
- applicationLogo?: string;
6350
- hasBranding?: boolean;
6351
- applicationHandle?: string;
6352
- fullWidth?: boolean;
6353
- bottomComponent?: BottomComponent;
6354
- showAlreadyWatchedOverlay?: boolean;
6355
- itemType?: ROW_ITEM_TYPES;
6356
- description?: string;
6357
- showDescriptionAsTitle?: boolean;
7238
+ topRightLabel?: TileTopRightLabel;
6358
7239
  }
6359
7240
 
6360
7241
  /**
6361
7242
  * @public
6362
7243
  */
6363
- export declare type TilePropsPartial = Partial<TileProps>;
7244
+ export declare type TilePropsPartial = Partial<TileComponentProps>;
6364
7245
 
6365
7246
  /**
6366
7247
  * @internal
@@ -6400,6 +7281,15 @@ export declare type TileSizesMap = {
6400
7281
  */
6401
7282
  export declare type TileSizeVariant = 'default' | 'mobile';
6402
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
+
6403
7293
  /**
6404
7294
  * @public
6405
7295
  */
@@ -6490,10 +7380,6 @@ export declare interface TivioComponents {
6490
7380
  ContentSortPicker: React_2.ComponentType<ContentSortPickerProps>;
6491
7381
  WebTivioProVideoScreen: React_2.ComponentType<WebTivioProVideoScreenProps>;
6492
7382
  RemoteController: React_2.ComponentType<RemoteControllerProps>;
6493
- MonetizationsSelectOverlay: React_2.ComponentType;
6494
- MonetizationsSelectOverlayContextProvider: React_2.ComponentType<{
6495
- children: React_2.ReactNode;
6496
- }>;
6497
7383
  }
6498
7384
 
6499
7385
  /**
@@ -6530,7 +7416,10 @@ export declare interface TivioConfig {
6530
7416
  * @deprecated this field is no longer in use and has no impact when set.
6531
7417
  */
6532
7418
  firestore?: any | null;
6533
- 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;
6534
7423
  /**
6535
7424
  * Represents an optional array of LanguageSelector objects.
6536
7425
  * Used to define and manage a list of supported languages for different language-usages (user, content,...).
@@ -6689,6 +7578,10 @@ export declare type TivioInternalComponents = {
6689
7578
  }>;
6690
7579
  Banner: React_2.ComponentType<BannerPropsPartial>;
6691
7580
  CustomAppHistoryContext: React_2.Context<HistoryContextData | undefined>;
7581
+ ScrollableSubscriptionList: React_2.ComponentType<{
7582
+ subscriptions: PurchasableMonetization[];
7583
+ renderSubscription: (subscription: PurchasableMonetization) => React_2.ReactNode;
7584
+ }>;
6692
7585
  };
6693
7586
 
6694
7587
  /**
@@ -6739,6 +7632,13 @@ export declare type TivioInternalHooks = {
6739
7632
  error: Error | null;
6740
7633
  loading: boolean;
6741
7634
  });
7635
+ useScrollShadows: () => {
7636
+ scrollRef: React_2.RefObject<HTMLDivElement>;
7637
+ showLeftShadow: boolean;
7638
+ showRightShadow: boolean;
7639
+ shouldCenter: boolean;
7640
+ checkScrollShadows: () => void;
7641
+ };
6742
7642
  useTvChannel: UseTvChannel;
6743
7643
  useUser: () => {
6744
7644
  user: User | null;
@@ -6766,9 +7666,7 @@ export declare type TivioInternalProviders = {
6766
7666
  UserContextProvider: React_2.ComponentType<{
6767
7667
  children?: React_2.ReactNode;
6768
7668
  }>;
6769
- MonetizationsSelectOverlayContextProvider: React_2.ComponentType<{
6770
- children: React_2.ReactNode;
6771
- }>;
7669
+ MonetizationsSelectOverlayContextProvider: React_2.ComponentType;
6772
7670
  QerkoOverlayContextProvider: React_2.ComponentType;
6773
7671
  /**
6774
7672
  * @deprecated do not use, this provider will be removed in the future
@@ -6873,7 +7771,7 @@ export declare type TivioReactBundle = {
6873
7771
  subscriptions: TivioSubscriptions;
6874
7772
  purchaseVideoWithQerko: (videoId: string, monetizationId: string, voucher?: {
6875
7773
  expirationDate: Date;
6876
- }) => Promise<QerkoPaymentInfo>;
7774
+ }, email?: string) => Promise<QerkoPaymentInfo>;
6877
7775
  purchaseSubscriptionWithQerko: (monetizationId: string, voucher?: {
6878
7776
  expirationDate: Date;
6879
7777
  }) => Promise<QerkoPaymentInfo>;
@@ -6886,8 +7784,6 @@ export declare type TivioReactBundle = {
6886
7784
  */
6887
7785
  internal: TivioInternalBundle;
6888
7786
  analytics: TivioAnalytics;
6889
- addToFavoritesByPath: (path: string) => Promise<void>;
6890
- removeFromFavoritesByPath: (path: string) => Promise<void>;
6891
7787
  destroy: () => Promise<void>;
6892
7788
  } & Pick<TivioSetters, 'setBundleVersion' | 'setUser' | 'setLanguage' | 'setStorageManager'> & Omit<Partial<TivioJsBundleExposedApi>, 'createPlayerWrapper'>;
6893
7789
 
@@ -7016,7 +7912,7 @@ export declare interface TvAppProps {
7016
7912
  /**
7017
7913
  * @public
7018
7914
  */
7019
- export declare interface TvChannel extends RowItem, MonetizableItem {
7915
+ export declare interface TvChannel extends RowItem {
7020
7916
  id: string;
7021
7917
  itemType: ROW_ITEM_TYPES.TV_CHANNEL;
7022
7918
  name: string;
@@ -7027,11 +7923,17 @@ export declare interface TvChannel extends RowItem, MonetizableItem {
7027
7923
  logoPendingOverlayWidth?: string;
7028
7924
  hls: string;
7029
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[];
7030
7931
  getSourceUrl(options?: {
7031
7932
  language?: LangCode;
7032
7933
  }): Promise<GetSourceUrlResponse & {
7033
7934
  language?: LangCode;
7034
7935
  }>;
7936
+ purchasableMonetization: any | null;
7035
7937
  price: number;
7036
7938
  cover: string;
7037
7939
  isPlayable: boolean;
@@ -7061,7 +7963,12 @@ export declare enum TvChannelType {
7061
7963
  /**
7062
7964
  * "Virtual" tv channel constructed from separate videos
7063
7965
  */
7064
- 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"
7065
7972
  }
7066
7973
 
7067
7974
  /**
@@ -7143,6 +8050,13 @@ export declare type UpdateNotificationSettingsRequest = {
7143
8050
 
7144
8051
  export declare type UpdateNotificationSettingsResponse = Promise<boolean>;
7145
8052
 
8053
+ export declare type UpdateUserEmailPayload = {
8054
+ newEmail: string;
8055
+ password: string;
8056
+ name: string;
8057
+ token?: string;
8058
+ };
8059
+
7146
8060
  export declare type UpsertCommentResponse = AddEditCommentResponse | DeleteCommentResponse;
7147
8061
 
7148
8062
  export declare type UrlNamesType = {
@@ -7205,7 +8119,7 @@ export declare const useCancelSubscription: UseCancelSubscription;
7205
8119
  * @public
7206
8120
  */
7207
8121
  export declare interface UseCancelSubscriptionsResult {
7208
- cancelSubscriptions: (subscriptionIds: string[]) => Promise<void>;
8122
+ cancelSubscriptions: (subscriptionIds: string[]) => Promise<boolean>;
7209
8123
  cancellationInfos: QerkoCancellationInfo[];
7210
8124
  errors: string[];
7211
8125
  }
@@ -7414,9 +8328,17 @@ export declare type User = {
7414
8328
  * Returns all PAID or CANCELLED user purchases (expired and non-expired)
7415
8329
  */
7416
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
+ */
7417
8339
  availablePromotionsIds: string[];
7418
8340
  /**
7419
- * Returns "active" (not CANCELLED) VoD purchases ("transaction" type)
8341
+ * Returns "active" (not CANCELLED) VoD purchases ("transaction" type")
7420
8342
  */
7421
8343
  purchasedVods: Purchase[];
7422
8344
  /**
@@ -7504,9 +8426,6 @@ export declare type User = {
7504
8426
  getAllExtendableSubscriptions: () => Promise<Purchase[]>;
7505
8427
  getRssValidToken: () => Promise<TokenInterface | undefined>;
7506
8428
  getRssUrl: () => Promise<GetUserRssUrlResponse>;
7507
- getFavorites: (options?: GetUserProfileDataOptions) => Promise<FavoriteWithData[]>;
7508
- getWatchPositions: (options?: GetUserProfileDataOptions) => Promise<WatchPositionWithData[]>;
7509
- getWatchHistory: (options?: GetUserProfileDataOptions) => Promise<WatchPositionWithData[]>;
7510
8429
  invalidateAllTokens: (type: TokenType) => Promise<void>;
7511
8430
  isPartiallyRegistered: boolean;
7512
8431
  conversationStore: ConversationStore;
@@ -7552,7 +8471,7 @@ export declare interface UserNotificationSettings {
7552
8471
  * @public
7553
8472
  */
7554
8473
  export declare type UseRow = (rowId: string | null, organizationId?: string) => {
7555
- row: Row | null;
8474
+ row: BaseRow | null;
7556
8475
  error: Error | null;
7557
8476
  };
7558
8477
 
@@ -7794,7 +8713,6 @@ export declare enum VastProvider {
7794
8713
  TEST = "test",
7795
8714
  TEST_VPAID = "test-vpaid",
7796
8715
  TIVIO_ADS = "tivio-ads",
7797
- STATIC_ADS_PROVIDER = "static-ads-provider",
7798
8716
  JOJ_TEST_AD_FORM_PROGRAMMATIC = "joj-test-ad-form-programmatic",
7799
8717
  JOJ_TEST_TESTER_VASTERIX = "joj-test-tester-vasterix",
7800
8718
  JOJ_TEST_TESTER_ADFORM_30 = "joj-test-tester-adform-30"
@@ -7878,8 +8796,8 @@ export declare interface Video extends RowItem, MonetizableItem, ReactableConten
7878
8796
  tasting: Video | null;
7879
8797
  watchPosition: number | null;
7880
8798
  isFavorite: boolean;
7881
- addToFavorites: () => Promise<void>;
7882
- removeFromFavorites: () => Promise<void>;
8799
+ addToFavorites: () => void;
8800
+ removeFromFavorites: () => void;
7883
8801
  availability: ContentAvailability | null;
7884
8802
  sourceLanguages: LangCode[];
7885
8803
  urlByLanguage: (lang: LangCode) => string | undefined;
@@ -7937,10 +8855,6 @@ export declare interface VideoController {
7937
8855
  muted: boolean;
7938
8856
  volume: number;
7939
8857
  }) => void): void;
7940
- addEventListener(event: 'ad-started', callback: (value: AdMetadata & {
7941
- adCtaElement: HTMLElement | null;
7942
- }) => void): void;
7943
- addEventListener(event: 'companion-ads', callback: (value: CompanionAd[]) => void): void;
7944
8858
  /**
7945
8859
  * Remove an event listener
7946
8860
  * @param event - The event name to stop listening for
@@ -7976,6 +8890,10 @@ export declare interface VideoController {
7976
8890
  * Replay the current video from the beginning
7977
8891
  */
7978
8892
  replay(): Promise<void>;
8893
+ /**
8894
+ * Refresh the current source by calling getSourceUrl without sourceHistory.
8895
+ */
8896
+ refreshSource(): Promise<void>;
7979
8897
  /**
7980
8898
  * Retry playback if it failed to start
7981
8899
  */
@@ -8066,7 +8984,30 @@ export declare interface VideoController {
8066
8984
  * @param mutations - Array of DOM mutation records
8067
8985
  */
8068
8986
  onWatermarkElementChange(mutations: MutationRecord[]): void;
8069
- 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;
8070
9011
  }
8071
9012
 
8072
9013
  declare type VideoDetailResponsiveField = OrganizationResponsiveSetting<{
@@ -8087,7 +9028,7 @@ declare type VideoDetailResponsiveField = OrganizationResponsiveSetting<{
8087
9028
  /**
8088
9029
  * @public
8089
9030
  */
8090
- export declare type VideoExternals = (JojExternals | MallTvExternals | OktagonExternals | MigratedVideoExternals | SportyExternals) & {
9031
+ export declare type VideoExternals = (JojExternals | OktagonExternals | MigratedVideoExternals | SportyExternals | AdExternals) & {
8091
9032
  channelKey?: string;
8092
9033
  };
8093
9034
 
@@ -8150,6 +9091,11 @@ export declare type VideoSourceField = {
8150
9091
  * because content id in source url and authentication will not match.
8151
9092
  */
8152
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[];
8153
9099
  } & ({
8154
9100
  url: string;
8155
9101
  provider?: Exclude<VideoSourceProvider, VideoSourceProvider.CLOUDFLARE>;
@@ -8199,6 +9145,7 @@ export declare interface VideoTileSpecificData {
8199
9145
  urlName?: UrlNamesType;
8200
9146
  monetizations?: VideoTileMonetizationData[];
8201
9147
  description?: Translation;
9148
+ duration?: number;
8202
9149
  }
8203
9150
 
8204
9151
  /**
@@ -8287,7 +9234,7 @@ export declare interface ViewCountItem {
8287
9234
  /**
8288
9235
  * @public
8289
9236
  */
8290
- export declare interface VirtualChannelSourceInterface extends Omit<ChannelSourceInterface, 'clone'> {
9237
+ export declare interface VirtualChannelSourceInterface extends ChannelSourceInterface {
8291
9238
  tvChannelType: TvChannelType.VIRTUAL;
8292
9239
  program?: TvProgram | null;
8293
9240
  video?: Video | null;
@@ -8300,18 +9247,9 @@ export declare interface VirtualChannelSourceInterface extends Omit<ChannelSourc
8300
9247
  */
8301
9248
  export declare interface VirtualChannelSourceParams extends ChannelSourceParams {
8302
9249
  tvChannelType: TvChannelType.VIRTUAL;
8303
- currentProgram?: TvProgram | null;
8304
9250
  drm?: Drm;
8305
9251
  }
8306
9252
 
8307
- /**
8308
- * Interface representing the parameters for a VOD (Video On Demand) external multi-source configuration.
8309
- * Multi-source means an array of string URLs representing the external sources for the video content.
8310
- */
8311
- export declare interface VodExternalMultiSourceParams extends Omit<VodExternalSourceParams, 'url'> {
8312
- urls: string[];
8313
- }
8314
-
8315
9253
  /**
8316
9254
  * @public
8317
9255
  */
@@ -8410,21 +9348,6 @@ export declare interface WarningConfirmationOverlayPayload extends ConfirmationO
8410
9348
  subscriptionExpirationText?: string;
8411
9349
  }
8412
9350
 
8413
- /**
8414
- * @public
8415
- */
8416
- export declare interface WatchPositionWithData extends Omit<UserWatchPositionField, 'videoRef' | 'tagRef'> {
8417
- /**
8418
- * Video that given watch position is related to.
8419
- */
8420
- video: Video;
8421
- /**
8422
- * If user watches episode of series, we have to save series ref as well.
8423
- * Same for {@link episodeNumber} and {@link seasonNumber}.
8424
- */
8425
- tag?: Tag;
8426
- }
8427
-
8428
9351
  /**
8429
9352
  * @public
8430
9353
  */
@@ -8435,7 +9358,6 @@ export declare interface Watermark {
8435
9358
 
8436
9359
  export declare interface WebConfig {
8437
9360
  customer: CustomerId;
8438
- customerName?: string;
8439
9361
  title?: string;
8440
9362
  description?: string;
8441
9363
  logo: string;
@@ -8449,37 +9371,31 @@ export declare interface WebConfig {
8449
9371
  header?: {
8450
9372
  /**
8451
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
8452
9376
  */
8453
9377
  buyVoucherButtonText?: string;
8454
9378
  /**
8455
- * 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.
8456
9381
  */
8457
- 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
+ })[];
8458
9389
  allowSearch?: boolean;
8459
9390
  logoHeight?: string;
8460
9391
  mobileLogoHeight?: string;
8461
9392
  buySubscriptionButtonText?: string;
8462
- isHidden?: boolean;
8463
- /**
8464
- * Additional menu items to be shown in the rounded menu in the header (external or internal)
8465
- */
8466
- additionalMenuItems?: {
8467
- name: string;
8468
- href: string;
8469
- newTab?: boolean;
8470
- }[];
8471
9393
  };
8472
9394
  footer?: {
8473
- isHidden?: boolean;
8474
9395
  /**
8475
9396
  * If logo is different from logo in header
8476
9397
  */
8477
9398
  logo?: string;
8478
- /**
8479
- * @fixme https://app.clickup.com/t/90151157205/TIV-1515
8480
- * If multiple logos are provided, the multiple logos are prioritized over the single logo.
8481
- */
8482
- multipleLogos?: string[];
8483
9399
  showLogo?: boolean;
8484
9400
  /**
8485
9401
  * right panel - various type of contacts to owners of website
@@ -8522,19 +9438,6 @@ export declare interface WebConfig {
8522
9438
  email?: string;
8523
9439
  };
8524
9440
  cookieSettingsLabel?: string;
8525
- disclaimer?: string;
8526
- showDivider?: boolean;
8527
- /**
8528
- * Additional links to be shown in the footer
8529
- */
8530
- additionalLinks?: {
8531
- name: string;
8532
- href: string;
8533
- }[];
8534
- /**
8535
- * Hide footer on these paths
8536
- */
8537
- hideFooter?: string[];
8538
9441
  partners?: {
8539
9442
  name: string;
8540
9443
  logo: string;
@@ -8550,14 +9453,6 @@ export declare interface WebConfig {
8550
9453
  * so app requires authorization to see them.
8551
9454
  */
8552
9455
  securedContent?: boolean;
8553
- /**
8554
- * If true, then auth is required for all pages.
8555
- */
8556
- isAuthRequired?: boolean;
8557
- /**
8558
- * If true, then buy subscription button is hidden.
8559
- */
8560
- hideBuySubscriptionButton?: boolean;
8561
9456
  /**
8562
9457
  * CSS styles for application background.
8563
9458
  */
@@ -8576,10 +9471,6 @@ export declare interface WebConfig {
8576
9471
  * Default is TRUE (see {@link AppLoadingOverlay}
8577
9472
  */
8578
9473
  showProgressBar?: boolean;
8579
- /**
8580
- * URL to background image shown on loading screen.
8581
- */
8582
- backgroundUrl?: string;
8583
9474
  };
8584
9475
  /**
8585
9476
  * Slug of all pages where user will be forced to fill login form if he's not logged in.
@@ -8607,7 +9498,6 @@ export declare interface WebConfig {
8607
9498
  */
8608
9499
  showChooseSubscription?: boolean;
8609
9500
  registration?: {
8610
- logoMarginTop?: string;
8611
9501
  /**
8612
9502
  * Customization of auth form
8613
9503
  */
@@ -8627,18 +9517,18 @@ export declare interface WebConfig {
8627
9517
  showAcceptanceOfTermsAndConditions?: boolean;
8628
9518
  };
8629
9519
  registrationConsent?: string;
8630
- socialRegistrationConsent?: string;
8631
9520
  };
8632
9521
  payment?: {
8633
9522
  paymentConsent?: string;
8634
9523
  paymentRenewalConsent?: boolean;
9524
+ allowFrequencySwitcher?: boolean;
8635
9525
  };
8636
9526
  /**
8637
9527
  * If web supports entering vouchers
8638
9528
  */
8639
9529
  supportVouchers?: boolean;
8640
9530
  /**
8641
- * Config for Google Tag Manager with optional shouldWaitForDidomi flag
9531
+ * Config for Google Tag Manager
8642
9532
  */
8643
9533
  googleTagManagerConfig?: TagManagerArgs & {
8644
9534
  shouldWaitForDidomi?: boolean;
@@ -8661,8 +9551,6 @@ export declare interface WebConfig {
8661
9551
  };
8662
9552
  monetizationSelectOverlay?: {
8663
9553
  title?: string;
8664
- benefitLeftIcon?: string;
8665
- showFullMonetizationOnMobile?: boolean;
8666
9554
  };
8667
9555
  /**
8668
9556
  * Google Analytics ID. If provided, Google Analytics will be enabled.
@@ -8674,7 +9562,6 @@ export declare interface WebConfig {
8674
9562
  centeredMenu?: boolean;
8675
9563
  /**
8676
9564
  * All values are considered as false if not provided.
8677
- * @deprecated - use settings.allowedSignInProviders inside OrganizationDocument
8678
9565
  */
8679
9566
  socialLogins?: {
8680
9567
  showAppleLogin?: boolean;
@@ -8689,24 +9576,11 @@ export declare interface WebConfig {
8689
9576
  * If true, robots.txt will prevent crawling of the website.
8690
9577
  */
8691
9578
  norobots?: boolean;
8692
- voucher?: {
8693
- voucherConsent: string;
8694
- };
8695
- customTranslations?: Record<string, Record<string, string>>;
8696
- onPurchase?: (monetization: Purchase) => void;
8697
- facebookPixelConfig?: {
8698
- pixelId: string;
8699
- shouldWaitForDidomi?: boolean;
9579
+ customTranslations?: {
9580
+ [key: string]: {
9581
+ [key: string]: string;
9582
+ };
8700
9583
  };
8701
- /**
8702
- * If true, the app will be locked in the "remote controller" mode.
8703
- * This means that the app will not be able to navigate to other pages and will only show the remote controller.
8704
- */
8705
- isRemoteControllerApp?: boolean;
8706
- /**
8707
- * Determines if application should check allowed URL handles when switching applications.
8708
- */
8709
- disableUrlHandleCheck?: boolean;
8710
9584
  /**
8711
9585
  * Map for all handlers
8712
9586
  */
@@ -8733,7 +9607,7 @@ export declare interface WebGridScreenProps {
8733
9607
  */
8734
9608
  export declare interface WebPlayerProps {
8735
9609
  id: string;
8736
- source?: InputSourceParams | PathSourceParams | VideoPath | ChannelPath | null;
9610
+ source?: SourceParams | VideoPath | ChannelPath | null;
8737
9611
  onEnded?: () => any;
8738
9612
  /**
8739
9613
  * If true, the player will inherit the width and height of its parent element.
@@ -8797,14 +9671,6 @@ export declare interface WebPlayerProps {
8797
9671
  * If true then OSD is shown based on condition resolved in HidableOsdContainer, e.g. on pause, on mouse move etc.
8798
9672
  */
8799
9673
  showOsd?: boolean;
8800
- /**
8801
- * If true, then only a minimal set of OSD controls is shown (play/pause, volume, fullscreen)
8802
- * and the big center play/pause button only flashes briefly on state change.
8803
- *
8804
- * Intended for small fixed containers (e.g. a scroll-pinned mini player in the corner
8805
- * of the page, or a full-width mobile player pinned to the top of the viewport).
8806
- */
8807
- isMinimal?: boolean;
8808
9674
  /**
8809
9675
  * If false, then buffering spinner is never shown.
8810
9676
  * If true then buffering spinner is shown while buffering.
@@ -8827,8 +9693,6 @@ export declare interface WebPlayerProps {
8827
9693
  setPaymentOverlayVisible?: React_2.Dispatch<React_2.SetStateAction<boolean>>;
8828
9694
  hideOverlay?: boolean;
8829
9695
  sourcePlayMode?: SourcePlayMode;
8830
- adsConfig?: StaticAdsBreak[];
8831
- userAuthCallbacks?: SDKUserAuthCallbacks;
8832
9696
  }
8833
9697
 
8834
9698
  /**