@tivio/sdk-react 4.4.1 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,6 @@
1
1
  import { ComponentType } from 'react';
2
2
  import { FunctionComponentElement } from 'react';
3
+ import { OperatingSystem } from 'detect-browser';
3
4
  import { default as React_2 } from 'react';
4
5
 
5
6
  /**
@@ -129,6 +130,15 @@ declare type AdSource_2 = SourceBase & {
129
130
  type: 'ad';
130
131
  };
131
132
 
133
+ /**
134
+ * @public
135
+ */
136
+ export declare interface Advertisement extends RowItem {
137
+ id: string;
138
+ itemType: ROW_ITEM_TYPES.ADVERTISEMENT;
139
+ type?: string | null;
140
+ }
141
+
132
142
  /**
133
143
  * @public
134
144
  */
@@ -140,6 +150,63 @@ export declare enum ALGOLIA_INDEX_NAME {
140
150
  USERS = "users"
141
151
  }
142
152
 
153
+ /**
154
+ * List of conversion types that we send to analytics.
155
+ */
156
+ export declare enum AnalyticsConversionName {
157
+ CLICK = "click",
158
+ PLAY = "play",
159
+ PURCHASE = "purchase",
160
+ VISIT = "visit"
161
+ }
162
+
163
+ /**
164
+ * Map of Tivio targets in our apps.
165
+ * Values are based on url paths and rewrites from firebase.json
166
+ */
167
+ export declare enum AnalyticsConversionPage {
168
+ Videos = "videos",
169
+ Series = "series",
170
+ Profile = "profile",
171
+ Tags = "tags",
172
+ Screens = "screens",
173
+ Registration = "registration",
174
+ Login = "login",
175
+ About = "about",
176
+ ResetPassword = "reset-password",
177
+ Player = "player",
178
+ Redeem = "redeem",
179
+ Referral = "referral",
180
+ Pair = "pair",
181
+ Search = "search"
182
+ }
183
+
184
+ /**
185
+ * For conversion purchases
186
+ */
187
+ export declare enum AnalyticsConversionStatus {
188
+ SUCCESS = "SUCCESS",
189
+ FAILED = "FAILED"
190
+ }
191
+
192
+ export declare type AnalyticsConversionTarget = AnalyticsConversionTargetBase | AnalyticsConversionPage;
193
+
194
+ export declare enum AnalyticsConversionTargetBase {
195
+ Element = "element",
196
+ Monetization = "monetization"
197
+ }
198
+
199
+ export declare interface AnalyticsInterface {
200
+ reportAdvertisementPlay: () => void;
201
+ reportAdvertisementProgress: () => void;
202
+ reportElementClick: (elementId: string) => void;
203
+ reportLocationChange: (path: string, pathParam?: string) => void;
204
+ createMonetizationPurchase: () => void;
205
+ completeMonetizationPurchase: (status: AnalyticsConversionStatus, monetizationId?: string) => void;
206
+ reportVideoPlay: (status: AnalyticsConversionStatus, videoId: string) => void;
207
+ reportVideoProgress: (videoId: string, videoDuration: number, checkpoint: number) => void;
208
+ }
209
+
143
210
  /**
144
211
  * @public
145
212
  */
