@tivio/sdk-react 3.6.2 → 4.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.
@@ -0,0 +1,2551 @@
1
+ import { ComponentType } from 'react';
2
+ import { FunctionComponentElement } from 'react';
3
+ import { default as React_2 } from 'react';
4
+
5
+ /**
6
+ * @public
7
+ */
8
+ export declare interface AdExternal {
9
+ /**
10
+ * Can user seek out of it?
11
+ */
12
+ canSeek: boolean;
13
+ /**
14
+ * Can it be skipped right now?
15
+ */
16
+ canSkip: boolean;
17
+ durationMs: number;
18
+ /**
19
+ * Is it skippable in general?
20
+ */
21
+ isSkippable: boolean;
22
+ order: number | null;
23
+ secondsToSkippable: number | null;
24
+ /**
25
+ * Countdown for un-skippable ads
26
+ */
27
+ secondsToEnd: number;
28
+ skipDelayMs: number | null;
29
+ /**
30
+ * How many ads are there in total
31
+ */
32
+ totalCount: number | null;
33
+ click: () => void;
34
+ /**
35
+ * @private
36
+ */
37
+ skip: () => void;
38
+ }
39
+
40
+ declare type AdSegment = {
41
+ id: string;
42
+ /**
43
+ * @deprecated alias to secondsToEnd * 1000
44
+ */
45
+ remainingMs: number;
46
+ secondsToEnd: number;
47
+ secondsToSkippable: number | null;
48
+ canSeek: boolean;
49
+ /**
50
+ * true if is skippable and skip countdown has passed
51
+ */
52
+ canSkip: boolean;
53
+ /**
54
+ * true ad if is skippable after some skipDelayMs (if it is skippable, skipDelayMs is defined)
55
+ */
56
+ isSkippable: boolean;
57
+ skip: () => any;
58
+ };
59
+
60
+ /**
61
+ * @public
62
+ */
63
+ export declare type AdSource = {
64
+ new (uri: string, name: string, description: string, skipDelayMs: number | null, adDurationMs: number, trackingContext?: any, // internal Tivio types
65
+ adMarker?: any, // internal Tivio types
66
+ packInfo?: any, // internal Tivio types
67
+ provider?: any): AdSource;
68
+ description: string;
69
+ name: string;
70
+ uri: string;
71
+ durationMs: number;
72
+ skipDelayMs: number | null;
73
+ type: 'ad';
74
+ /**
75
+ * true if is skippable and skip countdown has passed
76
+ */
77
+ canSkip: boolean;
78
+ /**
79
+ * true ad if is skippable after some skipDelayMs (if it is skippable, skipDelayMs is defined)
80
+ */
81
+ isSkippable: boolean;
82
+ /**
83
+ * Skip ad. Only works when canSkip is true
84
+ */
85
+ skip: () => void;
86
+ /**
87
+ * Order in ad break (ad break is a group of ads played right after each other)
88
+ */
89
+ order: number;
90
+ /**
91
+ * Total number of ads in ad break (ad break is a group of ads played right after each other)
92
+ */
93
+ totalCount: number;
94
+ secondsToEnd: number;
95
+ secondsToSkippable: number | null;
96
+ };
97
+
98
+ /**
99
+ * @public
100
+ */
101
+ export declare enum ALGOLIA_INDEX_NAME {
102
+ VIDEOS = "videos",
103
+ VIDEOSDESC = "videos_created_desc",
104
+ TAGS = "tags",
105
+ TV_CHANNELS = "tvChannels",
106
+ USERS = "users"
107
+ }
108
+
109
+ /**
110
+ * @public
111
+ */
112
+ export declare type ArrisDeviceInfo = {
113
+ type: 'arris';
114
+ model?: 'VIP1003' | 'VIP1113' | 'VIP5305';
115
+ };
116
+
117
+ /**
118
+ * @public
119
+ */
120
+ export declare interface Asset {
121
+ background: string;
122
+ }
123
+
124
+ /**
125
+ * @public
126
+ */
127
+ export declare type Assets = {
128
+ [assetName: string]: ScalableAsset;
129
+ };
130
+
131
+ /**
132
+ * @public
133
+ */
134
+ export declare type AuthOverlayPayload = {
135
+ prefilledData?: {
136
+ email: string;
137
+ };
138
+ /**
139
+ * "Goto" function (see router.utils.ts) to run after the overlay is closed. Null if no redirect is required.
140
+ * Defaults to homepage.
141
+ */
142
+ redirectAfterSubmit?: ((...args: any[]) => void) | null;
143
+ };
144
+
145
+ /**
146
+ * @public
147
+ */
148
+ export declare type AuthOverlayState = {
149
+ type: AuthOverlayType;
150
+ closeAuthOverlay: () => void;
151
+ openAuthOverlay: (type: AuthOverlayType, payload?: AuthOverlayPayload) => void;
152
+ payload?: AuthOverlayPayload | null;
153
+ };
154
+
155
+ /**
156
+ * @public
157
+ */
158
+ export declare type AuthOverlayType = 'login' | 'registration' | 'closed' | 'reset-password';
159
+
160
+ /**
161
+ * @public
162
+ */
163
+ export declare interface AvailableSeason {
164
+ seasonNumber: number;
165
+ }
166
+
167
+ /**
168
+ * @public
169
+ */
170
+ export declare type AvatarProps = {
171
+ cover?: string;
172
+ isLoading?: boolean;
173
+ size?: number;
174
+ };
175
+
176
+ /**
177
+ * @public
178
+ */
179
+ export declare type BadRequestError = Error & {
180
+ details?: {
181
+ reason?: 'DOES_NOT_EXIST' | 'EXPIRED' | 'ALREADY_USED';
182
+ };
183
+ };
184
+
185
+ /**
186
+ * @public
187
+ */
188
+ export declare type BannerProps = {
189
+ isLoading: boolean;
190
+ text: string;
191
+ focused: boolean;
192
+ onClick?: () => void;
193
+ hoverable: boolean;
194
+ broadcastInfo: string;
195
+ height: number;
196
+ coverPadding: CoverPadding;
197
+ cover: string;
198
+ fullWidth: boolean;
199
+ coverContainerPaddingTop: string;
200
+ width: number;
201
+ overlay: boolean;
202
+ price: string;
203
+ hasRoundCorners: boolean;
204
+ buttonText?: string;
205
+ onButtonClick?: () => void;
206
+ };
207
+
208
+ /**
209
+ * @public
210
+ */
211
+ export declare type BannerPropsPartial = Partial<BannerProps>;
212
+
213
+ /**
214
+ * @public
215
+ */
216
+ export declare type BetOffer = {
217
+ betService: string;
218
+ league: string;
219
+ odds: {
220
+ winner: string;
221
+ rate: number;
222
+ }[];
223
+ sport: string;
224
+ opponent1: string;
225
+ opponent2: string;
226
+ time: Date;
227
+ };
228
+
229
+ /**
230
+ * rejects when bundle is not available
231
+ * @public
232
+ */
233
+ export declare const bundlePromise: Promise<RemoteBundleState>;
234
+
235
+ /**
236
+ * @internal
237
+ */
238
+ export declare type ButtonOptions = {
239
+ backgroundImage: string;
240
+ borderRadius: string | number;
241
+ };
242
+
243
+ /**
244
+ * @public
245
+ */
246
+ export declare type Callback<T = any> = (arg?: T) => void;
247
+
248
+ /**
249
+ * @public
250
+ */
251
+ export declare interface Channel {
252
+ id: string;
253
+ name: string;
254
+ header: string;
255
+ headerLogo: string;
256
+ recentVideos: Video[];
257
+ }
258
+
259
+ /**
260
+ * @public
261
+ */
262
+ export declare type ChannelSource = {
263
+ new (uri: string, originalOptions: Record<string, any>, channelName: string, programName: string, programDescription: string, from: Date, to: Date): ChannelSource;
264
+ description: string;
265
+ name: string;
266
+ uri: string;
267
+ from: Date;
268
+ channelName: string;
269
+ to: Date;
270
+ type: 'channel';
271
+ watchWithoutAdsRecommendation: {
272
+ showPurchaseDialog: () => void;
273
+ } | null;
274
+ };
275
+
276
+ /**
277
+ * @public
278
+ */
279
+ export declare interface ChannelSourcePojo {
280
+ type: 'ChannelSource';
281
+ uri: string;
282
+ originalOptions: any;
283
+ channelName: string;
284
+ programName: string;
285
+ programDescription: string;
286
+ from: Date;
287
+ to: Date;
288
+ poster?: string;
289
+ }
290
+
291
+ /**
292
+ * @public
293
+ */
294
+ export declare type Chapter = any;
295
+
296
+ /**
297
+ * @public
298
+ */
299
+ export declare type CmpConfig = 'default' | 'debug' | 'none';
300
+
301
+ /**
302
+ * TODO it's the same as Customizations, not?
303
+ * @internal
304
+ */
305
+ export declare type Components = {
306
+ menu: {
307
+ height: number;
308
+ };
309
+ row: {
310
+ paddingLeft: number;
311
+ paddingVertical: number;
312
+ };
313
+ banner: {
314
+ height: number;
315
+ };
316
+ };
317
+
318
+ /**
319
+ * Just another alias. Reexported for backward compatibility.
320
+ * @public
321
+ */
322
+ export declare type Config = SdkReactConfig;
323
+
324
+ /**
325
+ * @public
326
+ * @TODO move somewhere else
327
+ */
328
+ export declare type CoverPadding = {
329
+ top?: number;
330
+ bottom?: number;
331
+ left?: number;
332
+ right?: number;
333
+ };
334
+
335
+ /**
336
+ * @public
337
+ */
338
+ export declare const createPubSub: () => PubSub;
339
+
340
+ /**
341
+ * Fetch & load CommonJS remote module.
342
+ * @public
343
+ */
344
+ export declare const createRemotePackageLoader: () => (secret: string, conf: InternalConfig) => Promise<TivioBundle>;
345
+
346
+ /**
347
+ * @public
348
+ */
349
+ export declare const createUseRemoteBundle: () => (conf: InternalConfig) => RemoteBundleState;
350
+
351
+ /**
352
+ * @public
353
+ */
354
+ export declare type CreateUserWithEmailAndPassword = (email: string, password: string, username?: string, phoneNumber?: string, referralToken?: string) => Promise<string | null>;
355
+
356
+ /**
357
+ * @public
358
+ */
359
+ export declare const CURRENCIES: string[];
360
+
361
+ /**
362
+ * @public
363
+ */
364
+ export declare type Currency = 'CZK' | 'EUR' | 'USD';
365
+
366
+ /**
367
+ * @public
368
+ */
369
+ export declare enum CUSTOMER_BUILD {
370
+ OKTAGON = "OKTAGON",
371
+ JOJ = "JOJ",
372
+ MALL = "MALL",
373
+ GARAZ = "GARAZ",
374
+ U_KULATEHO_STOLU = "U_KULATEHO_STOLU",
375
+ INVESTOREES = "INVESTOREES"
376
+ }
377
+
378
+ /**
379
+ * @internal
380
+ */
381
+ export declare type Customizations = {
382
+ Tile: TileOptions;
383
+ Button: ButtonOptions;
384
+ Banner: {
385
+ backgroundImage: string;
386
+ /**
387
+ * Height in %
388
+ */
389
+ paddingTop: string;
390
+ /**
391
+ * Width in px
392
+ */
393
+ coverWidth: number;
394
+ fontWeight: string | number;
395
+ };
396
+ Header: {
397
+ backgroundColor: string;
398
+ activeLinkUnderlineColor: string;
399
+ logoHeight: string;
400
+ };
401
+ Input: InputOptions;
402
+ landing: {
403
+ row: {
404
+ backgroundColor: string;
405
+ };
406
+ };
407
+ global: {
408
+ /**
409
+ * Main application background style.
410
+ */
411
+ appBackground: string;
412
+ /**
413
+ * Application background image url - used to replace main gradient
414
+ */
415
+ appBackgroundImageUrl?: string;
416
+ /**
417
+ * Background style of success icon on "/pair" site.
418
+ */
419
+ pairSuccessBackground: string;
420
+ };
421
+ };
422
+
423
+ /**
424
+ * @internal
425
+ */
426
+ export declare interface CustomTheme {
427
+ customizations?: Customizations;
428
+ components: Components;
429
+ size: (size: number) => number;
430
+ }
431
+
432
+ /**
433
+ * @internal
434
+ */
435
+ export declare interface CustomThemeOptions {
436
+ customizations?: Customizations;
437
+ components: Components;
438
+ size: (size: number) => number;
439
+ }
440
+
441
+ /**
442
+ * @public
443
+ */
444
+ export declare const DEFAULT_ORDER_BY: {
445
+ field: DefaultOrderByField;
446
+ directionStr: OrderByDirection;
447
+ }[];
448
+
449
+ /**
450
+ * @public
451
+ */
452
+ export declare type DefaultOrderByField = 'created';
453
+
454
+ /**
455
+ * @public
456
+ */
457
+ export declare type DetailedPrice = {
458
+ amount: number;
459
+ currency: Currency;
460
+ frequency?: MONETIZATION_FREQUENCY;
461
+ };
462
+
463
+ /**
464
+ * @public
465
+ */
466
+ export declare type DeviceInfo = ArrisDeviceInfo | WebosDeviceInfo | TizenDeviceInfo;
467
+
468
+ /**
469
+ * @public
470
+ */
471
+ export declare type Disposer = () => void;
472
+
473
+ /**
474
+ * @public
475
+ */
476
+ declare type Disposer_2 = () => void;
477
+
478
+ /**
479
+ * @public
480
+ */
481
+ export declare type DividerProps = {
482
+ verticalSpacing?: number;
483
+ horizontalSpacing?: number;
484
+ };
485
+
486
+ /**
487
+ * @public
488
+ */
489
+ export declare type DocumentOptions = Partial<{
490
+ lazyLoading: boolean;
491
+ subscribeOnChanges: boolean;
492
+ }>;
493
+
494
+ /**
495
+ * @public
496
+ */
497
+ export declare type Empty = void | Promise<void> | undefined | Promise<undefined>;
498
+
499
+ /**
500
+ * @public
501
+ */
502
+ export declare type Events = {
503
+ 'on-ready': RemoteBundleState;
504
+ 'on-error': Error;
505
+ };
506
+
507
+ /**
508
+ * @public
509
+ */
510
+ export declare type ExternalTvConfig = {
511
+ logo: string;
512
+ };
513
+
514
+ /**
515
+ * @throws if fetch fails
516
+ * @public
517
+ */
518
+ export declare const fetchBundle: (secret: string, conf: InternalConfig) => Promise<string>;
519
+
520
+ /**
521
+ * Copyright (c) 2021, nangu.TV, a.s. All rights reserved.
522
+ * nangu.TV, a.s PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
523
+ */
524
+ declare type FetchPackage = (url: string) => Promise<string>;
525
+
526
+ /**
527
+ * @public
528
+ */
529
+ export declare interface GenericOnCallError {
530
+ code: string;
531
+ message?: string;
532
+ details?: string[];
533
+ }
534
+
535
+ /**
536
+ * Share singleton instance
537
+ * @public
538
+ */
539
+ export declare const getPubSub: () => PubSub;
540
+
541
+ /**
542
+ * @public
543
+ */
544
+ export declare interface IndexedObject {
545
+ objectID: string;
546
+ path: string;
547
+ }
548
+
549
+ /**
550
+ * @public
551
+ */
552
+ export declare interface IndexedTag extends IndexedObject {
553
+ tagId: string;
554
+ tagTypePath?: string;
555
+ organizationPath: string;
556
+ created: Date;
557
+ name: Translation;
558
+ description?: string;
559
+ }
560
+
561
+ /**
562
+ * @public
563
+ */
564
+ export declare interface IndexedTvChannel extends IndexedObject {
565
+ channelKey: string;
566
+ created: Date;
567
+ filters: string[];
568
+ name: string;
569
+ organizationPath: string;
570
+ }
571
+
572
+ /**
573
+ * @public
574
+ */
575
+ export declare interface IndexedUser extends IndexedObject {
576
+ authUserId: string;
577
+ type: string;
578
+ externalUserId?: string;
579
+ email?: string;
580
+ organizationPath?: string;
581
+ }
582
+
583
+ /**
584
+ * @public
585
+ */
586
+ export declare interface IndexedVideo extends IndexedObject {
587
+ organizationPath?: string;
588
+ tagPaths?: string[];
589
+ created: Date;
590
+ isDraft: boolean;
591
+ type: VideoType;
592
+ contentType?: VideoContentType;
593
+ name: string;
594
+ description: string;
595
+ hide: boolean;
596
+ isDuplicate: boolean;
597
+ externals?: VideoExternals;
598
+ }
599
+
600
+ /**
601
+ * @internal
602
+ */
603
+ export declare type InputOptions = {
604
+ borderRadius: string;
605
+ };
606
+
607
+ /**
608
+ * @public
609
+ */
610
+ export declare type InputSource = AdSource | ChannelSource | VodTivioSource | VodExternalSource;
611
+
612
+ /**
613
+ * @public
614
+ */
615
+ export declare type InternalConfig = SdkReactConfig & {
616
+ fetchPackage: FetchPackage;
617
+ pubSub: PubSub;
618
+ /**
619
+ * @private URL of resolver. Resolver is a script used to fetch remove code bundle
620
+ */
621
+ resolverUrl: string;
622
+ sdkVersion: string;
623
+ /**
624
+ * @private URL of remote code bundle to be fetched directly (without using resolver)
625
+ */
626
+ bundleUrlOverride?: string;
627
+ /**
628
+ * @private
629
+ * Run HTML, CSS and JS feature support check
630
+ */
631
+ runFeatureSupportCheck?: boolean;
632
+ /**
633
+ * @private
634
+ */
635
+ forceCloudFnResolver?: boolean;
636
+ };
637
+
638
+ /**
639
+ * @public
640
+ */
641
+ export declare type InternalTvConfig = {
642
+ logo: string;
643
+ screens: ScreenConfig[];
644
+ };
645
+
646
+ declare interface IntroMarker {
647
+ marker: Marker;
648
+ skip: () => void;
649
+ }
650
+
651
+ /**
652
+ * @public
653
+ */
654
+ export declare type ItemsInRow = Tag | Video | TvChannel;
655
+
656
+ /**
657
+ * Enum of all supported languages codes as in ISO 639-1
658
+ * @public
659
+ */
660
+ export declare enum LangCode {
661
+ CS = "cs",
662
+ DE = "de",
663
+ EN = "en",
664
+ FR = "fr",
665
+ PL = "pl",
666
+ SK = "sk",
667
+ SP = "sp"
668
+ }
669
+
670
+ /**
671
+ * All supported languages codes as in ISO 639-1
672
+ * @public
673
+ */
674
+ export declare const languages: LangCode[];
675
+
676
+ /**
677
+ * Possible language key of all supported language mutations.
678
+ * @public
679
+ */
680
+ export declare type LanguageType = `${LangCode}`;
681
+
682
+ /**
683
+ * @public
684
+ */
685
+ export declare type LinkedVideo = {
686
+ video: Video;
687
+ type: 'CUT' | 'TRAILER' | 'BONUS' | 'CHILD';
688
+ };
689
+
690
+ declare interface Logger {
691
+ /** important messages */
692
+ warn(...data: LoggerArgs): void;
693
+ /** errors */
694
+ error(...data: LoggerArgs): void;
695
+ /** critical errors */
696
+ exception(...data: LoggerArgs): void;
697
+ /** metrics */
698
+ info(...data: LoggerArgs): void;
699
+ /** non-production messages */
700
+ debug(...data: LoggerArgs): void;
701
+ }
702
+
703
+ /**
704
+ * Copyright (c) 2021, nangu.TV, a.s. All rights reserved.
705
+ * nangu.TV, a.s PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
706
+ */
707
+ declare type LoggerArgs = any[];
708
+
709
+ /**
710
+ * @public
711
+ */
712
+ export declare type Marker = {
713
+ id: string;
714
+ type: string;
715
+ from: Date;
716
+ to: Date;
717
+ count?: number;
718
+ fromMs?: number;
719
+ toMs?: number;
720
+ };
721
+
722
+ /**
723
+ * @public
724
+ */
725
+ export declare interface Monetization {
726
+ id: string;
727
+ price?: string | number;
728
+ type?: MonetizationType;
729
+ frequency?: MONETIZATION_FREQUENCY;
730
+ isPurchased?: boolean;
731
+ name?: string;
732
+ description?: string;
733
+ benefits?: Translation[];
734
+ localizedBenefits?: string[];
735
+ }
736
+
737
+ /**
738
+ * @public
739
+ */
740
+ export declare enum MONETIZATION_FREQUENCY {
741
+ ONE_TIME_PAYMENT = "ONE_TIME_PAYMENT",
742
+ DAILY = "DAILY",
743
+ WEEKLY = "WEEKLY",
744
+ MONTHLY = "MONTHLY",
745
+ ANNUALLY = "ANNUALLY"
746
+ }
747
+
748
+ /**
749
+ * @public
750
+ * @TODO change to enum
751
+ */
752
+ export declare type MonetizationType = 'advertisement' | 'transaction' | 'subscription';
753
+
754
+ /**
755
+ * TODO: Duplicate, because we can't import types from core-js.
756
+ */
757
+ /**
758
+ * @public
759
+ */
760
+ export declare type NewVoucher = {
761
+ expirationDate: Date | number;
762
+ };
763
+
764
+ /**
765
+ * @public
766
+ */
767
+ export declare type Nullable<T> = {
768
+ [P in keyof T]: T[P] | null;
769
+ };
770
+
771
+ /**
772
+ * @public
773
+ */
774
+ export declare type ObjectType = Record<string, any>;
775
+
776
+ /**
777
+ * @public
778
+ */
779
+ export declare interface OrderBy {
780
+ field: string;
781
+ directionStr?: OrderByDirection;
782
+ }
783
+
784
+ declare type OrderByDirection = 'desc' | 'asc';
785
+
786
+ /**
787
+ * @public
788
+ */
789
+ export declare interface Organization {
790
+ }
791
+
792
+ /**
793
+ * @public
794
+ */
795
+ export declare type PaginationInterface<Entity> = {
796
+ items: Entity[];
797
+ fetchMore: () => void;
798
+ hasNextPage?: boolean;
799
+ loading?: boolean;
800
+ };
801
+
802
+ /**
803
+ * @public
804
+ */
805
+ export declare type PaginationOptions = Partial<{
806
+ limit: number;
807
+ noLimit: boolean;
808
+ }>;
809
+
810
+ /**
811
+ * @public
812
+ */
813
+ export declare enum PLATFORM {
814
+ MOBILE = "MOBILE",
815
+ WEB = "WEB",
816
+ TV = "TV"
817
+ }
818
+
819
+ /**
820
+ * @public
821
+ */
822
+ export declare interface PlayerCapability {
823
+ codec: 'h264' | 'h265';
824
+ encryption: 'fairplay' | 'none' | 'playready' | 'widevine';
825
+ protocol: 'dash' | 'hls' | 'mp4';
826
+ }
827
+
828
+ /**
829
+ * @public
830
+ */
831
+ export declare type PlayerConfig = {
832
+ /**
833
+ * Some devices do not seek exactly
834
+ *
835
+ * e.g. on Arris if we request seek to position P, in reality it will seek to P -+5s
836
+ * e.g. on Arris if we request play from position P, in reality it will play from P -+5s
837
+ * (on Arris the error margin varies according to video format)
838
+ */
839
+ acceptablePositionAnomalyMs?: number;
840
+ /**
841
+ * Stream delay config
842
+ *
843
+ * IP TV apps have TV program / TV channel streams delayed relative to the original
844
+ * video source. Therefore stream markers taken from the original video source
845
+ * are delayed relative to the TV stream seen by end users of the IP TV app.
846
+ *
847
+ * This delay must be corrected.
848
+ */
849
+ streamDelayConfig?: {
850
+ /**
851
+ * ID of the delay config
852
+ */
853
+ id: string;
854
+ };
855
+ ui?: {
856
+ /**
857
+ * ID of a DOM element inside which Tivio should display its player-related UI
858
+ * such as ad buttons. This DOM element is an anchor point for Tivio UI. Preferably
859
+ * it should be a <div/> element styled to cover the whole area of the video player
860
+ * and it should be positioned to be on top the existing player UI (e.g. via z-index).
861
+ */
862
+ domAnchorId: string | null;
863
+ };
864
+ protocols?: {
865
+ mp4?: {
866
+ /**
867
+ * Set to false if player does not support MP4 files that require full file download
868
+ * (i.e. they do not support progressive MP4 download and therefore the whole file
869
+ * must be downloaded before playback can start)
870
+ */
871
+ fullFileDownloadSupport?: boolean;
872
+ };
873
+ };
874
+ };
875
+
876
+ /**
877
+ * @public
878
+ */
879
+ export declare interface PlayerInterface {
880
+ pause: () => void;
881
+ /**
882
+ * unpause
883
+ */
884
+ play: () => void;
885
+ /**
886
+ * @param {number} ms - milliseconds relative to start of video (relative to 0 ms)
887
+ * or in case of TV programs relative to start of the program (relative to source.from ms)
888
+ */
889
+ seekTo: (ms: number) => void;
890
+ /**
891
+ * Source to be passed to player.
892
+ *
893
+ * Depending on autoplay settings it should either start playing
894
+ * immediately or just be loaded by player and stay paused.
895
+ */
896
+ setSource: (source: InputSource | null) => void;
897
+ /**
898
+ * volume in [0,1]
899
+ */
900
+ setVolume?: (volume: number) => void;
901
+ mute?: () => void;
902
+ /**
903
+ * restore volume to previous value
904
+ */
905
+ unmute?: () => void;
906
+ }
907
+
908
+ /**
909
+ * @public
910
+ */
911
+ export declare const PlayerProvider: ({ children, playerWrapperId, }: PlayerProviderProps) => FunctionComponentElement<PlayerProviderProps>;
912
+
913
+ /**
914
+ * @public
915
+ */
916
+ export declare type PlayerProviderProps = {
917
+ children: React_2.ReactNode;
918
+ playerWrapperId?: string;
919
+ };
920
+
921
+ declare type PlayerState = 'playing' | 'paused' | 'idle';
922
+
923
+ /**
924
+ * @public
925
+ */
926
+ export declare type PlayerWrapper = {
927
+ /**
928
+ * Report that playback of video has finished
929
+ */
930
+ onPlaybackEnded: () => void;
931
+ /**
932
+ * Report video progress in milliseconds
933
+ */
934
+ onTimeChanged: (ms: number) => void;
935
+ /**
936
+ * Report that video state changed
937
+ */
938
+ onStateChanged: (state: PlayerState) => void;
939
+ /**
940
+ * Send source to Tivio
941
+ */
942
+ onSourceChanged: (source: InputSource | null) => void;
943
+ /**
944
+ * Report that video failed to load (never started playing)
945
+ */
946
+ onLoadError: (error: Error) => void;
947
+ /**
948
+ * Report that video failed during playback (successfully loaded and then failed, e.g. part of stream is invalid)
949
+ */
950
+ onError: (error: Error) => void;
951
+ /**
952
+ * Unpause video
953
+ */
954
+ play: () => void;
955
+ /**
956
+ * Pause video
957
+ */
958
+ pause: () => void;
959
+ /**
960
+ * Currently playing source
961
+ */
962
+ source: InputSource | null;
963
+ events: {
964
+ isSupported: (even: string) => boolean;
965
+ addListener: <T = any>(event: string, cb: (value: T) => Empty) => void;
966
+ removeListener: <T = any>(event: string, cb: (value: T) => Empty) => void;
967
+ removeAllListeners: () => void;
968
+ };
969
+ /**
970
+ * Register a low level player that implements player methods, like play video, change volume, etc.
971
+ */
972
+ register: (playerInterface: PlayerInterface) => void;
973
+ /**
974
+ * duration of current source in ms (both setter and getter)
975
+ */
976
+ durationMs: number | null;
977
+ isPlaybackStarted: boolean;
978
+ isPaused: boolean;
979
+ isPlaying: boolean;
980
+ isIdle: boolean;
981
+ error: Error | null;
982
+ /**
983
+ * Replay the video that finished playback
984
+ */
985
+ replay: () => void;
986
+ /**
987
+ * Retry to play a video that failed to start playing (e.g. due to a network error)
988
+ */
989
+ retry: () => void;
990
+ togglePlayPause: () => void;
991
+ seekTo: (ms: number) => void;
992
+ /**
993
+ * set volume to value between 0,1
994
+ */
995
+ setVolume: (volume: number) => void;
996
+ /**
997
+ * change volume by value between -1,1
998
+ */
999
+ changeVolumeBy: (volume: number) => void;
1000
+ setMuted: (muted: boolean) => void;
1001
+ toggleMuted: () => void;
1002
+ };
1003
+
1004
+ /**
1005
+ * @public
1006
+ */
1007
+ export declare interface PubSub {
1008
+ publish: <K extends keyof Events>(triggerName: K, payload: Events[K]) => Empty;
1009
+ subscribe: <K extends keyof Events>(triggerName: K, onMessage: (data: Events[K]) => Empty) => Disposer;
1010
+ }
1011
+
1012
+ /**
1013
+ * @public
1014
+ */
1015
+ export declare type Purchase = {
1016
+ /**
1017
+ * Timestamp of the purchase creation in milliseconds.
1018
+ */
1019
+ created: number | null;
1020
+ expirationDate: Date | null;
1021
+ id: string;
1022
+ isExpired: boolean;
1023
+ isPurchased: boolean;
1024
+ monetization: PurchaseMonetization | null;
1025
+ monetizationId: string | null;
1026
+ monetizationRef: any | null;
1027
+ status: PurchaseStatus | null;
1028
+ type: MonetizationType | null;
1029
+ /**
1030
+ * Timestamp of the last purchase status update in milliseconds.
1031
+ */
1032
+ updated: number | null;
1033
+ video: Video | null;
1034
+ videoId: string | null;
1035
+ videoRef: any | null;
1036
+ voucherId?: string;
1037
+ };
1038
+
1039
+ /**
1040
+ * @public
1041
+ */
1042
+ export declare type PurchaseMonetization = {
1043
+ currency?: Currency;
1044
+ period?: number;
1045
+ price?: number;
1046
+ type: MonetizationType;
1047
+ title?: string;
1048
+ frequency?: MONETIZATION_FREQUENCY | null;
1049
+ /**
1050
+ * If set, purchase (subscription) activated by voucher will stay valid for this amount of seconds.
1051
+ * Otherwise, purchase will be valid for one "monetization frequency" period.
1052
+ */
1053
+ voucherPurchaseDuration?: number;
1054
+ };
1055
+
1056
+ /**
1057
+ * @public
1058
+ */
1059
+ export declare enum PurchaseStatus {
1060
+ NEW = "NEW",
1061
+ PAID = "PAID",
1062
+ CANCELLED = "CANCELLED",
1063
+ ERROR = "ERROR",
1064
+ /**
1065
+ * Used when purchase is terminated due to terms and conditions violation (e.g. restreaming).
1066
+ */
1067
+ KILL = "KILL"
1068
+ }
1069
+
1070
+ /**
1071
+ * @public
1072
+ */
1073
+ export declare interface QerkoCancellationInfo {
1074
+ purchaseId: string;
1075
+ status: PurchaseStatus;
1076
+ }
1077
+
1078
+ /**
1079
+ * @public
1080
+ */
1081
+ export declare interface QerkoData {
1082
+ monetization: Monetization;
1083
+ video?: Video;
1084
+ onPurchase?: () => void;
1085
+ onClose?: () => void;
1086
+ }
1087
+
1088
+ /**
1089
+ * @public
1090
+ */
1091
+ export declare interface QerkoOverlayState {
1092
+ data: QerkoData | null;
1093
+ openQerkoOverlay: ((data: QerkoData) => void);
1094
+ closeQerkoOverlay: () => void;
1095
+ }
1096
+
1097
+ /**
1098
+ * @public
1099
+ */
1100
+ export declare interface QerkoPaymentInfo {
1101
+ webPaymentGatewayLink: string;
1102
+ gatewayUri: string;
1103
+ paymentQRCodeUri: string;
1104
+ purchaseId: string;
1105
+ currency: string;
1106
+ amount: number;
1107
+ monetizationType: MonetizationType;
1108
+ recovery?: boolean;
1109
+ monetizationFrequency: MONETIZATION_FREQUENCY;
1110
+ }
1111
+
1112
+ /**
1113
+ * @public
1114
+ */
1115
+ export declare interface QerkoPaymentProps {
1116
+ transaction: QerkoTransaction;
1117
+ qrCodeCaption?: string;
1118
+ renderErrorComponent: () => any;
1119
+ enablePayByCard?: boolean;
1120
+ payByCardCaption?: string;
1121
+ visaLogoUrl?: string;
1122
+ masterCardLogoUrl?: string;
1123
+ }
1124
+
1125
+ /**
1126
+ * @public
1127
+ */
1128
+ export declare interface QerkoTransaction {
1129
+ paymentInfo: QerkoPaymentInfo | null;
1130
+ paymentError: string | null;
1131
+ paymentStatus: string | null;
1132
+ getPaymentInfo: () => Promise<void>;
1133
+ voucherId?: string;
1134
+ }
1135
+
1136
+ /**
1137
+ * @public
1138
+ */
1139
+ export declare type RemoteBundleState = {
1140
+ config: InternalConfig;
1141
+ error: string | null;
1142
+ state: 'loading' | 'error' | 'ready';
1143
+ } & Nullable<TivioBundle>;
1144
+
1145
+ /**
1146
+ * @public
1147
+ */
1148
+ export declare type RemoteProviderProps = {
1149
+ disableUnmounting?: boolean;
1150
+ language?: string;
1151
+ children: any;
1152
+ };
1153
+
1154
+ /**
1155
+ * @public
1156
+ */
1157
+ export declare interface RouterOverrides {
1158
+ goToVideoDetailPage: (videoId: string) => void;
1159
+ goToSeriesDetailPage: (tagId: string) => void;
1160
+ goToTagPage: (tagId: string) => void;
1161
+ goToLoginScreen: () => void;
1162
+ goBack: () => void;
1163
+ goLivePlayer: (videoId: string) => void;
1164
+ goVodPlayer: (tvChannelId: string) => void;
1165
+ }
1166
+
1167
+ /**
1168
+ * @public
1169
+ */
1170
+ export declare interface RouterOverridesContextState {
1171
+ routerOverrides: RouterOverrides;
1172
+ }
1173
+
1174
+ /**
1175
+ * @public
1176
+ */
1177
+ export declare interface Row {
1178
+ id: string;
1179
+ rowId: string;
1180
+ name: string;
1181
+ description?: string;
1182
+ itemComponent: RowItemComponent;
1183
+ rowComponent: RowComponent;
1184
+ assets: Assets;
1185
+ type: ScreenRowType;
1186
+ isLiveRow: boolean;
1187
+ }
1188
+
1189
+ /**
1190
+ * @public
1191
+ */
1192
+ export declare enum ROW_ITEM_TYPES {
1193
+ VIDEO = "VIDEO",
1194
+ TAG = "TAG",
1195
+ TV_CHANNEL = "TV_CHANNEL"
1196
+ }
1197
+
1198
+ /**
1199
+ * @public
1200
+ */
1201
+ export declare enum RowComponent {
1202
+ ROW = "ROW",
1203
+ BANNER = "BANNER"
1204
+ }
1205
+
1206
+ /**
1207
+ * @public
1208
+ */
1209
+ export declare interface RowItem extends RowItemAssets {
1210
+ itemType: ROW_ITEM_TYPES;
1211
+ name?: string;
1212
+ description?: string;
1213
+ assets: Assets | null;
1214
+ }
1215
+
1216
+ /**
1217
+ * @public
1218
+ */
1219
+ export declare interface RowItemAssets {
1220
+ landscape?: string | null;
1221
+ portrait?: string | null;
1222
+ circled?: string | null;
1223
+ banner?: string | null;
1224
+ }
1225
+
1226
+ /**
1227
+ * @public
1228
+ */
1229
+ export declare enum RowItemComponent {
1230
+ ROW_ITEM_PORTRAIT = "ROW_ITEM_PORTRAIT",
1231
+ ROW_ITEM_LANDSCAPE = "ROW_ITEM_LANDSCAPE",
1232
+ ROW_ITEM_CIRCLED = "ROW_ITEM_CIRCLED"
1233
+ }
1234
+
1235
+ /**
1236
+ * Listen to items in row of a screen
1237
+ * @param rowId - row ID (user defined ID via studio.tiv.io)
1238
+ * @param cb - callback on items changes or error, with information
1239
+ * whether data is loading and a fetchMore function
1240
+ * @param limit - max item count (default 10)
1241
+ * @returns Disposer
1242
+ * @public
1243
+ */
1244
+ export declare type RowItemsSubscription = (rowId: string, cb: (error: Error | null, data: {
1245
+ items: Video[];
1246
+ hasNextPage: boolean;
1247
+ } | null, fetchMore: null | ((count?: number) => void), isLoading: boolean) => void, limit?: number) => Disposer_2;
1248
+
1249
+ /**
1250
+ * @public
1251
+ */
1252
+ export declare type ScalableAsset = {
1253
+ '@1': Asset;
1254
+ '@2'?: Asset;
1255
+ '@3'?: Asset;
1256
+ };
1257
+
1258
+ /**
1259
+ * @public
1260
+ */
1261
+ export declare type Scale = '@1' | '@2' | '@3';
1262
+
1263
+ /**
1264
+ * @public
1265
+ */
1266
+ declare interface Screen_2 {
1267
+ id: string;
1268
+ name: string;
1269
+ description?: string;
1270
+ assets: Assets;
1271
+ rows: Row[];
1272
+ }
1273
+ export { Screen_2 as Screen }
1274
+
1275
+ /**
1276
+ * @public
1277
+ */
1278
+ export declare type ScreenConfig = {
1279
+ id: string;
1280
+ name: string;
1281
+ };
1282
+
1283
+ /**
1284
+ * @public
1285
+ */
1286
+ export declare type ScreenOptions = Partial<{
1287
+ language: LangCode;
1288
+ initRows: boolean;
1289
+ }> & DocumentOptions;
1290
+
1291
+ /**
1292
+ * @public
1293
+ */
1294
+ export declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites';
1295
+
1296
+ /**
1297
+ * Listen to screen data
1298
+ * @param screenId - screen ID (user defined ID via studio.tiv.io)
1299
+ * @param cb - callback on screen data change or error
1300
+ * @returns Disposer
1301
+ * @public
1302
+ */
1303
+ export declare type ScreenSubscription = (screenId: string, cb: (error: Error | null, data: Screen_2 | null) => void) => Disposer_2;
1304
+
1305
+ /**
1306
+ * Config of sdk-react. Contains all properties that can be passed via TivioProvider.
1307
+ * Consists of TivioConfig's properties + "sdk only" properties, that are used only in sdk, not in bundle.
1308
+ *
1309
+ * @public
1310
+ */
1311
+ export declare type SdkReactConfig = Omit<TivioConfig, 'deviceCapabilities' | 'language'> & {
1312
+ disableUnmounting?: boolean;
1313
+ enable?: boolean;
1314
+ enableSentry?: boolean;
1315
+ ErrorComponent?: ComponentType<{
1316
+ error: string | null;
1317
+ }>;
1318
+ LoaderComponent?: ComponentType;
1319
+ logger?: Logger | null;
1320
+ deviceCapabilities: PlayerCapability[] | 'auto';
1321
+ language?: LangCode;
1322
+ };
1323
+
1324
+ /**
1325
+ * @public
1326
+ */
1327
+ export declare interface Section {
1328
+ id: string;
1329
+ name: string;
1330
+ channel: Channel;
1331
+ videos: Video[];
1332
+ }
1333
+
1334
+ /**
1335
+ * Used for entities, that can be global (e.g. asset presets, tag types).
1336
+ * Non-global is stored under organizations (in sub-collection), and shown for organization's users and super-admin.
1337
+ * Global is stored in separate collection and shown only for super-admin.
1338
+ * @public
1339
+ */
1340
+ export declare interface SettingsItem {
1341
+ name: string;
1342
+ isGlobal?: boolean;
1343
+ }
1344
+
1345
+ /**
1346
+ * Set user to sign in/out.
1347
+ *
1348
+ * Sign in - setUser('userID', { token: 'xxx' })
1349
+ * Sign out - setUser(null)
1350
+ * @public
1351
+ */
1352
+ export declare const setUser: (userId: string | null, payload?: UserPayload | undefined) => Promise<void>;
1353
+
1354
+ /**
1355
+ * @public
1356
+ */
1357
+ export declare const showGdprConsentPreferences: () => Promise<void>;
1358
+
1359
+ /**
1360
+ * @public
1361
+ */
1362
+ export declare type SubscribeToItemsInRow = (rowId: string, cb: (error: Error | null, data: PaginationInterface<ItemsInRow> | null) => void, options?: SubscribeToItemsInRowOptions) => Disposer_2;
1363
+
1364
+ /**
1365
+ * @public
1366
+ */
1367
+ export declare type SubscribeToItemsInRowOptions = Partial<{
1368
+ fetchTags: boolean;
1369
+ }> & PaginationOptions;
1370
+
1371
+ /**
1372
+ * @public
1373
+ */
1374
+ export declare type SubscribeToRowsInScreen = (screenId: string, cb: (error: Error | null, data: PaginationInterface<Row> | null) => void, options?: PaginationOptions) => Disposer_2;
1375
+
1376
+ /**
1377
+ * @public
1378
+ */
1379
+ export declare type SubscribeToScreen = (screenId: string, cb: (error: Error | null, data: Screen_2 | null) => void, options?: ScreenOptions) => Disposer_2;
1380
+
1381
+ /**
1382
+ * @public
1383
+ */
1384
+ export declare type SubscribeToTaggedVideos = (tagIds: string[], cb: (error: Error | null, data: PaginationInterface<Video> | null) => void, options?: SubscribeToTaggedVideosOptions) => Disposer_2;
1385
+
1386
+ /**
1387
+ * @public
1388
+ */
1389
+ export declare type SubscribeToTaggedVideosOptions = SubscribeToItemsInRowOptions & {
1390
+ orderBy?: (Omit<OrderBy, 'field'> & {
1391
+ field: TaggedVideosOrderByField;
1392
+ })[];
1393
+ where?: WhereFilter[];
1394
+ };
1395
+
1396
+ /**
1397
+ * @public
1398
+ */
1399
+ export declare interface SubscriptionCardProps {
1400
+ subscription: Monetization;
1401
+ onClick: (subscription: Monetization) => void;
1402
+ buttonLabel: string;
1403
+ purchased: boolean;
1404
+ focused?: boolean;
1405
+ }
1406
+
1407
+ declare type SubscriptionInfo = {
1408
+ type: 'subscription';
1409
+ name: string;
1410
+ benefits: string[];
1411
+ frequency: string;
1412
+ };
1413
+
1414
+ /**
1415
+ * @public
1416
+ */
1417
+ export declare interface SubscriptionOverlayData {
1418
+ subscriptions?: Monetization[];
1419
+ onPurchase?: () => void;
1420
+ onClose?: () => void;
1421
+ }
1422
+
1423
+ /**
1424
+ * @public
1425
+ */
1426
+ export declare type SubscriptionOverlayState = {
1427
+ data: SubscriptionOverlayData | null;
1428
+ closeSubscriptionOverlay: () => void;
1429
+ openSubscriptionOverlay: (data: SubscriptionOverlayData) => void;
1430
+ };
1431
+
1432
+ /**
1433
+ * @public
1434
+ */
1435
+ export declare interface Tag extends RowItem {
1436
+ id: string;
1437
+ tagId: string;
1438
+ type?: string | null;
1439
+ metadata?: any[];
1440
+ color?: string;
1441
+ detailBanner?: string;
1442
+ availableSeasons?: AvailableSeason[];
1443
+ isFavorite: boolean;
1444
+ addToFavorites: () => void;
1445
+ removeFromFavorites: () => void;
1446
+ }
1447
+
1448
+ /**
1449
+ * @public
1450
+ */
1451
+ export declare type TaggedVideosOrderByField = 'seasonNumber' | 'episodeNumber' | 'contentType' | DefaultOrderByField;
1452
+
1453
+ /**
1454
+ * @internal
1455
+ */
1456
+ export declare type TileOptions = {
1457
+ focusedShadow: boolean;
1458
+ focusedShadowColor?: string;
1459
+ borderColor: string;
1460
+ innerLabel: {
1461
+ /**
1462
+ * Font size in px
1463
+ */
1464
+ fontSize: number;
1465
+ };
1466
+ bottomLabel: {
1467
+ opacity: string | number;
1468
+ fontWeight: string;
1469
+ };
1470
+ };
1471
+
1472
+ /**
1473
+ * @public
1474
+ */
1475
+ export declare type TileProps = {
1476
+ cover: string;
1477
+ isLoading: boolean;
1478
+ bottomLabel: string;
1479
+ bottomLabelAreaHeight: number;
1480
+ innerLabel: string;
1481
+ duration: string;
1482
+ price: string | null;
1483
+ focused: boolean;
1484
+ onClick?: () => void;
1485
+ hoverable: boolean;
1486
+ overlay: boolean;
1487
+ coverPadding: CoverPadding;
1488
+ variant: RowItemComponent;
1489
+ coverWidth: number;
1490
+ progress?: number;
1491
+ time?: string;
1492
+ logo?: string;
1493
+ coverHeight: number;
1494
+ /**
1495
+ * Margin of inner TileContainer.
1496
+ * Now used for backward compatibility for WebTileGrid. Consider to use it other way.
1497
+ */
1498
+ containerMargin?: number | string;
1499
+ };
1500
+
1501
+ /**
1502
+ * @public
1503
+ */
1504
+ export declare type TilePropsPartial = Partial<TileProps>;
1505
+
1506
+ /**
1507
+ * @public
1508
+ */
1509
+ export declare interface TivioAuth {
1510
+ /**
1511
+ * @param email
1512
+ * @param password
1513
+ */
1514
+ createUserWithEmailAndPassword: CreateUserWithEmailAndPassword;
1515
+ /**
1516
+ * Sign in the user and starts listening on his purchases
1517
+ * @param email
1518
+ * @param password
1519
+ */
1520
+ signInWithEmailAndPassword: (email: string, password: string) => Promise<string | null>;
1521
+ signOut: () => Promise<void>;
1522
+ /**
1523
+ * Used for reset forgotten password by user
1524
+ */
1525
+ resetPassword: (email: string) => Promise<void>;
1526
+ }
1527
+
1528
+ /**
1529
+ * @public
1530
+ */
1531
+ export declare type TivioBundle = TivioReactBundle;
1532
+
1533
+ /**
1534
+ * @public
1535
+ */
1536
+ export declare type TivioBundleFile = {
1537
+ Tivio: TivioBundle;
1538
+ };
1539
+
1540
+ /**
1541
+ * @public
1542
+ */
1543
+ export declare type TivioComponents = {
1544
+ Markers: React_2.ReactNode;
1545
+ PlayerDataContext: React_2.ReactNode;
1546
+ Provider: React_2.ComponentType<RemoteProviderProps>;
1547
+ WebPlayer: React_2.ComponentType<WebPlayerProps>;
1548
+ Widget: React_2.ComponentType<TivioWidgetProps>;
1549
+ PlayerDataContextProvider: React_2.ComponentType<{
1550
+ id: string;
1551
+ }>;
1552
+ SkipButtonTv: React_2.ComponentType<{
1553
+ Button: React_2.ComponentType;
1554
+ Label: React_2.ComponentType;
1555
+ Container: React_2.ComponentType;
1556
+ onStarted?: () => any;
1557
+ onEnded?: () => any;
1558
+ }>;
1559
+ TvApp: React_2.ComponentType<TvAppProps>;
1560
+ FeatureSupportCheck: React_2.ComponentType<{}>;
1561
+ CustomerScreen: React_2.ComponentType<{
1562
+ screenId: string;
1563
+ }>;
1564
+ WebTagScreen: React_2.ComponentType<{
1565
+ tagId: string;
1566
+ onError?: (error: Error) => void;
1567
+ }>;
1568
+ WebSearchScreen: React_2.ComponentType<{
1569
+ searchQuery?: string;
1570
+ }>;
1571
+ WebRow: React_2.ComponentType<WebRowProps>;
1572
+ WebTile: React_2.ComponentType<{
1573
+ item?: ItemsInRow;
1574
+ } & TilePropsPartial>;
1575
+ AdIndicationButtonWeb: React_2.ReactNode;
1576
+ Recommendation: React_2.ReactNode;
1577
+ SkipButtonWeb: React_2.ReactNode;
1578
+ TvPlayer: React_2.ComponentType<WebPlayerProps>;
1579
+ };
1580
+
1581
+ /**
1582
+ * @public
1583
+ */
1584
+ export declare interface TivioConfig {
1585
+ /**
1586
+ * Tells Tivio which technologies/protocols etc. is the device capable to play.
1587
+ * If not provided, Tivio will try to guess it (based on the browser).
1588
+ */
1589
+ deviceCapabilities?: PlayerCapability[];
1590
+ /**
1591
+ * Additional options for deviceCapabilities
1592
+ */
1593
+ capabilitiesOptions?: {
1594
+ /**
1595
+ * Should the player prefer HTTP sources instead HTTPs if they are available.
1596
+ * This can be used on platforms that support mixed content but do not support
1597
+ * specific HTTPS certificates. (e.g. certificates from Letsencrypt not supported on LG TVs)
1598
+ */
1599
+ preferHttp?: boolean;
1600
+ };
1601
+ secret: string;
1602
+ language: LangCode;
1603
+ debug?: boolean;
1604
+ verbose?: boolean;
1605
+ firebaseApp?: any;
1606
+ currency: Currency;
1607
+ /**
1608
+ * Configuration for GDPR consent collection (CMP)
1609
+ */
1610
+ cmp?: CmpConfig;
1611
+ /**
1612
+ * Device information - model, os, version, etc. This is useful for devices
1613
+ * where this information cannot be reliably auto-detected.
1614
+ */
1615
+ deviceInfo?: DeviceInfo;
1616
+ player?: PlayerConfig;
1617
+ }
1618
+
1619
+ /**
1620
+ * @public
1621
+ */
1622
+ export declare const TivioContext: React_2.Context<RemoteBundleState | null>;
1623
+
1624
+ /**
1625
+ * @public
1626
+ */
1627
+ export declare type TivioGetters = {
1628
+ isTivioLoaded: (cb: (isLoaded: boolean) => void) => void;
1629
+ isSignedIn: () => boolean;
1630
+ /**
1631
+ * Get (or create) player wrapper instance
1632
+ * @param opt - player getter options
1633
+ * @returns {PlayerWrapper} player wrapper instance
1634
+ */
1635
+ getPlayerWrapper: (opt: {
1636
+ playerWrapperId?: string;
1637
+ }) => any;
1638
+ getOrganizationSubscriptions: () => Promise<Monetization[] | undefined>;
1639
+ /**
1640
+ * Get video by its id.
1641
+ * @param videoId - video id
1642
+ * @returns {Promise<Video | null>} video or null if video does not exists
1643
+ */
1644
+ getVideoById: (videoId: string) => Promise<Video | null>;
1645
+ /**
1646
+ * Get player capabilities based on user's browser and OS as resolved by Tivio.
1647
+ * @returns PlayerCapability[]
1648
+ */
1649
+ getPlayerCapabilities: () => PlayerCapability[];
1650
+ };
1651
+
1652
+ /**
1653
+ * @public
1654
+ */
1655
+ export declare type TivioHooks = {
1656
+ useAd: () => [(AdSource | null)];
1657
+ useAdSegment: () => AdSegment | null;
1658
+ useCancelSubscription: UseCancelSubscription;
1659
+ useItemsInRow: (rowId: string, options: PaginationOptions) => {
1660
+ pagination: PaginationInterface<ItemsInRow> | null;
1661
+ error: Error | null;
1662
+ };
1663
+ usePurchaseRecovery: () => {
1664
+ purchaseRecoveryResult?: string;
1665
+ loading: boolean;
1666
+ error?: GenericOnCallError;
1667
+ purchaseRecovery: (monetizationId: string) => void;
1668
+ };
1669
+ useTransactionPayment: (videoId: string, monetizationId: string, voucher?: NewVoucher) => QerkoTransaction;
1670
+ usePurchaseSubscription: (monetizationId: string, voucher?: NewVoucher) => QerkoTransaction;
1671
+ useRowsInScreen: (screenId: string, options: PaginationOptions) => {
1672
+ pagination: PaginationInterface<Row> | null;
1673
+ error: Error | null;
1674
+ };
1675
+ useTaggedVideos: (tagIds: string[], options: SubscribeToItemsInRowOptions) => {
1676
+ pagination: PaginationInterface<Video> | null;
1677
+ error: Error | null;
1678
+ };
1679
+ useSearch: UseSearch;
1680
+ useVideo: (videoId: string) => {
1681
+ data: Video | null;
1682
+ error: string | null;
1683
+ };
1684
+ useVoucher: (voucherId: string) => any;
1685
+ useWatchWithoutAdsOffer: () => {
1686
+ canPurchaseWatchWithoutAds: boolean;
1687
+ showPurchaseDialog: () => void;
1688
+ };
1689
+ useApplyInviteCode: () => {
1690
+ applyInviteCodeResult?: boolean;
1691
+ loading: boolean;
1692
+ error?: GenericOnCallError;
1693
+ applyInviteCode: (code: string) => void;
1694
+ inviteCodeReset: () => void;
1695
+ };
1696
+ };
1697
+
1698
+ /**
1699
+ * @public
1700
+ */
1701
+ export declare type TivioInternalBundle = {
1702
+ components: TivioInternalComponents;
1703
+ hooks: TivioInternalHooks;
1704
+ providers: TivioInternalProviders;
1705
+ };
1706
+
1707
+ /**
1708
+ * @public
1709
+ */
1710
+ export declare type TivioInternalComponents = {
1711
+ PrimaryButton: React_2.ComponentType;
1712
+ WebLandingScreen: React_2.ComponentType<{
1713
+ logo?: string;
1714
+ }>;
1715
+ WebVideoScreen: React_2.ComponentType<{
1716
+ videoId: string;
1717
+ }>;
1718
+ WebSeriesDetailScreen: React_2.ComponentType<WebSeriesDetailScreenProps>;
1719
+ };
1720
+
1721
+ /**
1722
+ * @public
1723
+ */
1724
+ export declare type TivioInternalHooks = {
1725
+ useAuthOverlay: () => AuthOverlayState;
1726
+ useSubscriptionsOverlay: () => SubscriptionOverlayState;
1727
+ useQerkoOverlay: () => QerkoOverlayState;
1728
+ usePurchasesWithVideos: () => {
1729
+ purchases: Purchase[];
1730
+ };
1731
+ useOrganizationSubscriptions: () => {
1732
+ subscriptions: Monetization[];
1733
+ };
1734
+ useIsMonetizationPurchased: () => {
1735
+ isOneOfSubscriptionPurchased: (subscriptionIds: string[]) => boolean;
1736
+ };
1737
+ useReferralInfo: any;
1738
+ useTvChannel: UseTvChannel;
1739
+ useChannelSource: UseChannelSource;
1740
+ useUser: () => {
1741
+ user: User | null;
1742
+ error: string | null;
1743
+ isInitialized: boolean;
1744
+ };
1745
+ };
1746
+
1747
+ /**
1748
+ * @public
1749
+ */
1750
+ export declare type TivioInternalProviders = {
1751
+ AppThemeProvider: React_2.ComponentType;
1752
+ AuthOverlayContextProvider: React_2.ComponentType;
1753
+ CustomerProvider: React_2.ComponentType<{
1754
+ customer: CUSTOMER_BUILD;
1755
+ platform: PLATFORM;
1756
+ children: any;
1757
+ }>;
1758
+ ConfigProvider: React_2.ComponentType;
1759
+ UserContextProvider: React_2.ComponentType;
1760
+ SubscriptionOverlayContextProvider: React_2.ComponentType;
1761
+ QerkoOverlayContextProvider: React_2.ComponentType;
1762
+ PurchasesWithVideosContextProvider: React_2.ComponentType;
1763
+ OrganizationSubscriptionsContextProvider: React_2.ComponentType;
1764
+ RouterOverridesContextProvider: React_2.ComponentType<RouterOverridesContextState>;
1765
+ };
1766
+
1767
+ /**
1768
+ * @public
1769
+ */
1770
+ export declare const TivioProvider: React_2.FC<TivioProviderProps>;
1771
+
1772
+ /**
1773
+ * @public
1774
+ */
1775
+ export declare type TivioProviderProps = {
1776
+ /**
1777
+ * This prop must be set only once and not change value afterwards
1778
+ */
1779
+ conf: SdkReactConfig | undefined | null;
1780
+ children: React_2.ReactNode;
1781
+ };
1782
+
1783
+ /**
1784
+ * @public
1785
+ */
1786
+ export declare type TivioReactBundle = {
1787
+ init: (config: TivioConfig) => void | Promise<void>;
1788
+ components: TivioComponents;
1789
+ getters: TivioGetters;
1790
+ auth: TivioAuth;
1791
+ hooks: TivioHooks;
1792
+ sources: TivioSources;
1793
+ subscriptions: TivioSubscriptions;
1794
+ purchaseVideoWithQerko: (videoId: string, monetizationId: string, voucher?: {
1795
+ expirationDate: Date;
1796
+ }) => Promise<QerkoPaymentInfo>;
1797
+ purchaseSubscriptionWithQerko: (monetizationId: string, voucher?: {
1798
+ expirationDate: Date;
1799
+ }) => Promise<QerkoPaymentInfo>;
1800
+ cancelSubscriptionWithQerko: (subscriptionId: string) => Promise<QerkoCancellationInfo>;
1801
+ /**
1802
+ * Set tivio language.
1803
+ * @param language
1804
+ */
1805
+ setLanguage: (language: LangCode) => void;
1806
+ setUser: (userId: string | null, userPayload?: UserPayload) => Promise<void>;
1807
+ showConsentPreferences: () => void;
1808
+ /**
1809
+ * Contains hooks and providers for internal usages.
1810
+ * They used in our apps, e.g. web, or in sdk-react (e.g. some sdk hooks are just wrappers for core-react-dom hooks)
1811
+ * TODO should not be the part of public API
1812
+ */
1813
+ internal: TivioInternalBundle;
1814
+ destroy: () => Promise<void>;
1815
+ };
1816
+
1817
+ /**
1818
+ * @public
1819
+ */
1820
+ export declare type TivioSources = {
1821
+ AdSource: any;
1822
+ ChannelSource: any;
1823
+ VodExternalSource: any;
1824
+ VodTivioSource: any;
1825
+ };
1826
+
1827
+ /**
1828
+ * @public
1829
+ */
1830
+ export declare type TivioSubscriptions = {
1831
+ subscribeToUser: (cb: (error: string | null, user: User | null) => void) => void;
1832
+ /**
1833
+ * Listen to video changes.
1834
+ * @param videoId - video id
1835
+ * @param cb - callback on video updates or on error
1836
+ */
1837
+ subscribeToVideo: (videoId: string, cb: (error: Error | null, data: Video | null, disposer?: Disposer_2) => void) => void;
1838
+ subscribeToItemsInRow: SubscribeToItemsInRow;
1839
+ subscribeToRowsInScreen: SubscribeToRowsInScreen;
1840
+ subscribeToTaggedVideos: SubscribeToTaggedVideos;
1841
+ registerOverlayCallbacks: (callbacks: {
1842
+ onShow: () => void;
1843
+ onHide: () => void;
1844
+ }) => void;
1845
+ };
1846
+
1847
+ /**
1848
+ * @public
1849
+ */
1850
+ export declare const TivioWidget: React_2.ForwardRefExoticComponent<Pick<TivioWidgetProps, "id" | "onEnabled" | "onBlur"> & React_2.RefAttributes<TivioWidgetRef>>;
1851
+
1852
+ /**
1853
+ * @public
1854
+ */
1855
+ export declare const TivioWidgetError: React_2.FC<TivioWidgetErrorProps>;
1856
+
1857
+ declare type TivioWidgetErrorProps = {
1858
+ error: string | null;
1859
+ };
1860
+
1861
+ /**
1862
+ * @public
1863
+ */
1864
+ export declare const TivioWidgetLoader: React_2.FC;
1865
+
1866
+ /**
1867
+ * @public
1868
+ */
1869
+ export declare interface TivioWidgetProps {
1870
+ id: string;
1871
+ ref: React_2.MutableRefObject<TivioWidgetRef>;
1872
+ onEnabled?: (enabled: boolean) => any;
1873
+ onBlur?: (event: {
1874
+ key: string;
1875
+ width: number;
1876
+ x: number;
1877
+ }) => any;
1878
+ }
1879
+
1880
+ /**
1881
+ * @public
1882
+ */
1883
+ export declare interface TivioWidgetRef {
1884
+ focus: (args: {
1885
+ x?: number;
1886
+ }) => void;
1887
+ handleKey: (key: string) => ({
1888
+ handled: boolean;
1889
+ x: number;
1890
+ });
1891
+ unfocus: () => ({
1892
+ x: number;
1893
+ });
1894
+ }
1895
+
1896
+ /**
1897
+ * @public
1898
+ */
1899
+ export declare type TizenDeviceInfo = {
1900
+ type: 'tizen';
1901
+ model?: string;
1902
+ osVersion?: string;
1903
+ };
1904
+
1905
+ declare type TransactionInfo = {
1906
+ type: 'transaction';
1907
+ name: string;
1908
+ videoId: string;
1909
+ cover: string;
1910
+ description: string;
1911
+ };
1912
+
1913
+ /**
1914
+ * Represents one string in every supported language mutation.
1915
+ * @public
1916
+ */
1917
+ export declare type Translation = {
1918
+ [key in LangCode]: string;
1919
+ };
1920
+
1921
+ /**
1922
+ * @public
1923
+ */
1924
+ export declare type TvAppProps = {
1925
+ customer: CUSTOMER_BUILD;
1926
+ };
1927
+
1928
+ /**
1929
+ * @public
1930
+ */
1931
+ export declare interface TvChannel extends RowItem {
1932
+ name: string;
1933
+ id: string;
1934
+ path: string;
1935
+ itemType: ROW_ITEM_TYPES;
1936
+ country?: string;
1937
+ filters: string[];
1938
+ logo?: string;
1939
+ hls: string;
1940
+ dash: string;
1941
+ purchasableMonetization: any | null;
1942
+ price: number;
1943
+ }
1944
+
1945
+ /**
1946
+ * @public
1947
+ */
1948
+ export declare const TvTivioProvider: React_2.FC<TivioProviderProps>;
1949
+
1950
+ /**
1951
+ * @public
1952
+ */
1953
+ export declare const useAd: () => AdSource | null;
1954
+
1955
+ /**
1956
+ * @public
1957
+ */
1958
+ export declare const useAdSegment: () => {
1959
+ id: string;
1960
+ remainingMs: number;
1961
+ secondsToEnd: number;
1962
+ secondsToSkippable: number | null;
1963
+ canSeek: boolean;
1964
+ canSkip: boolean;
1965
+ isSkippable: boolean;
1966
+ skip: () => any;
1967
+ } | null;
1968
+
1969
+ /**
1970
+ * Is used to login user through different device in which user is already logged in.
1971
+ * (e.g. login in tv app through web app)
1972
+ *
1973
+ * @return applyInviteCodeResult - true if code was applied successfully, false otherwise.
1974
+ * loading - loading state
1975
+ * error - error in case request failure
1976
+ * applyInviteCode - function to apply invite code
1977
+ * inviteCodeReset - function to reset to initial state
1978
+ * @public
1979
+ */
1980
+ export declare function useApplyInviteCode(): {
1981
+ applyInviteCodeResult?: boolean | undefined;
1982
+ loading: boolean;
1983
+ error?: GenericOnCallError | undefined;
1984
+ applyInviteCode: (code: string) => void;
1985
+ inviteCodeReset: () => void;
1986
+ };
1987
+
1988
+ /**
1989
+ * @public
1990
+ */
1991
+ export declare const useBetOffer: () => BetOffer | null;
1992
+
1993
+ /**
1994
+ * @public
1995
+ */
1996
+ export declare type UseCancelSubscription = (subscriptionId: string) => {
1997
+ cancelSubscription: () => Promise<void>;
1998
+ cancellationInfo: QerkoCancellationInfo | null;
1999
+ error?: string | null;
2000
+ };
2001
+
2002
+ /**
2003
+ * @public
2004
+ */
2005
+ export declare const useCancelSubscription: UseCancelSubscription;
2006
+
2007
+ /**
2008
+ * @public
2009
+ */
2010
+ export declare type UseChannelSource = (tvChannelId: string) => {
2011
+ source: ChannelSourcePojo | null;
2012
+ error: Error | null;
2013
+ };
2014
+
2015
+ /**
2016
+ * @public
2017
+ */
2018
+ export declare const useCurrentMarker: () => Marker | null;
2019
+
2020
+ /**
2021
+ * @public
2022
+ */
2023
+ export declare const useIntro: () => IntroMarker | null;
2024
+
2025
+ /**
2026
+ * @public
2027
+ */
2028
+ export declare const useIsLoaded: () => {
2029
+ isTivioLoaded: boolean;
2030
+ };
2031
+
2032
+ /**
2033
+ * @public
2034
+ */
2035
+ export declare const useIsMonetizationPurchased: () => {
2036
+ isOneOfSubscriptionPurchased: (subscriptionIds: string[]) => boolean;
2037
+ };
2038
+
2039
+ /**
2040
+ * Use row items
2041
+ * @param rowId - row ID
2042
+ * @param options - subscription options
2043
+ * @public
2044
+ */
2045
+ export declare const useItemsInRow: (rowId: string, options?: SubscribeToItemsInRowOptions) => {
2046
+ pagination: PaginationInterface<ItemsInRow> | null;
2047
+ error: Error | null;
2048
+ };
2049
+
2050
+ /**
2051
+ * @public
2052
+ */
2053
+ export declare const useMarkers: () => Marker[] | null;
2054
+
2055
+ /**
2056
+ * @public
2057
+ */
2058
+ export declare const useOrganizationSubscriptions: () => {
2059
+ subscriptions: Monetization[];
2060
+ };
2061
+
2062
+ /**
2063
+ * @public
2064
+ */
2065
+ export declare type UsePlayerEvent = <T = any>(eventName: string) => T | null;
2066
+
2067
+ /**
2068
+ * @public
2069
+ */
2070
+ export declare const usePlayerEvent: UsePlayerEvent;
2071
+
2072
+ /**
2073
+ * Is used to mark purchase in recovery state as PAID.
2074
+ *
2075
+ * @return purchaseRecoveryResult - message describing result of the recovery
2076
+ * loading - loading state
2077
+ * error - error in case request failure
2078
+ * purchaseRecovery - functions to execute purchase recovery
2079
+ * @public
2080
+ */
2081
+ export declare function usePurchaseRecovery(): {
2082
+ purchaseRecoveryResult?: string | undefined;
2083
+ loading: boolean;
2084
+ error?: GenericOnCallError | undefined;
2085
+ purchaseRecovery: (monetizationId: string) => void;
2086
+ };
2087
+
2088
+ /**
2089
+ * @public
2090
+ */
2091
+ export declare const usePurchaseSubscription: (monetizationId: string, voucher?: NewVoucher | undefined) => QerkoTransaction;
2092
+
2093
+ /**
2094
+ * Return purchases with initialized video (purchases[i].video not null)
2095
+ * @public
2096
+ */
2097
+ export declare const usePurchasesWithVideos: () => {
2098
+ purchases: Purchase[];
2099
+ };
2100
+
2101
+ /**
2102
+ * @public
2103
+ */
2104
+ export declare type User = {
2105
+ purchases: Purchase[];
2106
+ allPurchases: Purchase[];
2107
+ purchasedVods: Purchase[];
2108
+ purchasedSubscriptions: Purchase[];
2109
+ isPurchasesInitialized: boolean;
2110
+ isSignedIn: boolean;
2111
+ email?: string;
2112
+ type?: UserType;
2113
+ photoURL: string | null;
2114
+ name?: string;
2115
+ authUserId?: string;
2116
+ favorites: any[];
2117
+ watchedPositions: any[];
2118
+ };
2119
+
2120
+ /**
2121
+ * @public
2122
+ */
2123
+ export declare const useRowsInScreen: (screenId: string, options?: PaginationOptions) => {
2124
+ pagination: PaginationInterface<Row> | null;
2125
+ error: Error | null;
2126
+ };
2127
+
2128
+ /**
2129
+ * @public
2130
+ */
2131
+ export declare type UserPayload = Record<string, any>;
2132
+
2133
+ /**
2134
+ * @public
2135
+ */
2136
+ export declare enum UserType {
2137
+ ORGANIZATION_USER = "ORGANIZATION_USER",
2138
+ TIVIO_USER = "TIVIO_USER"
2139
+ }
2140
+
2141
+ /**
2142
+ * @public
2143
+ */
2144
+ export declare type UseSearch = <T extends ALGOLIA_INDEX_NAME>(indexName: T, options?: UseSearchOptions) => {
2145
+ search: (query: string) => void;
2146
+ pagination: PaginationInterface<UseSearchResult<T>> | null;
2147
+ error: Error | null;
2148
+ isLoading: boolean;
2149
+ lastQuery: string;
2150
+ };
2151
+
2152
+ /**
2153
+ * Full text search that returns entities based on search query.
2154
+ * @param indexName - index that search would be performed on ('videos', 'tags', etc.)
2155
+ * @param options - pagination options
2156
+ * @public
2157
+ */
2158
+ export declare const useSearch: UseSearch;
2159
+
2160
+ /**
2161
+ * @public
2162
+ */
2163
+ export declare type UseSearchOptions = PaginationOptions & Partial<{
2164
+ minQueryLength: number;
2165
+ }>;
2166
+
2167
+ /**
2168
+ * @public
2169
+ */
2170
+ 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;
2171
+
2172
+ /**
2173
+ * @public
2174
+ */
2175
+ export declare const useSeekState: () => boolean | null;
2176
+
2177
+ /**
2178
+ * Returns videos with given tag ids
2179
+ * @param tagIds - tag ids
2180
+ * @param options - subscription options
2181
+ * @public
2182
+ */
2183
+ export declare const useTaggedVideos: (tagIds: string[], options?: SubscribeToItemsInRowOptions) => {
2184
+ pagination: PaginationInterface<Video> | null;
2185
+ error: Error | null;
2186
+ };
2187
+
2188
+ /**
2189
+ * @public
2190
+ */
2191
+ export declare const useTivioData: () => RemoteBundleState;
2192
+
2193
+ /**
2194
+ * @public
2195
+ */
2196
+ export declare const useTivioReadyData: () => RemoteBundleState | null;
2197
+
2198
+ /**
2199
+ * @public
2200
+ */
2201
+ export declare const useTransactionPayment: (videoId: string, monetizationId: string, voucher?: NewVoucher | undefined) => QerkoTransaction;
2202
+
2203
+ /**
2204
+ * @public
2205
+ */
2206
+ export declare type UseTvChannel = (tvChannelId: string) => {
2207
+ tvChannel: TvChannel | null;
2208
+ error: Error | null;
2209
+ loading: boolean;
2210
+ };
2211
+
2212
+ /**
2213
+ * @public
2214
+ */
2215
+ export declare const useUser: () => {
2216
+ user: User | null;
2217
+ error: string | null;
2218
+ isInitialized: boolean;
2219
+ };
2220
+
2221
+ /**
2222
+ * Use video
2223
+ * @param videoId - video id
2224
+ * @public
2225
+ */
2226
+ export declare const useVideo: (videoId?: string | undefined) => {
2227
+ data: Video | null;
2228
+ error: string | null;
2229
+ };
2230
+
2231
+ /**
2232
+ * @public
2233
+ */
2234
+ export declare const useVoucher: (voucherId: string) => {
2235
+ activate: (() => Promise<void>) | null;
2236
+ voucher: Voucher | null;
2237
+ /**
2238
+ * You can check error.details if you need to know error type when you want your own error messages
2239
+ * (can be one of "DOES_NOT_EXIST", "EXPIRED" and "ALREADY_USED").
2240
+ */
2241
+ error: Error | BadRequestError | null;
2242
+ /**
2243
+ * True if voucher has been successfully activated in current session.
2244
+ */
2245
+ activationSuccess: boolean;
2246
+ };
2247
+
2248
+ /**
2249
+ * @public
2250
+ */
2251
+ export declare const useWatchWithoutAdsOffer: () => {
2252
+ canPurchaseWatchWithoutAds: boolean;
2253
+ showPurchaseDialog: () => void;
2254
+ };
2255
+
2256
+ /**
2257
+ * @public
2258
+ */
2259
+ export declare const VAST_PROVIDERS: ({
2260
+ id: VastProvider;
2261
+ name: string;
2262
+ development?: undefined;
2263
+ } | {
2264
+ id: VastProvider;
2265
+ name: string;
2266
+ development: boolean;
2267
+ })[];
2268
+
2269
+ /**
2270
+ * @public
2271
+ */
2272
+ export declare enum VastProvider {
2273
+ CNC_PREBID = "cnc-prebid",
2274
+ ETARGET_PREBID = "etarget-prebid",
2275
+ FALLBACK_HLS = "fallback-hls",
2276
+ FALLBACK_MP4 = "fallback",
2277
+ GARAZ_TV = "garaz.tv",
2278
+ GARAZ_TV_DEV = "garaz.tv.dev",
2279
+ IMPRESSION_MEDIA_PREBID = "impressionMedia-prebid",
2280
+ JOJ = "joj",
2281
+ MALL_TV = "malltv",
2282
+ MALL_TV_PREBID = "malltv-prebid",
2283
+ PRIMA = "prima",
2284
+ TEST = "test"
2285
+ }
2286
+
2287
+ /**
2288
+ * @public
2289
+ */
2290
+ export declare interface Video extends RowItem {
2291
+ id: string;
2292
+ /**
2293
+ * @deprecated use assets instead
2294
+ */
2295
+ cover: string | null;
2296
+ created: Date;
2297
+ sectionId: string | null;
2298
+ channelId: string | null;
2299
+ /**
2300
+ * seconds
2301
+ */
2302
+ duration: number;
2303
+ path: string;
2304
+ tags: Tag[];
2305
+ image: string | null;
2306
+ isPlayable: boolean;
2307
+ monetizations: Monetization[];
2308
+ monetization: Monetization | undefined;
2309
+ transactionId?: string;
2310
+ transaction: Monetization | undefined;
2311
+ subscriptions: Monetization[];
2312
+ subscriptionIds: string[];
2313
+ isPlaylist: boolean;
2314
+ name: string;
2315
+ description?: string;
2316
+ price: number | null;
2317
+ detailedPrice: DetailedPrice | null;
2318
+ uri: string;
2319
+ url: string;
2320
+ adMonetizationId?: string;
2321
+ from?: Date;
2322
+ to?: Date;
2323
+ detailBanner?: string;
2324
+ linkedVideosRaw: any[];
2325
+ linkedVideos: LinkedVideo[];
2326
+ purchasableMonetization: any | null;
2327
+ contentType: VideoContentType | null;
2328
+ year?: number;
2329
+ episodeNumber?: number;
2330
+ seasonNumber?: number;
2331
+ getTagsOfType: (type: string) => Tag[];
2332
+ loadLinkedVideos: () => any;
2333
+ getLinkedVideos: (type: any) => any;
2334
+ trailer: Video | null;
2335
+ watchPosition: number | null;
2336
+ isFavorite: boolean;
2337
+ addToFavorites: () => void;
2338
+ removeFromFavorites: () => void;
2339
+ availability: VideoAvailability | null;
2340
+ }
2341
+
2342
+ /**
2343
+ * @public
2344
+ */
2345
+ export declare type VideoAvailability = {
2346
+ from: Date;
2347
+ to: Date | null;
2348
+ manual: boolean;
2349
+ };
2350
+
2351
+ /**
2352
+ * @public
2353
+ */
2354
+ export declare enum VideoContentType {
2355
+ /**
2356
+ * Default video content type
2357
+ */
2358
+ VIDEO = "VIDEO",
2359
+ FILM = "FILM",
2360
+ SERIES = "SERIES"
2361
+ }
2362
+
2363
+ /**
2364
+ * @public
2365
+ */
2366
+ export declare interface VideoExternals {
2367
+ tvProfiProgramId?: string;
2368
+ tvProfiContentId?: string;
2369
+ tvProfiSerialId?: string;
2370
+ contentId?: string;
2371
+ provysId?: string;
2372
+ mallTvEntityId?: string;
2373
+ /**
2374
+ * DRM content Key ID - should't be more connected with buyDRM or streamOnline? It is not general thing
2375
+ */
2376
+ keyId?: string;
2377
+ }
2378
+
2379
+ declare type VideoPath = string;
2380
+
2381
+ /**
2382
+ * Video type.
2383
+ * @public
2384
+ */
2385
+ export declare enum VideoType {
2386
+ /**
2387
+ * Video is composed of several other videos.
2388
+ */
2389
+ PLAYLIST = "PLAYLIST",
2390
+ /**
2391
+ * Video is a standard single video.
2392
+ */
2393
+ VIDEO = "VIDEO",
2394
+ TV_PROGRAM = "TV_PROGRAM"
2395
+ }
2396
+
2397
+ /**
2398
+ * @public
2399
+ */
2400
+ export declare type VodExternalSource = {
2401
+ new (uri: string, monetizationId: string, name: string, description: string, originalOptions: Record<string, any>): VodTivioSource;
2402
+ type: 'vod_external';
2403
+ description: string;
2404
+ name: string;
2405
+ uri: string;
2406
+ };
2407
+
2408
+ /**
2409
+ * @public
2410
+ */
2411
+ export declare type VodTivioSource = {
2412
+ new (uri: string, videoId: string, name: string, description: string, adMonetizationId?: string): VodTivioSource;
2413
+ type: 'vod_tivio';
2414
+ description: string;
2415
+ name: string;
2416
+ uri: string;
2417
+ };
2418
+
2419
+ declare interface VodTivioSourcePojo {
2420
+ type: 'VodTivioSource';
2421
+ description: string;
2422
+ path: string;
2423
+ name: string;
2424
+ uri: string;
2425
+ poster?: string;
2426
+ adMonetizationId?: string;
2427
+ availability: VideoAvailability | null;
2428
+ }
2429
+
2430
+ /**
2431
+ * TODO: Should be in core-js, we can't import types from it, though.
2432
+ */
2433
+ declare type Voucher = {
2434
+ activate: () => void;
2435
+ isUsed: boolean;
2436
+ isExpired: boolean;
2437
+ status: 'NEW' | 'USED';
2438
+ voucherInfo: SubscriptionInfo | TransactionInfo;
2439
+ };
2440
+
2441
+ /**
2442
+ * @public
2443
+ */
2444
+ export declare type WebosDeviceInfo = {
2445
+ type: 'webos';
2446
+ model?: string;
2447
+ osVersion?: string;
2448
+ };
2449
+
2450
+ /**
2451
+ * @public
2452
+ */
2453
+ export declare interface WebPlayerProps {
2454
+ id: string;
2455
+ source?: VodTivioSourcePojo | ChannelSourcePojo | VideoPath | null;
2456
+ onEnded?: () => any;
2457
+ /**
2458
+ * If this function is specified, then "Back" button is shown in top right corner.
2459
+ */
2460
+ onBack?: () => void;
2461
+ className?: string;
2462
+ /**
2463
+ * default false
2464
+ *
2465
+ * If you choose `autoplay` make sure that autoplay is allowed in the specific situation.
2466
+ * In some cases it may not be allowed, e.g. before the user interacted with the site, and the video
2467
+ * will stay paused.
2468
+ *
2469
+ * Source: https://developer.mozilla.org/en-US/docs/Web/Media/Autoplay_guide
2470
+ */
2471
+ autoplay?: boolean;
2472
+ /**
2473
+ * default false
2474
+ */
2475
+ canReplay?: boolean;
2476
+ /**
2477
+ * default false
2478
+ */
2479
+ showMarkers?: boolean;
2480
+ /**
2481
+ * number[] is array of keyboard event.which numeric codes
2482
+ * (see https://keycode.info/)
2483
+ */
2484
+ customShortcuts?: Partial<{
2485
+ toggleFullscreen: number[];
2486
+ togglePause: number[];
2487
+ toggleMute: number[];
2488
+ jumpForward: number[];
2489
+ jumpBack: number[];
2490
+ volumeUp: number[];
2491
+ volumeDown: number[];
2492
+ }>;
2493
+ /**
2494
+ * default true
2495
+ */
2496
+ enableKeyboardShortcuts?: boolean;
2497
+ onProgress?: (event: React_2.ChangeEvent<HTMLVideoElement>) => void;
2498
+ /**
2499
+ * @deprecated this callback is never called. Will be removed in @tivio/sdk-react version 4
2500
+ */
2501
+ onPlayerControllerCreated?: (playerController: any) => void;
2502
+ }
2503
+
2504
+ /**
2505
+ * @public
2506
+ */
2507
+ export declare type WebRowProps = {
2508
+ items?: ItemsInRow[];
2509
+ variant?: RowItemComponent;
2510
+ rowName?: string | any;
2511
+ fetchMore?: () => void;
2512
+ onTileClick?: (item: ItemsInRow) => void;
2513
+ };
2514
+
2515
+ /**
2516
+ * @public
2517
+ */
2518
+ export declare type WebSeriesDetailScreenProps = {
2519
+ tagId: string;
2520
+ };
2521
+
2522
+ /**
2523
+ * @public
2524
+ */
2525
+ export declare interface WhereFilter {
2526
+ field: string;
2527
+ operator: WhereFilterOp;
2528
+ value: any;
2529
+ }
2530
+
2531
+ declare type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
2532
+
2533
+ /**
2534
+ * @public
2535
+ */
2536
+ export declare type Widget = {
2537
+ id: string;
2538
+ channels: Channel[];
2539
+ isEnabled: boolean | null;
2540
+ name: string | null;
2541
+ recentVideos: Video[] | null;
2542
+ widgetId: string | null;
2543
+ lastVideo: Video | null;
2544
+ };
2545
+
2546
+ /**
2547
+ * @public
2548
+ */
2549
+ export declare function withPlayerContext(id: string): <P>(WrappedComponent: React_2.ComponentType<P>) => (props: P) => JSX.Element;
2550
+
2551
+ export { }