@tivio/sdk-js 2.3.2 → 2.3.3-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/dist/index.d.ts +2359 -7
- package/dist/index.js +1 -1
- package/dist/index.js.LICENSE.txt +1457 -6
- package/dist/sdk-js.d.ts +2367 -0
- package/package.json +18 -22
- package/scripts/typesRollup.ts +28 -0
- package/dist/api.types.d.ts +0 -303
- package/dist/conf.d.ts +0 -59
- package/dist/conf.test.d.ts +0 -1
- package/dist/customPlayer.types.d.ts +0 -36
- package/dist/services/bundleLoader.d.ts +0 -29
- package/dist/services/bundleLoader.test.d.ts +0 -1
- package/dist/services/dependencyResolver.d.ts +0 -12
- package/dist/services/dependencyResolver.test.d.ts +0 -1
- package/dist/services/getProgramTimestamps.d.ts +0 -6
- package/dist/services/logger.d.ts +0 -28
- package/dist/services/logger.test.d.ts +0 -1
- package/dist/services/packageLoader.d.ts +0 -6
- package/dist/services/packageLoader.test.d.ts +0 -1
- package/dist/services/playerWrapper.d.ts +0 -28
- package/dist/services/playerWrapperInternal.d.ts +0 -28
- package/dist/services/settings.d.ts +0 -17
- package/dist/services/settings.test.d.ts +0 -1
- package/dist/setupTests.d.ts +0 -20
- package/dist/types.d.ts +0 -12
package/dist/index.d.ts
CHANGED
@@ -1,7 +1,2359 @@
|
|
1
|
-
import '
|
2
|
-
import '
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
import { DocumentReference } from '@firebase/firestore-types';
|
2
|
+
import firebase from '@firebase/app-types';
|
3
|
+
|
4
|
+
/**
|
5
|
+
* @public
|
6
|
+
*/
|
7
|
+
declare type AdMetadata = {
|
8
|
+
type: 'ad';
|
9
|
+
subType: 'inserted' | 'original';
|
10
|
+
secondsToEnd: number;
|
11
|
+
/**
|
12
|
+
* null when ad is not skippable
|
13
|
+
*/
|
14
|
+
secondsToSkippable: number | null;
|
15
|
+
canTriggerSkip: boolean;
|
16
|
+
isSkippable: boolean;
|
17
|
+
order: number | null;
|
18
|
+
totalCount: number | null;
|
19
|
+
skip: () => void;
|
20
|
+
} | null;
|
21
|
+
|
22
|
+
declare interface AdSegment {
|
23
|
+
id: string;
|
24
|
+
/**
|
25
|
+
* @deprecated alias to secondsToEnd * 1000
|
26
|
+
*/
|
27
|
+
remainingMs: number;
|
28
|
+
secondsToEnd: number;
|
29
|
+
secondsToSkippable: number | null;
|
30
|
+
canSeek: boolean;
|
31
|
+
/**
|
32
|
+
* true if is skippable and skip countdown has passed
|
33
|
+
*/
|
34
|
+
canSkip: boolean;
|
35
|
+
/**
|
36
|
+
* true ad if is skippable after some skipDelayMs (if it is skippable, skipDelayMs is defined)
|
37
|
+
*/
|
38
|
+
isSkippable: boolean;
|
39
|
+
skip: () => any;
|
40
|
+
}
|
41
|
+
|
42
|
+
/**
|
43
|
+
* @public
|
44
|
+
*/
|
45
|
+
declare type AdSource = SourceBase & {
|
46
|
+
type: 'ad';
|
47
|
+
};
|
48
|
+
|
49
|
+
/**
|
50
|
+
* @public
|
51
|
+
*/
|
52
|
+
declare interface AdSourceInterface extends CommonSourceInterface<SourceType.ADVERTISEMENT> {
|
53
|
+
adType: AdType;
|
54
|
+
durationMs: number;
|
55
|
+
skipDelayMs: number | null;
|
56
|
+
/**
|
57
|
+
* true if is skippable and skip countdown has passed
|
58
|
+
*/
|
59
|
+
canSkip: boolean;
|
60
|
+
/**
|
61
|
+
* true ad if is skippable after some skipDelayMs (if it is skippable, skipDelayMs is defined)
|
62
|
+
*/
|
63
|
+
isSkippable: boolean;
|
64
|
+
isSkipped: boolean;
|
65
|
+
isPaused: boolean;
|
66
|
+
isMuted: boolean;
|
67
|
+
setIsPaused(isPaused: boolean): void;
|
68
|
+
/**
|
69
|
+
* Skip ad. Only works when canSkip is true
|
70
|
+
*/
|
71
|
+
skip: () => void;
|
72
|
+
/**
|
73
|
+
* Order in ad break (ad break is a group of ads played right after each other)
|
74
|
+
*/
|
75
|
+
order: number | null;
|
76
|
+
/**
|
77
|
+
* Total number of ads in ad break (ad break is a group of ads played right after each other)
|
78
|
+
*/
|
79
|
+
totalCount: number | null;
|
80
|
+
secondsToEnd: number;
|
81
|
+
secondsToSkippable: number | null;
|
82
|
+
provider?: VastProvider;
|
83
|
+
apiFramework: VastApiFramework | null;
|
84
|
+
parent: PlayerSourceInterface | null;
|
85
|
+
trackingContext: any | null;
|
86
|
+
resumeAd(): void;
|
87
|
+
pauseAd(): void;
|
88
|
+
muteAd(): void;
|
89
|
+
unmuteAd(): void;
|
90
|
+
skipAll(): void;
|
91
|
+
onRemainingTimeChanged(ms: number): void;
|
92
|
+
click(): void;
|
93
|
+
}
|
94
|
+
|
95
|
+
/**
|
96
|
+
* @public
|
97
|
+
*/
|
98
|
+
declare type AdType = 'playable' | 'metadata-only';
|
99
|
+
|
100
|
+
/**
|
101
|
+
* @public
|
102
|
+
*/
|
103
|
+
declare interface Advertisement extends RowItem {
|
104
|
+
id: string;
|
105
|
+
itemType: ROW_ITEM_TYPES.ADVERTISEMENT;
|
106
|
+
type?: string | null;
|
107
|
+
}
|
108
|
+
|
109
|
+
export declare type Api = RemoteBundleState;
|
110
|
+
|
111
|
+
/**
|
112
|
+
* @public
|
113
|
+
*/
|
114
|
+
declare interface Application extends RowItem {
|
115
|
+
id: string;
|
116
|
+
organizationId?: string;
|
117
|
+
itemType: ROW_ITEM_TYPES.APPLICATION;
|
118
|
+
name: string;
|
119
|
+
type: ApplicationType;
|
120
|
+
urlHandle: string;
|
121
|
+
applicationScreens: ApplicationScreenConfig[] | null;
|
122
|
+
screenConfigs: ScreenConfig[] | null;
|
123
|
+
logo: string | null;
|
124
|
+
cover: string | null;
|
125
|
+
videosCount: number | null;
|
126
|
+
organization?: Organization;
|
127
|
+
isEnabled: boolean;
|
128
|
+
}
|
129
|
+
|
130
|
+
/**
|
131
|
+
* @public
|
132
|
+
*/
|
133
|
+
declare interface ApplicationScreenConfig {
|
134
|
+
name: Translation;
|
135
|
+
order: number;
|
136
|
+
path: string;
|
137
|
+
screenConfig: ScreenConfig | null;
|
138
|
+
}
|
139
|
+
|
140
|
+
declare enum ApplicationType {
|
141
|
+
TIVIO_PRO = "TIVIO_PRO",
|
142
|
+
ORGANIZATION = "ORGANIZATION"
|
143
|
+
}
|
144
|
+
|
145
|
+
/**
|
146
|
+
* @public
|
147
|
+
*/
|
148
|
+
declare type ArrisDeviceInfo = {
|
149
|
+
type: 'arris';
|
150
|
+
model?: 'VIP1003' | 'VIP1113' | 'VIP5305';
|
151
|
+
};
|
152
|
+
|
153
|
+
/**
|
154
|
+
* @public
|
155
|
+
*/
|
156
|
+
declare interface Article extends RowItem, MonetizableItem, ReactableContent {
|
157
|
+
id: string;
|
158
|
+
itemType: ROW_ITEM_TYPES.ARTICLE;
|
159
|
+
blocks: ArticleBlock[];
|
160
|
+
cover: string;
|
161
|
+
organizationId?: string;
|
162
|
+
}
|
163
|
+
|
164
|
+
/**
|
165
|
+
* @public
|
166
|
+
*/
|
167
|
+
declare interface ArticleBlock {
|
168
|
+
id: string;
|
169
|
+
type: ArticleBlockType;
|
170
|
+
htmlContent?: string;
|
171
|
+
imageUrl?: string;
|
172
|
+
textContent?: string;
|
173
|
+
videoId?: string;
|
174
|
+
}
|
175
|
+
|
176
|
+
/**
|
177
|
+
* @public
|
178
|
+
*/
|
179
|
+
declare type ArticleBlockType = 'PARAGRAPH' | 'IMAGE' | 'VIDEO' | 'HEADING' | 'PAYWALL';
|
180
|
+
|
181
|
+
/**
|
182
|
+
* @public
|
183
|
+
*/
|
184
|
+
declare interface Asset {
|
185
|
+
background: string;
|
186
|
+
}
|
187
|
+
|
188
|
+
/**
|
189
|
+
* @public
|
190
|
+
*/
|
191
|
+
declare interface AssetsField<TAsset extends ScalableAsset = ScalableAsset> {
|
192
|
+
[assetName: string]: TAsset;
|
193
|
+
}
|
194
|
+
|
195
|
+
/**
|
196
|
+
* @public
|
197
|
+
*/
|
198
|
+
declare interface AvailableSeason {
|
199
|
+
seasonNumber: number;
|
200
|
+
seasonName?: string;
|
201
|
+
}
|
202
|
+
|
203
|
+
declare interface AvailableSeasonField {
|
204
|
+
seasonNumber: number;
|
205
|
+
seasonName?: Translation;
|
206
|
+
}
|
207
|
+
|
208
|
+
declare enum BannerItemComponent {
|
209
|
+
CLASSIC = "CLASSIC",
|
210
|
+
SPLIT = "SPLIT",
|
211
|
+
BACKGROUND = "BACKGROUND",
|
212
|
+
BACKGROUND_BLUR = "BACKGROUND_BLUR",
|
213
|
+
ORGANIZATION_BANNER = "ORGANIZATION_BANNER",
|
214
|
+
CAROUSEL = "CAROUSEL"
|
215
|
+
}
|
216
|
+
|
217
|
+
/**
|
218
|
+
* @public
|
219
|
+
*/
|
220
|
+
declare interface ChannelSourceInterface extends PlayerSourceInterface<SourceType.CHANNEL> {
|
221
|
+
tvChannelType: TvChannelType;
|
222
|
+
channelName: string;
|
223
|
+
programName?: string;
|
224
|
+
programDescription?: string;
|
225
|
+
from: Date;
|
226
|
+
to: Date;
|
227
|
+
poster: string | null;
|
228
|
+
tvMode: TvMode | 'live' | null;
|
229
|
+
}
|
230
|
+
|
231
|
+
/**
|
232
|
+
* @public
|
233
|
+
*/
|
234
|
+
declare interface ChannelSourceParams extends PlayerSourceParams<SourceType.CHANNEL> {
|
235
|
+
tvChannelType: TvChannelType;
|
236
|
+
channelName: string;
|
237
|
+
programName?: string;
|
238
|
+
programDescription?: string;
|
239
|
+
from: Date;
|
240
|
+
to: Date;
|
241
|
+
tvMode?: TvMode | 'live' | null;
|
242
|
+
}
|
243
|
+
|
244
|
+
/**
|
245
|
+
* @public
|
246
|
+
*/
|
247
|
+
declare type CmpConfig = 'default' | 'debug' | 'none';
|
248
|
+
|
249
|
+
/**
|
250
|
+
* TODO same name as core-js entity, not convenient
|
251
|
+
* @public
|
252
|
+
*/
|
253
|
+
declare type CommonSource = PlayerSource | AdSourceInterface;
|
254
|
+
|
255
|
+
/**
|
256
|
+
* Use this interface only for inheritance. Otherwise use {@link CommonSource}
|
257
|
+
* @public
|
258
|
+
*/
|
259
|
+
declare interface CommonSourceInterface<T extends SourceType = SourceType> {
|
260
|
+
type: T;
|
261
|
+
url: string;
|
262
|
+
name?: string;
|
263
|
+
description?: string;
|
264
|
+
currentTime: number;
|
265
|
+
event: any | null;
|
266
|
+
setEvent(event: any | null): void;
|
267
|
+
onTimeChanged(ms: number): void;
|
268
|
+
next: CommonSource | null;
|
269
|
+
canSeek: boolean;
|
270
|
+
hasNext: boolean;
|
271
|
+
isFinished: boolean;
|
272
|
+
setIsFinished(isFinished: boolean): void;
|
273
|
+
isStarted: boolean;
|
274
|
+
setIsStarted(isStarted: boolean): void;
|
275
|
+
autoplay?: boolean;
|
276
|
+
autoplayMuteFallback: boolean;
|
277
|
+
toLog(): any;
|
278
|
+
}
|
279
|
+
|
280
|
+
/**
|
281
|
+
* @public
|
282
|
+
*/
|
283
|
+
declare interface CommonSourceParams<T extends SourceType = SourceType> {
|
284
|
+
type: T;
|
285
|
+
url: string;
|
286
|
+
name?: string;
|
287
|
+
description?: string;
|
288
|
+
autoplay?: boolean;
|
289
|
+
}
|
290
|
+
|
291
|
+
export declare type Conf = Pick<InternalConf, 'bundleUrlOverride' | 'capabilitiesOptions' | 'deviceCapabilities' | 'enableSentry' | 'forceCloudFnResolver' | 'language' | 'logger' | 'secret' | 'verbose'>;
|
292
|
+
|
293
|
+
/**
|
294
|
+
* @public
|
295
|
+
*/
|
296
|
+
declare interface ConsumedAds {
|
297
|
+
chapterIds: Set<string>;
|
298
|
+
markerIds: Set<string>;
|
299
|
+
postroll: boolean;
|
300
|
+
/**
|
301
|
+
* TODO refactor
|
302
|
+
* true when preroll has been loaded (not when it was watched)
|
303
|
+
*/
|
304
|
+
preroll: boolean;
|
305
|
+
}
|
306
|
+
|
307
|
+
/**
|
308
|
+
* @public
|
309
|
+
*/
|
310
|
+
declare interface ContentAvailability {
|
311
|
+
from: Date;
|
312
|
+
to: Date | null;
|
313
|
+
manual: boolean;
|
314
|
+
}
|
315
|
+
|
316
|
+
/**
|
317
|
+
* @public
|
318
|
+
*/
|
319
|
+
declare type ContinuePosition = number | null | Promise<number | null>;
|
320
|
+
|
321
|
+
/**
|
322
|
+
* @param {PlayerInterfaceForPlayerWrapper} playerImplementation - player implementation
|
323
|
+
* @returns player wrapper instance
|
324
|
+
*/
|
325
|
+
export declare const createPlayerWrapper: (playerImplementation: PlayerInterfaceForPlayerWrapper) => PlayerWrapper;
|
326
|
+
|
327
|
+
declare type CreatePlayerWrapperType = (playerImplementation: PlayerInterfaceForPlayerWrapper) => TivioPlayerWrapper;
|
328
|
+
|
329
|
+
/**
|
330
|
+
* Fetch & load CommonJS remote module.
|
331
|
+
*/
|
332
|
+
export declare const createRemotePackageLoader: () => (conf: InternalConf) => Promise<any>;
|
333
|
+
|
334
|
+
export declare const createTivio: () => (conf: Conf) => Promise<RemoteBundleState>;
|
335
|
+
|
336
|
+
/**
|
337
|
+
* @public
|
338
|
+
*/
|
339
|
+
declare type CreateUserWithEmailAndPassword = (email: string, password: string, username?: string, phoneNumber?: string, referralToken?: string) => Promise<string | null>;
|
340
|
+
|
341
|
+
/**
|
342
|
+
* Three upper-case letters according to ISO-4217.
|
343
|
+
* @public
|
344
|
+
*/
|
345
|
+
declare type Currency = 'CZK' | 'EUR' | 'USD';
|
346
|
+
|
347
|
+
/**
|
348
|
+
* @public
|
349
|
+
*/
|
350
|
+
declare enum CustomerId {
|
351
|
+
CESTMIR_STRAKATY = "CESTMIR_STRAKATY",
|
352
|
+
CNC = "CNC",
|
353
|
+
DVTV = "DVTV",
|
354
|
+
DVTV_DEV = "DVTV_DEV",
|
355
|
+
GARAZ = "GARAZ",
|
356
|
+
GRAPE = "GRAPE",
|
357
|
+
HODINA_DEJEPICHU = "HODINA_DEJEPICHU",
|
358
|
+
INVESTICNI_PRUVODCE = "INVESTICNI_PRUVODCE",
|
359
|
+
INVESTOREES = "INVESTOREES",
|
360
|
+
JOJ = "JOJ",
|
361
|
+
KLUCI_Z_PRAHY = "KLUCI_Z_PRAHY",
|
362
|
+
MALL = "MALL",
|
363
|
+
MEDIAR = "MEDIAR",
|
364
|
+
NANGU_DEV = "NANGU_DEV",
|
365
|
+
O2 = "O2",
|
366
|
+
OKTAGON = "OKTAGON",
|
367
|
+
ONDREJ_AUST = "ONDREJ_AUST",
|
368
|
+
ONDREJ_KOBERSKY = "ONDREJ_KOBERSKY",
|
369
|
+
REALTALK = "REALTALK",
|
370
|
+
STARMAX = "STARMAX",
|
371
|
+
STARGAZE = "STARGAZE",
|
372
|
+
STORYBOOK = "STORYBOOK",// dev
|
373
|
+
TIVIO = "TIVIO",
|
374
|
+
TIVIO_PRO = "TIVIO_PRO",
|
375
|
+
U_KULATEHO_STOLU = "U_KULATEHO_STOLU",
|
376
|
+
VIRTUAL_CHANNEL_VIDEOS = "VIRTUAL_CHANNEL_VIDEOS",
|
377
|
+
VOJTA_ZIZKA = "VOJTA_ZIZKA",
|
378
|
+
LIGA_NARUBY = "LIGA_NARUBY",
|
379
|
+
VIC_NEZ_SI_MYSLITE = "VIC_NEZ_SI_MYSLITE",
|
380
|
+
ZIMAK = "ZIMAK",
|
381
|
+
TYDENIK_HOROSKOPU = "TYDENIK_HOROSKOPU"
|
382
|
+
}
|
383
|
+
|
384
|
+
/**
|
385
|
+
* @public
|
386
|
+
*/
|
387
|
+
declare interface Cutout {
|
388
|
+
startMs: number;
|
389
|
+
endMs: number;
|
390
|
+
}
|
391
|
+
|
392
|
+
/**
|
393
|
+
* @public
|
394
|
+
*/
|
395
|
+
declare type DefaultOrderByField = 'created';
|
396
|
+
|
397
|
+
/**
|
398
|
+
* @public
|
399
|
+
*/
|
400
|
+
declare interface DetailedPrice {
|
401
|
+
amount: number;
|
402
|
+
currency: Currency;
|
403
|
+
frequency?: MONETIZATION_FREQUENCY;
|
404
|
+
durationDays?: number;
|
405
|
+
}
|
406
|
+
|
407
|
+
/**
|
408
|
+
* @public
|
409
|
+
*/
|
410
|
+
declare type DeviceInfo = ArrisDeviceInfo | ReactNativeDeviceInfo;
|
411
|
+
|
412
|
+
export declare type Disposer = () => void;
|
413
|
+
|
414
|
+
/**
|
415
|
+
* @public
|
416
|
+
*/
|
417
|
+
declare type Disposer_2 = () => void;
|
418
|
+
|
419
|
+
declare interface Drm {
|
420
|
+
encryption: VideoSourceEncryption;
|
421
|
+
/**
|
422
|
+
* Url to retrieve fairplay from.
|
423
|
+
*/
|
424
|
+
certificateUrl?: string;
|
425
|
+
/**
|
426
|
+
* Url to send license to.
|
427
|
+
*/
|
428
|
+
licenseUrl: string;
|
429
|
+
/**
|
430
|
+
* Headers with corresponding values to send to license server.
|
431
|
+
*/
|
432
|
+
licenseRequestHeaders: {
|
433
|
+
[key: string]: string;
|
434
|
+
};
|
435
|
+
}
|
436
|
+
|
437
|
+
/**
|
438
|
+
* @public
|
439
|
+
*/
|
440
|
+
declare interface Duration {
|
441
|
+
units: DurationUnits;
|
442
|
+
value: number;
|
443
|
+
}
|
444
|
+
|
445
|
+
/**
|
446
|
+
* @public
|
447
|
+
*/
|
448
|
+
declare enum DurationUnits {
|
449
|
+
DAY = "day",
|
450
|
+
MONTH = "month"
|
451
|
+
}
|
452
|
+
|
453
|
+
/**
|
454
|
+
* @public
|
455
|
+
*/
|
456
|
+
declare interface EmitterInterface {
|
457
|
+
isSupported: (even: string) => boolean;
|
458
|
+
addListener: <T = any>(event: string, cb: (value: T) => Empty_2) => void;
|
459
|
+
removeListener: <T = any>(event: string, cb: (value: T) => Empty_2) => void;
|
460
|
+
}
|
461
|
+
|
462
|
+
export declare type Empty = Promise<void> | void;
|
463
|
+
|
464
|
+
/**
|
465
|
+
* @public
|
466
|
+
*/
|
467
|
+
declare type Empty_2 = void | Promise<void> | undefined | Promise<undefined>;
|
468
|
+
|
469
|
+
export declare const fetchBundleViaResolver: (conf: InternalConf) => Promise<string>;
|
470
|
+
|
471
|
+
/**
|
472
|
+
* Copyright (c) 2021, nangu.TV, a.s. All rights reserved.
|
473
|
+
* nangu.TV, a.s PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
474
|
+
*/
|
475
|
+
declare type FetchPackage = (url: string) => Promise<string>;
|
476
|
+
|
477
|
+
/**
|
478
|
+
* @public
|
479
|
+
*/
|
480
|
+
declare type FollowedOrganizationData = {
|
481
|
+
id: string;
|
482
|
+
name: string;
|
483
|
+
application: {
|
484
|
+
id: string;
|
485
|
+
urlHandle: string;
|
486
|
+
logo?: string;
|
487
|
+
logoLandscape?: string;
|
488
|
+
profilePhoto?: string;
|
489
|
+
};
|
490
|
+
};
|
491
|
+
|
492
|
+
/**
|
493
|
+
* @public
|
494
|
+
*/
|
495
|
+
declare type GeoBlocking = {
|
496
|
+
whitelist: Array<any>;
|
497
|
+
} | {
|
498
|
+
blacklist: Array<any>;
|
499
|
+
};
|
500
|
+
|
501
|
+
/**
|
502
|
+
* @public
|
503
|
+
*/
|
504
|
+
declare interface GetPurchasableMonetizationsOptions {
|
505
|
+
includeMonetizationsWithPurchaseDisabled: boolean;
|
506
|
+
}
|
507
|
+
|
508
|
+
declare interface GetSourceUrlResponse {
|
509
|
+
/**
|
510
|
+
* The resulting source url.
|
511
|
+
*/
|
512
|
+
url: string;
|
513
|
+
/**
|
514
|
+
* Which sources did client (or cloud function) has already tried out.
|
515
|
+
*/
|
516
|
+
sourceHistory: string[];
|
517
|
+
/**
|
518
|
+
* DRM configuration to {@link url} if source is encrypted.
|
519
|
+
*/
|
520
|
+
drm?: Drm;
|
521
|
+
/**
|
522
|
+
* See {@link SourcePlayMode} type.
|
523
|
+
*/
|
524
|
+
sourcePlayMode: SourcePlayMode;
|
525
|
+
/**
|
526
|
+
* Returns url to manifest with audio only chunks.
|
527
|
+
*/
|
528
|
+
audioOnly?: boolean;
|
529
|
+
}
|
530
|
+
|
531
|
+
declare type InternalConf = {
|
532
|
+
/**
|
533
|
+
* @private URL of remote code bundle to be fetched directly (without using resolver)
|
534
|
+
*/
|
535
|
+
bundleUrlOverride?: string;
|
536
|
+
/**
|
537
|
+
* Tells Tivio which technologies/protocols etc. is the device capable to play.
|
538
|
+
* If not provided, Tivio will try to guess it (based on the browser).
|
539
|
+
*/
|
540
|
+
deviceCapabilities?: PlayerCapability[];
|
541
|
+
/**
|
542
|
+
* Additional options for deviceCapabilities
|
543
|
+
*/
|
544
|
+
capabilitiesOptions?: {
|
545
|
+
/**
|
546
|
+
* Should the player prefer HTTP sources instead HTTPs if they are available.
|
547
|
+
* This can be used on platforms that support mixed content but do not support
|
548
|
+
* specific HTTPS certificates. (e.g. certificates from Letsencrypt not supported on LG TVs)
|
549
|
+
*/
|
550
|
+
preferHttp?: boolean;
|
551
|
+
};
|
552
|
+
secret: string;
|
553
|
+
resolverUrl: string;
|
554
|
+
logger?: Logger | null;
|
555
|
+
fetchPackage: FetchPackage;
|
556
|
+
language?: string;
|
557
|
+
sdkVersion: string;
|
558
|
+
/**
|
559
|
+
* Can force using bundle resolver method which doesn't depend on indexedDB (useful when some polyfill
|
560
|
+
* for indexedDB is used but indexedDB is not fully supported - it leads to situation where check for indexedDB
|
561
|
+
* presence passes but resolver fails anyway).
|
562
|
+
*/
|
563
|
+
forceCloudFnResolver?: boolean;
|
564
|
+
/**
|
565
|
+
* Can turn off Tivio's Sentry logging, defaults to true.
|
566
|
+
*/
|
567
|
+
enableSentry?: boolean;
|
568
|
+
/**
|
569
|
+
* Can turn on Tivio's console logging, defaults to false.
|
570
|
+
*/
|
571
|
+
verbose?: boolean;
|
572
|
+
};
|
573
|
+
|
574
|
+
/**
|
575
|
+
* Responsible for handling of all player wrapper methods (it's called through PlayerWrapper).
|
576
|
+
* Also handles state when player wrapper from core-js is not ready yet and situation when it becomes ready.
|
577
|
+
*/
|
578
|
+
declare class InternalPlayerWrapper implements TivioPlayerWrapper {
|
579
|
+
private playerImplementation;
|
580
|
+
private id;
|
581
|
+
corePlayerWrapperInstance: TivioPlayerWrapper | null;
|
582
|
+
listenersWaitingToRegister: {
|
583
|
+
eventType: PlayerWrapperEventTypeType;
|
584
|
+
listener: Listener;
|
585
|
+
}[];
|
586
|
+
constructor(playerImplementation: PlayerInterfaceForPlayerWrapper, id: string);
|
587
|
+
addEventListener(eventType: PlayerWrapperEventTypeType, listener: Listener): void;
|
588
|
+
reportError(error: Error): void;
|
589
|
+
reportPlaybackEnded(): void;
|
590
|
+
reportTimeProgress(ms: number): void;
|
591
|
+
seekTo(ms: number): void;
|
592
|
+
setSource(source: Source | null, calibrationId?: string): void;
|
593
|
+
/**
|
594
|
+
* Set instance of the real player wrapper (from core-js).
|
595
|
+
*
|
596
|
+
* @param createPlayerWrapper - create player wrapper method from core-js
|
597
|
+
*/
|
598
|
+
onPlayerWrapperReady(createPlayerWrapper: CreatePlayerWrapperType): void;
|
599
|
+
}
|
600
|
+
|
601
|
+
/**
|
602
|
+
* @public
|
603
|
+
*/
|
604
|
+
declare type ItemInRow = Tag | Video | TvChannel | Advertisement | Application | Article | Series;
|
605
|
+
|
606
|
+
/**
|
607
|
+
* Enum of all supported languages codes as in ISO 639-1
|
608
|
+
* @public
|
609
|
+
*/
|
610
|
+
declare enum LangCode {
|
611
|
+
CS = "cs",
|
612
|
+
DE = "de",
|
613
|
+
EN = "en",
|
614
|
+
FR = "fr",
|
615
|
+
IT = "it",
|
616
|
+
PL = "pl",
|
617
|
+
PT = "pt",
|
618
|
+
SK = "sk",
|
619
|
+
ES = "es",
|
620
|
+
HU = "hu"
|
621
|
+
}
|
622
|
+
|
623
|
+
/**
|
624
|
+
* @public
|
625
|
+
*/
|
626
|
+
declare interface LinkedVideo {
|
627
|
+
video: Video;
|
628
|
+
type: 'CUT' | 'TRAILER' | 'BONUS' | 'CHILD' | 'TEASER' | 'TASTING' | 'VIRTUAL_PROGRAM' | 'PIP';
|
629
|
+
}
|
630
|
+
|
631
|
+
/**
|
632
|
+
* @public
|
633
|
+
*/
|
634
|
+
declare interface LinkedVideoRaw {
|
635
|
+
videoRef: any;
|
636
|
+
type: LinkedVideo['type'];
|
637
|
+
}
|
638
|
+
|
639
|
+
/**
|
640
|
+
* @public
|
641
|
+
*/
|
642
|
+
declare type Listener = ListenerAdMetadata | ListenerMarkers;
|
643
|
+
|
644
|
+
/**
|
645
|
+
* @public
|
646
|
+
*/
|
647
|
+
declare type ListenerAdMetadata = (metadata: AdMetadata) => void;
|
648
|
+
|
649
|
+
/**
|
650
|
+
* @public
|
651
|
+
*/
|
652
|
+
declare type ListenerMarkers = (marker: Marker[] | null) => void;
|
653
|
+
|
654
|
+
/**
|
655
|
+
* Not supported yet, now it does pass-through only.
|
656
|
+
*
|
657
|
+
* @public
|
658
|
+
*/
|
659
|
+
declare type LiveTvChannelSource = SourceBase & {
|
660
|
+
type: 'live_tv_channel';
|
661
|
+
/**
|
662
|
+
* Tivio needs channel name in order to load markers.
|
663
|
+
*/
|
664
|
+
channelName: string;
|
665
|
+
};
|
666
|
+
|
667
|
+
declare interface Logger {
|
668
|
+
/** important messages */
|
669
|
+
warn(...data: LoggerArgs): void;
|
670
|
+
/** errors */
|
671
|
+
error(...data: LoggerArgs): void;
|
672
|
+
/** critical errors */
|
673
|
+
exception(...data: LoggerArgs): void;
|
674
|
+
/** metrics */
|
675
|
+
info(...data: LoggerArgs): void;
|
676
|
+
/** non-production messages */
|
677
|
+
debug(...data: LoggerArgs): void;
|
678
|
+
}
|
679
|
+
|
680
|
+
/**
|
681
|
+
* Copyright (c) 2021, nangu.TV, a.s. All rights reserved.
|
682
|
+
* nangu.TV, a.s PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
|
683
|
+
*/
|
684
|
+
declare type LoggerArgs = any[];
|
685
|
+
|
686
|
+
/**
|
687
|
+
* @public
|
688
|
+
*/
|
689
|
+
declare interface Marker {
|
690
|
+
id: string;
|
691
|
+
from: Date;
|
692
|
+
to: Date;
|
693
|
+
count?: number;
|
694
|
+
fromMs?: number;
|
695
|
+
toMs?: number;
|
696
|
+
relativeFromMs: number;
|
697
|
+
relativeToMs: number;
|
698
|
+
type: 'AD' | 'AD_SEGMENT' | 'START' | 'END' | 'INTRO';
|
699
|
+
}
|
700
|
+
|
701
|
+
declare interface MonetizableItem {
|
702
|
+
/**
|
703
|
+
* Returns true if content is purchased (via transaction or subscription) or free.
|
704
|
+
*/
|
705
|
+
isPaid: boolean;
|
706
|
+
/**
|
707
|
+
* Gets the most relevant monetization for this content.
|
708
|
+
*/
|
709
|
+
purchasableMonetization: PurchasableMonetization | null;
|
710
|
+
/**
|
711
|
+
* Returns all transactions and subscriptions applied to this video.
|
712
|
+
* Transactions before subscriptions, sorted by price ascending.
|
713
|
+
*/
|
714
|
+
getPurchasableMonetizations(options?: GetPurchasableMonetizationsOptions): PurchasableMonetization[];
|
715
|
+
}
|
716
|
+
|
717
|
+
/**
|
718
|
+
* @public
|
719
|
+
*/
|
720
|
+
declare interface Monetization {
|
721
|
+
id: string;
|
722
|
+
type?: MonetizationType;
|
723
|
+
name?: string;
|
724
|
+
description?: string;
|
725
|
+
organizationId?: string;
|
726
|
+
}
|
727
|
+
|
728
|
+
/**
|
729
|
+
* @public
|
730
|
+
*/
|
731
|
+
declare enum MONETIZATION_DURATION {
|
732
|
+
UNLIMITED = -1,
|
733
|
+
DAY = 1,
|
734
|
+
WEEK = 7,
|
735
|
+
MONTH = 30,
|
736
|
+
HALF_YEAR = 183,
|
737
|
+
YEAR = 365
|
738
|
+
}
|
739
|
+
|
740
|
+
/**
|
741
|
+
* @public
|
742
|
+
*/
|
743
|
+
declare enum MONETIZATION_FREQUENCY {
|
744
|
+
ONE_TIME_PAYMENT = "ONE_TIME_PAYMENT",
|
745
|
+
DAILY = "DAILY",
|
746
|
+
WEEKLY = "WEEKLY",
|
747
|
+
MONTHLY = "MONTHLY",
|
748
|
+
HALF_ANNUALLY = "HALF_ANNUALLY",
|
749
|
+
ANNUALLY = "ANNUALLY"
|
750
|
+
}
|
751
|
+
|
752
|
+
/**
|
753
|
+
* @public
|
754
|
+
* @TODO change to enum
|
755
|
+
*/
|
756
|
+
declare type MonetizationType = 'advertisement' | 'transaction' | 'subscription' | 'display';
|
757
|
+
|
758
|
+
/**
|
759
|
+
* @public
|
760
|
+
*/
|
761
|
+
declare type NonAdSourceType = Exclude<SourceType, SourceType.ADVERTISEMENT>;
|
762
|
+
|
763
|
+
/**
|
764
|
+
* @public
|
765
|
+
*/
|
766
|
+
declare interface OrderBy<T = void> {
|
767
|
+
field: T extends void ? string : T;
|
768
|
+
directionStr?: OrderByDirection;
|
769
|
+
}
|
770
|
+
|
771
|
+
declare type OrderByDirection = 'desc' | 'asc';
|
772
|
+
|
773
|
+
/**
|
774
|
+
* @public
|
775
|
+
*/
|
776
|
+
declare interface Organization {
|
777
|
+
id: string;
|
778
|
+
userProfileConfiguration: any;
|
779
|
+
screenConfigs: ScreenConfig[];
|
780
|
+
logo: string | null;
|
781
|
+
logoLandscape: string | null;
|
782
|
+
organizationBanner: string | null;
|
783
|
+
profilePhoto: string | null;
|
784
|
+
}
|
785
|
+
|
786
|
+
/**
|
787
|
+
* If Tivio PlayerWrapper is an interception layer, it should allow the pass-through
|
788
|
+
* of not just Tivio source types but any other source types that the 3rd party app may be using.
|
789
|
+
*
|
790
|
+
* @public
|
791
|
+
*/
|
792
|
+
declare type OtherSource = SourceBase & StartAndContinuePosition & {
|
793
|
+
type: 'other';
|
794
|
+
};
|
795
|
+
|
796
|
+
/**
|
797
|
+
* @public
|
798
|
+
*/
|
799
|
+
declare type PaginationInterface<Entity> = {
|
800
|
+
items: Entity[];
|
801
|
+
fetchMore: () => void;
|
802
|
+
hasNextPage?: boolean;
|
803
|
+
loading?: boolean;
|
804
|
+
};
|
805
|
+
|
806
|
+
/**
|
807
|
+
* @public
|
808
|
+
*/
|
809
|
+
declare type PaginationOptions = Partial<{
|
810
|
+
limit: number;
|
811
|
+
noLimit: boolean;
|
812
|
+
noAutoFetch: boolean;
|
813
|
+
}>;
|
814
|
+
|
815
|
+
declare type PatreonUserAuth = {
|
816
|
+
access_token: string;
|
817
|
+
refresh_token: string;
|
818
|
+
expires_in: number;
|
819
|
+
token_type?: string;
|
820
|
+
scope?: string;
|
821
|
+
version?: string;
|
822
|
+
};
|
823
|
+
|
824
|
+
/**
|
825
|
+
* @public
|
826
|
+
*/
|
827
|
+
declare enum PLATFORM {
|
828
|
+
/**
|
829
|
+
* Includes tablets.
|
830
|
+
*/
|
831
|
+
MOBILE = "MOBILE",
|
832
|
+
WEB = "WEB",
|
833
|
+
TV = "TV",
|
834
|
+
/**
|
835
|
+
* @deprecated Used only in big query. In the future we'll migrate to undefined value and delete this.
|
836
|
+
*/
|
837
|
+
UNKNOWN = "unknown"
|
838
|
+
}
|
839
|
+
|
840
|
+
/**
|
841
|
+
* @public
|
842
|
+
*/
|
843
|
+
declare type Player = {
|
844
|
+
ad: any;
|
845
|
+
currentTime: any;
|
846
|
+
adSegment: any;
|
847
|
+
event: any;
|
848
|
+
events: any;
|
849
|
+
source: any;
|
850
|
+
state: any;
|
851
|
+
onPlaybackEnded: any;
|
852
|
+
onSourceChanged: any;
|
853
|
+
onStateChanged: any;
|
854
|
+
onTimeChanged: any;
|
855
|
+
pause: any;
|
856
|
+
play: any;
|
857
|
+
togglePlayPause: any;
|
858
|
+
register: any;
|
859
|
+
seekTo: any;
|
860
|
+
setVolume: any;
|
861
|
+
triggerEvent: any;
|
862
|
+
};
|
863
|
+
|
864
|
+
export declare interface PlayerCapability {
|
865
|
+
codec: 'h264' | 'h265';
|
866
|
+
encryption: 'fairplay' | 'none' | 'playready' | 'widevine';
|
867
|
+
protocol: 'dash' | 'hls';
|
868
|
+
}
|
869
|
+
|
870
|
+
/**
|
871
|
+
* @public
|
872
|
+
*/
|
873
|
+
declare interface PlayerCapability_2 {
|
874
|
+
codec: VideoSourceCodec;
|
875
|
+
encryption: VideoSourceEncryption;
|
876
|
+
protocol: VideoSourceProtocol;
|
877
|
+
}
|
878
|
+
|
879
|
+
/**
|
880
|
+
* @public
|
881
|
+
*/
|
882
|
+
declare type PlayerConfig = {
|
883
|
+
enabled?: boolean;
|
884
|
+
/**
|
885
|
+
* Some devices do not seek exactly
|
886
|
+
*
|
887
|
+
* e.g. on Arris if we request seek to position P, in reality it will seek to P -+5s
|
888
|
+
* e.g. on Arris if we request play from position P, in reality it will play from P -+5s
|
889
|
+
* (on Arris the error margin varies according to video format)
|
890
|
+
*/
|
891
|
+
acceptablePositionAnomalyMs?: number;
|
892
|
+
/**
|
893
|
+
* Stream delay config
|
894
|
+
*
|
895
|
+
* IP TV apps have TV program / TV channel streams delayed relative to the original
|
896
|
+
* video source. Therefore stream markers taken from the original video source
|
897
|
+
* are delayed relative to the TV stream seen by end users of the IP TV app.
|
898
|
+
*
|
899
|
+
* This delay must be corrected.
|
900
|
+
*/
|
901
|
+
streamDelayConfig?: {
|
902
|
+
/**
|
903
|
+
* ID of the delay config
|
904
|
+
*/
|
905
|
+
id: string;
|
906
|
+
};
|
907
|
+
ui?: {
|
908
|
+
/**
|
909
|
+
* ID of a DOM element inside which Tivio should display its player-related UI
|
910
|
+
* such as ad buttons. This DOM element is an anchor point for Tivio UI. Preferably
|
911
|
+
* it should be a <div/> element styled to cover the whole area of the video player
|
912
|
+
* and it should be positioned to be on top the existing player UI (e.g. via z-index).
|
913
|
+
*/
|
914
|
+
domAnchorId: string | null;
|
915
|
+
};
|
916
|
+
protocols?: {
|
917
|
+
mp4?: {
|
918
|
+
/**
|
919
|
+
* Set to false if player does not support MP4 files that require full file download
|
920
|
+
* (i.e. they do not support progressive MP4 download and therefore the whole file
|
921
|
+
* must be downloaded before playback can start)
|
922
|
+
*/
|
923
|
+
fullFileDownloadSupport?: boolean;
|
924
|
+
};
|
925
|
+
};
|
926
|
+
/**
|
927
|
+
* Ad service settings
|
928
|
+
*/
|
929
|
+
adService?: {
|
930
|
+
/**
|
931
|
+
* TIVIO AD SERVICE - can be used in websites and TV apps. Does not support VPAID
|
932
|
+
* IMA - can be used only in websites. Supports VAST 2, partially VAST 3, VAST 4, SIMID 1.0, OM SDK 1.3,
|
933
|
+
* VPAID 2 (HTML5) https://developers.google.com/interactive-media-ads/docs/sdks/html5/client-side/compatibility
|
934
|
+
*/
|
935
|
+
name: 'IMA SDK' | 'TIVIO AD SERVICE';
|
936
|
+
};
|
937
|
+
};
|
938
|
+
|
939
|
+
declare interface PlayerError {
|
940
|
+
message: string;
|
941
|
+
}
|
942
|
+
|
943
|
+
/**
|
944
|
+
* @public
|
945
|
+
*/
|
946
|
+
declare interface PlayerInterface {
|
947
|
+
/**
|
948
|
+
* Pause playback
|
949
|
+
*/
|
950
|
+
pause: () => void;
|
951
|
+
/**
|
952
|
+
* Unpause playback
|
953
|
+
*/
|
954
|
+
play: () => Promise<void> | void;
|
955
|
+
/**
|
956
|
+
* Stop and close video
|
957
|
+
*/
|
958
|
+
stop: () => Promise<void> | void;
|
959
|
+
/**
|
960
|
+
* Seek to position in ms
|
961
|
+
*
|
962
|
+
* @param {number} ms - milliseconds relative to start of video (relative to 0 ms)
|
963
|
+
* or in case of TV programs relative to start of the program (relative to source.from ms)
|
964
|
+
*/
|
965
|
+
seekTo: (ms: number) => void;
|
966
|
+
/**
|
967
|
+
* Send this source to player. And either start playing it immediately if `source.autoplay` is true
|
968
|
+
* or just load it and keep it paused and ready to play if `source.autoplay` is false.
|
969
|
+
* If source is `null`, stop and close the player (this is the same as if `this.stop()` was called.)
|
970
|
+
*/
|
971
|
+
setSource: (source: CommonSource | null) => Promise<void> | void;
|
972
|
+
/**
|
973
|
+
* Set volume
|
974
|
+
*
|
975
|
+
* @param {number} volume value in [0,1]
|
976
|
+
*/
|
977
|
+
setVolume?: (volume: number) => void;
|
978
|
+
/**
|
979
|
+
* Mute the player volume
|
980
|
+
*/
|
981
|
+
mute?: () => void;
|
982
|
+
/**
|
983
|
+
* Unmute the player volume and restore it to the save level that was before it has been muted
|
984
|
+
*/
|
985
|
+
unmute?: () => void;
|
986
|
+
/**
|
987
|
+
* Sets native IMA ad URL which is then loaded and played on RN side
|
988
|
+
*/
|
989
|
+
setNativeImaAdUrl?: (url: string) => void;
|
990
|
+
/**
|
991
|
+
* Try to load and play native IMA ad using provided URL
|
992
|
+
*/
|
993
|
+
playNativeImaAd?: (url: string) => Promise<void>;
|
994
|
+
/**
|
995
|
+
* Get URL of native IMA ad which is currently playing
|
996
|
+
*/
|
997
|
+
getNativeImaAdUrl?: () => string | null;
|
998
|
+
lastQuality?: number | null;
|
999
|
+
getQualities?: () => Track[];
|
1000
|
+
/**
|
1001
|
+
* Attribute indicating that the video is to be played "inline"
|
1002
|
+
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/video#playsinline
|
1003
|
+
*/
|
1004
|
+
setPlaysInline?: (value: boolean) => void;
|
1005
|
+
setControlsList?: (value: string[]) => void;
|
1006
|
+
}
|
1007
|
+
|
1008
|
+
/**
|
1009
|
+
* @public
|
1010
|
+
*/
|
1011
|
+
declare interface PlayerInterfaceForPlayerWrapper {
|
1012
|
+
/**
|
1013
|
+
* @param {number} ms - milliseconds relative to start of video (relative to 0 ms)
|
1014
|
+
* or in case of TV programs relative to start of the program (relative to source.from ms)
|
1015
|
+
*/
|
1016
|
+
seekTo: (ms: number) => void;
|
1017
|
+
setSource: (source: Source | null) => void;
|
1018
|
+
}
|
1019
|
+
|
1020
|
+
/**
|
1021
|
+
* TODO same name as core-js entity, not convenient
|
1022
|
+
* @public
|
1023
|
+
*/
|
1024
|
+
declare type PlayerSource = VodTivioSourceInterface | VodExternalSourceInterface | ChannelSourceInterface | VirtualChannelSourceInterface;
|
1025
|
+
|
1026
|
+
/**
|
1027
|
+
* Use this interface only for inheritance. Otherwise use {@link PlayerSource}
|
1028
|
+
* @public
|
1029
|
+
*/
|
1030
|
+
declare interface PlayerSourceInterface<T extends NonAdSourceType = NonAdSourceType> extends CommonSourceInterface<T> {
|
1031
|
+
adSegment: AdSegment | null;
|
1032
|
+
consumedAds: ConsumedAds;
|
1033
|
+
currentMarker: any | null;
|
1034
|
+
drm?: Drm;
|
1035
|
+
markers: any[];
|
1036
|
+
setMarkers(markers: any[]): void;
|
1037
|
+
isMarkersLoaded: boolean;
|
1038
|
+
setOutroMarker(marker: any): void;
|
1039
|
+
durationMs: number;
|
1040
|
+
setDurationMs(ms: number): void;
|
1041
|
+
reset(): void;
|
1042
|
+
cutout: Cutout | null;
|
1043
|
+
destroy(): void;
|
1044
|
+
seekTo(ms: number): void;
|
1045
|
+
adMonetization: any;
|
1046
|
+
setAdMonetization(monetization: any): void;
|
1047
|
+
setInitialTime(ms: number): void;
|
1048
|
+
setContinueFromPosition(ms: ContinuePosition): void;
|
1049
|
+
isLive: boolean;
|
1050
|
+
sourcePlayMode?: SourcePlayMode;
|
1051
|
+
language?: LangCode | null;
|
1052
|
+
availableLanguages?: LangCode[] | null;
|
1053
|
+
startOrResumeReactions(): void;
|
1054
|
+
pauseReactions(): void;
|
1055
|
+
correctStartPosition(): Promise<void | null>;
|
1056
|
+
setCanSeek(canSeek: boolean): void;
|
1057
|
+
originalOptions: Record<string, any>;
|
1058
|
+
}
|
1059
|
+
|
1060
|
+
/**
|
1061
|
+
* @public
|
1062
|
+
*/
|
1063
|
+
declare interface PlayerSourceParams<T extends NonAdSourceType = NonAdSourceType> extends CommonSourceParams<T> {
|
1064
|
+
originalOptions?: Record<string, any>;
|
1065
|
+
continuePositionMs?: ContinuePosition;
|
1066
|
+
poster?: string | null;
|
1067
|
+
language?: LangCode | null;
|
1068
|
+
availableLanguages?: LangCode[] | null;
|
1069
|
+
sourcePlayMode: SourcePlayMode;
|
1070
|
+
}
|
1071
|
+
|
1072
|
+
/**
|
1073
|
+
* @public
|
1074
|
+
*/
|
1075
|
+
declare type PlayerState = 'idle' | 'playing' | 'paused';
|
1076
|
+
|
1077
|
+
/**
|
1078
|
+
* Player wrapper which instances are exposed to SDK user.
|
1079
|
+
*/
|
1080
|
+
declare class PlayerWrapper implements TivioPlayerWrapper {
|
1081
|
+
private internalPlayerWrapper;
|
1082
|
+
constructor(internalPlayerWrapper: InternalPlayerWrapper);
|
1083
|
+
addEventListener(eventType: 'adMetadata', listener: ListenerAdMetadata): void;
|
1084
|
+
addEventListener(eventType: 'markers', listener: ListenerMarkers): void;
|
1085
|
+
reportError: (error: Error) => void;
|
1086
|
+
reportPlaybackEnded: () => void;
|
1087
|
+
reportTimeProgress: (ms: number) => void;
|
1088
|
+
seekTo: (ms: number) => void;
|
1089
|
+
setSource: (source: Source | null, calibrationId?: string) => void;
|
1090
|
+
}
|
1091
|
+
|
1092
|
+
/**
|
1093
|
+
* @public
|
1094
|
+
*/
|
1095
|
+
declare interface PlayerWrapper_2 {
|
1096
|
+
/**
|
1097
|
+
* Report that playback of video has finished
|
1098
|
+
*/
|
1099
|
+
onPlaybackEnded: () => void;
|
1100
|
+
/**
|
1101
|
+
* Report video progress in milliseconds
|
1102
|
+
*/
|
1103
|
+
onTimeChanged: (ms: number) => void;
|
1104
|
+
/**
|
1105
|
+
* Report that video state changed
|
1106
|
+
*/
|
1107
|
+
onStateChanged: (state: PlayerState) => void;
|
1108
|
+
/**
|
1109
|
+
* Send source to Tivio
|
1110
|
+
*/
|
1111
|
+
onSourceChanged: (source: PlayerSource | null) => void;
|
1112
|
+
/**
|
1113
|
+
* Report that video failed to load (never started playing)
|
1114
|
+
*/
|
1115
|
+
onLoadError: (error: Error) => void;
|
1116
|
+
/**
|
1117
|
+
* Report that video failed during playback (successfully loaded and then failed, e.g. part of stream is invalid)
|
1118
|
+
*/
|
1119
|
+
onError: (error: Error) => void;
|
1120
|
+
/**
|
1121
|
+
* Unpause video
|
1122
|
+
*/
|
1123
|
+
play: () => void;
|
1124
|
+
/**
|
1125
|
+
* Pause video
|
1126
|
+
*/
|
1127
|
+
pause: () => void;
|
1128
|
+
/**
|
1129
|
+
* Currently playing source
|
1130
|
+
*/
|
1131
|
+
source: PlayerSource | null;
|
1132
|
+
events: EmitterInterface;
|
1133
|
+
/**
|
1134
|
+
* Register a low level player that implements player methods, like play video, change volume, etc.
|
1135
|
+
*/
|
1136
|
+
register: (playerInterface: PlayerInterface) => void;
|
1137
|
+
/**
|
1138
|
+
* duration of current source in ms (both setter and getter)
|
1139
|
+
*/
|
1140
|
+
durationMs: number | null;
|
1141
|
+
isPlaybackStarted?: boolean;
|
1142
|
+
isPaused: boolean;
|
1143
|
+
isPlaying: boolean;
|
1144
|
+
isIdle: boolean;
|
1145
|
+
error: PlayerError | null;
|
1146
|
+
/**
|
1147
|
+
* Replay the video that finished playback
|
1148
|
+
*/
|
1149
|
+
replay: () => void;
|
1150
|
+
/**
|
1151
|
+
* Retry to play a video that failed to start playing (e.g. due to a network error)
|
1152
|
+
*/
|
1153
|
+
retry: () => void;
|
1154
|
+
togglePlayPause: () => void;
|
1155
|
+
seekTo: (ms: number) => void;
|
1156
|
+
/**
|
1157
|
+
* set volume to value between 0,1
|
1158
|
+
*/
|
1159
|
+
setVolume: (volume: number) => void;
|
1160
|
+
/**
|
1161
|
+
* change volume by value between -1,1
|
1162
|
+
*/
|
1163
|
+
changeVolumeBy: (volume: number) => void;
|
1164
|
+
setMuted: (muted: boolean) => void;
|
1165
|
+
toggleMuted: () => void;
|
1166
|
+
getQualities: () => Track[];
|
1167
|
+
}
|
1168
|
+
|
1169
|
+
/**
|
1170
|
+
* @public
|
1171
|
+
*/
|
1172
|
+
declare enum PlayerWrapperEventType {
|
1173
|
+
adMetadata = "adMetadata",
|
1174
|
+
markers = "markers"
|
1175
|
+
}
|
1176
|
+
|
1177
|
+
/**
|
1178
|
+
* @public
|
1179
|
+
*/
|
1180
|
+
declare type PlayerWrapperEventTypeType = `${PlayerWrapperEventType}`;
|
1181
|
+
|
1182
|
+
/**
|
1183
|
+
* @public
|
1184
|
+
*/
|
1185
|
+
declare interface Promotion {
|
1186
|
+
duration?: Duration;
|
1187
|
+
price?: number;
|
1188
|
+
requiresPaymentAuthorization?: boolean;
|
1189
|
+
hideOtherSubscriptions?: boolean;
|
1190
|
+
}
|
1191
|
+
|
1192
|
+
/**
|
1193
|
+
* @public
|
1194
|
+
*/
|
1195
|
+
declare interface PurchasableMonetization extends Monetization {
|
1196
|
+
/**
|
1197
|
+
* Price before any discounts (e.g. promotions).
|
1198
|
+
*/
|
1199
|
+
originalPrice: number;
|
1200
|
+
/**
|
1201
|
+
* Final price (after discounts).
|
1202
|
+
*/
|
1203
|
+
price?: string | number;
|
1204
|
+
promotion: Promotion | null;
|
1205
|
+
frequency?: MONETIZATION_FREQUENCY;
|
1206
|
+
durationDays?: number;
|
1207
|
+
/**
|
1208
|
+
* Returns TRUE if subscription is purchased (and not expired) by user.
|
1209
|
+
* Returns TRUE if transaction is purchased (and not expired) for transactionItemId.
|
1210
|
+
* Returns FALSE otherwise.
|
1211
|
+
*
|
1212
|
+
* @param transactionItemId id of item for which transaction purchase is checked
|
1213
|
+
* @param transactionField type of item (video or tvChannel)
|
1214
|
+
*/
|
1215
|
+
isPurchased(transactionItemId?: string, transactionField?: 'videoId' | 'tvChannelId'): boolean;
|
1216
|
+
benefits?: Translation[];
|
1217
|
+
localizedBenefits?: string[];
|
1218
|
+
/**
|
1219
|
+
* Set to true for subscriptions which is not possible to buy - typically for historical subscriptions which users
|
1220
|
+
* still have bought but can't be purchased anymore.
|
1221
|
+
*/
|
1222
|
+
purchaseDisabled?: boolean;
|
1223
|
+
/**
|
1224
|
+
* When set to true, users can buy this monetization as a voucher (e.g. to send it as a gift to a friend).
|
1225
|
+
* If not set or set to false, users cannot buy it as a voucher.
|
1226
|
+
*/
|
1227
|
+
isPurchasableAsVoucher?: boolean;
|
1228
|
+
/**
|
1229
|
+
* Returns array of tag ids of monetization placements
|
1230
|
+
*/
|
1231
|
+
tagIds: string[];
|
1232
|
+
/**
|
1233
|
+
* When set to true, subscription is hidden in UI (e.g. in MonetizationSelectOverlay).
|
1234
|
+
*/
|
1235
|
+
subscriptionIsHidden?: boolean;
|
1236
|
+
}
|
1237
|
+
|
1238
|
+
/**
|
1239
|
+
* @public
|
1240
|
+
*/
|
1241
|
+
declare type Purchase = {
|
1242
|
+
/**
|
1243
|
+
* Timestamp of the purchase creation in milliseconds.
|
1244
|
+
*/
|
1245
|
+
created: number | null;
|
1246
|
+
/**
|
1247
|
+
* Email of the user who created the purchase manually.
|
1248
|
+
*/
|
1249
|
+
createdBy?: string;
|
1250
|
+
expirationDate: Date | null;
|
1251
|
+
gateway: PurchaseDocumentGateway | null;
|
1252
|
+
id: string;
|
1253
|
+
isExpired: boolean;
|
1254
|
+
/**
|
1255
|
+
* @deprecated isPurchased is ambiguous name. Now it means that purchase.status is "PAID".
|
1256
|
+
* So use purchase.status === PurchaseStatus.PAID instead.
|
1257
|
+
*/
|
1258
|
+
isPurchased: boolean;
|
1259
|
+
monetization: PurchaseMonetization | null;
|
1260
|
+
monetizationId: string | null;
|
1261
|
+
monetizationRef: any | null;
|
1262
|
+
status: PurchaseStatus | null;
|
1263
|
+
type: PurchaseType | null;
|
1264
|
+
/**
|
1265
|
+
* Timestamp of the last purchase status update in milliseconds.
|
1266
|
+
*/
|
1267
|
+
updated: number | null;
|
1268
|
+
videoId: string | null;
|
1269
|
+
videoRef: any | null;
|
1270
|
+
voucherId: string | null;
|
1271
|
+
isVoucherActivation?: boolean;
|
1272
|
+
rebalancingVideoRef?: any;
|
1273
|
+
};
|
1274
|
+
|
1275
|
+
/**
|
1276
|
+
* @public
|
1277
|
+
*/
|
1278
|
+
declare enum PurchaseDocumentGateway {
|
1279
|
+
'qerko' = "qerko",
|
1280
|
+
'oktagon' = "oktagon",
|
1281
|
+
'voucher' = "voucher",
|
1282
|
+
'comgate' = "comgate",
|
1283
|
+
'tivio' = "tivio",
|
1284
|
+
'patreon' = "patreon",
|
1285
|
+
'paypal' = "paypal",
|
1286
|
+
'unknown' = "unknown"
|
1287
|
+
}
|
1288
|
+
|
1289
|
+
/**
|
1290
|
+
* @public
|
1291
|
+
*/
|
1292
|
+
declare type PurchaseMonetization = {
|
1293
|
+
durationDays?: MONETIZATION_DURATION | number;
|
1294
|
+
currency?: Currency;
|
1295
|
+
price?: number;
|
1296
|
+
/**
|
1297
|
+
* Here are only transaction and subscription because purchasing of advertisement monetization doesn't make sense.
|
1298
|
+
*/
|
1299
|
+
type: 'transaction' | 'subscription';
|
1300
|
+
title?: string;
|
1301
|
+
frequency?: MONETIZATION_FREQUENCY | null;
|
1302
|
+
/**
|
1303
|
+
* If set purchase (subscription) activated by voucher will stay valid for this amount of seconds.
|
1304
|
+
* Otherwise purchase will be valid for one "monetization frequency" period.
|
1305
|
+
*/
|
1306
|
+
voucherPurchaseDuration?: number;
|
1307
|
+
};
|
1308
|
+
|
1309
|
+
/**
|
1310
|
+
* @public
|
1311
|
+
*/
|
1312
|
+
declare enum PurchaseStatus {
|
1313
|
+
NEW = "NEW",
|
1314
|
+
PAID = "PAID",
|
1315
|
+
CANCELLED = "CANCELLED",
|
1316
|
+
ERROR = "ERROR",
|
1317
|
+
/**
|
1318
|
+
* Used when purchase is terminated due to terms and conditions violation (e.g. restreaming).
|
1319
|
+
*/
|
1320
|
+
BLOCKED = "BLOCKED",
|
1321
|
+
/**
|
1322
|
+
* Used in subscription purchases when subscription is renewed.
|
1323
|
+
*/
|
1324
|
+
RENEWED = "RENEWED",
|
1325
|
+
/**
|
1326
|
+
* From NEW to ABORTED when user cancels purchase before payment or when payment fails.
|
1327
|
+
*/
|
1328
|
+
ABORTED = "ABORTED",
|
1329
|
+
/**
|
1330
|
+
* When user manually cancels purchase but still has access to content until expiration date.
|
1331
|
+
*/
|
1332
|
+
CANCELLING = "CANCELLING",
|
1333
|
+
/**
|
1334
|
+
* From PAID to EXPIRED when payment fails to renew subscription.
|
1335
|
+
*/
|
1336
|
+
EXPIRED = "EXPIRED"
|
1337
|
+
}
|
1338
|
+
|
1339
|
+
/**
|
1340
|
+
* Purchase is a purchase of one video (transaction type) purchase of subscription or voucher.
|
1341
|
+
*
|
1342
|
+
* @public
|
1343
|
+
*/
|
1344
|
+
declare type PurchaseType = 'transaction' | 'subscription' | 'voucher';
|
1345
|
+
|
1346
|
+
/**
|
1347
|
+
* @public
|
1348
|
+
*/
|
1349
|
+
declare interface ReactableContent {
|
1350
|
+
path: string;
|
1351
|
+
reactions: {
|
1352
|
+
[key in ReactionEnum]?: number;
|
1353
|
+
} | null;
|
1354
|
+
updateReactionCount: (reaction: ReactionEnum, newCount: number) => void;
|
1355
|
+
}
|
1356
|
+
|
1357
|
+
/**
|
1358
|
+
* @public
|
1359
|
+
*/
|
1360
|
+
declare enum ReactionEnum {
|
1361
|
+
LIKE = "LIKE",
|
1362
|
+
DISLIKE = "DISLIKE",
|
1363
|
+
LOVE = "LOVE",
|
1364
|
+
HAHA = "HAHA",
|
1365
|
+
WOW = "WOW",
|
1366
|
+
SAD = "SAD",
|
1367
|
+
ANGRY = "ANGRY",
|
1368
|
+
CARE = "CARE",
|
1369
|
+
SUPPORT = "SUPPORT",
|
1370
|
+
PRAY = "PRAY",
|
1371
|
+
THINK = "THINK",
|
1372
|
+
CELEBRATE = "CELEBRATE",
|
1373
|
+
THANKFUL = "THANKFUL",
|
1374
|
+
LAUGH = "LAUGH",
|
1375
|
+
INSPIRED = "INSPIRED",
|
1376
|
+
AWW = "AWW"
|
1377
|
+
}
|
1378
|
+
|
1379
|
+
/**
|
1380
|
+
* @public
|
1381
|
+
*/
|
1382
|
+
declare type ReactNativeDeviceInfo = {
|
1383
|
+
type: 'react-native';
|
1384
|
+
/**
|
1385
|
+
* Type values defined according to {@link OperatingSystem} from `detect-browser` package for convenience.
|
1386
|
+
*/
|
1387
|
+
os?: 'iOS' | 'Android OS';
|
1388
|
+
osVersion: string;
|
1389
|
+
platform: PLATFORM;
|
1390
|
+
isTablet?: boolean;
|
1391
|
+
};
|
1392
|
+
|
1393
|
+
export declare type RemoteBundleState = {
|
1394
|
+
state: 'loading' | 'error' | 'ready';
|
1395
|
+
error: string | null;
|
1396
|
+
conf: InternalConf;
|
1397
|
+
settings: Settings;
|
1398
|
+
} & Omit<Partial<TivioJsBundleExposedApi>, 'createPlayerWrapper'>;
|
1399
|
+
|
1400
|
+
export declare type RemoteProviderProps = {
|
1401
|
+
language?: string;
|
1402
|
+
};
|
1403
|
+
|
1404
|
+
/**
|
1405
|
+
* @public
|
1406
|
+
*/
|
1407
|
+
declare interface Row {
|
1408
|
+
id: string;
|
1409
|
+
rowId: string;
|
1410
|
+
name: string;
|
1411
|
+
description?: string;
|
1412
|
+
assets: AssetsField;
|
1413
|
+
type: ScreenRowType;
|
1414
|
+
isLiveRow: boolean;
|
1415
|
+
tiles: PaginationInterface<ItemInRow>;
|
1416
|
+
numberOfLines?: number;
|
1417
|
+
monetizations?: {
|
1418
|
+
monetizationRef: any;
|
1419
|
+
}[];
|
1420
|
+
rowComponent: RowComponent.ROW | RowComponent.BANNER;
|
1421
|
+
itemComponent: RowItemComponent | BannerItemComponent;
|
1422
|
+
organizationId?: string;
|
1423
|
+
}
|
1424
|
+
|
1425
|
+
/**
|
1426
|
+
* @public
|
1427
|
+
*/
|
1428
|
+
declare enum ROW_ITEM_TYPES {
|
1429
|
+
APPLICATION = "APPLICATION",
|
1430
|
+
VIDEO = "VIDEO",
|
1431
|
+
TAG = "TAG",
|
1432
|
+
TV_CHANNEL = "TV_CHANNEL",
|
1433
|
+
ADVERTISEMENT = "ADVERTISEMENT",
|
1434
|
+
ARTICLE = "ARTICLE",
|
1435
|
+
SERIES = "SERIES"
|
1436
|
+
}
|
1437
|
+
|
1438
|
+
/**
|
1439
|
+
* @public
|
1440
|
+
*/
|
1441
|
+
declare enum RowComponent {
|
1442
|
+
ROW = "ROW",
|
1443
|
+
BANNER = "BANNER"
|
1444
|
+
}
|
1445
|
+
|
1446
|
+
/**
|
1447
|
+
* @public
|
1448
|
+
*/
|
1449
|
+
declare interface RowItem extends RowItemAssets {
|
1450
|
+
created?: Date;
|
1451
|
+
itemType: ROW_ITEM_TYPES;
|
1452
|
+
name?: string;
|
1453
|
+
description?: string;
|
1454
|
+
assets: AssetsField | null;
|
1455
|
+
application: RowItemApplicationData | null;
|
1456
|
+
feedVisible?: boolean;
|
1457
|
+
}
|
1458
|
+
|
1459
|
+
/**
|
1460
|
+
* @public
|
1461
|
+
*/
|
1462
|
+
declare interface RowItemApplicationData {
|
1463
|
+
name: string;
|
1464
|
+
logo?: string | null;
|
1465
|
+
logoLandscape?: string | null;
|
1466
|
+
profilePhoto?: string | null;
|
1467
|
+
urlHandle: string;
|
1468
|
+
organizationId?: string | null;
|
1469
|
+
}
|
1470
|
+
|
1471
|
+
/**
|
1472
|
+
* @public
|
1473
|
+
*/
|
1474
|
+
declare interface RowItemAssets {
|
1475
|
+
landscape?: string | null;
|
1476
|
+
portrait?: string | null;
|
1477
|
+
circled?: string | null;
|
1478
|
+
square?: string | null;
|
1479
|
+
banner?: string | null;
|
1480
|
+
bannerMobile?: string | null;
|
1481
|
+
}
|
1482
|
+
|
1483
|
+
/**
|
1484
|
+
* @public
|
1485
|
+
*/
|
1486
|
+
declare enum RowItemComponent {
|
1487
|
+
ROW_ITEM_PORTRAIT = "ROW_ITEM_PORTRAIT",
|
1488
|
+
ROW_ITEM_LANDSCAPE = "ROW_ITEM_LANDSCAPE",
|
1489
|
+
ROW_ITEM_SQUARE = "ROW_ITEM_SQUARE",
|
1490
|
+
ROW_ITEM_CREATORS_SQUARE = "ROW_ITEM_CREATORS_SQUARE",
|
1491
|
+
ROW_ITEM_CREATORS_LANDSCAPE = "ROW_ITEM_CREATORS_LANDSCAPE",
|
1492
|
+
ROW_ITEM_CIRCLED = "ROW_ITEM_CIRCLED",
|
1493
|
+
ROW_ITEM_HIGHLIGHTED = "ROW_ITEM_HIGHLIGHTED",
|
1494
|
+
ROW_ITEM_PLAIN = "ROW_ITEM_PLAIN"
|
1495
|
+
}
|
1496
|
+
|
1497
|
+
/**
|
1498
|
+
* @public
|
1499
|
+
*/
|
1500
|
+
declare type ScalableAsset = {
|
1501
|
+
'@1': Asset;
|
1502
|
+
'@2'?: Asset;
|
1503
|
+
'@3'?: Asset;
|
1504
|
+
};
|
1505
|
+
|
1506
|
+
/**
|
1507
|
+
* @public
|
1508
|
+
*/
|
1509
|
+
declare type ScreenConfig = {
|
1510
|
+
id: string;
|
1511
|
+
name: string;
|
1512
|
+
route?: string;
|
1513
|
+
isHiddenFromMenu?: boolean;
|
1514
|
+
showForUserProfileType?: {
|
1515
|
+
kids: boolean;
|
1516
|
+
adults: boolean;
|
1517
|
+
};
|
1518
|
+
monetizationAccessIds?: string[];
|
1519
|
+
};
|
1520
|
+
|
1521
|
+
/**
|
1522
|
+
* @public
|
1523
|
+
*/
|
1524
|
+
declare type ScreenRowType = 'filter' | 'custom' | 'continueToWatch' | 'favourites' | 'topWatched' | 'applications';
|
1525
|
+
|
1526
|
+
/**
|
1527
|
+
* @public
|
1528
|
+
*/
|
1529
|
+
declare interface Series extends RowItem, MonetizableItem, ReactableContent {
|
1530
|
+
id: string;
|
1531
|
+
itemType: ROW_ITEM_TYPES.SERIES;
|
1532
|
+
cover: string;
|
1533
|
+
organizationId?: string;
|
1534
|
+
/**
|
1535
|
+
* Only used for non migrated series
|
1536
|
+
*/
|
1537
|
+
originalSeriesTagRef?: any;
|
1538
|
+
ref: DocumentReference<any>;
|
1539
|
+
availableSeasons: AvailableSeason[];
|
1540
|
+
actors?: DocumentReference<any>[];
|
1541
|
+
}
|
1542
|
+
|
1543
|
+
declare type Settings = {
|
1544
|
+
onSetUser: (handler: (userId: string, userPayload: unknown) => void) => void;
|
1545
|
+
setUser: (userId: string, userPayload: unknown) => void;
|
1546
|
+
};
|
1547
|
+
|
1548
|
+
/**
|
1549
|
+
* @public
|
1550
|
+
*/
|
1551
|
+
declare type Source = TvProgramSource | TivioVodSource | AdSource | OtherSource | LiveTvChannelSource;
|
1552
|
+
|
1553
|
+
/**
|
1554
|
+
* @public
|
1555
|
+
*/
|
1556
|
+
declare type SourceBase = {
|
1557
|
+
/**
|
1558
|
+
* Tivio SDK users may use pretty complicated source objects in their existing code and if Tivio player
|
1559
|
+
* is an interception layer, it should allow them to pass through any type of object.
|
1560
|
+
*/
|
1561
|
+
additionalPayload?: Record<string, any>;
|
1562
|
+
/**
|
1563
|
+
* Source type.
|
1564
|
+
*/
|
1565
|
+
type: 'ad' | 'live_tv_channel' | 'other' | 'tivio_vod' | 'tv_program';
|
1566
|
+
/**
|
1567
|
+
* URI to play.
|
1568
|
+
*/
|
1569
|
+
uri: string;
|
1570
|
+
};
|
1571
|
+
|
1572
|
+
/**
|
1573
|
+
* Based on this value player will change how the source is played. This, for example, affects whether source:
|
1574
|
+
* - will be seekable or not
|
1575
|
+
* - duration will be dynamically updated as time goes on
|
1576
|
+
* - live button will be shown in ui
|
1577
|
+
*/
|
1578
|
+
declare enum SourcePlayMode {
|
1579
|
+
ON_DEMAND = "ON_DEMAND",
|
1580
|
+
LIVE = "LIVE",
|
1581
|
+
/**
|
1582
|
+
* ON_DEMAND and LIVE at the same time.
|
1583
|
+
*/
|
1584
|
+
HYBRID = "HYBRID"
|
1585
|
+
}
|
1586
|
+
|
1587
|
+
/**
|
1588
|
+
* @public
|
1589
|
+
*/
|
1590
|
+
declare enum SourceType {
|
1591
|
+
ADVERTISEMENT = "ad",
|
1592
|
+
CHANNEL = "channel",
|
1593
|
+
VOD_TIVIO = "vod_tivio",
|
1594
|
+
VOD_EXTERNAL = "vod_external"
|
1595
|
+
}
|
1596
|
+
|
1597
|
+
/**
|
1598
|
+
* @public
|
1599
|
+
*/
|
1600
|
+
declare type StartAndContinuePosition = {
|
1601
|
+
/**
|
1602
|
+
* Relative from stream start, in ms.
|
1603
|
+
*
|
1604
|
+
* On input to Tivio either `startFromPosition` or `continueFromPosition` must always be provided.
|
1605
|
+
*
|
1606
|
+
* On output from Tivio it is always defined. Tivio can change this value.
|
1607
|
+
* (e.g. in order to fix start position of a TV program)
|
1608
|
+
*/
|
1609
|
+
startFromPosition?: number;
|
1610
|
+
/**
|
1611
|
+
* Relative from stream start, in ms.
|
1612
|
+
*
|
1613
|
+
* On input to Tivio either `startFromPosition` or `continueFromPosition` must always be provided.
|
1614
|
+
*
|
1615
|
+
* If provided, tivio will not correct it and will send this value back in startFromPosition.
|
1616
|
+
* If provided, startFromPosition is ignored.
|
1617
|
+
*/
|
1618
|
+
continueFromPosition?: number;
|
1619
|
+
};
|
1620
|
+
|
1621
|
+
/**
|
1622
|
+
* @public
|
1623
|
+
*/
|
1624
|
+
declare interface StorageManager_2 {
|
1625
|
+
getItem(key: string): string | null | Promise<string | null>;
|
1626
|
+
setItem(key: string, value: string): void | Promise<void>;
|
1627
|
+
removeItem(key: string): void | Promise<void>;
|
1628
|
+
}
|
1629
|
+
|
1630
|
+
/**
|
1631
|
+
* @public
|
1632
|
+
*/
|
1633
|
+
declare type SubscribeToItemsInRow = (rowId: string, cb: (error: Error | null, data: PaginationInterface<ItemInRow> | null) => void, options?: SubscribeToItemsInRowOptions) => Disposer_2;
|
1634
|
+
|
1635
|
+
/**
|
1636
|
+
* @public
|
1637
|
+
*/
|
1638
|
+
declare type SubscribeToItemsInRowOptions = Partial<{
|
1639
|
+
fetchTags: boolean;
|
1640
|
+
orderBy?: OrderBy<'defaultName' | DefaultOrderByField>[];
|
1641
|
+
where?: WhereFilter[];
|
1642
|
+
}> & PaginationOptions;
|
1643
|
+
|
1644
|
+
/**
|
1645
|
+
* @public
|
1646
|
+
*/
|
1647
|
+
declare type SubscribeToRowsInScreen = (screenId: string, cb: (error: Error | null, data: PaginationInterface<Row> | null) => void, options?: PaginationOptions) => Disposer_2;
|
1648
|
+
|
1649
|
+
/**
|
1650
|
+
* @public
|
1651
|
+
*/
|
1652
|
+
declare type SubscribeToTaggedVideos = (tagIds: string[], cb: (error: Error | null, data: PaginationInterface<Video> | null) => void, options?: SubscribeToTaggedVideosOptions) => Disposer_2;
|
1653
|
+
|
1654
|
+
/**
|
1655
|
+
* @public
|
1656
|
+
*/
|
1657
|
+
declare type SubscribeToTaggedVideosOptions = Omit<SubscribeToItemsInRowOptions, 'orderBy'> & {
|
1658
|
+
orderBy?: OrderBy<TaggedVideosOrderByField>[];
|
1659
|
+
};
|
1660
|
+
|
1661
|
+
/**
|
1662
|
+
* @public
|
1663
|
+
*/
|
1664
|
+
declare interface Tag extends RowItem {
|
1665
|
+
id: string;
|
1666
|
+
itemType: ROW_ITEM_TYPES.TAG;
|
1667
|
+
tagId: string;
|
1668
|
+
type?: string | null;
|
1669
|
+
metadata?: TagMetadataField[];
|
1670
|
+
color?: string;
|
1671
|
+
detailBanner?: string;
|
1672
|
+
availableSeasons?: AvailableSeason[];
|
1673
|
+
isFavorite: boolean;
|
1674
|
+
addToFavorites: () => void;
|
1675
|
+
removeFromFavorites: () => void;
|
1676
|
+
cover: string;
|
1677
|
+
getApplicationName: () => string | undefined;
|
1678
|
+
seriesRef?: DocumentReference<any>;
|
1679
|
+
fetchData: () => Promise<void>;
|
1680
|
+
getSeriesEntity: (path: string) => Promise<Series>;
|
1681
|
+
ref: DocumentReference<any>;
|
1682
|
+
seriesEntity: Series | null;
|
1683
|
+
}
|
1684
|
+
|
1685
|
+
declare interface TagAvailableSeasonsFieldType extends TagMetadataFieldDefinition {
|
1686
|
+
type: TagMetadataFieldType.AVAILABLE_SEASONS;
|
1687
|
+
value: AvailableSeasonField[];
|
1688
|
+
}
|
1689
|
+
|
1690
|
+
declare interface TagBooleanFieldType extends TagMetadataFieldDefinition {
|
1691
|
+
type: TagMetadataFieldType.BOOLEAN;
|
1692
|
+
value: boolean;
|
1693
|
+
}
|
1694
|
+
|
1695
|
+
/**
|
1696
|
+
* @public
|
1697
|
+
*/
|
1698
|
+
declare type TaggedVideosOrderByField = 'seasonNumber' | 'episodeNumber' | 'contentType' | DefaultOrderByField;
|
1699
|
+
|
1700
|
+
declare type TagMetadataField = TagStringFieldType | TagNumberFieldType | TagBooleanFieldType | TagTranslationFieldType | TagAvailableSeasonsFieldType | TagOrganizationRefFieldType;
|
1701
|
+
|
1702
|
+
declare interface TagMetadataFieldDefinition {
|
1703
|
+
key: string;
|
1704
|
+
type: TagMetadataFieldType;
|
1705
|
+
}
|
1706
|
+
|
1707
|
+
declare enum TagMetadataFieldType {
|
1708
|
+
STRING = "STRING",
|
1709
|
+
TRANSLATION = "TRANSLATION",
|
1710
|
+
NUMBER = "NUMBER",
|
1711
|
+
BOOLEAN = "BOOLEAN",
|
1712
|
+
AVAILABLE_SEASONS = "AVAILABLE_SEASONS",
|
1713
|
+
ORGANIZATION_REF = "ORGANIZATION_REF"
|
1714
|
+
}
|
1715
|
+
|
1716
|
+
declare interface TagNumberFieldType extends TagMetadataFieldDefinition {
|
1717
|
+
type: TagMetadataFieldType.NUMBER;
|
1718
|
+
value: number;
|
1719
|
+
}
|
1720
|
+
|
1721
|
+
declare interface TagOrganizationRefFieldType extends TagMetadataFieldDefinition {
|
1722
|
+
type: TagMetadataFieldType.ORGANIZATION_REF;
|
1723
|
+
value: DocumentReference<any>;
|
1724
|
+
}
|
1725
|
+
|
1726
|
+
declare interface TagStringFieldType extends TagMetadataFieldDefinition {
|
1727
|
+
type: TagMetadataFieldType.STRING;
|
1728
|
+
value: string;
|
1729
|
+
}
|
1730
|
+
|
1731
|
+
declare interface TagTranslationFieldType extends TagMetadataFieldDefinition {
|
1732
|
+
type: TagMetadataFieldType.TRANSLATION;
|
1733
|
+
value: Translation;
|
1734
|
+
}
|
1735
|
+
|
1736
|
+
/**
|
1737
|
+
* @public
|
1738
|
+
*/
|
1739
|
+
declare interface TivioAuth {
|
1740
|
+
/**
|
1741
|
+
* @param email
|
1742
|
+
* @param password
|
1743
|
+
*/
|
1744
|
+
createUserWithEmailAndPassword: CreateUserWithEmailAndPassword;
|
1745
|
+
/**
|
1746
|
+
* Sign in the user and starts listening on his purchases
|
1747
|
+
* @param email
|
1748
|
+
* @param password
|
1749
|
+
*/
|
1750
|
+
signInWithEmailAndPassword: (email: string, password: string) => Promise<string | null>;
|
1751
|
+
signInWithCustomToken: (token: string) => Promise<string | null>;
|
1752
|
+
signOut: () => Promise<void>;
|
1753
|
+
/**
|
1754
|
+
* Used for reset forgotten password by user
|
1755
|
+
*/
|
1756
|
+
resetPassword: (email: string) => Promise<void>;
|
1757
|
+
}
|
1758
|
+
|
1759
|
+
export declare type TivioBundle = TivioJsBundle;
|
1760
|
+
|
1761
|
+
export declare let tivioBundle: RemoteBundleState | null;
|
1762
|
+
|
1763
|
+
/**
|
1764
|
+
* @public
|
1765
|
+
*/
|
1766
|
+
declare interface TivioConfig {
|
1767
|
+
/**
|
1768
|
+
* Tells Tivio which technologies/protocols etc. is the device capable to play.
|
1769
|
+
* If not provided, Tivio will try to guess it (based on the browser).
|
1770
|
+
*/
|
1771
|
+
deviceCapabilities?: PlayerCapability_2[];
|
1772
|
+
/**
|
1773
|
+
* Additional options for deviceCapabilities
|
1774
|
+
*/
|
1775
|
+
capabilitiesOptions?: {
|
1776
|
+
/**
|
1777
|
+
* Should the player prefer HTTP sources instead HTTPs if they are available.
|
1778
|
+
* This can be used on platforms that support mixed content but do not support
|
1779
|
+
* specific HTTPS certificates. (e.g. certificates from Letsencrypt not supported on LG TVs)
|
1780
|
+
*/
|
1781
|
+
preferHttp?: boolean;
|
1782
|
+
};
|
1783
|
+
secret: string;
|
1784
|
+
language: LangCode;
|
1785
|
+
debug?: boolean;
|
1786
|
+
verbose?: boolean;
|
1787
|
+
firebaseApp?: any | null;
|
1788
|
+
firebaseFactory?: (config: Object, appName?: string) => firebase.FirebaseApp;
|
1789
|
+
authDomainOverride?: string;
|
1790
|
+
firestore?: any | null;
|
1791
|
+
currency: Currency;
|
1792
|
+
applicationId?: string;
|
1793
|
+
isTivioProApp?: boolean;
|
1794
|
+
lockApplicationHandle?: string;
|
1795
|
+
/**
|
1796
|
+
* Configuration for GDPR consent collection (CMP)
|
1797
|
+
*/
|
1798
|
+
cmp?: CmpConfig;
|
1799
|
+
/**
|
1800
|
+
* Device information - model, os, version, etc. This is useful for devices
|
1801
|
+
* where this information cannot be reliably auto-detected.
|
1802
|
+
*/
|
1803
|
+
deviceInfo?: DeviceInfo;
|
1804
|
+
player?: PlayerConfig;
|
1805
|
+
/**
|
1806
|
+
* Used for purposes where we need to differentiate organizations before it is known based on secret and data from DB.
|
1807
|
+
*
|
1808
|
+
* At this time it is necessary only for LG builds because on LG TVs it is needed to separate apps indexedDB storages
|
1809
|
+
* (otherwise organizations would share login token).
|
1810
|
+
*/
|
1811
|
+
customerId?: CustomerId;
|
1812
|
+
}
|
1813
|
+
|
1814
|
+
/**
|
1815
|
+
* @public
|
1816
|
+
*/
|
1817
|
+
declare type TivioGetters = {
|
1818
|
+
isTivioLoaded: (cb: (isLoaded: boolean) => void) => void;
|
1819
|
+
isSignedIn: () => boolean;
|
1820
|
+
/**
|
1821
|
+
* Get (or create) player wrapper instance
|
1822
|
+
* @param opt - player getter options
|
1823
|
+
* @returns {PlayerWrapper} player wrapper instance
|
1824
|
+
*/
|
1825
|
+
getPlayerWrapper: (opt: {
|
1826
|
+
playerWrapperId?: string;
|
1827
|
+
}) => PlayerWrapper_2;
|
1828
|
+
getOrganizationSubscriptions: () => Promise<Monetization[] | undefined>;
|
1829
|
+
/**
|
1830
|
+
* Get video by its id.
|
1831
|
+
* @param videoId - video id
|
1832
|
+
* @returns {Promise<Video | null>} video or null if video does not exists
|
1833
|
+
*/
|
1834
|
+
getVideoById: (videoId: string) => Promise<Video | null>;
|
1835
|
+
/**
|
1836
|
+
* Get player capabilities based on user's browser and OS as resolved by Tivio.
|
1837
|
+
* @returns PlayerCapability[]
|
1838
|
+
*/
|
1839
|
+
getPlayerCapabilities: () => PlayerCapability_2[];
|
1840
|
+
};
|
1841
|
+
|
1842
|
+
/**
|
1843
|
+
* @public
|
1844
|
+
*/
|
1845
|
+
declare type TivioJsBundleExposedApi = {
|
1846
|
+
AdSource: any;
|
1847
|
+
ChannelSource: any;
|
1848
|
+
VodTivioSource: any;
|
1849
|
+
/**
|
1850
|
+
* Get (or create) player wrapper instance
|
1851
|
+
* @param id - player wrapper id
|
1852
|
+
* @returns {Player} player wrapper instance
|
1853
|
+
*/
|
1854
|
+
getPlayerWrapper: (id: string) => Player;
|
1855
|
+
/**
|
1856
|
+
* Get tv channel by its id.
|
1857
|
+
* @param tvChannelId - tv channel id
|
1858
|
+
* @returns {Promise<TvChannel | null>} channel or null if tv channel does not exists
|
1859
|
+
*/
|
1860
|
+
getTvChannelById: (tvChannelId: string) => Promise<TvChannel | null>;
|
1861
|
+
/**
|
1862
|
+
* Get tag by its id.
|
1863
|
+
* @param tagId - tag id
|
1864
|
+
* @returns {Promise<Tag | null>} widget or null if tag does not exists
|
1865
|
+
*/
|
1866
|
+
getTagById: (tagId: string) => Promise<Tag | null>;
|
1867
|
+
createPlayerWrapper: (playerImplementation: PlayerInterfaceForPlayerWrapper) => TivioPlayerWrapper;
|
1868
|
+
destroy: () => Promise<void>;
|
1869
|
+
} & Pick<TivioGetters, 'getVideoById'> & Pick<TivioSubscriptions, 'subscribeToVideo' | 'subscribeToItemsInRow'> & Pick<TivioAuth, 'createUserWithEmailAndPassword' | 'signInWithEmailAndPassword'> & Pick<TivioSetters, 'setBundleVersion' | 'setUser' | 'setLanguage' | 'setStorageManager'>;
|
1870
|
+
|
1871
|
+
/**
|
1872
|
+
* @public
|
1873
|
+
*/
|
1874
|
+
declare interface TivioPlayerWrapper {
|
1875
|
+
addEventListener: (eventType: PlayerWrapperEventTypeType, listener: Listener) => void;
|
1876
|
+
reportError: (error: Error) => void;
|
1877
|
+
reportPlaybackEnded: () => void;
|
1878
|
+
reportTimeProgress: (ms: number) => void;
|
1879
|
+
seekTo: (ms: number) => void;
|
1880
|
+
/**
|
1881
|
+
* @param {Source} source - source to set
|
1882
|
+
* @param {string} calibrationId - id of calibration profile
|
1883
|
+
*/
|
1884
|
+
setSource: (source: Source | null, calibrationId?: string) => void;
|
1885
|
+
}
|
1886
|
+
|
1887
|
+
/**
|
1888
|
+
* @public
|
1889
|
+
*/
|
1890
|
+
declare type TivioSetters = {
|
1891
|
+
setBundleVersion: (bundleVersion: string | null) => void;
|
1892
|
+
/**
|
1893
|
+
* Set tivio language.
|
1894
|
+
* @param language
|
1895
|
+
*/
|
1896
|
+
setLanguage: (language: LangCode) => void;
|
1897
|
+
setStorageManager: (storageManager: StorageManager_2) => void;
|
1898
|
+
setUser: (userId: string | null, userPayload?: UserPayload) => Promise<void>;
|
1899
|
+
};
|
1900
|
+
|
1901
|
+
/**
|
1902
|
+
* @public
|
1903
|
+
*/
|
1904
|
+
declare type TivioSubscriptions = {
|
1905
|
+
subscribeToUser: (cb: (error: string | null, user: User | null) => void) => void;
|
1906
|
+
/**
|
1907
|
+
* Listen to video changes.
|
1908
|
+
* @param videoId - video id
|
1909
|
+
* @param cb - callback on video updates or on error
|
1910
|
+
*/
|
1911
|
+
subscribeToVideo: (videoId: string, cb: (error: Error | null, data: Video | null, disposer?: Disposer_2) => void) => void;
|
1912
|
+
subscribeToItemsInRow: SubscribeToItemsInRow;
|
1913
|
+
subscribeToRowsInScreen: SubscribeToRowsInScreen;
|
1914
|
+
subscribeToTaggedVideos: SubscribeToTaggedVideos;
|
1915
|
+
registerOverlayCallbacks: (callbacks: {
|
1916
|
+
onShow: () => void;
|
1917
|
+
onHide: () => void;
|
1918
|
+
}) => void;
|
1919
|
+
};
|
1920
|
+
|
1921
|
+
/**
|
1922
|
+
* @public
|
1923
|
+
*/
|
1924
|
+
declare type TivioVodSource = SourceBase & StartAndContinuePosition & {
|
1925
|
+
type: 'tivio_vod';
|
1926
|
+
/**
|
1927
|
+
* Allows Tivio to load monetization config an apply ads.
|
1928
|
+
*/
|
1929
|
+
videoPath: string;
|
1930
|
+
};
|
1931
|
+
|
1932
|
+
/**
|
1933
|
+
* @public
|
1934
|
+
* Video track
|
1935
|
+
*/
|
1936
|
+
declare interface Track {
|
1937
|
+
id: number;
|
1938
|
+
/**
|
1939
|
+
* e.g. 480, 720, 1080
|
1940
|
+
*/
|
1941
|
+
height: number;
|
1942
|
+
width: number;
|
1943
|
+
active: boolean;
|
1944
|
+
language: LangCode;
|
1945
|
+
}
|
1946
|
+
|
1947
|
+
/**
|
1948
|
+
* Represents one string in every supported language mutation.
|
1949
|
+
* @public
|
1950
|
+
*/
|
1951
|
+
declare type Translation = {
|
1952
|
+
[key in LangCode]?: string;
|
1953
|
+
};
|
1954
|
+
|
1955
|
+
/**
|
1956
|
+
* @public
|
1957
|
+
*/
|
1958
|
+
declare interface TvChannel extends RowItem {
|
1959
|
+
id: string;
|
1960
|
+
itemType: ROW_ITEM_TYPES.TV_CHANNEL;
|
1961
|
+
name: string;
|
1962
|
+
path: string;
|
1963
|
+
country?: string;
|
1964
|
+
filters: string[];
|
1965
|
+
logo?: string;
|
1966
|
+
logoPendingOverlayWidth?: string;
|
1967
|
+
hls: string;
|
1968
|
+
dash: string;
|
1969
|
+
/**
|
1970
|
+
* Returns all transactions and subscriptions applied to this tv channel.
|
1971
|
+
* Transactions before subscriptions, sorted by price ascending.
|
1972
|
+
*/
|
1973
|
+
getPurchasableMonetizations(options?: GetPurchasableMonetizationsOptions): PurchasableMonetization[];
|
1974
|
+
getSourceUrl(options?: {
|
1975
|
+
language?: LangCode;
|
1976
|
+
}): Promise<GetSourceUrlResponse & {
|
1977
|
+
language?: LangCode;
|
1978
|
+
}>;
|
1979
|
+
purchasableMonetization: any | null;
|
1980
|
+
price: number;
|
1981
|
+
cover: string;
|
1982
|
+
isPlayable: boolean;
|
1983
|
+
url: string;
|
1984
|
+
type?: TvChannelType;
|
1985
|
+
}
|
1986
|
+
|
1987
|
+
declare enum TvChannelType {
|
1988
|
+
/**
|
1989
|
+
* Classic live tv channel
|
1990
|
+
*/
|
1991
|
+
CLASSIC = "CLASSIC",
|
1992
|
+
/**
|
1993
|
+
* "Virtual" tv channel constructed from separate videos
|
1994
|
+
*/
|
1995
|
+
VIRTUAL = "VIRTUAL"
|
1996
|
+
}
|
1997
|
+
|
1998
|
+
/**
|
1999
|
+
* @public
|
2000
|
+
*/
|
2001
|
+
declare type TvMode = 'startover' | 'timeshift';
|
2002
|
+
|
2003
|
+
declare interface TvProgram {
|
2004
|
+
id: string;
|
2005
|
+
from: Date | null;
|
2006
|
+
to: Date | null;
|
2007
|
+
name: string;
|
2008
|
+
description: string;
|
2009
|
+
url: string;
|
2010
|
+
image: string;
|
2011
|
+
landscape?: string | null;
|
2012
|
+
video: Video | null;
|
2013
|
+
}
|
2014
|
+
|
2015
|
+
/**
|
2016
|
+
* @public
|
2017
|
+
*/
|
2018
|
+
declare type TvProgramSource = SourceBase & StartAndContinuePosition & {
|
2019
|
+
type: 'tv_program';
|
2020
|
+
/**
|
2021
|
+
* If epgTo is wrong, Tivio cannot correctly guess if the video it startover or timeshift . For such cases
|
2022
|
+
* Tivio needs explicit tv mode.
|
2023
|
+
* null if source begins in the future.
|
2024
|
+
*/
|
2025
|
+
tvMode: 'startover' | 'timeshift' | null;
|
2026
|
+
/**
|
2027
|
+
* Tivio needs channel name in order to load markers.
|
2028
|
+
*/
|
2029
|
+
channelName: string;
|
2030
|
+
/**
|
2031
|
+
* Tivio needs EPG from in order to load markers.
|
2032
|
+
*/
|
2033
|
+
epgFrom: Date;
|
2034
|
+
/**
|
2035
|
+
* Tivio needs EPG to in order to load markers.
|
2036
|
+
*/
|
2037
|
+
epgTo: Date;
|
2038
|
+
/**
|
2039
|
+
* When the stream (provided in uri) really starts - typically few minutes before epgFrom.
|
2040
|
+
*/
|
2041
|
+
streamStart: Date;
|
2042
|
+
};
|
2043
|
+
|
2044
|
+
/**
|
2045
|
+
* @public
|
2046
|
+
*/
|
2047
|
+
declare type User = {
|
2048
|
+
/**
|
2049
|
+
* Unique id of the corresponding user document.
|
2050
|
+
*/
|
2051
|
+
id: string;
|
2052
|
+
/**
|
2053
|
+
* Returns "active" (non-expired) purchases so they give access to some content.
|
2054
|
+
* Does not return voucher purchases because they give access to videos/subscriptions only for user who activates voucher
|
2055
|
+
* not for user who purchases it.
|
2056
|
+
*/
|
2057
|
+
purchases: Purchase[];
|
2058
|
+
/**
|
2059
|
+
* Returns all PAID or CANCELLED user purchases (expired and non-expired)
|
2060
|
+
*/
|
2061
|
+
allPurchases: Purchase[];
|
2062
|
+
availablePromotionsIds: string[];
|
2063
|
+
/**
|
2064
|
+
* Returns "active" (not CANCELLED) VoD purchases ("transaction" type)
|
2065
|
+
*/
|
2066
|
+
purchasedVods: Purchase[];
|
2067
|
+
/**
|
2068
|
+
* Returns "active" (non-expired) subscription purchases
|
2069
|
+
*/
|
2070
|
+
purchasedSubscriptions: Purchase[];
|
2071
|
+
/**
|
2072
|
+
* Returns last expired subscription which user can renew or undefined
|
2073
|
+
*/
|
2074
|
+
extendableSubscription?: Purchase;
|
2075
|
+
getPurchasedVideos: () => unknown[];
|
2076
|
+
getOneTimePurchases: () => Purchase[];
|
2077
|
+
isPurchasesInitialized: boolean;
|
2078
|
+
isSignedIn: boolean;
|
2079
|
+
isReady: boolean;
|
2080
|
+
email?: string;
|
2081
|
+
type?: UserType;
|
2082
|
+
photoURL: string | null;
|
2083
|
+
name?: string;
|
2084
|
+
/**
|
2085
|
+
* Authentication id differs from {@link id}.
|
2086
|
+
*/
|
2087
|
+
authUserId?: string;
|
2088
|
+
favorites: any[];
|
2089
|
+
watchedPositions: any[];
|
2090
|
+
watchHistory: any[];
|
2091
|
+
profiles: any[];
|
2092
|
+
activeUserProfileId: string | null;
|
2093
|
+
patreon?: PatreonUserAuth;
|
2094
|
+
subscriptionIdsToShow: string[] | null;
|
2095
|
+
followedOrganizationIds: string[];
|
2096
|
+
isAnonymous: boolean;
|
2097
|
+
isDiscordConnected: boolean;
|
2098
|
+
createUserProfile: (request: any) => Promise<void>;
|
2099
|
+
deleteUserProfile: (profileId: string) => Promise<void>;
|
2100
|
+
setActiveUserProfileId: (id: string) => void;
|
2101
|
+
getFollowedOrganizations: () => Promise<Array<FollowedOrganizationData | undefined>>;
|
2102
|
+
sendFinalizeRegistrationEmail: (email: string) => Promise<void>;
|
2103
|
+
isUserAlreadyRegisteredByTenant: (email: string, tenantId: string) => Promise<boolean>;
|
2104
|
+
getAllExtendableSubscriptions: () => Promise<Purchase[]>;
|
2105
|
+
};
|
2106
|
+
|
2107
|
+
/**
|
2108
|
+
* @public
|
2109
|
+
*/
|
2110
|
+
declare type UserPayload = Record<string, any>;
|
2111
|
+
|
2112
|
+
/**
|
2113
|
+
* @public
|
2114
|
+
*/
|
2115
|
+
declare enum UserType {
|
2116
|
+
ORGANIZATION_USER = "ORGANIZATION_USER",
|
2117
|
+
TIVIO_USER = "TIVIO_USER"
|
2118
|
+
}
|
2119
|
+
|
2120
|
+
/**
|
2121
|
+
* @public
|
2122
|
+
* null - classic VAST
|
2123
|
+
* VPAID - VAST with VPAID extension
|
2124
|
+
* others...
|
2125
|
+
*/
|
2126
|
+
declare type VastApiFramework = string | 'VPAID' | null;
|
2127
|
+
|
2128
|
+
/**
|
2129
|
+
* @public
|
2130
|
+
*/
|
2131
|
+
declare enum VastProvider {
|
2132
|
+
CNC_PREBID = "cnc-prebid",
|
2133
|
+
CNC_STARGAZE_PREROLL_1 = "cnc-stargaze-preroll-1",
|
2134
|
+
CNC_STARGAZE_PREROLL_2 = "cnc-stargaze-preroll-2",
|
2135
|
+
CNC_STARGAZE_MIDROLL = "cnc-stargaze-midroll",
|
2136
|
+
ETARGET_PREBID = "etarget-prebid",
|
2137
|
+
FALLBACK_HLS = "fallback-hls",
|
2138
|
+
FALLBACK_MP4 = "fallback",
|
2139
|
+
GARAZ_TV = "garaz.tv",
|
2140
|
+
GARAZ_TV_DEV = "garaz.tv.dev",
|
2141
|
+
IMPRESSION_MEDIA_PREBID = "impressionMedia-prebid",
|
2142
|
+
JOJ_ADFORM = "joj",
|
2143
|
+
JOJ_SMART = "joj-smart",
|
2144
|
+
JOJ_AD_MANAGER_VOD_PREROLL = "joj-ad-manager-vod-preroll",
|
2145
|
+
JOJ_AD_MANAGER_VOD_MIDROLL = "joj-ad-manager-vod-midroll",
|
2146
|
+
JOJ_AD_MANAGER_LIVE_PREROLL = "joj-ad-manager-live-preroll",
|
2147
|
+
MALL_TV = "malltv",
|
2148
|
+
MALL_TV_PREBID = "malltv-prebid",
|
2149
|
+
PRIMA = "prima",
|
2150
|
+
TEST = "test",
|
2151
|
+
TEST_VPAID = "test-vpaid",
|
2152
|
+
TIVIO_ADS = "tivio-ads",
|
2153
|
+
JOJ_TEST_AD_FORM_PROGRAMMATIC = "joj-test-ad-form-programmatic",
|
2154
|
+
JOJ_TEST_TESTER_VASTERIX = "joj-test-tester-vasterix",
|
2155
|
+
JOJ_TEST_TESTER_ADFORM_30 = "joj-test-tester-adform-30"
|
2156
|
+
}
|
2157
|
+
|
2158
|
+
/**
|
2159
|
+
* @public
|
2160
|
+
*/
|
2161
|
+
declare interface Video extends RowItem, MonetizableItem, ReactableContent {
|
2162
|
+
id: string;
|
2163
|
+
itemType: ROW_ITEM_TYPES.VIDEO;
|
2164
|
+
/**
|
2165
|
+
* @deprecated use assets instead
|
2166
|
+
*/
|
2167
|
+
cover: string | null;
|
2168
|
+
sectionId: string | null;
|
2169
|
+
channelId: string | null;
|
2170
|
+
duration: number;
|
2171
|
+
path: string;
|
2172
|
+
tags: Tag[];
|
2173
|
+
image: string | null;
|
2174
|
+
isPlayable: boolean;
|
2175
|
+
monetizations: Monetization[];
|
2176
|
+
getSourceUrl(options?: {
|
2177
|
+
language?: LangCode;
|
2178
|
+
}): Promise<GetSourceUrlResponse & {
|
2179
|
+
language?: LangCode;
|
2180
|
+
}>;
|
2181
|
+
getSeekingMatrixPreviewByTime(timeMs: number, offsetIndex?: number): {
|
2182
|
+
url: string;
|
2183
|
+
x: number;
|
2184
|
+
y: number;
|
2185
|
+
width: number;
|
2186
|
+
height: number;
|
2187
|
+
interval: number;
|
2188
|
+
timeMs: number;
|
2189
|
+
} | null;
|
2190
|
+
purchasableMonetization: any | null;
|
2191
|
+
transaction: PurchasableMonetization | undefined;
|
2192
|
+
subscriptions: PurchasableMonetization[];
|
2193
|
+
sources?: any[];
|
2194
|
+
allSources?: any[];
|
2195
|
+
isPlaylist: boolean;
|
2196
|
+
name: string;
|
2197
|
+
urlNames?: string[];
|
2198
|
+
urlName?: string;
|
2199
|
+
price: number | null;
|
2200
|
+
detailedPrice: DetailedPrice | null;
|
2201
|
+
url: string;
|
2202
|
+
adMonetizationId?: string;
|
2203
|
+
from?: Date;
|
2204
|
+
to?: Date;
|
2205
|
+
detailBanner?: string;
|
2206
|
+
descriptionRich?: string;
|
2207
|
+
organizationId?: string;
|
2208
|
+
linkedVideosRaw: LinkedVideoRaw[] | undefined;
|
2209
|
+
linkedVideos: LinkedVideo[] | undefined;
|
2210
|
+
pipPaths?: string[];
|
2211
|
+
contentType: VideoContentType | null;
|
2212
|
+
year?: number;
|
2213
|
+
episodeNumber?: number;
|
2214
|
+
seasonNumber?: number;
|
2215
|
+
getTagsOfType: (type: string) => Tag[];
|
2216
|
+
geoBlocking: GeoBlocking | undefined;
|
2217
|
+
loadLinkedVideos: () => any;
|
2218
|
+
getLinkedVideos: (type: any) => any;
|
2219
|
+
trailer: Video | null;
|
2220
|
+
teaser: Video | null;
|
2221
|
+
hasTasting: boolean;
|
2222
|
+
isTastingValid: () => boolean;
|
2223
|
+
tasting: Video | null;
|
2224
|
+
watchPosition: number | null;
|
2225
|
+
isFavorite: boolean;
|
2226
|
+
addToFavorites: () => void;
|
2227
|
+
removeFromFavorites: () => void;
|
2228
|
+
availability: ContentAvailability | null;
|
2229
|
+
sourceLanguages: LangCode[];
|
2230
|
+
urlByLanguage: (lang: LangCode) => string | undefined;
|
2231
|
+
getApplicationName: () => string | undefined;
|
2232
|
+
getApplicationLogo: () => string | undefined;
|
2233
|
+
setApplicationData: (applicationData: RowItemApplicationData) => void;
|
2234
|
+
linkedVideosInNotLoaded: () => boolean | undefined;
|
2235
|
+
initApplication: () => Promise<void>;
|
2236
|
+
init: () => Promise<void>;
|
2237
|
+
progress?: number;
|
2238
|
+
}
|
2239
|
+
|
2240
|
+
/**
|
2241
|
+
* @public
|
2242
|
+
*/
|
2243
|
+
declare enum VideoContentType {
|
2244
|
+
/**
|
2245
|
+
* Default video content type
|
2246
|
+
*/
|
2247
|
+
VIDEO = "VIDEO",
|
2248
|
+
FILM = "FILM",
|
2249
|
+
SERIES = "SERIES"
|
2250
|
+
}
|
2251
|
+
|
2252
|
+
declare enum VideoSourceCodec {
|
2253
|
+
H264 = "h264",
|
2254
|
+
H265 = "h265"
|
2255
|
+
}
|
2256
|
+
|
2257
|
+
declare enum VideoSourceEncryption {
|
2258
|
+
NONE = "none",
|
2259
|
+
WIDEVINE = "widevine",
|
2260
|
+
FAIRPLAY = "fairplay",
|
2261
|
+
PLAYREADY = "playready"
|
2262
|
+
}
|
2263
|
+
|
2264
|
+
declare enum VideoSourceProtocol {
|
2265
|
+
HLS = "hls",
|
2266
|
+
DASH = "dash",
|
2267
|
+
MP4 = "mp4"
|
2268
|
+
}
|
2269
|
+
|
2270
|
+
/**
|
2271
|
+
* @public
|
2272
|
+
*/
|
2273
|
+
declare interface VirtualChannelSourceInterface extends ChannelSourceInterface {
|
2274
|
+
tvChannelType: TvChannelType.VIRTUAL;
|
2275
|
+
program?: TvProgram | null;
|
2276
|
+
video?: Video | null;
|
2277
|
+
clone(params?: Partial<VirtualChannelSourceParams>): VirtualChannelSourceInterface;
|
2278
|
+
initializeNext(): Promise<void>;
|
2279
|
+
deltaMsFromStart: number;
|
2280
|
+
}
|
2281
|
+
|
2282
|
+
/**
|
2283
|
+
* @public
|
2284
|
+
*/
|
2285
|
+
declare interface VirtualChannelSourceParams extends ChannelSourceParams {
|
2286
|
+
tvChannelType: TvChannelType.VIRTUAL;
|
2287
|
+
currentProgram?: TvProgram | null;
|
2288
|
+
drm?: Drm;
|
2289
|
+
}
|
2290
|
+
|
2291
|
+
/**
|
2292
|
+
* @public
|
2293
|
+
*/
|
2294
|
+
declare interface VodExternalSourceInterface extends PlayerSourceInterface<SourceType.VOD_EXTERNAL> {
|
2295
|
+
monetizationId?: string;
|
2296
|
+
originalOptions: Record<string, any>;
|
2297
|
+
poster: string | null;
|
2298
|
+
}
|
2299
|
+
|
2300
|
+
/**
|
2301
|
+
* @public
|
2302
|
+
*/
|
2303
|
+
declare interface VodTivioSourceInterface extends PlayerSourceInterface<SourceType.VOD_TIVIO> {
|
2304
|
+
/**
|
2305
|
+
* e.g. 259ud0fgdf4
|
2306
|
+
*/
|
2307
|
+
adMonetizationId?: string;
|
2308
|
+
/**
|
2309
|
+
* e.g. videos/1532543
|
2310
|
+
*/
|
2311
|
+
videoPath: string;
|
2312
|
+
poster: string | null;
|
2313
|
+
/**
|
2314
|
+
* Position to continue playing from in milliseconds
|
2315
|
+
*/
|
2316
|
+
continuePositionMs?: ContinuePosition;
|
2317
|
+
/**
|
2318
|
+
* Drm configuration
|
2319
|
+
*/
|
2320
|
+
drm?: Drm;
|
2321
|
+
watermark: Watermark | null;
|
2322
|
+
canWatchOnDevice: boolean;
|
2323
|
+
isAvailable: boolean;
|
2324
|
+
availability: ContentAvailability | null;
|
2325
|
+
video: Video;
|
2326
|
+
clone: (params?: Partial<VodTivioSourceParams>) => VodTivioSourceInterface;
|
2327
|
+
}
|
2328
|
+
|
2329
|
+
/**
|
2330
|
+
* @public
|
2331
|
+
*/
|
2332
|
+
declare interface VodTivioSourceParams extends PlayerSourceParams<SourceType.VOD_TIVIO> {
|
2333
|
+
videoPath: string;
|
2334
|
+
adMonetizationId?: string;
|
2335
|
+
language?: LangCode;
|
2336
|
+
drm?: Drm;
|
2337
|
+
ignoreWatchPosition?: boolean;
|
2338
|
+
}
|
2339
|
+
|
2340
|
+
/**
|
2341
|
+
* @public
|
2342
|
+
*/
|
2343
|
+
declare interface Watermark {
|
2344
|
+
caption: string;
|
2345
|
+
size: 'large' | 'medium';
|
2346
|
+
}
|
2347
|
+
|
2348
|
+
/**
|
2349
|
+
* @public
|
2350
|
+
*/
|
2351
|
+
declare interface WhereFilter {
|
2352
|
+
field: string;
|
2353
|
+
operator: WhereFilterOp;
|
2354
|
+
value: any;
|
2355
|
+
}
|
2356
|
+
|
2357
|
+
declare type WhereFilterOp = '<' | '<=' | '==' | '!=' | '>=' | '>' | 'array-contains' | 'in' | 'array-contains-any' | 'not-in';
|
2358
|
+
|
2359
|
+
export { }
|