@@ -201,7 +268,6 @@ export declare type BannerProps = {
201
268
  focused: boolean;
202
269
  onClick?: () => void;
203
270
  hoverable: boolean;
204
- broadcastInfo: string;
205
271
  height: number;
206
272
  cover: string;
207
273
  overlay: boolean;
@@ -209,6 +275,7 @@ export declare type BannerProps = {
209
275
  borderRadius?: string | number;
210
276
  buttonText?: string;
211
277
  onButtonClick?: () => void;
278
+ numberOfLines?: number;
212
279
  };
213
280
 
214
281
  /**
@@ -324,6 +391,107 @@ export declare type Components = {
324
391
  */
325
392
  export declare type Config = SdkReactConfig;
326
393
 
394
+ /**
395
+ * @public
396
+ */
397
+ export declare interface ConfirmationOverlayContextState {
398
+ isOpen: boolean;
399
+ payload: ConfirmationOverlayPayload | null;
400
+ closeOverlay: () => void;
401
+ openOverlay: (payload: ConfirmationOverlayPayload) => void;
402
+ confirmAction: () => void;
403
+ }
404
+
405
+ /**
406
+ * @public
407
+ */
408
+ export declare type ConfirmationOverlayPayload = SuccessConfirmationOverlayPayload | WarningConfirmationOverlayPayload;
409
+
410
+ /**
411
+ * @public
412
+ */
413
+ export declare interface ConfirmationOverlayPayloadBase {
414
+ title?: string;
415
+ caption?: string;
416
+ onClose?: () => void;
417
+ onConfirm?: () => void;
418
+ /**
419
+ * If configured, then overlay is automatically confirmed after this time.
420
+ */
421
+ automaticConfirmDelayMs?: number;
422
+ }
423
+
424
+ /**
425
+ * Entity aggregate conversion statistics per day
426
+ */
427
+ export declare interface ConversionAnalytic {
428
+ /**
429
+ * Unix timestamp
430
+ */
431
+ date: number;
432
+ type: AnalyticsConversionName;
433
+ statistics: ConversionsItem[];
434
+ }
435
+
436
+ export declare interface ConversionsItem {
437
+ technology: PLATFORM;
438
+ os: DeviceOs;
439
+ osVersion: string;
440
+ details: {
441
+ /**
442
+ * Count of conversion with Success state
443
+ */
444
+ successCount: number;
445
+ /**
446
+ * Count of all conversion regardless of status
447
+ */
448
+ totalCount: number;
449
+ targets: ConversionsTargetItem[];
450
+ };
451
+ }
452
+
453
+ /**
454
+ * Entity with statistics conversion for url
455
+ */
456
+ export declare interface ConversionsTargetItem {
457
+ /**
458
+ * Target id represent different values for every conversion.
459
+ * e.g. for visit conversion on video page saving videoId
460
+ * e.g. for visit conversion on profile page not saving anything
461
+ * e.g. for purchase conversion save monetizationId when user select specific monetization
462
+ * e.g. for purchase conversion not save anything when user leave monetization before select
463
+ * e.g. for click conversion save elementId
464
+ */
465
+ targetId: string;
466
+ /**
467
+ * Target type represent different values for every conversion.
468
+ * e.g. for visit conversion show current path
469
+ * e.g. for purchase conversion is every time monetization
470
+ * e.g. for click conversion is every time element
471
+ */
472
+ targetType: AnalyticsConversionTarget;
473
+ /**
474
+ * Path is page of conversion
475
+ * e.g. for visit conversion represent previews page
476
+ * e.g. for purchase conversion is page where purchase happened
477
+ * e.g. for click conversion is page where click happened
478
+ */
479
+ path: string;
480
+ /**
481
+ * Path param is param from url of conversion (e.g. video page -> videoId, profile page -> unknown)
482
+ * e.g. for visit conversion represent parameters previews page
483
+ * e.g. for purchase conversion where purchase happened
484
+ * e.g. for click conversion where click happened
485
+ */
486
+ pathParam: string | undefined;
487
+ /** Count of conversion with Success state on specific page */
488
+ successCount: number;
489
+ /**
490
+ * Count of all conversion regardless of status on specific page
491
+ */
492
+ totalCount: number;
493
+ }
494
+
327
495
  /**
328
496
  * @public
329
497
  * @TODO move somewhere else
@@ -370,14 +538,20 @@ export declare type Currency = 'CZK' | 'EUR' | 'USD';
370
538
  /**
371
539
  * @public
372
540
  */
373
- export declare enum CUSTOMER_BUILD {
541
+ export declare enum CustomerId {
374
542
  OKTAGON = "OKTAGON",
375
543
  JOJ = "JOJ",
376
544
  MALL = "MALL",
377
545
  GARAZ = "GARAZ",
378
546
  U_KULATEHO_STOLU = "U_KULATEHO_STOLU",
379
547
  INVESTOREES = "INVESTOREES",
380
- DVTV = "DVTV"
548
+ DVTV = "DVTV",
549
+ DVTV_DEV = "DVTV_DEV",
550
+ O2 = "O2",
551
+ GRAPE = "GRAPE",
552
+ TIVIO = "TIVIO",
553
+ STORYBOOK = "STORYBOOK",
554
+ NANGU_DEV = "NANGU_DEV"
381
555
  }
382
556
 
383
557
  /**
@@ -528,6 +702,11 @@ export declare type DetailedPrice = {
528
702
  */
529
703
  export declare type DeviceInfo = ArrisDeviceInfo | ReactNativeDeviceInfo;
530
704
 
705
+ /**
706
+ * @public
707
+ */
708
+ export declare type DeviceOs = OperatingSystem | 'Tizen' | 'webOS' | 'Arris' | 'Android TV' | 'tvOS';
709
+
531
710
  /**
532
711
  * @public
533
712
  */
@@ -593,6 +772,7 @@ export declare type Events = {
593
772
  */
594
773
  export declare type ExternalTvConfig = {
595
774
  logo: string;
775
+ splashScreenBackgroundColor?: string;
596
776
  };
597
777
 
598
778
  /**
@@ -608,12 +788,32 @@ export declare const fetchBundle: (secret: string, conf: InternalConfig) => Prom
608
788
  declare type FetchPackage = (url: string) => Promise<string>;
609
789
 
610
790
  /**
791
+ * Counterpart for {@link ForbiddenError} from @tivio/api.
792
+ * @public
793
+ */
794
+ export declare interface ForbiddenOnCallError extends GenericOnCallError {
795
+ code: 'permission-denied';
796
+ details?: {
797
+ reason: ForbiddenReason;
798
+ };
799
+ }
800
+
801
+ export declare enum ForbiddenReason {
802
+ MONETIZATION = "MONETIZATION",
803
+ GEO_BLOCKING = "GEO_BLOCKING"
804
+ }
805
+
806
+ /**
807
+ * On call error interface for front-end.
808
+ * Do not use it / throw it from @tivio/api.
611
809
  * @public
612
810
  */
613
- export declare interface GenericOnCallError {
614
- code: string;
615
- message?: string;
616
- details?: string[];
811
+ export declare interface GenericOnCallError extends Error {
812
+ /**
813
+ * Based on {@link FunctionsErrorCode} from firebase-functions.
814
+ */
815
+ code: 'ok' | 'cancelled' | 'unknown' | 'invalid-argument' | 'deadline-exceeded' | 'not-found' | 'already-exists' | 'permission-denied' | 'resource-exhausted' | 'failed-precondition' | 'aborted' | 'out-of-range' | 'unimplemented' | 'internal' | 'unavailable' | 'data-loss' | 'unauthenticated';
816
+ details?: Record<string, string>;
617
817
  }
618
818
 
619
819
  /**
@@ -644,6 +844,57 @@ export declare type GetPurchaseInfoResponse = {
644
844
  };
645
845
  };
646
846
 
847
+ export declare interface GetSourceUrlRequest {
848
+ /**
849
+ * Id of the document to return source for.
850
+ */
851
+ id: string;
852
+ /**
853
+ * Type of the document to return source for.
854
+ */
855
+ documentType: 'video' | 'tvChannel';
856
+ /**
857
+ * Which capabilities should the resulting source support.
858
+ */
859
+ capabilities: PlayerCapability[];
860
+ /**
861
+ * Which language the resulting source should support.
862
+ * If not present, language is not taken into consideration when picking the resulting source.
863
+ */
864
+ language?: LangCode;
865
+ /**
866
+ * Which sources did client (or cloud function) has already tried out.
867
+ */
868
+ sourceHistory?: string[];
869
+ /**
870
+ * When set to true the function will return urls with unsecured http protocol.
871
+ * We need this because some devices in certain circumstances are not able to use https.
872
+ *
873
+ * e.g. On LG it is not possible to use HTTPS certificates with root authority
874
+ * `Let's Encrypt` (for more info see https://jira.nangu.tv/browse/TIV-1047),
875
+ * which is used on cdn3.tiv.io domain.
876
+ *
877
+ * Switching this urls to http is a workaround for these cases.
878
+ */
879
+ preferHttp?: boolean;
880
+ /**
881
+ * If set to true, sources on the document will be skipped and function will try to
882
+ * construct sources based on source domains right away.
883
+ */
884
+ ignoreDocumentSources?: boolean;
885
+ }
886
+
887
+ export declare interface GetSourceUrlResponse {
888
+ /**
889
+ * The resulting source url.
890
+ */
891
+ url: string;
892
+ /**
893
+ * Which sources did client (or cloud function) has already tried out.
894
+ */
895
+ sourceHistory: string[];
896
+ }
897
+
647
898
  /**
648
899
  * @public
649
900
  */
@@ -690,9 +941,10 @@ export declare interface IndexedUser extends IndexedObject {
690
941
  * @public
691
942
  */
692
943
  export declare interface IndexedVideo extends IndexedObject {
693
- organizationPath?: string;
944
+ assets: any;
945
+ organizationPath: string;
694
946
  tagPaths?: string[];
695
- created: Date;
947
+ created: Date | string;
696
948
  isDraft: boolean;
697
949
  type: VideoType;
698
950
  contentType?: VideoContentType;
@@ -762,7 +1014,7 @@ export declare type ItemComponent = RowItemComponent | BannerItemComponent;
762
1014
  /**
763
1015
  * @public
764
1016
  */
765
- export declare type ItemsInRow = Tag | Video | TvChannel;
1017
+ export declare type ItemsInRow = Tag | Video | TvChannel | Advertisement;
766
1018
 
767
1019
  /**
768
1020
  * @public
@@ -880,6 +1132,11 @@ declare interface Logger {
880
1132
  */
881
1133
  declare type LoggerArgs = any[];
882
1134
 
1135
+ export declare enum LoginRedirect {
1136
+ PAYMENT = "payment",
1137
+ VOUCHER = "voucher"
1138
+ }
1139
+
883
1140
  /**
884
1141
  * @public
885
1142
  */
@@ -902,6 +1159,14 @@ export declare interface Marker {
902
1159
  type: 'AD' | 'AD_SEGMENT' | 'START' | 'END' | 'INTRO';
903
1160
  }
904
1161
 
1162
+ /**
1163
+ * @public
1164
+ */
1165
+ export declare type MarkersProps = {
1166
+ color?: string;
1167
+ className?: string;
1168
+ };
1169
+
905
1170
  /**
906
1171
  * External information of video migrated via our Public API.
907
1172
  * @public
@@ -933,6 +1198,14 @@ export declare enum MONETIZATION_FREQUENCY {
933
1198
  ANNUALLY = "ANNUALLY"
934
1199
  }
935
1200
 
1201
+ /**
1202
+ * @public
1203
+ */
1204
+ export declare interface MonetizationActions {
1205
+ selectMonetization: (monetization: PurchasableMonetization) => void;
1206
+ errors: string[];
1207
+ }
1208
+
936
1209
  /**
937
1210
  * @public
938
1211
  */
@@ -959,6 +1232,7 @@ export declare interface MonetizationsSelectOverlayData {
959
1232
  * Otherwise, user is making a purchase for himself.
960
1233
  */
961
1234
  voucherPurchase?: boolean;
1235
+ registrationRedirect?: boolean;
962
1236
  onPurchase?: () => void;
963
1237
  onClose?: () => void;
964
1238
  }
@@ -967,9 +1241,10 @@ export declare interface MonetizationsSelectOverlayData {
967
1241
  * @public
968
1242
  */
969
1243
  export declare type MonetizationsSelectOverlayState = {
1244
+ isOpen: boolean;
970
1245
  data: MonetizationsSelectOverlayData | null;
971
- closeMonetizationsSelectOverlay: () => void;
972
1246
  openMonetizationsSelectOverlay: (data: MonetizationsSelectOverlayData) => void;
1247
+ closeMonetizationsSelectOverlay: () => void;
973
1248
  };
974
1249
 
975
1250
  /**
@@ -1041,6 +1316,7 @@ declare type OrderByDirection = 'desc' | 'asc';
1041
1316
  * @public
1042
1317
  */
1043
1318
  export declare interface Organization {
1319
+ userProfileConfiguration: any;
1044
1320
  }
1045
1321
 
1046
1322
  /**
@@ -1069,12 +1345,16 @@ export declare type PaginationInterface<Entity> = {
1069
1345
  export declare type PaginationOptions = Partial<{
1070
1346
  limit: number;
1071
1347
  noLimit: boolean;
1348
+ noAutoFetch: boolean;
1072
1349
  }>;
1073
1350
 
1074
1351
  /**
1075
1352
  * @public
1076
1353
  */
1077
1354
  export declare enum PLATFORM {
1355
+ /**
1356
+ * Includes tablets.
1357
+ */
1078
1358
  MOBILE = "MOBILE",
1079
1359
  WEB = "WEB",
1080
1360
  TV = "TV"
@@ -1454,6 +1734,14 @@ export declare type PurchaseEndpointPayload = {
1454
1734
  * True if delayed payment is confirmed but not charged yet, undefined in all other cases.
1455
1735
  */
1456
1736
  isDelayedPayment?: boolean;
1737
+ /**
1738
+ * Purchase status before change.
1739
+ */
1740
+ previousStatus: PurchaseStatus;
1741
+ /**
1742
+ * Purchase status after change.
1743
+ */
1744
+ newStatus: PurchaseStatus;
1457
1745
  };
1458
1746
  /**
1459
1747
  * Information about the monetization which has been bought by this purchase. Monetization definition may change in time so information provided here
@@ -1667,8 +1955,13 @@ export declare type ReactNativeDeviceInfo = {
1667
1955
  os?: 'iOS' | 'Android OS';
1668
1956
  osVersion: string;
1669
1957
  platform: PLATFORM;
1958
+ isTablet?: boolean;
1670
1959
  };
1671
1960
 
1961
+ export declare enum RegistrationRedirect {
1962
+ PAYMENT = "payment"
1963
+ }
1964
+
1672
1965
  /**
1673
1966
  * @public
1674
1967
  */
@@ -1684,7 +1977,7 @@ export declare type RemoteBundleState = {
1684
1977
  export declare type RemoteProviderProps = {
1685
1978
  disableUnmounting?: boolean;
1686
1979
  language?: LangCode;
1687
- children: any;
1980
+ children: React_2.ReactNode;
1688
1981
  };
1689
1982
 
1690
1983
  /**
@@ -1700,15 +1993,29 @@ export declare type RequiredNullable<T> = {
1700
1993
  * @public
1701
1994
  */
1702
1995
  export declare interface RouterOverrides {
1996
+ getVideoDetailPath: (videoIdOrUrlName: string) => string;
1997
+ getSeriesDetailPath: (tagId: string) => string;
1998
+ getTagPath: (tagId: string) => string;
1999
+ getLoginPath: () => string;
2000
+ getRegistrationPath: () => string;
2001
+ getLivePlayerPath: (tvChannelId: string) => string;
2002
+ getVodPlayerPath: (videoIdOrUrlName: string) => string;
2003
+ getHomePath: (screens: ScreenConfig[]) => string;
1703
2004
  goToVideoDetailPage: (videoIdOrUrlName: string) => void;
1704
2005
  goToSeriesDetailPage: (tagId: string) => void;
1705
2006
  goToTagPage: (tagId: string) => void;
1706
- goToLoginPage: () => void;
1707
- goToRegistrationPage: () => void;
2007
+ goToLoginPage: (options?: {
2008
+ manual?: boolean;
2009
+ origin?: LoginRedirect;
2010
+ }) => void;
2011
+ goToRegistrationPage: (options?: {
2012
+ origin?: RegistrationRedirect;
2013
+ }) => void;
1708
2014
  goBack: () => void;
1709
2015
  goLivePlayer: (tvChannelId: string) => void;
1710
2016
  goVodPlayer: (videoIdOrUrlName: string) => void;
1711
- goToHome: () => void;
2017
+ goToHome: (user?: any, activeUserProfileId?: string) => void;
2018
+ goToRoute: (route: string) => void;
1712
2019
  }
1713
2020
 
1714
2021
  /**
@@ -1716,6 +2023,10 @@ export declare interface RouterOverrides {
1716
2023
  */
1717
2024
  export declare interface RouterOverridesContextState {
1718
2025
  routerOverrides: RouterOverrides;
2026
+ Link: React_2.ComponentType<{
2027
+ children?: React_2.ReactNode;
2028
+ href?: string;
2029
+ }>;
1719
2030
  }
1720
2031
 
1721
2032
  /**
@@ -1729,7 +2040,8 @@ export declare type Row = RowStandard | RowBanner;
1729
2040
  export declare enum ROW_ITEM_TYPES {
1730
2041
  VIDEO = "VIDEO",
1731
2042
  TAG = "TAG",
1732
- TV_CHANNEL = "TV_CHANNEL"
2043
+ TV_CHANNEL = "TV_CHANNEL",
2044
+ ADVERTISEMENT = "ADVERTISEMENT"
1733
2045
  }
1734
2046
 
1735
2047
  /**
@@ -1751,6 +2063,7 @@ declare interface RowBase {
1751
2063
  assets: Assets;
1752
2064
  type: ScreenRowType;
1753
2065
  isLiveRow: boolean;
2066
+ numberOfLines?: number;
1754
2067
  }
1755
2068
 
1756
2069
  /**
@@ -1789,7 +2102,8 @@ export declare interface RowItemAssets {
1789
2102
  export declare enum RowItemComponent {
1790
2103
  ROW_ITEM_PORTRAIT = "ROW_ITEM_PORTRAIT",
1791
2104
  ROW_ITEM_LANDSCAPE = "ROW_ITEM_LANDSCAPE",
1792
- ROW_ITEM_CIRCLED = "ROW_ITEM_CIRCLED"
2105
+ ROW_ITEM_CIRCLED = "ROW_ITEM_CIRCLED",
2106
+ ROW_ITEM_BANNER = "ROW_ITEM_BANNER"
1793
2107
  }
1794
2108
 
1795
2109
  /**
@@ -1846,6 +2160,11 @@ export { Screen_2 as Screen }
1846
2160
  export declare type ScreenConfig = {
1847
2161
  id: string;
1848
2162
  name: string;
2163
+ route?: string;
2164
+ showForUserProfileType?: {
2165
+ kids: boolean;
2166
+ adults: boolean;
2167
+ };
1849
2168
  };
1850
2169
 
1851
2170
  /**
@@ -1859,7 +2178,7 @@ export declare type ScreenOptions = Partial<{
1859
2178
  /**
1860
2179
  * @public
1861
2180
  */
1862
- export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites';
2181
+ export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites' | 'topWatched';
1863
2182
 
1864
2183
  /**
1865
2184
  * Listen to screen data
@@ -1925,7 +2244,7 @@ export declare interface SettingsItem {
1925
2244
  * Sign out - setUser(null)
1926
2245
  * @public
1927
2246
  */
1928
- export declare const setUser: (userId: string | null, payload?: UserPayload | undefined) => Promise<void>;
2247
+ export declare const setUser: (userId: string | null, payload?: UserPayload) => Promise<void>;
1929
2248
 
1930
2249
  /**
1931
2250
  * @public
@@ -2033,11 +2352,20 @@ declare type SubscriptionInfo = {
2033
2352
  frequency: string;
2034
2353
  };
2035
2354
 
2355
+ /**
2356
+ * @public
2357
+ */
2358
+ export declare interface SuccessConfirmationOverlayPayload extends ConfirmationOverlayPayloadBase {
2359
+ type: 'success';
2360
+ confirmButtonText?: string;
2361
+ }
2362
+
2036
2363
  /**
2037
2364
  * @public
2038
2365
  */
2039
2366
  export declare interface Tag extends RowItem {
2040
2367
  id: string;
2368
+ itemType: ROW_ITEM_TYPES.TAG;
2041
2369
  tagId: string;
2042
2370
  type?: string | null;
2043
2371
  metadata?: any[];
@@ -2097,10 +2425,10 @@ export declare type TileOptions = {
2097
2425
  * @public
2098
2426
  */
2099
2427
  export declare type TileProps = {
2428
+ children?: React_2.ReactNode;
2100
2429
  cover: string;
2101
2430
  bottomLabel: string;
2102
2431
  bottomLabelAreaHeight: number;
2103
- bottomLabelTextLinesCount: number;
2104
2432
  innerLabel: string;
2105
2433
  duration: string;
2106
2434
  price: string | null;
@@ -2120,6 +2448,7 @@ export declare type TileProps = {
2120
2448
  */
2121
2449
  containerMargin?: number | string;
2122
2450
  created?: Date;
2451
+ numberOfLines?: number;
2123
2452
  };
2124
2453
 
2125
2454
  /**
@@ -2159,6 +2488,13 @@ export declare type TileSizesMap = {
2159
2488
  */
2160
2489
  export declare type TileSizeVariant = 'default' | 'mobile';
2161
2490
 
2491
+ /**
2492
+ * @public
2493
+ */
2494
+ export declare type TivioAnalytics = {
2495
+ analytics: AnalyticsInterface;
2496
+ };
2497
+
2162
2498
  /**
2163
2499
  * @public
2164
2500
  */
@@ -2198,8 +2534,10 @@ export declare type TivioBundleFile = {
2198
2534
  * @public
2199
2535
  */
2200
2536
  export declare type TivioComponents = {
2201
- Markers: React_2.ReactNode;
2202
- PlayerDataContext: React_2.ReactNode;
2537
+ Markers: React_2.ComponentType<MarkersProps>;
2538
+ PlayerDataContext: React_2.Context<{
2539
+ player: any | null;
2540
+ }>;
2203
2541
  Provider: React_2.ComponentType<RemoteProviderProps>;
2204
2542
  WebPlayer: React_2.ComponentType<WebPlayerProps>;
2205
2543
  Widget: React_2.ComponentType<TivioWidgetProps>;
@@ -2255,7 +2593,8 @@ export declare interface TivioConfig {
2255
2593
  language: LangCode;
2256
2594
  debug?: boolean;
2257
2595
  verbose?: boolean;
2258
- firebaseApp?: any;
2596
+ firebaseApp?: any | null;
2597
+ firestore?: any | null;
2259
2598
  currency: Currency;
2260
2599
  /**
2261
2600
  * Configuration for GDPR consent collection (CMP)
@@ -2267,6 +2606,13 @@ export declare interface TivioConfig {
2267
2606
  */
2268
2607
  deviceInfo?: DeviceInfo;
2269
2608
  player?: PlayerConfig;
2609
+ /**
2610
+ * Used for purposes where we need to differentiate organizations before it is known based on secret and data from DB.
2611
+ *
2612
+ * At this time it is necessary only for LG builds because on LG TVs it is needed to separate apps indexedDB storages
2613
+ * (otherwise organizations would share login token).
2614
+ */
2615
+ customerId?: CustomerId;
2270
2616
  }
2271
2617
 
2272
2618
  /**
@@ -2346,6 +2692,7 @@ export declare type TivioHooks = {
2346
2692
  applyInviteCode: (code: string) => void;
2347
2693
  inviteCodeReset: () => void;
2348
2694
  };
2695
+ useChannelSource: UseChannelSource;
2349
2696
  };
2350
2697
 
2351
2698
  /**
@@ -2369,6 +2716,10 @@ export declare type TivioInternalComponents = {
2369
2716
  videoIdOrUrlName: string;
2370
2717
  }>;
2371
2718
  WebSeriesDetailScreen: React_2.ComponentType<WebSeriesDetailScreenProps>;
2719
+ WebConfirmationOverlay: React_2.ComponentType;
2720
+ UserProfilesOverlay: React_2.ComponentType<{
2721
+ onClose: (selectedProfileId: string) => void;
2722
+ }>;
2372
2723
  };
2373
2724
 
2374
2725
  /**
@@ -2377,6 +2728,9 @@ export declare type TivioInternalComponents = {
2377
2728
  export declare type TivioInternalHooks = {
2378
2729
  useMonetizationsSelectOverlay: () => MonetizationsSelectOverlayState;
2379
2730
  useQerkoOverlay: () => QerkoOverlayState;
2731
+ useConfirmationOverlay: () => ConfirmationOverlayContextState;
2732
+ useMonetizationActions: () => MonetizationActions;
2733
+ useCancelSubscriptions: () => UseCancelSubscriptionsResult;
2380
2734
  usePurchasesWithVideos: () => {
2381
2735
  purchases: Purchase[];
2382
2736
  };
@@ -2393,18 +2747,18 @@ export declare type TivioInternalHooks = {
2393
2747
  promotionId?: string;
2394
2748
  referralId: string;
2395
2749
  promotion?: any;
2396
- };
2750
+ } | null;
2397
2751
  error: Error | null;
2398
2752
  loading: boolean;
2399
2753
  });
2400
2754
  useTvChannel: UseTvChannel;
2401
- useChannelSource: UseChannelSource;
2402
2755
  useUser: () => {
2403
2756
  user: User | null;
2404
2757
  error: string | null;
2405
2758
  isInitialized: boolean;
2406
2759
  isSignedIn: boolean;
2407
2760
  };
2761
+ useOrganization: () => Organization | null;
2408
2762
  };
2409
2763
 
2410
2764
  /**
@@ -2413,20 +2767,27 @@ export declare type TivioInternalHooks = {
2413
2767
  export declare type TivioInternalProviders = {
2414
2768
  AppThemeProvider: React_2.ComponentType;
2415
2769
  CustomerProvider: React_2.ComponentType<{
2416
- customer: CUSTOMER_BUILD;
2770
+ customer: CustomerId;
2417
2771
  platform: PLATFORM;
2418
- children: any;
2772
+ children?: React_2.ReactNode;
2773
+ }>;
2774
+ ConfigProvider: React_2.ComponentType<React_2.PropsWithChildren>;
2775
+ UserContextProvider: React_2.ComponentType<{
2776
+ children?: React_2.ReactNode;
2419
2777
  }>;
2420
- ConfigProvider: React_2.ComponentType;
2421
- UserContextProvider: React_2.ComponentType;
2422
2778
  MonetizationsSelectOverlayContextProvider: React_2.ComponentType;
2423
2779
  QerkoOverlayContextProvider: React_2.ComponentType;
2424
- PurchasesWithVideosContextProvider: React_2.ComponentType;
2780
+ PurchasesWithVideosContextProvider: React_2.ComponentType<{
2781
+ children?: React_2.ReactNode;
2782
+ }>;
2425
2783
  /**
2426
2784
  * @deprecated not used in our app, can be removed when no sdk in production uses it
2427
2785
  */
2428
2786
  OrganizationSubscriptionsContextProvider: React_2.ComponentType;
2429
- RouterOverridesContextProvider: React_2.ComponentType<RouterOverridesContextState>;
2787
+ RouterOverridesContextProvider: React_2.ComponentType<{
2788
+ state: RouterOverridesContextState;
2789
+ }>;
2790
+ ConfirmationOverlayContextProvider: React_2.ComponentType;
2430
2791
  };
2431
2792
 
2432
2793
  /**
@@ -2523,6 +2884,7 @@ export declare type TivioReactBundle = {
2523
2884
  * TODO should not be the part of public API
2524
2885
  */
2525
2886
  internal: TivioInternalBundle;
2887
+ analytics: TivioAnalytics;
2526
2888
  destroy: () => Promise<void>;
2527
2889
  } & Pick<TivioSetters, 'setBundleVersion' | 'setUser' | 'setLanguage' | 'setStorageManager'>;
2528
2890
 
@@ -2584,7 +2946,7 @@ export declare type TivioVodSource = SourceBase & StartAndContinuePosition & {
2584
2946
  /**
2585
2947
  * @public
2586
2948
  */
2587
- export declare const TivioWidget: React_2.ForwardRefExoticComponent<Pick<TivioWidgetProps, "id" | "onEnabled" | "onBlur"> & React_2.RefAttributes<TivioWidgetRef>>;
2949
+ export declare const TivioWidget: React_2.ForwardRefExoticComponent<Omit<TivioWidgetProps, "ref"> & React_2.RefAttributes<TivioWidgetRef>>;
2588
2950
 
2589
2951
  /**
2590
2952
  * @public
@@ -2650,17 +3012,17 @@ export declare type Translation = {
2650
3012
  * @public
2651
3013
  */
2652
3014
  export declare type TvAppProps = {
2653
- customer: CUSTOMER_BUILD;
3015
+ customer: CustomerId;
2654
3016
  };
2655
3017
 
2656
3018
  /**
2657
3019
  * @public
2658
3020
  */
2659
3021
  export declare interface TvChannel extends RowItem {
2660
- name: string;
2661
3022
  id: string;
3023
+ itemType: ROW_ITEM_TYPES.TV_CHANNEL;
3024
+ name: string;
2662
3025
  path: string;
2663
- itemType: ROW_ITEM_TYPES;
2664
3026
  country?: string;
2665
3027
  filters: string[];
2666
3028
  logo?: string;
@@ -2671,9 +3033,12 @@ export declare interface TvChannel extends RowItem {
2671
3033
  * Transactions before subscriptions, sorted by price ascending.
2672
3034
  */
2673
3035
  getPurchasableMonetizations(options?: GetPurchasableMonetizationsOptions): PurchasableMonetization[];
3036
+ getSourceUrl(fallbackUrl?: string): Promise<GetSourceUrlResponse>;
2674
3037
  purchasableMonetization: any | null;
2675
3038
  price: number;
2676
3039
  cover: string;
3040
+ isPlayable: boolean;
3041
+ uri: string;
2677
3042
  }
2678
3043
 
2679
3044
  /**
@@ -2767,6 +3132,15 @@ export declare type UseCancelSubscription = (subscriptionId: string) => {
2767
3132
  */
2768
3133
  export declare const useCancelSubscription: UseCancelSubscription;
2769
3134
 
3135
+ /**
3136
+ * @public
3137
+ */
3138
+ export declare interface UseCancelSubscriptionsResult {
3139
+ cancelSubscriptions: (subscriptionIds: string[]) => Promise<void>;
3140
+ cancellationInfos: QerkoCancellationInfo[];
3141
+ errors: string[];
3142
+ }
3143
+
2770
3144
  /**
2771
3145
  * @public
2772
3146
  */
@@ -2818,7 +3192,7 @@ export declare const useMarkers: () => Marker[] | null;
2818
3192
  /**
2819
3193
  * @public
2820
3194
  */
2821
- export declare const useOrganizationSubscriptions: (onlyPurchasableSubscriptions?: boolean | undefined) => {
3195
+ export declare const useOrganizationSubscriptions: (onlyPurchasableSubscriptions?: boolean) => {
2822
3196
  subscriptions: PurchasableMonetization[];
2823
3197
  };
2824
3198
 
@@ -2851,7 +3225,7 @@ export declare function usePurchaseRecovery(): {
2851
3225
  /**
2852
3226
  * @public
2853
3227
  */
2854
- export declare const usePurchaseSubscription: (monetizationId: string, voucher?: NewVoucher | undefined) => QerkoTransaction;
3228
+ export declare const usePurchaseSubscription: (monetizationId: string, voucher?: NewVoucher) => QerkoTransaction;
2855
3229
 
2856
3230
  /**
2857
3231
  * Return purchases with initialized video (purchases[i].video not null)
@@ -2889,6 +3263,7 @@ export declare type User = {
2889
3263
  extendableSubscription?: Purchase;
2890
3264
  isPurchasesInitialized: boolean;
2891
3265
  isSignedIn: boolean;
3266
+ isReady: boolean;
2892
3267
  email?: string;
2893
3268
  type?: UserType;
2894
3269
  photoURL: string | null;
@@ -2896,6 +3271,11 @@ export declare type User = {
2896
3271
  authUserId?: string;
2897
3272
  favorites: any[];
2898
3273
  watchedPositions: any[];
3274
+ profiles: any[];
3275
+ activeUserProfileId: string | null;
3276
+ createUserProfile: (request: any) => Promise<void>;
3277
+ deleteUserProfile: (profileId: string) => Promise<void>;
3278
+ setActiveUserProfileId: (id: string) => void;
2899
3279
  };
2900
3280
 
2901
3281
  /**
@@ -2943,12 +3323,12 @@ export declare const useSearch: UseSearch;
2943
3323
  */
2944
3324
  export declare type UseSearchOptions<T extends ALGOLIA_INDEX_NAME = any> = PaginationOptions & {
2945
3325
  minQueryLength?: number;
2946
- } & (T extends ALGOLIA_INDEX_NAME.VIDEOS ? UseSearchVideoOptions : {});
3326
+ } & (T extends ALGOLIA_INDEX_NAME.VIDEOS | ALGOLIA_INDEX_NAME.VIDEOSDESC ? UseSearchVideoOptions : {});
2947
3327
 
2948
3328
  /**
2949
3329
  * @public
2950
3330
  */
2951
- export declare type UseSearchResult<T extends ALGOLIA_INDEX_NAME> = T extends ALGOLIA_INDEX_NAME.VIDEOS ? Video : T extends ALGOLIA_INDEX_NAME.TAGS ? Tag : T extends ALGOLIA_INDEX_NAME.TV_CHANNELS ? TvChannel : unknown;
3331
+ export declare type UseSearchResult<T extends ALGOLIA_INDEX_NAME> = T extends ALGOLIA_INDEX_NAME.VIDEOS | ALGOLIA_INDEX_NAME.VIDEOSDESC ? Video : T extends ALGOLIA_INDEX_NAME.TAGS ? Tag : T extends ALGOLIA_INDEX_NAME.TV_CHANNELS ? TvChannel : unknown;
2952
3332
 
2953
3333
  /**
2954
3334
  * @public
@@ -2990,7 +3370,7 @@ export declare const useTivioReadyData: () => RemoteBundleState | null;
2990
3370
  /**
2991
3371
  * @public
2992
3372
  */
2993
- export declare const useTransactionPayment: (videoId: string, monetizationId: string, voucher?: NewVoucher | undefined) => QerkoTransaction;
3373
+ export declare const useTransactionPayment: (videoId: string, monetizationId: string, voucher?: NewVoucher) => QerkoTransaction;
2994
3374
 
2995
3375
  /**
2996
3376
  * @public
@@ -3016,7 +3396,7 @@ export declare const useUser: () => {
3016
3396
  * @param videoIdOrUrlName - video id or video nice url (e.g. some-interesting-video)
3017
3397
  * @public
3018
3398
  */
3019
- export declare const useVideo: (videoIdOrUrlName?: string | undefined) => {
3399
+ export declare const useVideo: (videoIdOrUrlName?: string) => {
3020
3400
  data: Video | null;
3021
3401
  error: string | null;
3022
3402
  };
@@ -3049,15 +3429,7 @@ export declare const useWatchWithoutAdsOffer: () => {
3049
3429
  /**
3050
3430
  * @public
3051
3431
  */
3052
- export declare const VAST_PROVIDERS: ({
3053
- id: VastProvider;
3054
- name: string;
3055
- development?: undefined;
3056
- } | {
3057
- id: VastProvider;
3058
- name: string;
3059
- development: boolean;
3060
- })[];
3432
+ export declare const VAST_PROVIDERS: VastProvidersItem[];
3061
3433
 
3062
3434
  /**
3063
3435
  * @public
@@ -3079,16 +3451,24 @@ export declare enum VastProvider {
3079
3451
  PRIMA = "prima",
3080
3452
  TEST = "test",
3081
3453
  TEST_VPAID = "test-vpaid",
3454
+ TIVIO_ADS = "tivio-ads",
3082
3455
  JOJ_TEST_AD_FORM_PROGRAMMATIC = "joj-test-ad-form-programmatic",
3083
3456
  JOJ_TEST_TESTER_VASTERIX = "joj-test-tester-vasterix",
3084
3457
  JOJ_TEST_TESTER_ADFORM_30 = "joj-test-tester-adform-30"
3085
3458
  }
3086
3459
 
3460
+ declare type VastProvidersItem = {
3461
+ id: VastProvider;
3462
+ name: string;
3463
+ development?: boolean;
3464
+ };
3465
+
3087
3466
  /**
3088
3467
  * @public
3089
3468
  */
3090
3469
  export declare interface Video extends RowItem {
3091
3470
  id: string;
3471
+ itemType: ROW_ITEM_TYPES.VIDEO;
3092
3472
  /**
3093
3473
  * @deprecated use assets instead
3094
3474
  */
@@ -3109,6 +3489,7 @@ export declare interface Video extends RowItem {
3109
3489
  * Transactions before subscriptions, sorted by price ascending.
3110
3490
  */
3111
3491
  getPurchasableMonetizations(options?: GetPurchasableMonetizationsOptions): PurchasableMonetization[];
3492
+ getSourceUrl(fallbackUrl?: string): Promise<GetSourceUrlResponse>;
3112
3493
  purchasableMonetization: any | null;
3113
3494
  transaction: PurchasableMonetization | undefined;
3114
3495
  subscriptions: PurchasableMonetization[];
@@ -3140,6 +3521,8 @@ export declare interface Video extends RowItem {
3140
3521
  addToFavorites: () => void;
3141
3522
  removeFromFavorites: () => void;
3142
3523
  availability: VideoAvailability | null;
3524
+ sourceLanguages: LangCode[];
3525
+ uriByLanguage: (lang: LangCode) => string | undefined;
3143
3526
  }
3144
3527
 
3145
3528
  /**
@@ -3249,6 +3632,15 @@ declare type Voucher = {
3249
3632
  voucherInfo: SubscriptionInfo | TransactionInfo;
3250
3633
  };
3251
3634
 
3635
+ /**
3636
+ * @public
3637
+ */
3638
+ export declare interface WarningConfirmationOverlayPayload extends ConfirmationOverlayPayloadBase {
3639
+ type: 'warning';
3640
+ confirmButtonText?: string;
3641
+ closeButtonText?: string;
3642
+ }
3643
+
3252
3644
  /**
3253
3645
  * @public
3254
3646
  */
@@ -3311,7 +3703,7 @@ export declare type WebRowProps = {
3311
3703
  variant?: RowItemComponent;
3312
3704
  rowName?: string | any;
3313
3705
  fetchMore?: () => void;
3314
- onTileClick?: (item: ItemsInRow) => void;
3706
+ onTileClick?: (item?: ItemsInRow | null) => void;
3315
3707
  };
3316
3708
 
3317
3709
  /**
@@ -3355,6 +3747,6 @@ export declare type Widget = {
3355
3747
  /**
3356
3748
  * @public
3357
3749
  */
3358
- export declare function withPlayerContext(id: string): <P>(WrappedComponent: React_2.ComponentType<P>) => (props: P) => JSX.Element;
3750
+ export declare function withPlayerContext(id: string): <P extends JSX.IntrinsicAttributes>(WrappedComponent: React_2.ComponentType<P>) => (props: P) => JSX.Element;
3359
3751
 
3360
3752
  export { }