@keystrokehq/spotify 0.0.1

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.
Files changed (72) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +113 -0
  3. package/dist/_official/index.d.mts +32 -0
  4. package/dist/_official/index.mjs +3 -0
  5. package/dist/_runtime/index.d.mts +1 -0
  6. package/dist/_runtime/index.mjs +1 -0
  7. package/dist/albums.d.mts +265 -0
  8. package/dist/albums.mjs +72 -0
  9. package/dist/artists.d.mts +237 -0
  10. package/dist/artists.mjs +84 -0
  11. package/dist/audio-analysis.d.mts +91 -0
  12. package/dist/audio-analysis.mjs +19 -0
  13. package/dist/audio-features.d.mts +61 -0
  14. package/dist/audio-features.mjs +31 -0
  15. package/dist/audiobooks.d.mts +176 -0
  16. package/dist/audiobooks.mjs +59 -0
  17. package/dist/browse.d.mts +74 -0
  18. package/dist/browse.mjs +31 -0
  19. package/dist/categories.d.mts +118 -0
  20. package/dist/categories.mjs +66 -0
  21. package/dist/chapters.d.mts +163 -0
  22. package/dist/chapters.mjs +39 -0
  23. package/dist/client.d.mts +3486 -0
  24. package/dist/client.mjs +758 -0
  25. package/dist/connection.d.mts +2 -0
  26. package/dist/connection.mjs +3 -0
  27. package/dist/episodes.d.mts +149 -0
  28. package/dist/episodes.mjs +39 -0
  29. package/dist/errors.d.mts +34 -0
  30. package/dist/errors.mjs +89 -0
  31. package/dist/events.d.mts +613 -0
  32. package/dist/events.mjs +55 -0
  33. package/dist/factory-tZba6Hij.mjs +8 -0
  34. package/dist/follow.d.mts +83 -0
  35. package/dist/follow.mjs +65 -0
  36. package/dist/genres.d.mts +14 -0
  37. package/dist/genres.mjs +19 -0
  38. package/dist/index.d.mts +1 -0
  39. package/dist/index.mjs +1 -0
  40. package/dist/integration-DQ5Egd4f.d.mts +41 -0
  41. package/dist/integration-ykoImsCq.mjs +78 -0
  42. package/dist/library.d.mts +472 -0
  43. package/dist/library.mjs +225 -0
  44. package/dist/markets.d.mts +14 -0
  45. package/dist/markets.mjs +20 -0
  46. package/dist/me.d.mts +169 -0
  47. package/dist/me.mjs +58 -0
  48. package/dist/messaging.d.mts +1 -0
  49. package/dist/messaging.mjs +1 -0
  50. package/dist/operations.d.mts +6 -0
  51. package/dist/operations.mjs +237 -0
  52. package/dist/player.d.mts +877 -0
  53. package/dist/player.mjs +220 -0
  54. package/dist/playlists.d.mts +546 -0
  55. package/dist/playlists.mjs +243 -0
  56. package/dist/recommendations.d.mts +144 -0
  57. package/dist/recommendations.mjs +137 -0
  58. package/dist/schemas.d.mts +3312 -0
  59. package/dist/schemas.mjs +460 -0
  60. package/dist/search.d.mts +389 -0
  61. package/dist/search.mjs +42 -0
  62. package/dist/shows.d.mts +159 -0
  63. package/dist/shows.mjs +59 -0
  64. package/dist/tracks.d.mts +173 -0
  65. package/dist/tracks.mjs +37 -0
  66. package/dist/triggers.d.mts +45 -0
  67. package/dist/triggers.mjs +201 -0
  68. package/dist/users.d.mts +35 -0
  69. package/dist/users.mjs +20 -0
  70. package/dist/verification.d.mts +1 -0
  71. package/dist/verification.mjs +1 -0
  72. package/package.json +187 -0
@@ -0,0 +1,3486 @@
1
+ import { t as SpotifyCredentials } from "./integration-DQ5Egd4f.mjs";
2
+
3
+ //#region src/client.d.ts
4
+ type FetchLike = typeof fetch;
5
+ type PrimitiveQueryValue = string | number | boolean;
6
+ interface SpotifyClientConfig {
7
+ readonly fetch?: FetchLike;
8
+ readonly baseUrl?: string;
9
+ readonly maxRetries?: number;
10
+ readonly sleep?: (ms: number) => Promise<void>;
11
+ }
12
+ declare function createSpotifyClient(credentials: SpotifyCredentials, config?: SpotifyClientConfig): {
13
+ readonly albums: {
14
+ readonly getAlbum: (id: string, market?: string) => Promise<{
15
+ artists: {
16
+ id: string;
17
+ name: string;
18
+ type: "artist";
19
+ externalUrls?: {
20
+ spotify?: string | undefined;
21
+ } | undefined;
22
+ href?: string | undefined;
23
+ uri?: string | undefined;
24
+ }[];
25
+ id: string;
26
+ images: {
27
+ url: string;
28
+ height: number | null;
29
+ width: number | null;
30
+ }[];
31
+ name: string;
32
+ type: "album";
33
+ albumType?: "album" | "single" | "compilation" | undefined;
34
+ availableMarkets?: string[] | undefined;
35
+ externalUrls?: {
36
+ spotify?: string | undefined;
37
+ } | undefined;
38
+ href?: string | undefined;
39
+ releaseDate?: string | undefined;
40
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
41
+ totalTracks?: number | undefined;
42
+ uri?: string | undefined;
43
+ copyrights?: {
44
+ text: string;
45
+ type: string;
46
+ }[] | undefined;
47
+ genres?: string[] | undefined;
48
+ label?: string | undefined;
49
+ popularity?: number | undefined;
50
+ restrictions?: {
51
+ reason: string;
52
+ } | undefined;
53
+ }>;
54
+ readonly getAlbumTracks: (id: string, query?: {
55
+ market?: string;
56
+ limit?: number;
57
+ offset?: number;
58
+ }) => Promise<{
59
+ items: {
60
+ artists: {
61
+ id: string;
62
+ name: string;
63
+ type: "artist";
64
+ externalUrls?: {
65
+ spotify?: string | undefined;
66
+ } | undefined;
67
+ href?: string | undefined;
68
+ uri?: string | undefined;
69
+ }[];
70
+ durationMs: number;
71
+ explicit: boolean;
72
+ id: string;
73
+ name: string;
74
+ type: "track";
75
+ album?: {
76
+ artists: {
77
+ id: string;
78
+ name: string;
79
+ type: "artist";
80
+ externalUrls?: {
81
+ spotify?: string | undefined;
82
+ } | undefined;
83
+ href?: string | undefined;
84
+ uri?: string | undefined;
85
+ }[];
86
+ id: string;
87
+ images: {
88
+ url: string;
89
+ height: number | null;
90
+ width: number | null;
91
+ }[];
92
+ name: string;
93
+ type: "album";
94
+ albumType?: "album" | "single" | "compilation" | undefined;
95
+ availableMarkets?: string[] | undefined;
96
+ externalUrls?: {
97
+ spotify?: string | undefined;
98
+ } | undefined;
99
+ href?: string | undefined;
100
+ releaseDate?: string | undefined;
101
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
102
+ totalTracks?: number | undefined;
103
+ uri?: string | undefined;
104
+ } | undefined;
105
+ availableMarkets?: string[] | undefined;
106
+ discNumber?: number | undefined;
107
+ externalIds?: {
108
+ isrc?: string | undefined;
109
+ ean?: string | undefined;
110
+ upc?: string | undefined;
111
+ } | undefined;
112
+ externalUrls?: {
113
+ spotify?: string | undefined;
114
+ } | undefined;
115
+ href?: string | undefined;
116
+ isLocal?: boolean | undefined;
117
+ isPlayable?: boolean | undefined;
118
+ popularity?: number | undefined;
119
+ previewUrl?: string | null | undefined;
120
+ restrictions?: {
121
+ reason: string;
122
+ } | undefined;
123
+ trackNumber?: number | undefined;
124
+ uri?: string | undefined;
125
+ }[];
126
+ limit: number;
127
+ offset: number;
128
+ href?: string | undefined;
129
+ nextPageToken?: string | undefined;
130
+ previousPageToken?: string | undefined;
131
+ total?: number | undefined;
132
+ }>;
133
+ readonly getSeveralAlbums: (ids: readonly string[], market?: string) => Promise<{
134
+ albums: {
135
+ artists: {
136
+ id: string;
137
+ name: string;
138
+ type: "artist";
139
+ externalUrls?: {
140
+ spotify?: string | undefined;
141
+ } | undefined;
142
+ href?: string | undefined;
143
+ uri?: string | undefined;
144
+ }[];
145
+ id: string;
146
+ images: {
147
+ url: string;
148
+ height: number | null;
149
+ width: number | null;
150
+ }[];
151
+ name: string;
152
+ type: "album";
153
+ albumType?: "album" | "single" | "compilation" | undefined;
154
+ availableMarkets?: string[] | undefined;
155
+ externalUrls?: {
156
+ spotify?: string | undefined;
157
+ } | undefined;
158
+ href?: string | undefined;
159
+ releaseDate?: string | undefined;
160
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
161
+ totalTracks?: number | undefined;
162
+ uri?: string | undefined;
163
+ copyrights?: {
164
+ text: string;
165
+ type: string;
166
+ }[] | undefined;
167
+ genres?: string[] | undefined;
168
+ label?: string | undefined;
169
+ popularity?: number | undefined;
170
+ restrictions?: {
171
+ reason: string;
172
+ } | undefined;
173
+ }[];
174
+ }>;
175
+ readonly getNewReleases: (query?: {
176
+ country?: string;
177
+ limit?: number;
178
+ offset?: number;
179
+ }) => Promise<{
180
+ items: {
181
+ artists: {
182
+ id: string;
183
+ name: string;
184
+ type: "artist";
185
+ externalUrls?: {
186
+ spotify?: string | undefined;
187
+ } | undefined;
188
+ href?: string | undefined;
189
+ uri?: string | undefined;
190
+ }[];
191
+ id: string;
192
+ images: {
193
+ url: string;
194
+ height: number | null;
195
+ width: number | null;
196
+ }[];
197
+ name: string;
198
+ type: "album";
199
+ albumType?: "album" | "single" | "compilation" | undefined;
200
+ availableMarkets?: string[] | undefined;
201
+ externalUrls?: {
202
+ spotify?: string | undefined;
203
+ } | undefined;
204
+ href?: string | undefined;
205
+ releaseDate?: string | undefined;
206
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
207
+ totalTracks?: number | undefined;
208
+ uri?: string | undefined;
209
+ }[];
210
+ limit: number;
211
+ offset: number;
212
+ href?: string | undefined;
213
+ nextPageToken?: string | undefined;
214
+ previousPageToken?: string | undefined;
215
+ total?: number | undefined;
216
+ }>;
217
+ };
218
+ readonly artists: {
219
+ readonly getArtist: (id: string) => Promise<{
220
+ id: string;
221
+ name: string;
222
+ type: "artist";
223
+ externalUrls?: {
224
+ spotify?: string | undefined;
225
+ } | undefined;
226
+ href?: string | undefined;
227
+ uri?: string | undefined;
228
+ followers?: {
229
+ total: number;
230
+ href?: string | null | undefined;
231
+ } | undefined;
232
+ genres?: string[] | undefined;
233
+ images?: {
234
+ url: string;
235
+ height: number | null;
236
+ width: number | null;
237
+ }[] | undefined;
238
+ popularity?: number | undefined;
239
+ }>;
240
+ readonly getArtistAlbums: (id: string, query?: {
241
+ include_groups?: readonly string[];
242
+ market?: string;
243
+ limit?: number;
244
+ offset?: number;
245
+ }) => Promise<{
246
+ items: {
247
+ artists: {
248
+ id: string;
249
+ name: string;
250
+ type: "artist";
251
+ externalUrls?: {
252
+ spotify?: string | undefined;
253
+ } | undefined;
254
+ href?: string | undefined;
255
+ uri?: string | undefined;
256
+ }[];
257
+ id: string;
258
+ images: {
259
+ url: string;
260
+ height: number | null;
261
+ width: number | null;
262
+ }[];
263
+ name: string;
264
+ type: "album";
265
+ albumType?: "album" | "single" | "compilation" | undefined;
266
+ availableMarkets?: string[] | undefined;
267
+ externalUrls?: {
268
+ spotify?: string | undefined;
269
+ } | undefined;
270
+ href?: string | undefined;
271
+ releaseDate?: string | undefined;
272
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
273
+ totalTracks?: number | undefined;
274
+ uri?: string | undefined;
275
+ }[];
276
+ limit: number;
277
+ offset: number;
278
+ href?: string | undefined;
279
+ nextPageToken?: string | undefined;
280
+ previousPageToken?: string | undefined;
281
+ total?: number | undefined;
282
+ }>;
283
+ readonly getArtistTopTracks: (id: string, market: string) => Promise<{
284
+ tracks: {
285
+ artists: {
286
+ id: string;
287
+ name: string;
288
+ type: "artist";
289
+ externalUrls?: {
290
+ spotify?: string | undefined;
291
+ } | undefined;
292
+ href?: string | undefined;
293
+ uri?: string | undefined;
294
+ }[];
295
+ durationMs: number;
296
+ explicit: boolean;
297
+ id: string;
298
+ name: string;
299
+ type: "track";
300
+ album?: {
301
+ artists: {
302
+ id: string;
303
+ name: string;
304
+ type: "artist";
305
+ externalUrls?: {
306
+ spotify?: string | undefined;
307
+ } | undefined;
308
+ href?: string | undefined;
309
+ uri?: string | undefined;
310
+ }[];
311
+ id: string;
312
+ images: {
313
+ url: string;
314
+ height: number | null;
315
+ width: number | null;
316
+ }[];
317
+ name: string;
318
+ type: "album";
319
+ albumType?: "album" | "single" | "compilation" | undefined;
320
+ availableMarkets?: string[] | undefined;
321
+ externalUrls?: {
322
+ spotify?: string | undefined;
323
+ } | undefined;
324
+ href?: string | undefined;
325
+ releaseDate?: string | undefined;
326
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
327
+ totalTracks?: number | undefined;
328
+ uri?: string | undefined;
329
+ } | undefined;
330
+ availableMarkets?: string[] | undefined;
331
+ discNumber?: number | undefined;
332
+ externalIds?: {
333
+ isrc?: string | undefined;
334
+ ean?: string | undefined;
335
+ upc?: string | undefined;
336
+ } | undefined;
337
+ externalUrls?: {
338
+ spotify?: string | undefined;
339
+ } | undefined;
340
+ href?: string | undefined;
341
+ isLocal?: boolean | undefined;
342
+ isPlayable?: boolean | undefined;
343
+ popularity?: number | undefined;
344
+ previewUrl?: string | null | undefined;
345
+ restrictions?: {
346
+ reason: string;
347
+ } | undefined;
348
+ trackNumber?: number | undefined;
349
+ uri?: string | undefined;
350
+ }[];
351
+ }>;
352
+ readonly getArtistRelatedArtists: (id: string) => Promise<{
353
+ artists: {
354
+ id: string;
355
+ name: string;
356
+ type: "artist";
357
+ externalUrls?: {
358
+ spotify?: string | undefined;
359
+ } | undefined;
360
+ href?: string | undefined;
361
+ uri?: string | undefined;
362
+ followers?: {
363
+ total: number;
364
+ href?: string | null | undefined;
365
+ } | undefined;
366
+ genres?: string[] | undefined;
367
+ images?: {
368
+ url: string;
369
+ height: number | null;
370
+ width: number | null;
371
+ }[] | undefined;
372
+ popularity?: number | undefined;
373
+ }[];
374
+ }>;
375
+ readonly getSeveralArtists: (ids: readonly string[]) => Promise<{
376
+ artists: {
377
+ id: string;
378
+ name: string;
379
+ type: "artist";
380
+ externalUrls?: {
381
+ spotify?: string | undefined;
382
+ } | undefined;
383
+ href?: string | undefined;
384
+ uri?: string | undefined;
385
+ followers?: {
386
+ total: number;
387
+ href?: string | null | undefined;
388
+ } | undefined;
389
+ genres?: string[] | undefined;
390
+ images?: {
391
+ url: string;
392
+ height: number | null;
393
+ width: number | null;
394
+ }[] | undefined;
395
+ popularity?: number | undefined;
396
+ }[];
397
+ }>;
398
+ };
399
+ readonly tracks: {
400
+ readonly getTrack: (id: string, market?: string) => Promise<{
401
+ artists: {
402
+ id: string;
403
+ name: string;
404
+ type: "artist";
405
+ externalUrls?: {
406
+ spotify?: string | undefined;
407
+ } | undefined;
408
+ href?: string | undefined;
409
+ uri?: string | undefined;
410
+ }[];
411
+ durationMs: number;
412
+ explicit: boolean;
413
+ id: string;
414
+ name: string;
415
+ type: "track";
416
+ album?: {
417
+ artists: {
418
+ id: string;
419
+ name: string;
420
+ type: "artist";
421
+ externalUrls?: {
422
+ spotify?: string | undefined;
423
+ } | undefined;
424
+ href?: string | undefined;
425
+ uri?: string | undefined;
426
+ }[];
427
+ id: string;
428
+ images: {
429
+ url: string;
430
+ height: number | null;
431
+ width: number | null;
432
+ }[];
433
+ name: string;
434
+ type: "album";
435
+ albumType?: "album" | "single" | "compilation" | undefined;
436
+ availableMarkets?: string[] | undefined;
437
+ externalUrls?: {
438
+ spotify?: string | undefined;
439
+ } | undefined;
440
+ href?: string | undefined;
441
+ releaseDate?: string | undefined;
442
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
443
+ totalTracks?: number | undefined;
444
+ uri?: string | undefined;
445
+ } | undefined;
446
+ availableMarkets?: string[] | undefined;
447
+ discNumber?: number | undefined;
448
+ externalIds?: {
449
+ isrc?: string | undefined;
450
+ ean?: string | undefined;
451
+ upc?: string | undefined;
452
+ } | undefined;
453
+ externalUrls?: {
454
+ spotify?: string | undefined;
455
+ } | undefined;
456
+ href?: string | undefined;
457
+ isLocal?: boolean | undefined;
458
+ isPlayable?: boolean | undefined;
459
+ popularity?: number | undefined;
460
+ previewUrl?: string | null | undefined;
461
+ restrictions?: {
462
+ reason: string;
463
+ } | undefined;
464
+ trackNumber?: number | undefined;
465
+ uri?: string | undefined;
466
+ }>;
467
+ readonly getSeveralTracks: (ids: readonly string[], market?: string) => Promise<{
468
+ tracks: {
469
+ artists: {
470
+ id: string;
471
+ name: string;
472
+ type: "artist";
473
+ externalUrls?: {
474
+ spotify?: string | undefined;
475
+ } | undefined;
476
+ href?: string | undefined;
477
+ uri?: string | undefined;
478
+ }[];
479
+ durationMs: number;
480
+ explicit: boolean;
481
+ id: string;
482
+ name: string;
483
+ type: "track";
484
+ album?: {
485
+ artists: {
486
+ id: string;
487
+ name: string;
488
+ type: "artist";
489
+ externalUrls?: {
490
+ spotify?: string | undefined;
491
+ } | undefined;
492
+ href?: string | undefined;
493
+ uri?: string | undefined;
494
+ }[];
495
+ id: string;
496
+ images: {
497
+ url: string;
498
+ height: number | null;
499
+ width: number | null;
500
+ }[];
501
+ name: string;
502
+ type: "album";
503
+ albumType?: "album" | "single" | "compilation" | undefined;
504
+ availableMarkets?: string[] | undefined;
505
+ externalUrls?: {
506
+ spotify?: string | undefined;
507
+ } | undefined;
508
+ href?: string | undefined;
509
+ releaseDate?: string | undefined;
510
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
511
+ totalTracks?: number | undefined;
512
+ uri?: string | undefined;
513
+ } | undefined;
514
+ availableMarkets?: string[] | undefined;
515
+ discNumber?: number | undefined;
516
+ externalIds?: {
517
+ isrc?: string | undefined;
518
+ ean?: string | undefined;
519
+ upc?: string | undefined;
520
+ } | undefined;
521
+ externalUrls?: {
522
+ spotify?: string | undefined;
523
+ } | undefined;
524
+ href?: string | undefined;
525
+ isLocal?: boolean | undefined;
526
+ isPlayable?: boolean | undefined;
527
+ popularity?: number | undefined;
528
+ previewUrl?: string | null | undefined;
529
+ restrictions?: {
530
+ reason: string;
531
+ } | undefined;
532
+ trackNumber?: number | undefined;
533
+ uri?: string | undefined;
534
+ }[];
535
+ }>;
536
+ };
537
+ readonly audioFeatures: {
538
+ readonly getAudioFeatures: (id: string) => Promise<{
539
+ acousticness: number;
540
+ danceability: number;
541
+ durationMs: number;
542
+ energy: number;
543
+ id: string;
544
+ instrumentalness: number;
545
+ key: number;
546
+ liveness: number;
547
+ loudness: number;
548
+ mode: number;
549
+ speechiness: number;
550
+ tempo: number;
551
+ timeSignature: number;
552
+ type: "audio_features";
553
+ valence: number;
554
+ analysisUrl?: string | undefined;
555
+ trackHref?: string | undefined;
556
+ uri?: string | undefined;
557
+ }>;
558
+ readonly getSeveralAudioFeatures: (ids: readonly string[]) => Promise<{
559
+ audioFeatures: ({
560
+ acousticness: number;
561
+ danceability: number;
562
+ durationMs: number;
563
+ energy: number;
564
+ id: string;
565
+ instrumentalness: number;
566
+ key: number;
567
+ liveness: number;
568
+ loudness: number;
569
+ mode: number;
570
+ speechiness: number;
571
+ tempo: number;
572
+ timeSignature: number;
573
+ type: "audio_features";
574
+ valence: number;
575
+ analysisUrl?: string | undefined;
576
+ trackHref?: string | undefined;
577
+ uri?: string | undefined;
578
+ } | null)[];
579
+ }>;
580
+ };
581
+ readonly audioAnalysis: {
582
+ readonly getAudioAnalysis: (id: string) => Promise<{
583
+ bars?: {
584
+ start: number;
585
+ duration: number;
586
+ confidence?: number | undefined;
587
+ }[] | undefined;
588
+ beats?: {
589
+ start: number;
590
+ duration: number;
591
+ confidence?: number | undefined;
592
+ }[] | undefined;
593
+ meta?: {
594
+ analyzerVersion?: string | undefined;
595
+ platform?: string | undefined;
596
+ detailedStatus?: string | undefined;
597
+ statusCode?: number | undefined;
598
+ timestamp?: number | undefined;
599
+ analysisTime?: number | undefined;
600
+ inputProcess?: string | undefined;
601
+ } | undefined;
602
+ sections?: {
603
+ start: number;
604
+ duration: number;
605
+ confidence?: number | undefined;
606
+ loudness?: number | undefined;
607
+ tempo?: number | undefined;
608
+ tempoConfidence?: number | undefined;
609
+ key?: number | undefined;
610
+ keyConfidence?: number | undefined;
611
+ mode?: number | undefined;
612
+ modeConfidence?: number | undefined;
613
+ timeSignature?: number | undefined;
614
+ timeSignatureConfidence?: number | undefined;
615
+ }[] | undefined;
616
+ segments?: {
617
+ start: number;
618
+ duration: number;
619
+ confidence?: number | undefined;
620
+ loudnessStart?: number | undefined;
621
+ loudnessMax?: number | undefined;
622
+ loudnessMaxTime?: number | undefined;
623
+ loudnessEnd?: number | undefined;
624
+ pitches?: number[] | undefined;
625
+ timbre?: number[] | undefined;
626
+ }[] | undefined;
627
+ tatums?: {
628
+ start: number;
629
+ duration: number;
630
+ confidence?: number | undefined;
631
+ }[] | undefined;
632
+ track?: {
633
+ duration?: number | undefined;
634
+ sampleMd5?: string | undefined;
635
+ offsetSeconds?: number | undefined;
636
+ windowSeconds?: number | undefined;
637
+ analysisSampleRate?: number | undefined;
638
+ analysisChannels?: number | undefined;
639
+ endOfFadeIn?: number | undefined;
640
+ startOfFadeOut?: number | undefined;
641
+ loudness?: number | undefined;
642
+ tempo?: number | undefined;
643
+ tempoConfidence?: number | undefined;
644
+ timeSignature?: number | undefined;
645
+ timeSignatureConfidence?: number | undefined;
646
+ key?: number | undefined;
647
+ keyConfidence?: number | undefined;
648
+ mode?: number | undefined;
649
+ modeConfidence?: number | undefined;
650
+ codestring?: string | undefined;
651
+ codeVersion?: number | undefined;
652
+ echoprintstring?: string | undefined;
653
+ echoprintVersion?: number | undefined;
654
+ synchstring?: string | undefined;
655
+ synchVersion?: number | undefined;
656
+ rhythmstring?: string | undefined;
657
+ rhythmVersion?: number | undefined;
658
+ } | undefined;
659
+ }>;
660
+ };
661
+ readonly recommendations: {
662
+ readonly getRecommendations: (query: Record<string, PrimitiveQueryValue | readonly PrimitiveQueryValue[] | undefined>) => Promise<{
663
+ seeds: {
664
+ id: string;
665
+ type: string;
666
+ afterFilteringSize?: number | undefined;
667
+ afterRelinkingSize?: number | undefined;
668
+ href?: string | undefined;
669
+ initialPoolSize?: number | undefined;
670
+ }[];
671
+ tracks: {
672
+ artists: {
673
+ id: string;
674
+ name: string;
675
+ type: "artist";
676
+ externalUrls?: {
677
+ spotify?: string | undefined;
678
+ } | undefined;
679
+ href?: string | undefined;
680
+ uri?: string | undefined;
681
+ }[];
682
+ durationMs: number;
683
+ explicit: boolean;
684
+ id: string;
685
+ name: string;
686
+ type: "track";
687
+ album?: {
688
+ artists: {
689
+ id: string;
690
+ name: string;
691
+ type: "artist";
692
+ externalUrls?: {
693
+ spotify?: string | undefined;
694
+ } | undefined;
695
+ href?: string | undefined;
696
+ uri?: string | undefined;
697
+ }[];
698
+ id: string;
699
+ images: {
700
+ url: string;
701
+ height: number | null;
702
+ width: number | null;
703
+ }[];
704
+ name: string;
705
+ type: "album";
706
+ albumType?: "album" | "single" | "compilation" | undefined;
707
+ availableMarkets?: string[] | undefined;
708
+ externalUrls?: {
709
+ spotify?: string | undefined;
710
+ } | undefined;
711
+ href?: string | undefined;
712
+ releaseDate?: string | undefined;
713
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
714
+ totalTracks?: number | undefined;
715
+ uri?: string | undefined;
716
+ } | undefined;
717
+ availableMarkets?: string[] | undefined;
718
+ discNumber?: number | undefined;
719
+ externalIds?: {
720
+ isrc?: string | undefined;
721
+ ean?: string | undefined;
722
+ upc?: string | undefined;
723
+ } | undefined;
724
+ externalUrls?: {
725
+ spotify?: string | undefined;
726
+ } | undefined;
727
+ href?: string | undefined;
728
+ isLocal?: boolean | undefined;
729
+ isPlayable?: boolean | undefined;
730
+ popularity?: number | undefined;
731
+ previewUrl?: string | null | undefined;
732
+ restrictions?: {
733
+ reason: string;
734
+ } | undefined;
735
+ trackNumber?: number | undefined;
736
+ uri?: string | undefined;
737
+ }[];
738
+ }>;
739
+ };
740
+ readonly shows: {
741
+ readonly getShow: (id: string, market?: string) => Promise<{
742
+ id: string;
743
+ images: {
744
+ url: string;
745
+ height: number | null;
746
+ width: number | null;
747
+ }[];
748
+ name: string;
749
+ type: "show";
750
+ availableMarkets?: string[] | undefined;
751
+ copyrights?: {
752
+ text: string;
753
+ type: string;
754
+ }[] | undefined;
755
+ description?: string | undefined;
756
+ explicit?: boolean | undefined;
757
+ externalUrls?: {
758
+ spotify?: string | undefined;
759
+ } | undefined;
760
+ href?: string | undefined;
761
+ languages?: string[] | undefined;
762
+ mediaType?: string | undefined;
763
+ publisher?: string | undefined;
764
+ totalEpisodes?: number | undefined;
765
+ uri?: string | undefined;
766
+ htmlDescription?: string | undefined;
767
+ isExternallyHosted?: boolean | undefined;
768
+ }>;
769
+ readonly getSeveralShows: (ids: readonly string[], market?: string) => Promise<{
770
+ shows: {
771
+ id: string;
772
+ images: {
773
+ url: string;
774
+ height: number | null;
775
+ width: number | null;
776
+ }[];
777
+ name: string;
778
+ type: "show";
779
+ availableMarkets?: string[] | undefined;
780
+ copyrights?: {
781
+ text: string;
782
+ type: string;
783
+ }[] | undefined;
784
+ description?: string | undefined;
785
+ explicit?: boolean | undefined;
786
+ externalUrls?: {
787
+ spotify?: string | undefined;
788
+ } | undefined;
789
+ href?: string | undefined;
790
+ languages?: string[] | undefined;
791
+ mediaType?: string | undefined;
792
+ publisher?: string | undefined;
793
+ totalEpisodes?: number | undefined;
794
+ uri?: string | undefined;
795
+ htmlDescription?: string | undefined;
796
+ isExternallyHosted?: boolean | undefined;
797
+ }[];
798
+ }>;
799
+ readonly getShowEpisodes: (id: string, query?: {
800
+ market?: string;
801
+ limit?: number;
802
+ offset?: number;
803
+ }) => Promise<{
804
+ items: {
805
+ durationMs: number;
806
+ explicit: boolean;
807
+ id: string;
808
+ images: {
809
+ url: string;
810
+ height: number | null;
811
+ width: number | null;
812
+ }[];
813
+ name: string;
814
+ type: "episode";
815
+ audioPreviewUrl?: string | null | undefined;
816
+ description?: string | undefined;
817
+ externalUrls?: {
818
+ spotify?: string | undefined;
819
+ } | undefined;
820
+ href?: string | undefined;
821
+ htmlDescription?: string | undefined;
822
+ isExternallyHosted?: boolean | undefined;
823
+ isPlayable?: boolean | undefined;
824
+ language?: string | undefined;
825
+ languages?: string[] | undefined;
826
+ releaseDate?: string | undefined;
827
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
828
+ resumePoint?: {
829
+ fullyPlayed: boolean;
830
+ resumePositionMs: number;
831
+ } | undefined;
832
+ restrictions?: {
833
+ reason: string;
834
+ } | undefined;
835
+ show?: {
836
+ id: string;
837
+ images: {
838
+ url: string;
839
+ height: number | null;
840
+ width: number | null;
841
+ }[];
842
+ name: string;
843
+ type: "show";
844
+ availableMarkets?: string[] | undefined;
845
+ copyrights?: {
846
+ text: string;
847
+ type: string;
848
+ }[] | undefined;
849
+ description?: string | undefined;
850
+ explicit?: boolean | undefined;
851
+ externalUrls?: {
852
+ spotify?: string | undefined;
853
+ } | undefined;
854
+ href?: string | undefined;
855
+ languages?: string[] | undefined;
856
+ mediaType?: string | undefined;
857
+ publisher?: string | undefined;
858
+ totalEpisodes?: number | undefined;
859
+ uri?: string | undefined;
860
+ } | undefined;
861
+ uri?: string | undefined;
862
+ }[];
863
+ limit: number;
864
+ offset: number;
865
+ href?: string | undefined;
866
+ nextPageToken?: string | undefined;
867
+ previousPageToken?: string | undefined;
868
+ total?: number | undefined;
869
+ }>;
870
+ };
871
+ readonly episodes: {
872
+ readonly getEpisode: (id: string, market?: string) => Promise<{
873
+ durationMs: number;
874
+ explicit: boolean;
875
+ id: string;
876
+ images: {
877
+ url: string;
878
+ height: number | null;
879
+ width: number | null;
880
+ }[];
881
+ name: string;
882
+ type: "episode";
883
+ audioPreviewUrl?: string | null | undefined;
884
+ description?: string | undefined;
885
+ externalUrls?: {
886
+ spotify?: string | undefined;
887
+ } | undefined;
888
+ href?: string | undefined;
889
+ htmlDescription?: string | undefined;
890
+ isExternallyHosted?: boolean | undefined;
891
+ isPlayable?: boolean | undefined;
892
+ language?: string | undefined;
893
+ languages?: string[] | undefined;
894
+ releaseDate?: string | undefined;
895
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
896
+ resumePoint?: {
897
+ fullyPlayed: boolean;
898
+ resumePositionMs: number;
899
+ } | undefined;
900
+ restrictions?: {
901
+ reason: string;
902
+ } | undefined;
903
+ show?: {
904
+ id: string;
905
+ images: {
906
+ url: string;
907
+ height: number | null;
908
+ width: number | null;
909
+ }[];
910
+ name: string;
911
+ type: "show";
912
+ availableMarkets?: string[] | undefined;
913
+ copyrights?: {
914
+ text: string;
915
+ type: string;
916
+ }[] | undefined;
917
+ description?: string | undefined;
918
+ explicit?: boolean | undefined;
919
+ externalUrls?: {
920
+ spotify?: string | undefined;
921
+ } | undefined;
922
+ href?: string | undefined;
923
+ languages?: string[] | undefined;
924
+ mediaType?: string | undefined;
925
+ publisher?: string | undefined;
926
+ totalEpisodes?: number | undefined;
927
+ uri?: string | undefined;
928
+ } | undefined;
929
+ uri?: string | undefined;
930
+ }>;
931
+ readonly getSeveralEpisodes: (ids: readonly string[], market?: string) => Promise<{
932
+ episodes: {
933
+ durationMs: number;
934
+ explicit: boolean;
935
+ id: string;
936
+ images: {
937
+ url: string;
938
+ height: number | null;
939
+ width: number | null;
940
+ }[];
941
+ name: string;
942
+ type: "episode";
943
+ audioPreviewUrl?: string | null | undefined;
944
+ description?: string | undefined;
945
+ externalUrls?: {
946
+ spotify?: string | undefined;
947
+ } | undefined;
948
+ href?: string | undefined;
949
+ htmlDescription?: string | undefined;
950
+ isExternallyHosted?: boolean | undefined;
951
+ isPlayable?: boolean | undefined;
952
+ language?: string | undefined;
953
+ languages?: string[] | undefined;
954
+ releaseDate?: string | undefined;
955
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
956
+ resumePoint?: {
957
+ fullyPlayed: boolean;
958
+ resumePositionMs: number;
959
+ } | undefined;
960
+ restrictions?: {
961
+ reason: string;
962
+ } | undefined;
963
+ show?: {
964
+ id: string;
965
+ images: {
966
+ url: string;
967
+ height: number | null;
968
+ width: number | null;
969
+ }[];
970
+ name: string;
971
+ type: "show";
972
+ availableMarkets?: string[] | undefined;
973
+ copyrights?: {
974
+ text: string;
975
+ type: string;
976
+ }[] | undefined;
977
+ description?: string | undefined;
978
+ explicit?: boolean | undefined;
979
+ externalUrls?: {
980
+ spotify?: string | undefined;
981
+ } | undefined;
982
+ href?: string | undefined;
983
+ languages?: string[] | undefined;
984
+ mediaType?: string | undefined;
985
+ publisher?: string | undefined;
986
+ totalEpisodes?: number | undefined;
987
+ uri?: string | undefined;
988
+ } | undefined;
989
+ uri?: string | undefined;
990
+ }[];
991
+ }>;
992
+ };
993
+ readonly audiobooks: {
994
+ readonly getAudiobook: (id: string, market?: string) => Promise<{
995
+ id: string;
996
+ images: {
997
+ url: string;
998
+ height: number | null;
999
+ width: number | null;
1000
+ }[];
1001
+ name: string;
1002
+ type: "audiobook";
1003
+ authors?: {
1004
+ name: string;
1005
+ }[] | undefined;
1006
+ availableMarkets?: string[] | undefined;
1007
+ copyrights?: {
1008
+ text: string;
1009
+ type: string;
1010
+ }[] | undefined;
1011
+ description?: string | undefined;
1012
+ explicit?: boolean | undefined;
1013
+ externalUrls?: {
1014
+ spotify?: string | undefined;
1015
+ } | undefined;
1016
+ href?: string | undefined;
1017
+ htmlDescription?: string | undefined;
1018
+ languages?: string[] | undefined;
1019
+ mediaType?: string | undefined;
1020
+ narrators?: {
1021
+ name: string;
1022
+ }[] | undefined;
1023
+ publisher?: string | undefined;
1024
+ totalChapters?: number | undefined;
1025
+ uri?: string | undefined;
1026
+ }>;
1027
+ readonly getSeveralAudiobooks: (ids: readonly string[], market?: string) => Promise<{
1028
+ audiobooks: {
1029
+ id: string;
1030
+ images: {
1031
+ url: string;
1032
+ height: number | null;
1033
+ width: number | null;
1034
+ }[];
1035
+ name: string;
1036
+ type: "audiobook";
1037
+ authors?: {
1038
+ name: string;
1039
+ }[] | undefined;
1040
+ availableMarkets?: string[] | undefined;
1041
+ copyrights?: {
1042
+ text: string;
1043
+ type: string;
1044
+ }[] | undefined;
1045
+ description?: string | undefined;
1046
+ explicit?: boolean | undefined;
1047
+ externalUrls?: {
1048
+ spotify?: string | undefined;
1049
+ } | undefined;
1050
+ href?: string | undefined;
1051
+ htmlDescription?: string | undefined;
1052
+ languages?: string[] | undefined;
1053
+ mediaType?: string | undefined;
1054
+ narrators?: {
1055
+ name: string;
1056
+ }[] | undefined;
1057
+ publisher?: string | undefined;
1058
+ totalChapters?: number | undefined;
1059
+ uri?: string | undefined;
1060
+ }[];
1061
+ }>;
1062
+ readonly getAudiobookChapters: (id: string, query?: {
1063
+ market?: string;
1064
+ limit?: number;
1065
+ offset?: number;
1066
+ }) => Promise<{
1067
+ items: {
1068
+ durationMs: number;
1069
+ explicit: boolean;
1070
+ id: string;
1071
+ images: {
1072
+ url: string;
1073
+ height: number | null;
1074
+ width: number | null;
1075
+ }[];
1076
+ name: string;
1077
+ type: "chapter";
1078
+ audioPreviewUrl?: string | null | undefined;
1079
+ audiobook?: {
1080
+ id: string;
1081
+ images: {
1082
+ url: string;
1083
+ height: number | null;
1084
+ width: number | null;
1085
+ }[];
1086
+ name: string;
1087
+ type: "audiobook";
1088
+ authors?: {
1089
+ name: string;
1090
+ }[] | undefined;
1091
+ availableMarkets?: string[] | undefined;
1092
+ copyrights?: {
1093
+ text: string;
1094
+ type: string;
1095
+ }[] | undefined;
1096
+ description?: string | undefined;
1097
+ explicit?: boolean | undefined;
1098
+ externalUrls?: {
1099
+ spotify?: string | undefined;
1100
+ } | undefined;
1101
+ href?: string | undefined;
1102
+ htmlDescription?: string | undefined;
1103
+ languages?: string[] | undefined;
1104
+ mediaType?: string | undefined;
1105
+ narrators?: {
1106
+ name: string;
1107
+ }[] | undefined;
1108
+ publisher?: string | undefined;
1109
+ totalChapters?: number | undefined;
1110
+ uri?: string | undefined;
1111
+ } | undefined;
1112
+ availableMarkets?: string[] | undefined;
1113
+ chapterNumber?: number | undefined;
1114
+ description?: string | undefined;
1115
+ externalUrls?: {
1116
+ spotify?: string | undefined;
1117
+ } | undefined;
1118
+ href?: string | undefined;
1119
+ htmlDescription?: string | undefined;
1120
+ isPlayable?: boolean | undefined;
1121
+ languages?: string[] | undefined;
1122
+ releaseDate?: string | undefined;
1123
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
1124
+ resumePoint?: {
1125
+ fullyPlayed: boolean;
1126
+ resumePositionMs: number;
1127
+ } | undefined;
1128
+ restrictions?: {
1129
+ reason: string;
1130
+ } | undefined;
1131
+ uri?: string | undefined;
1132
+ }[];
1133
+ limit: number;
1134
+ offset: number;
1135
+ href?: string | undefined;
1136
+ nextPageToken?: string | undefined;
1137
+ previousPageToken?: string | undefined;
1138
+ total?: number | undefined;
1139
+ }>;
1140
+ };
1141
+ readonly chapters: {
1142
+ readonly getChapter: (id: string, market?: string) => Promise<{
1143
+ durationMs: number;
1144
+ explicit: boolean;
1145
+ id: string;
1146
+ images: {
1147
+ url: string;
1148
+ height: number | null;
1149
+ width: number | null;
1150
+ }[];
1151
+ name: string;
1152
+ type: "chapter";
1153
+ audioPreviewUrl?: string | null | undefined;
1154
+ audiobook?: {
1155
+ id: string;
1156
+ images: {
1157
+ url: string;
1158
+ height: number | null;
1159
+ width: number | null;
1160
+ }[];
1161
+ name: string;
1162
+ type: "audiobook";
1163
+ authors?: {
1164
+ name: string;
1165
+ }[] | undefined;
1166
+ availableMarkets?: string[] | undefined;
1167
+ copyrights?: {
1168
+ text: string;
1169
+ type: string;
1170
+ }[] | undefined;
1171
+ description?: string | undefined;
1172
+ explicit?: boolean | undefined;
1173
+ externalUrls?: {
1174
+ spotify?: string | undefined;
1175
+ } | undefined;
1176
+ href?: string | undefined;
1177
+ htmlDescription?: string | undefined;
1178
+ languages?: string[] | undefined;
1179
+ mediaType?: string | undefined;
1180
+ narrators?: {
1181
+ name: string;
1182
+ }[] | undefined;
1183
+ publisher?: string | undefined;
1184
+ totalChapters?: number | undefined;
1185
+ uri?: string | undefined;
1186
+ } | undefined;
1187
+ availableMarkets?: string[] | undefined;
1188
+ chapterNumber?: number | undefined;
1189
+ description?: string | undefined;
1190
+ externalUrls?: {
1191
+ spotify?: string | undefined;
1192
+ } | undefined;
1193
+ href?: string | undefined;
1194
+ htmlDescription?: string | undefined;
1195
+ isPlayable?: boolean | undefined;
1196
+ languages?: string[] | undefined;
1197
+ releaseDate?: string | undefined;
1198
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
1199
+ resumePoint?: {
1200
+ fullyPlayed: boolean;
1201
+ resumePositionMs: number;
1202
+ } | undefined;
1203
+ restrictions?: {
1204
+ reason: string;
1205
+ } | undefined;
1206
+ uri?: string | undefined;
1207
+ }>;
1208
+ readonly getSeveralChapters: (ids: readonly string[], market?: string) => Promise<{
1209
+ chapters: {
1210
+ durationMs: number;
1211
+ explicit: boolean;
1212
+ id: string;
1213
+ images: {
1214
+ url: string;
1215
+ height: number | null;
1216
+ width: number | null;
1217
+ }[];
1218
+ name: string;
1219
+ type: "chapter";
1220
+ audioPreviewUrl?: string | null | undefined;
1221
+ audiobook?: {
1222
+ id: string;
1223
+ images: {
1224
+ url: string;
1225
+ height: number | null;
1226
+ width: number | null;
1227
+ }[];
1228
+ name: string;
1229
+ type: "audiobook";
1230
+ authors?: {
1231
+ name: string;
1232
+ }[] | undefined;
1233
+ availableMarkets?: string[] | undefined;
1234
+ copyrights?: {
1235
+ text: string;
1236
+ type: string;
1237
+ }[] | undefined;
1238
+ description?: string | undefined;
1239
+ explicit?: boolean | undefined;
1240
+ externalUrls?: {
1241
+ spotify?: string | undefined;
1242
+ } | undefined;
1243
+ href?: string | undefined;
1244
+ htmlDescription?: string | undefined;
1245
+ languages?: string[] | undefined;
1246
+ mediaType?: string | undefined;
1247
+ narrators?: {
1248
+ name: string;
1249
+ }[] | undefined;
1250
+ publisher?: string | undefined;
1251
+ totalChapters?: number | undefined;
1252
+ uri?: string | undefined;
1253
+ } | undefined;
1254
+ availableMarkets?: string[] | undefined;
1255
+ chapterNumber?: number | undefined;
1256
+ description?: string | undefined;
1257
+ externalUrls?: {
1258
+ spotify?: string | undefined;
1259
+ } | undefined;
1260
+ href?: string | undefined;
1261
+ htmlDescription?: string | undefined;
1262
+ isPlayable?: boolean | undefined;
1263
+ languages?: string[] | undefined;
1264
+ releaseDate?: string | undefined;
1265
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
1266
+ resumePoint?: {
1267
+ fullyPlayed: boolean;
1268
+ resumePositionMs: number;
1269
+ } | undefined;
1270
+ restrictions?: {
1271
+ reason: string;
1272
+ } | undefined;
1273
+ uri?: string | undefined;
1274
+ }[];
1275
+ }>;
1276
+ };
1277
+ readonly discovery: {
1278
+ readonly search: (query: Record<string, PrimitiveQueryValue | readonly PrimitiveQueryValue[] | undefined>) => Promise<{
1279
+ albums?: {
1280
+ items: {
1281
+ artists: {
1282
+ id: string;
1283
+ name: string;
1284
+ type: "artist";
1285
+ externalUrls?: {
1286
+ spotify?: string | undefined;
1287
+ } | undefined;
1288
+ href?: string | undefined;
1289
+ uri?: string | undefined;
1290
+ }[];
1291
+ id: string;
1292
+ images: {
1293
+ url: string;
1294
+ height: number | null;
1295
+ width: number | null;
1296
+ }[];
1297
+ name: string;
1298
+ type: "album";
1299
+ albumType?: "album" | "single" | "compilation" | undefined;
1300
+ availableMarkets?: string[] | undefined;
1301
+ externalUrls?: {
1302
+ spotify?: string | undefined;
1303
+ } | undefined;
1304
+ href?: string | undefined;
1305
+ releaseDate?: string | undefined;
1306
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
1307
+ totalTracks?: number | undefined;
1308
+ uri?: string | undefined;
1309
+ }[];
1310
+ limit: number;
1311
+ offset: number;
1312
+ href?: string | undefined;
1313
+ nextPageToken?: string | undefined;
1314
+ previousPageToken?: string | undefined;
1315
+ total?: number | undefined;
1316
+ } | undefined;
1317
+ artists?: {
1318
+ items: {
1319
+ id: string;
1320
+ name: string;
1321
+ type: "artist";
1322
+ externalUrls?: {
1323
+ spotify?: string | undefined;
1324
+ } | undefined;
1325
+ href?: string | undefined;
1326
+ uri?: string | undefined;
1327
+ followers?: {
1328
+ total: number;
1329
+ href?: string | null | undefined;
1330
+ } | undefined;
1331
+ genres?: string[] | undefined;
1332
+ images?: {
1333
+ url: string;
1334
+ height: number | null;
1335
+ width: number | null;
1336
+ }[] | undefined;
1337
+ popularity?: number | undefined;
1338
+ }[];
1339
+ limit: number;
1340
+ offset: number;
1341
+ href?: string | undefined;
1342
+ nextPageToken?: string | undefined;
1343
+ previousPageToken?: string | undefined;
1344
+ total?: number | undefined;
1345
+ } | undefined;
1346
+ playlists?: {
1347
+ items: {
1348
+ collaborative: boolean;
1349
+ id: string;
1350
+ images: {
1351
+ url: string;
1352
+ height: number | null;
1353
+ width: number | null;
1354
+ }[];
1355
+ name: string;
1356
+ owner: {
1357
+ id: string;
1358
+ type: "user";
1359
+ displayName?: string | null | undefined;
1360
+ externalUrls?: {
1361
+ spotify?: string | undefined;
1362
+ } | undefined;
1363
+ followers?: {
1364
+ total: number;
1365
+ href?: string | null | undefined;
1366
+ } | undefined;
1367
+ href?: string | undefined;
1368
+ uri?: string | undefined;
1369
+ email?: string | undefined;
1370
+ country?: string | undefined;
1371
+ product?: string | undefined;
1372
+ images?: {
1373
+ url: string;
1374
+ height: number | null;
1375
+ width: number | null;
1376
+ }[] | undefined;
1377
+ };
1378
+ type: "playlist";
1379
+ description?: string | null | undefined;
1380
+ externalUrls?: {
1381
+ spotify?: string | undefined;
1382
+ } | undefined;
1383
+ followers?: {
1384
+ total: number;
1385
+ href?: string | null | undefined;
1386
+ } | undefined;
1387
+ href?: string | undefined;
1388
+ public?: boolean | null | undefined;
1389
+ snapshotId?: string | undefined;
1390
+ tracks?: {
1391
+ href?: string | undefined;
1392
+ total?: number | undefined;
1393
+ } | undefined;
1394
+ uri?: string | undefined;
1395
+ }[];
1396
+ limit: number;
1397
+ offset: number;
1398
+ href?: string | undefined;
1399
+ nextPageToken?: string | undefined;
1400
+ previousPageToken?: string | undefined;
1401
+ total?: number | undefined;
1402
+ } | undefined;
1403
+ tracks?: {
1404
+ items: {
1405
+ artists: {
1406
+ id: string;
1407
+ name: string;
1408
+ type: "artist";
1409
+ externalUrls?: {
1410
+ spotify?: string | undefined;
1411
+ } | undefined;
1412
+ href?: string | undefined;
1413
+ uri?: string | undefined;
1414
+ }[];
1415
+ durationMs: number;
1416
+ explicit: boolean;
1417
+ id: string;
1418
+ name: string;
1419
+ type: "track";
1420
+ album?: {
1421
+ artists: {
1422
+ id: string;
1423
+ name: string;
1424
+ type: "artist";
1425
+ externalUrls?: {
1426
+ spotify?: string | undefined;
1427
+ } | undefined;
1428
+ href?: string | undefined;
1429
+ uri?: string | undefined;
1430
+ }[];
1431
+ id: string;
1432
+ images: {
1433
+ url: string;
1434
+ height: number | null;
1435
+ width: number | null;
1436
+ }[];
1437
+ name: string;
1438
+ type: "album";
1439
+ albumType?: "album" | "single" | "compilation" | undefined;
1440
+ availableMarkets?: string[] | undefined;
1441
+ externalUrls?: {
1442
+ spotify?: string | undefined;
1443
+ } | undefined;
1444
+ href?: string | undefined;
1445
+ releaseDate?: string | undefined;
1446
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
1447
+ totalTracks?: number | undefined;
1448
+ uri?: string | undefined;
1449
+ } | undefined;
1450
+ availableMarkets?: string[] | undefined;
1451
+ discNumber?: number | undefined;
1452
+ externalIds?: {
1453
+ isrc?: string | undefined;
1454
+ ean?: string | undefined;
1455
+ upc?: string | undefined;
1456
+ } | undefined;
1457
+ externalUrls?: {
1458
+ spotify?: string | undefined;
1459
+ } | undefined;
1460
+ href?: string | undefined;
1461
+ isLocal?: boolean | undefined;
1462
+ isPlayable?: boolean | undefined;
1463
+ popularity?: number | undefined;
1464
+ previewUrl?: string | null | undefined;
1465
+ restrictions?: {
1466
+ reason: string;
1467
+ } | undefined;
1468
+ trackNumber?: number | undefined;
1469
+ uri?: string | undefined;
1470
+ }[];
1471
+ limit: number;
1472
+ offset: number;
1473
+ href?: string | undefined;
1474
+ nextPageToken?: string | undefined;
1475
+ previousPageToken?: string | undefined;
1476
+ total?: number | undefined;
1477
+ } | undefined;
1478
+ shows?: {
1479
+ items: {
1480
+ id: string;
1481
+ images: {
1482
+ url: string;
1483
+ height: number | null;
1484
+ width: number | null;
1485
+ }[];
1486
+ name: string;
1487
+ type: "show";
1488
+ availableMarkets?: string[] | undefined;
1489
+ copyrights?: {
1490
+ text: string;
1491
+ type: string;
1492
+ }[] | undefined;
1493
+ description?: string | undefined;
1494
+ explicit?: boolean | undefined;
1495
+ externalUrls?: {
1496
+ spotify?: string | undefined;
1497
+ } | undefined;
1498
+ href?: string | undefined;
1499
+ languages?: string[] | undefined;
1500
+ mediaType?: string | undefined;
1501
+ publisher?: string | undefined;
1502
+ totalEpisodes?: number | undefined;
1503
+ uri?: string | undefined;
1504
+ }[];
1505
+ limit: number;
1506
+ offset: number;
1507
+ href?: string | undefined;
1508
+ nextPageToken?: string | undefined;
1509
+ previousPageToken?: string | undefined;
1510
+ total?: number | undefined;
1511
+ } | undefined;
1512
+ episodes?: {
1513
+ items: {
1514
+ durationMs: number;
1515
+ explicit: boolean;
1516
+ id: string;
1517
+ images: {
1518
+ url: string;
1519
+ height: number | null;
1520
+ width: number | null;
1521
+ }[];
1522
+ name: string;
1523
+ type: "episode";
1524
+ audioPreviewUrl?: string | null | undefined;
1525
+ description?: string | undefined;
1526
+ externalUrls?: {
1527
+ spotify?: string | undefined;
1528
+ } | undefined;
1529
+ href?: string | undefined;
1530
+ htmlDescription?: string | undefined;
1531
+ isExternallyHosted?: boolean | undefined;
1532
+ isPlayable?: boolean | undefined;
1533
+ language?: string | undefined;
1534
+ languages?: string[] | undefined;
1535
+ releaseDate?: string | undefined;
1536
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
1537
+ resumePoint?: {
1538
+ fullyPlayed: boolean;
1539
+ resumePositionMs: number;
1540
+ } | undefined;
1541
+ restrictions?: {
1542
+ reason: string;
1543
+ } | undefined;
1544
+ show?: {
1545
+ id: string;
1546
+ images: {
1547
+ url: string;
1548
+ height: number | null;
1549
+ width: number | null;
1550
+ }[];
1551
+ name: string;
1552
+ type: "show";
1553
+ availableMarkets?: string[] | undefined;
1554
+ copyrights?: {
1555
+ text: string;
1556
+ type: string;
1557
+ }[] | undefined;
1558
+ description?: string | undefined;
1559
+ explicit?: boolean | undefined;
1560
+ externalUrls?: {
1561
+ spotify?: string | undefined;
1562
+ } | undefined;
1563
+ href?: string | undefined;
1564
+ languages?: string[] | undefined;
1565
+ mediaType?: string | undefined;
1566
+ publisher?: string | undefined;
1567
+ totalEpisodes?: number | undefined;
1568
+ uri?: string | undefined;
1569
+ } | undefined;
1570
+ uri?: string | undefined;
1571
+ }[];
1572
+ limit: number;
1573
+ offset: number;
1574
+ href?: string | undefined;
1575
+ nextPageToken?: string | undefined;
1576
+ previousPageToken?: string | undefined;
1577
+ total?: number | undefined;
1578
+ } | undefined;
1579
+ audiobooks?: {
1580
+ items: {
1581
+ id: string;
1582
+ images: {
1583
+ url: string;
1584
+ height: number | null;
1585
+ width: number | null;
1586
+ }[];
1587
+ name: string;
1588
+ type: "audiobook";
1589
+ authors?: {
1590
+ name: string;
1591
+ }[] | undefined;
1592
+ availableMarkets?: string[] | undefined;
1593
+ copyrights?: {
1594
+ text: string;
1595
+ type: string;
1596
+ }[] | undefined;
1597
+ description?: string | undefined;
1598
+ explicit?: boolean | undefined;
1599
+ externalUrls?: {
1600
+ spotify?: string | undefined;
1601
+ } | undefined;
1602
+ href?: string | undefined;
1603
+ htmlDescription?: string | undefined;
1604
+ languages?: string[] | undefined;
1605
+ mediaType?: string | undefined;
1606
+ narrators?: {
1607
+ name: string;
1608
+ }[] | undefined;
1609
+ publisher?: string | undefined;
1610
+ totalChapters?: number | undefined;
1611
+ uri?: string | undefined;
1612
+ }[];
1613
+ limit: number;
1614
+ offset: number;
1615
+ href?: string | undefined;
1616
+ nextPageToken?: string | undefined;
1617
+ previousPageToken?: string | undefined;
1618
+ total?: number | undefined;
1619
+ } | undefined;
1620
+ }>;
1621
+ readonly getAvailableMarkets: () => Promise<{
1622
+ markets: string[];
1623
+ }>;
1624
+ readonly getAvailableGenreSeeds: () => Promise<{
1625
+ genres: string[];
1626
+ }>;
1627
+ readonly getBrowseCategories: (query?: {
1628
+ country?: string;
1629
+ locale?: string;
1630
+ limit?: number;
1631
+ offset?: number;
1632
+ }) => Promise<{
1633
+ items: {
1634
+ icons: {
1635
+ url: string;
1636
+ height: number | null;
1637
+ width: number | null;
1638
+ }[];
1639
+ id: string;
1640
+ name: string;
1641
+ href?: string | undefined;
1642
+ }[];
1643
+ limit: number;
1644
+ offset: number;
1645
+ href?: string | undefined;
1646
+ nextPageToken?: string | undefined;
1647
+ previousPageToken?: string | undefined;
1648
+ total?: number | undefined;
1649
+ }>;
1650
+ readonly getBrowseCategory: (id: string, query?: {
1651
+ country?: string;
1652
+ locale?: string;
1653
+ }) => Promise<{
1654
+ icons: {
1655
+ url: string;
1656
+ height: number | null;
1657
+ width: number | null;
1658
+ }[];
1659
+ id: string;
1660
+ name: string;
1661
+ href?: string | undefined;
1662
+ }>;
1663
+ readonly getCategoryPlaylists: (id: string, query?: {
1664
+ country?: string;
1665
+ limit?: number;
1666
+ offset?: number;
1667
+ }) => Promise<{
1668
+ items: {
1669
+ collaborative: boolean;
1670
+ id: string;
1671
+ images: {
1672
+ url: string;
1673
+ height: number | null;
1674
+ width: number | null;
1675
+ }[];
1676
+ name: string;
1677
+ owner: {
1678
+ id: string;
1679
+ type: "user";
1680
+ displayName?: string | null | undefined;
1681
+ externalUrls?: {
1682
+ spotify?: string | undefined;
1683
+ } | undefined;
1684
+ followers?: {
1685
+ total: number;
1686
+ href?: string | null | undefined;
1687
+ } | undefined;
1688
+ href?: string | undefined;
1689
+ uri?: string | undefined;
1690
+ email?: string | undefined;
1691
+ country?: string | undefined;
1692
+ product?: string | undefined;
1693
+ images?: {
1694
+ url: string;
1695
+ height: number | null;
1696
+ width: number | null;
1697
+ }[] | undefined;
1698
+ };
1699
+ type: "playlist";
1700
+ description?: string | null | undefined;
1701
+ externalUrls?: {
1702
+ spotify?: string | undefined;
1703
+ } | undefined;
1704
+ followers?: {
1705
+ total: number;
1706
+ href?: string | null | undefined;
1707
+ } | undefined;
1708
+ href?: string | undefined;
1709
+ public?: boolean | null | undefined;
1710
+ snapshotId?: string | undefined;
1711
+ tracks?: {
1712
+ href?: string | undefined;
1713
+ total?: number | undefined;
1714
+ } | undefined;
1715
+ uri?: string | undefined;
1716
+ }[];
1717
+ limit: number;
1718
+ offset: number;
1719
+ href?: string | undefined;
1720
+ nextPageToken?: string | undefined;
1721
+ previousPageToken?: string | undefined;
1722
+ total?: number | undefined;
1723
+ }>;
1724
+ readonly getFeaturedPlaylists: (query?: {
1725
+ country?: string;
1726
+ locale?: string;
1727
+ timestamp?: string;
1728
+ limit?: number;
1729
+ offset?: number;
1730
+ }) => Promise<{
1731
+ items: {
1732
+ collaborative: boolean;
1733
+ id: string;
1734
+ images: {
1735
+ url: string;
1736
+ height: number | null;
1737
+ width: number | null;
1738
+ }[];
1739
+ name: string;
1740
+ owner: {
1741
+ id: string;
1742
+ type: "user";
1743
+ displayName?: string | null | undefined;
1744
+ externalUrls?: {
1745
+ spotify?: string | undefined;
1746
+ } | undefined;
1747
+ followers?: {
1748
+ total: number;
1749
+ href?: string | null | undefined;
1750
+ } | undefined;
1751
+ href?: string | undefined;
1752
+ uri?: string | undefined;
1753
+ email?: string | undefined;
1754
+ country?: string | undefined;
1755
+ product?: string | undefined;
1756
+ images?: {
1757
+ url: string;
1758
+ height: number | null;
1759
+ width: number | null;
1760
+ }[] | undefined;
1761
+ };
1762
+ type: "playlist";
1763
+ description?: string | null | undefined;
1764
+ externalUrls?: {
1765
+ spotify?: string | undefined;
1766
+ } | undefined;
1767
+ followers?: {
1768
+ total: number;
1769
+ href?: string | null | undefined;
1770
+ } | undefined;
1771
+ href?: string | undefined;
1772
+ public?: boolean | null | undefined;
1773
+ snapshotId?: string | undefined;
1774
+ tracks?: {
1775
+ href?: string | undefined;
1776
+ total?: number | undefined;
1777
+ } | undefined;
1778
+ uri?: string | undefined;
1779
+ }[];
1780
+ limit: number;
1781
+ offset: number;
1782
+ href?: string | undefined;
1783
+ nextPageToken?: string | undefined;
1784
+ previousPageToken?: string | undefined;
1785
+ total?: number | undefined;
1786
+ }>;
1787
+ };
1788
+ readonly playlists: {
1789
+ readonly createPlaylist: (body: {
1790
+ name: string;
1791
+ public?: boolean;
1792
+ collaborative?: boolean;
1793
+ description?: string;
1794
+ }) => Promise<{
1795
+ collaborative: boolean;
1796
+ id: string;
1797
+ images: {
1798
+ url: string;
1799
+ height: number | null;
1800
+ width: number | null;
1801
+ }[];
1802
+ name: string;
1803
+ owner: {
1804
+ id: string;
1805
+ type: "user";
1806
+ displayName?: string | null | undefined;
1807
+ externalUrls?: {
1808
+ spotify?: string | undefined;
1809
+ } | undefined;
1810
+ followers?: {
1811
+ total: number;
1812
+ href?: string | null | undefined;
1813
+ } | undefined;
1814
+ href?: string | undefined;
1815
+ uri?: string | undefined;
1816
+ email?: string | undefined;
1817
+ country?: string | undefined;
1818
+ product?: string | undefined;
1819
+ images?: {
1820
+ url: string;
1821
+ height: number | null;
1822
+ width: number | null;
1823
+ }[] | undefined;
1824
+ };
1825
+ type: "playlist";
1826
+ description?: string | null | undefined;
1827
+ externalUrls?: {
1828
+ spotify?: string | undefined;
1829
+ } | undefined;
1830
+ followers?: {
1831
+ total: number;
1832
+ href?: string | null | undefined;
1833
+ } | undefined;
1834
+ href?: string | undefined;
1835
+ public?: boolean | null | undefined;
1836
+ snapshotId?: string | undefined;
1837
+ tracks?: {
1838
+ href?: string | undefined;
1839
+ total?: number | undefined;
1840
+ } | undefined;
1841
+ uri?: string | undefined;
1842
+ }>;
1843
+ readonly getPlaylist: (id: string, query?: {
1844
+ market?: string;
1845
+ fields?: string;
1846
+ additional_types?: readonly string[];
1847
+ }) => Promise<{
1848
+ collaborative: boolean;
1849
+ id: string;
1850
+ images: {
1851
+ url: string;
1852
+ height: number | null;
1853
+ width: number | null;
1854
+ }[];
1855
+ name: string;
1856
+ owner: {
1857
+ id: string;
1858
+ type: "user";
1859
+ displayName?: string | null | undefined;
1860
+ externalUrls?: {
1861
+ spotify?: string | undefined;
1862
+ } | undefined;
1863
+ followers?: {
1864
+ total: number;
1865
+ href?: string | null | undefined;
1866
+ } | undefined;
1867
+ href?: string | undefined;
1868
+ uri?: string | undefined;
1869
+ email?: string | undefined;
1870
+ country?: string | undefined;
1871
+ product?: string | undefined;
1872
+ images?: {
1873
+ url: string;
1874
+ height: number | null;
1875
+ width: number | null;
1876
+ }[] | undefined;
1877
+ };
1878
+ type: "playlist";
1879
+ description?: string | null | undefined;
1880
+ externalUrls?: {
1881
+ spotify?: string | undefined;
1882
+ } | undefined;
1883
+ followers?: {
1884
+ total: number;
1885
+ href?: string | null | undefined;
1886
+ } | undefined;
1887
+ href?: string | undefined;
1888
+ public?: boolean | null | undefined;
1889
+ snapshotId?: string | undefined;
1890
+ tracks?: {
1891
+ href?: string | undefined;
1892
+ total?: number | undefined;
1893
+ } | undefined;
1894
+ uri?: string | undefined;
1895
+ }>;
1896
+ readonly updatePlaylistDetails: (id: string, body: {
1897
+ name?: string;
1898
+ public?: boolean;
1899
+ collaborative?: boolean;
1900
+ description?: string;
1901
+ }) => Promise<{
1902
+ success: true;
1903
+ }>;
1904
+ readonly getPlaylistItems: (id: string, query?: {
1905
+ market?: string;
1906
+ fields?: string;
1907
+ limit?: number;
1908
+ offset?: number;
1909
+ additional_types?: readonly string[];
1910
+ }) => Promise<{
1911
+ items: {
1912
+ isLocal: boolean;
1913
+ addedAt?: string | null | undefined;
1914
+ addedBy?: {
1915
+ id: string;
1916
+ type: "user";
1917
+ displayName?: string | null | undefined;
1918
+ externalUrls?: {
1919
+ spotify?: string | undefined;
1920
+ } | undefined;
1921
+ followers?: {
1922
+ total: number;
1923
+ href?: string | null | undefined;
1924
+ } | undefined;
1925
+ href?: string | undefined;
1926
+ uri?: string | undefined;
1927
+ email?: string | undefined;
1928
+ country?: string | undefined;
1929
+ product?: string | undefined;
1930
+ images?: {
1931
+ url: string;
1932
+ height: number | null;
1933
+ width: number | null;
1934
+ }[] | undefined;
1935
+ } | undefined;
1936
+ track?: {
1937
+ durationMs: number;
1938
+ explicit: boolean;
1939
+ id: string;
1940
+ images: {
1941
+ url: string;
1942
+ height: number | null;
1943
+ width: number | null;
1944
+ }[];
1945
+ name: string;
1946
+ type: "episode";
1947
+ audioPreviewUrl?: string | null | undefined;
1948
+ description?: string | undefined;
1949
+ externalUrls?: {
1950
+ spotify?: string | undefined;
1951
+ } | undefined;
1952
+ href?: string | undefined;
1953
+ htmlDescription?: string | undefined;
1954
+ isExternallyHosted?: boolean | undefined;
1955
+ isPlayable?: boolean | undefined;
1956
+ language?: string | undefined;
1957
+ languages?: string[] | undefined;
1958
+ releaseDate?: string | undefined;
1959
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
1960
+ resumePoint?: {
1961
+ fullyPlayed: boolean;
1962
+ resumePositionMs: number;
1963
+ } | undefined;
1964
+ restrictions?: {
1965
+ reason: string;
1966
+ } | undefined;
1967
+ show?: {
1968
+ id: string;
1969
+ images: {
1970
+ url: string;
1971
+ height: number | null;
1972
+ width: number | null;
1973
+ }[];
1974
+ name: string;
1975
+ type: "show";
1976
+ availableMarkets?: string[] | undefined;
1977
+ copyrights?: {
1978
+ text: string;
1979
+ type: string;
1980
+ }[] | undefined;
1981
+ description?: string | undefined;
1982
+ explicit?: boolean | undefined;
1983
+ externalUrls?: {
1984
+ spotify?: string | undefined;
1985
+ } | undefined;
1986
+ href?: string | undefined;
1987
+ languages?: string[] | undefined;
1988
+ mediaType?: string | undefined;
1989
+ publisher?: string | undefined;
1990
+ totalEpisodes?: number | undefined;
1991
+ uri?: string | undefined;
1992
+ } | undefined;
1993
+ uri?: string | undefined;
1994
+ } | {
1995
+ artists: {
1996
+ id: string;
1997
+ name: string;
1998
+ type: "artist";
1999
+ externalUrls?: {
2000
+ spotify?: string | undefined;
2001
+ } | undefined;
2002
+ href?: string | undefined;
2003
+ uri?: string | undefined;
2004
+ }[];
2005
+ durationMs: number;
2006
+ explicit: boolean;
2007
+ id: string;
2008
+ name: string;
2009
+ type: "track";
2010
+ album?: {
2011
+ artists: {
2012
+ id: string;
2013
+ name: string;
2014
+ type: "artist";
2015
+ externalUrls?: {
2016
+ spotify?: string | undefined;
2017
+ } | undefined;
2018
+ href?: string | undefined;
2019
+ uri?: string | undefined;
2020
+ }[];
2021
+ id: string;
2022
+ images: {
2023
+ url: string;
2024
+ height: number | null;
2025
+ width: number | null;
2026
+ }[];
2027
+ name: string;
2028
+ type: "album";
2029
+ albumType?: "album" | "single" | "compilation" | undefined;
2030
+ availableMarkets?: string[] | undefined;
2031
+ externalUrls?: {
2032
+ spotify?: string | undefined;
2033
+ } | undefined;
2034
+ href?: string | undefined;
2035
+ releaseDate?: string | undefined;
2036
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2037
+ totalTracks?: number | undefined;
2038
+ uri?: string | undefined;
2039
+ } | undefined;
2040
+ availableMarkets?: string[] | undefined;
2041
+ discNumber?: number | undefined;
2042
+ externalIds?: {
2043
+ isrc?: string | undefined;
2044
+ ean?: string | undefined;
2045
+ upc?: string | undefined;
2046
+ } | undefined;
2047
+ externalUrls?: {
2048
+ spotify?: string | undefined;
2049
+ } | undefined;
2050
+ href?: string | undefined;
2051
+ isLocal?: boolean | undefined;
2052
+ isPlayable?: boolean | undefined;
2053
+ popularity?: number | undefined;
2054
+ previewUrl?: string | null | undefined;
2055
+ restrictions?: {
2056
+ reason: string;
2057
+ } | undefined;
2058
+ trackNumber?: number | undefined;
2059
+ uri?: string | undefined;
2060
+ } | null | undefined;
2061
+ }[];
2062
+ limit: number;
2063
+ offset: number;
2064
+ href?: string | undefined;
2065
+ nextPageToken?: string | undefined;
2066
+ previousPageToken?: string | undefined;
2067
+ total?: number | undefined;
2068
+ }>;
2069
+ readonly getPlaylistCoverImage: (id: string) => Promise<{
2070
+ images: {
2071
+ url: string;
2072
+ height: number | null;
2073
+ width: number | null;
2074
+ }[];
2075
+ }>;
2076
+ readonly addItemsToPlaylist: (id: string, body: {
2077
+ uris: readonly string[];
2078
+ position?: number;
2079
+ }) => Promise<{
2080
+ snapshotId: string;
2081
+ }>;
2082
+ readonly reorderPlaylistItems: (id: string, body: {
2083
+ rangeStart: number;
2084
+ insertBefore: number;
2085
+ rangeLength?: number;
2086
+ snapshotId?: string;
2087
+ }) => Promise<{
2088
+ snapshotId: string;
2089
+ }>;
2090
+ readonly replacePlaylistItems: (id: string, body: {
2091
+ uris: readonly string[];
2092
+ }) => Promise<{
2093
+ snapshotId: string;
2094
+ }>;
2095
+ readonly removeItemsFromPlaylist: (id: string, body: {
2096
+ tracks: readonly {
2097
+ uri: string;
2098
+ positions?: readonly number[];
2099
+ }[];
2100
+ snapshotId?: string;
2101
+ }) => Promise<{
2102
+ snapshotId: string;
2103
+ }>;
2104
+ readonly listMyPlaylists: (query?: {
2105
+ limit?: number;
2106
+ offset?: number;
2107
+ }) => Promise<{
2108
+ items: {
2109
+ collaborative: boolean;
2110
+ id: string;
2111
+ images: {
2112
+ url: string;
2113
+ height: number | null;
2114
+ width: number | null;
2115
+ }[];
2116
+ name: string;
2117
+ owner: {
2118
+ id: string;
2119
+ type: "user";
2120
+ displayName?: string | null | undefined;
2121
+ externalUrls?: {
2122
+ spotify?: string | undefined;
2123
+ } | undefined;
2124
+ followers?: {
2125
+ total: number;
2126
+ href?: string | null | undefined;
2127
+ } | undefined;
2128
+ href?: string | undefined;
2129
+ uri?: string | undefined;
2130
+ email?: string | undefined;
2131
+ country?: string | undefined;
2132
+ product?: string | undefined;
2133
+ images?: {
2134
+ url: string;
2135
+ height: number | null;
2136
+ width: number | null;
2137
+ }[] | undefined;
2138
+ };
2139
+ type: "playlist";
2140
+ description?: string | null | undefined;
2141
+ externalUrls?: {
2142
+ spotify?: string | undefined;
2143
+ } | undefined;
2144
+ followers?: {
2145
+ total: number;
2146
+ href?: string | null | undefined;
2147
+ } | undefined;
2148
+ href?: string | undefined;
2149
+ public?: boolean | null | undefined;
2150
+ snapshotId?: string | undefined;
2151
+ tracks?: {
2152
+ href?: string | undefined;
2153
+ total?: number | undefined;
2154
+ } | undefined;
2155
+ uri?: string | undefined;
2156
+ }[];
2157
+ limit: number;
2158
+ offset: number;
2159
+ href?: string | undefined;
2160
+ nextPageToken?: string | undefined;
2161
+ previousPageToken?: string | undefined;
2162
+ total?: number | undefined;
2163
+ }>;
2164
+ readonly listUserPlaylists: (userId: string, query?: {
2165
+ limit?: number;
2166
+ offset?: number;
2167
+ }) => Promise<{
2168
+ items: {
2169
+ collaborative: boolean;
2170
+ id: string;
2171
+ images: {
2172
+ url: string;
2173
+ height: number | null;
2174
+ width: number | null;
2175
+ }[];
2176
+ name: string;
2177
+ owner: {
2178
+ id: string;
2179
+ type: "user";
2180
+ displayName?: string | null | undefined;
2181
+ externalUrls?: {
2182
+ spotify?: string | undefined;
2183
+ } | undefined;
2184
+ followers?: {
2185
+ total: number;
2186
+ href?: string | null | undefined;
2187
+ } | undefined;
2188
+ href?: string | undefined;
2189
+ uri?: string | undefined;
2190
+ email?: string | undefined;
2191
+ country?: string | undefined;
2192
+ product?: string | undefined;
2193
+ images?: {
2194
+ url: string;
2195
+ height: number | null;
2196
+ width: number | null;
2197
+ }[] | undefined;
2198
+ };
2199
+ type: "playlist";
2200
+ description?: string | null | undefined;
2201
+ externalUrls?: {
2202
+ spotify?: string | undefined;
2203
+ } | undefined;
2204
+ followers?: {
2205
+ total: number;
2206
+ href?: string | null | undefined;
2207
+ } | undefined;
2208
+ href?: string | undefined;
2209
+ public?: boolean | null | undefined;
2210
+ snapshotId?: string | undefined;
2211
+ tracks?: {
2212
+ href?: string | undefined;
2213
+ total?: number | undefined;
2214
+ } | undefined;
2215
+ uri?: string | undefined;
2216
+ }[];
2217
+ limit: number;
2218
+ offset: number;
2219
+ href?: string | undefined;
2220
+ nextPageToken?: string | undefined;
2221
+ previousPageToken?: string | undefined;
2222
+ total?: number | undefined;
2223
+ }>;
2224
+ readonly followPlaylist: (id: string, body?: {
2225
+ public?: boolean;
2226
+ }) => Promise<{
2227
+ success: true;
2228
+ }>;
2229
+ readonly unfollowPlaylist: (id: string) => Promise<{
2230
+ success: true;
2231
+ }>;
2232
+ readonly checkUsersFollowPlaylist: (id: string, ids: readonly string[]) => Promise<boolean[]>;
2233
+ readonly uploadPlaylistCoverImage: (id: string, imageBase64: string) => Promise<{
2234
+ success: true;
2235
+ }>;
2236
+ };
2237
+ readonly users: {
2238
+ readonly getMe: () => Promise<{
2239
+ id: string;
2240
+ type: "user";
2241
+ displayName?: string | null | undefined;
2242
+ externalUrls?: {
2243
+ spotify?: string | undefined;
2244
+ } | undefined;
2245
+ followers?: {
2246
+ total: number;
2247
+ href?: string | null | undefined;
2248
+ } | undefined;
2249
+ href?: string | undefined;
2250
+ uri?: string | undefined;
2251
+ email?: string | undefined;
2252
+ country?: string | undefined;
2253
+ product?: string | undefined;
2254
+ images?: {
2255
+ url: string;
2256
+ height: number | null;
2257
+ width: number | null;
2258
+ }[] | undefined;
2259
+ }>;
2260
+ readonly getUser: (userId: string) => Promise<{
2261
+ id: string;
2262
+ type: "user";
2263
+ displayName?: string | null | undefined;
2264
+ externalUrls?: {
2265
+ spotify?: string | undefined;
2266
+ } | undefined;
2267
+ followers?: {
2268
+ total: number;
2269
+ href?: string | null | undefined;
2270
+ } | undefined;
2271
+ href?: string | undefined;
2272
+ uri?: string | undefined;
2273
+ email?: string | undefined;
2274
+ country?: string | undefined;
2275
+ product?: string | undefined;
2276
+ images?: {
2277
+ url: string;
2278
+ height: number | null;
2279
+ width: number | null;
2280
+ }[] | undefined;
2281
+ }>;
2282
+ readonly getMyTopArtists: (query?: {
2283
+ time_range?: string;
2284
+ limit?: number;
2285
+ offset?: number;
2286
+ }) => Promise<{
2287
+ items: {
2288
+ id: string;
2289
+ name: string;
2290
+ type: "artist";
2291
+ externalUrls?: {
2292
+ spotify?: string | undefined;
2293
+ } | undefined;
2294
+ href?: string | undefined;
2295
+ uri?: string | undefined;
2296
+ followers?: {
2297
+ total: number;
2298
+ href?: string | null | undefined;
2299
+ } | undefined;
2300
+ genres?: string[] | undefined;
2301
+ images?: {
2302
+ url: string;
2303
+ height: number | null;
2304
+ width: number | null;
2305
+ }[] | undefined;
2306
+ popularity?: number | undefined;
2307
+ }[];
2308
+ limit: number;
2309
+ offset: number;
2310
+ href?: string | undefined;
2311
+ nextPageToken?: string | undefined;
2312
+ previousPageToken?: string | undefined;
2313
+ total?: number | undefined;
2314
+ }>;
2315
+ readonly getMyTopTracks: (query?: {
2316
+ time_range?: string;
2317
+ limit?: number;
2318
+ offset?: number;
2319
+ }) => Promise<{
2320
+ items: {
2321
+ artists: {
2322
+ id: string;
2323
+ name: string;
2324
+ type: "artist";
2325
+ externalUrls?: {
2326
+ spotify?: string | undefined;
2327
+ } | undefined;
2328
+ href?: string | undefined;
2329
+ uri?: string | undefined;
2330
+ }[];
2331
+ durationMs: number;
2332
+ explicit: boolean;
2333
+ id: string;
2334
+ name: string;
2335
+ type: "track";
2336
+ album?: {
2337
+ artists: {
2338
+ id: string;
2339
+ name: string;
2340
+ type: "artist";
2341
+ externalUrls?: {
2342
+ spotify?: string | undefined;
2343
+ } | undefined;
2344
+ href?: string | undefined;
2345
+ uri?: string | undefined;
2346
+ }[];
2347
+ id: string;
2348
+ images: {
2349
+ url: string;
2350
+ height: number | null;
2351
+ width: number | null;
2352
+ }[];
2353
+ name: string;
2354
+ type: "album";
2355
+ albumType?: "album" | "single" | "compilation" | undefined;
2356
+ availableMarkets?: string[] | undefined;
2357
+ externalUrls?: {
2358
+ spotify?: string | undefined;
2359
+ } | undefined;
2360
+ href?: string | undefined;
2361
+ releaseDate?: string | undefined;
2362
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2363
+ totalTracks?: number | undefined;
2364
+ uri?: string | undefined;
2365
+ } | undefined;
2366
+ availableMarkets?: string[] | undefined;
2367
+ discNumber?: number | undefined;
2368
+ externalIds?: {
2369
+ isrc?: string | undefined;
2370
+ ean?: string | undefined;
2371
+ upc?: string | undefined;
2372
+ } | undefined;
2373
+ externalUrls?: {
2374
+ spotify?: string | undefined;
2375
+ } | undefined;
2376
+ href?: string | undefined;
2377
+ isLocal?: boolean | undefined;
2378
+ isPlayable?: boolean | undefined;
2379
+ popularity?: number | undefined;
2380
+ previewUrl?: string | null | undefined;
2381
+ restrictions?: {
2382
+ reason: string;
2383
+ } | undefined;
2384
+ trackNumber?: number | undefined;
2385
+ uri?: string | undefined;
2386
+ }[];
2387
+ limit: number;
2388
+ offset: number;
2389
+ href?: string | undefined;
2390
+ nextPageToken?: string | undefined;
2391
+ previousPageToken?: string | undefined;
2392
+ total?: number | undefined;
2393
+ }>;
2394
+ };
2395
+ readonly follow: {
2396
+ readonly getFollowedArtists: (query?: {
2397
+ after?: string;
2398
+ limit?: number;
2399
+ }) => Promise<{
2400
+ items: {
2401
+ id: string;
2402
+ name: string;
2403
+ type: "artist";
2404
+ externalUrls?: {
2405
+ spotify?: string | undefined;
2406
+ } | undefined;
2407
+ href?: string | undefined;
2408
+ uri?: string | undefined;
2409
+ followers?: {
2410
+ total: number;
2411
+ href?: string | null | undefined;
2412
+ } | undefined;
2413
+ genres?: string[] | undefined;
2414
+ images?: {
2415
+ url: string;
2416
+ height: number | null;
2417
+ width: number | null;
2418
+ }[] | undefined;
2419
+ popularity?: number | undefined;
2420
+ }[];
2421
+ limit: number;
2422
+ href?: string | undefined;
2423
+ nextPageToken?: string | undefined;
2424
+ previousPageToken?: string | undefined;
2425
+ total?: number | undefined;
2426
+ cursors?: {
2427
+ after?: string | undefined;
2428
+ before?: string | undefined;
2429
+ } | undefined;
2430
+ }>;
2431
+ readonly followArtistsOrUsers: (type: "artist" | "user", ids: readonly string[]) => Promise<{
2432
+ success: true;
2433
+ }>;
2434
+ readonly unfollowArtistsOrUsers: (type: "artist" | "user", ids: readonly string[]) => Promise<{
2435
+ success: true;
2436
+ }>;
2437
+ readonly checkFollowingArtistsOrUsers: (type: "artist" | "user", ids: readonly string[]) => Promise<boolean[]>;
2438
+ };
2439
+ readonly player: {
2440
+ readonly getPlaybackState: (market?: string) => Promise<{
2441
+ device: {
2442
+ isActive: boolean;
2443
+ isPrivateSession: boolean;
2444
+ isRestricted: boolean;
2445
+ name: string;
2446
+ type: string;
2447
+ id?: string | null | undefined;
2448
+ volumePercent?: number | null | undefined;
2449
+ supportsVolume?: boolean | undefined;
2450
+ };
2451
+ isPlaying: boolean;
2452
+ progressMs: number | null;
2453
+ repeatState: "track" | "context" | "off";
2454
+ shuffleState: boolean;
2455
+ timestamp: number;
2456
+ context?: {
2457
+ type: string;
2458
+ externalUrls?: {
2459
+ spotify?: string | undefined;
2460
+ } | undefined;
2461
+ href?: string | undefined;
2462
+ uri?: string | undefined;
2463
+ } | null | undefined;
2464
+ item?: {
2465
+ durationMs: number;
2466
+ explicit: boolean;
2467
+ id: string;
2468
+ images: {
2469
+ url: string;
2470
+ height: number | null;
2471
+ width: number | null;
2472
+ }[];
2473
+ name: string;
2474
+ type: "episode";
2475
+ audioPreviewUrl?: string | null | undefined;
2476
+ description?: string | undefined;
2477
+ externalUrls?: {
2478
+ spotify?: string | undefined;
2479
+ } | undefined;
2480
+ href?: string | undefined;
2481
+ htmlDescription?: string | undefined;
2482
+ isExternallyHosted?: boolean | undefined;
2483
+ isPlayable?: boolean | undefined;
2484
+ language?: string | undefined;
2485
+ languages?: string[] | undefined;
2486
+ releaseDate?: string | undefined;
2487
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2488
+ resumePoint?: {
2489
+ fullyPlayed: boolean;
2490
+ resumePositionMs: number;
2491
+ } | undefined;
2492
+ restrictions?: {
2493
+ reason: string;
2494
+ } | undefined;
2495
+ show?: {
2496
+ id: string;
2497
+ images: {
2498
+ url: string;
2499
+ height: number | null;
2500
+ width: number | null;
2501
+ }[];
2502
+ name: string;
2503
+ type: "show";
2504
+ availableMarkets?: string[] | undefined;
2505
+ copyrights?: {
2506
+ text: string;
2507
+ type: string;
2508
+ }[] | undefined;
2509
+ description?: string | undefined;
2510
+ explicit?: boolean | undefined;
2511
+ externalUrls?: {
2512
+ spotify?: string | undefined;
2513
+ } | undefined;
2514
+ href?: string | undefined;
2515
+ languages?: string[] | undefined;
2516
+ mediaType?: string | undefined;
2517
+ publisher?: string | undefined;
2518
+ totalEpisodes?: number | undefined;
2519
+ uri?: string | undefined;
2520
+ } | undefined;
2521
+ uri?: string | undefined;
2522
+ } | {
2523
+ artists: {
2524
+ id: string;
2525
+ name: string;
2526
+ type: "artist";
2527
+ externalUrls?: {
2528
+ spotify?: string | undefined;
2529
+ } | undefined;
2530
+ href?: string | undefined;
2531
+ uri?: string | undefined;
2532
+ }[];
2533
+ durationMs: number;
2534
+ explicit: boolean;
2535
+ id: string;
2536
+ name: string;
2537
+ type: "track";
2538
+ album?: {
2539
+ artists: {
2540
+ id: string;
2541
+ name: string;
2542
+ type: "artist";
2543
+ externalUrls?: {
2544
+ spotify?: string | undefined;
2545
+ } | undefined;
2546
+ href?: string | undefined;
2547
+ uri?: string | undefined;
2548
+ }[];
2549
+ id: string;
2550
+ images: {
2551
+ url: string;
2552
+ height: number | null;
2553
+ width: number | null;
2554
+ }[];
2555
+ name: string;
2556
+ type: "album";
2557
+ albumType?: "album" | "single" | "compilation" | undefined;
2558
+ availableMarkets?: string[] | undefined;
2559
+ externalUrls?: {
2560
+ spotify?: string | undefined;
2561
+ } | undefined;
2562
+ href?: string | undefined;
2563
+ releaseDate?: string | undefined;
2564
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2565
+ totalTracks?: number | undefined;
2566
+ uri?: string | undefined;
2567
+ } | undefined;
2568
+ availableMarkets?: string[] | undefined;
2569
+ discNumber?: number | undefined;
2570
+ externalIds?: {
2571
+ isrc?: string | undefined;
2572
+ ean?: string | undefined;
2573
+ upc?: string | undefined;
2574
+ } | undefined;
2575
+ externalUrls?: {
2576
+ spotify?: string | undefined;
2577
+ } | undefined;
2578
+ href?: string | undefined;
2579
+ isLocal?: boolean | undefined;
2580
+ isPlayable?: boolean | undefined;
2581
+ popularity?: number | undefined;
2582
+ previewUrl?: string | null | undefined;
2583
+ restrictions?: {
2584
+ reason: string;
2585
+ } | undefined;
2586
+ trackNumber?: number | undefined;
2587
+ uri?: string | undefined;
2588
+ } | null | undefined;
2589
+ currentlyPlayingType?: "unknown" | "track" | "episode" | "ad" | undefined;
2590
+ actions?: Record<string, boolean> | undefined;
2591
+ } | null>;
2592
+ readonly transferPlayback: (body: {
2593
+ deviceIds: readonly string[];
2594
+ play?: boolean;
2595
+ }) => Promise<{
2596
+ success: true;
2597
+ }>;
2598
+ readonly getAvailableDevices: () => Promise<{
2599
+ devices: {
2600
+ isActive: boolean;
2601
+ isPrivateSession: boolean;
2602
+ isRestricted: boolean;
2603
+ name: string;
2604
+ type: string;
2605
+ id?: string | null | undefined;
2606
+ volumePercent?: number | null | undefined;
2607
+ supportsVolume?: boolean | undefined;
2608
+ }[];
2609
+ }>;
2610
+ readonly getCurrentlyPlaying: (query?: {
2611
+ market?: string;
2612
+ additional_types?: readonly string[];
2613
+ }) => Promise<{
2614
+ device: {
2615
+ isActive: boolean;
2616
+ isPrivateSession: boolean;
2617
+ isRestricted: boolean;
2618
+ name: string;
2619
+ type: string;
2620
+ id?: string | null | undefined;
2621
+ volumePercent?: number | null | undefined;
2622
+ supportsVolume?: boolean | undefined;
2623
+ };
2624
+ isPlaying: boolean;
2625
+ progressMs: number | null;
2626
+ repeatState: "track" | "context" | "off";
2627
+ shuffleState: boolean;
2628
+ timestamp: number;
2629
+ context?: {
2630
+ type: string;
2631
+ externalUrls?: {
2632
+ spotify?: string | undefined;
2633
+ } | undefined;
2634
+ href?: string | undefined;
2635
+ uri?: string | undefined;
2636
+ } | null | undefined;
2637
+ item?: {
2638
+ durationMs: number;
2639
+ explicit: boolean;
2640
+ id: string;
2641
+ images: {
2642
+ url: string;
2643
+ height: number | null;
2644
+ width: number | null;
2645
+ }[];
2646
+ name: string;
2647
+ type: "episode";
2648
+ audioPreviewUrl?: string | null | undefined;
2649
+ description?: string | undefined;
2650
+ externalUrls?: {
2651
+ spotify?: string | undefined;
2652
+ } | undefined;
2653
+ href?: string | undefined;
2654
+ htmlDescription?: string | undefined;
2655
+ isExternallyHosted?: boolean | undefined;
2656
+ isPlayable?: boolean | undefined;
2657
+ language?: string | undefined;
2658
+ languages?: string[] | undefined;
2659
+ releaseDate?: string | undefined;
2660
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2661
+ resumePoint?: {
2662
+ fullyPlayed: boolean;
2663
+ resumePositionMs: number;
2664
+ } | undefined;
2665
+ restrictions?: {
2666
+ reason: string;
2667
+ } | undefined;
2668
+ show?: {
2669
+ id: string;
2670
+ images: {
2671
+ url: string;
2672
+ height: number | null;
2673
+ width: number | null;
2674
+ }[];
2675
+ name: string;
2676
+ type: "show";
2677
+ availableMarkets?: string[] | undefined;
2678
+ copyrights?: {
2679
+ text: string;
2680
+ type: string;
2681
+ }[] | undefined;
2682
+ description?: string | undefined;
2683
+ explicit?: boolean | undefined;
2684
+ externalUrls?: {
2685
+ spotify?: string | undefined;
2686
+ } | undefined;
2687
+ href?: string | undefined;
2688
+ languages?: string[] | undefined;
2689
+ mediaType?: string | undefined;
2690
+ publisher?: string | undefined;
2691
+ totalEpisodes?: number | undefined;
2692
+ uri?: string | undefined;
2693
+ } | undefined;
2694
+ uri?: string | undefined;
2695
+ } | {
2696
+ artists: {
2697
+ id: string;
2698
+ name: string;
2699
+ type: "artist";
2700
+ externalUrls?: {
2701
+ spotify?: string | undefined;
2702
+ } | undefined;
2703
+ href?: string | undefined;
2704
+ uri?: string | undefined;
2705
+ }[];
2706
+ durationMs: number;
2707
+ explicit: boolean;
2708
+ id: string;
2709
+ name: string;
2710
+ type: "track";
2711
+ album?: {
2712
+ artists: {
2713
+ id: string;
2714
+ name: string;
2715
+ type: "artist";
2716
+ externalUrls?: {
2717
+ spotify?: string | undefined;
2718
+ } | undefined;
2719
+ href?: string | undefined;
2720
+ uri?: string | undefined;
2721
+ }[];
2722
+ id: string;
2723
+ images: {
2724
+ url: string;
2725
+ height: number | null;
2726
+ width: number | null;
2727
+ }[];
2728
+ name: string;
2729
+ type: "album";
2730
+ albumType?: "album" | "single" | "compilation" | undefined;
2731
+ availableMarkets?: string[] | undefined;
2732
+ externalUrls?: {
2733
+ spotify?: string | undefined;
2734
+ } | undefined;
2735
+ href?: string | undefined;
2736
+ releaseDate?: string | undefined;
2737
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2738
+ totalTracks?: number | undefined;
2739
+ uri?: string | undefined;
2740
+ } | undefined;
2741
+ availableMarkets?: string[] | undefined;
2742
+ discNumber?: number | undefined;
2743
+ externalIds?: {
2744
+ isrc?: string | undefined;
2745
+ ean?: string | undefined;
2746
+ upc?: string | undefined;
2747
+ } | undefined;
2748
+ externalUrls?: {
2749
+ spotify?: string | undefined;
2750
+ } | undefined;
2751
+ href?: string | undefined;
2752
+ isLocal?: boolean | undefined;
2753
+ isPlayable?: boolean | undefined;
2754
+ popularity?: number | undefined;
2755
+ previewUrl?: string | null | undefined;
2756
+ restrictions?: {
2757
+ reason: string;
2758
+ } | undefined;
2759
+ trackNumber?: number | undefined;
2760
+ uri?: string | undefined;
2761
+ } | null | undefined;
2762
+ currentlyPlayingType?: "unknown" | "track" | "episode" | "ad" | undefined;
2763
+ actions?: Record<string, boolean> | undefined;
2764
+ } | null>;
2765
+ readonly startOrResumePlayback: (body?: {
2766
+ contextUri?: string;
2767
+ uris?: readonly string[];
2768
+ offset?: {
2769
+ position?: number;
2770
+ uri?: string;
2771
+ };
2772
+ positionMs?: number;
2773
+ }, deviceId?: string) => Promise<{
2774
+ success: true;
2775
+ }>;
2776
+ readonly pausePlayback: (deviceId?: string) => Promise<{
2777
+ success: true;
2778
+ }>;
2779
+ readonly skipToNext: (deviceId?: string) => Promise<{
2780
+ success: true;
2781
+ }>;
2782
+ readonly skipToPrevious: (deviceId?: string) => Promise<{
2783
+ success: true;
2784
+ }>;
2785
+ readonly seekToPosition: (positionMs: number, deviceId?: string) => Promise<{
2786
+ success: true;
2787
+ }>;
2788
+ readonly setRepeatMode: (state: "track" | "context" | "off", deviceId?: string) => Promise<{
2789
+ success: true;
2790
+ }>;
2791
+ readonly setPlaybackVolume: (volumePercent: number, deviceId?: string) => Promise<{
2792
+ success: true;
2793
+ }>;
2794
+ readonly setShuffleMode: (state: boolean, deviceId?: string) => Promise<{
2795
+ success: true;
2796
+ }>;
2797
+ readonly getRecentlyPlayed: (query?: {
2798
+ limit?: number;
2799
+ after?: number;
2800
+ before?: number;
2801
+ }) => Promise<{
2802
+ items: {
2803
+ playedAt: string;
2804
+ track: {
2805
+ artists: {
2806
+ id: string;
2807
+ name: string;
2808
+ type: "artist";
2809
+ externalUrls?: {
2810
+ spotify?: string | undefined;
2811
+ } | undefined;
2812
+ href?: string | undefined;
2813
+ uri?: string | undefined;
2814
+ }[];
2815
+ durationMs: number;
2816
+ explicit: boolean;
2817
+ id: string;
2818
+ name: string;
2819
+ type: "track";
2820
+ album?: {
2821
+ artists: {
2822
+ id: string;
2823
+ name: string;
2824
+ type: "artist";
2825
+ externalUrls?: {
2826
+ spotify?: string | undefined;
2827
+ } | undefined;
2828
+ href?: string | undefined;
2829
+ uri?: string | undefined;
2830
+ }[];
2831
+ id: string;
2832
+ images: {
2833
+ url: string;
2834
+ height: number | null;
2835
+ width: number | null;
2836
+ }[];
2837
+ name: string;
2838
+ type: "album";
2839
+ albumType?: "album" | "single" | "compilation" | undefined;
2840
+ availableMarkets?: string[] | undefined;
2841
+ externalUrls?: {
2842
+ spotify?: string | undefined;
2843
+ } | undefined;
2844
+ href?: string | undefined;
2845
+ releaseDate?: string | undefined;
2846
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2847
+ totalTracks?: number | undefined;
2848
+ uri?: string | undefined;
2849
+ } | undefined;
2850
+ availableMarkets?: string[] | undefined;
2851
+ discNumber?: number | undefined;
2852
+ externalIds?: {
2853
+ isrc?: string | undefined;
2854
+ ean?: string | undefined;
2855
+ upc?: string | undefined;
2856
+ } | undefined;
2857
+ externalUrls?: {
2858
+ spotify?: string | undefined;
2859
+ } | undefined;
2860
+ href?: string | undefined;
2861
+ isLocal?: boolean | undefined;
2862
+ isPlayable?: boolean | undefined;
2863
+ popularity?: number | undefined;
2864
+ previewUrl?: string | null | undefined;
2865
+ restrictions?: {
2866
+ reason: string;
2867
+ } | undefined;
2868
+ trackNumber?: number | undefined;
2869
+ uri?: string | undefined;
2870
+ };
2871
+ context?: {
2872
+ type: string;
2873
+ externalUrls?: {
2874
+ spotify?: string | undefined;
2875
+ } | undefined;
2876
+ href?: string | undefined;
2877
+ uri?: string | undefined;
2878
+ } | null | undefined;
2879
+ }[];
2880
+ limit: number;
2881
+ href?: string | undefined;
2882
+ nextPageToken?: string | undefined;
2883
+ previousPageToken?: string | undefined;
2884
+ total?: number | undefined;
2885
+ cursors?: {
2886
+ after?: string | undefined;
2887
+ before?: string | undefined;
2888
+ } | undefined;
2889
+ }>;
2890
+ readonly addToQueue: (uri: string, deviceId?: string) => Promise<{
2891
+ success: true;
2892
+ }>;
2893
+ readonly getQueue: () => Promise<{
2894
+ queue: ({
2895
+ durationMs: number;
2896
+ explicit: boolean;
2897
+ id: string;
2898
+ images: {
2899
+ url: string;
2900
+ height: number | null;
2901
+ width: number | null;
2902
+ }[];
2903
+ name: string;
2904
+ type: "episode";
2905
+ audioPreviewUrl?: string | null | undefined;
2906
+ description?: string | undefined;
2907
+ externalUrls?: {
2908
+ spotify?: string | undefined;
2909
+ } | undefined;
2910
+ href?: string | undefined;
2911
+ htmlDescription?: string | undefined;
2912
+ isExternallyHosted?: boolean | undefined;
2913
+ isPlayable?: boolean | undefined;
2914
+ language?: string | undefined;
2915
+ languages?: string[] | undefined;
2916
+ releaseDate?: string | undefined;
2917
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2918
+ resumePoint?: {
2919
+ fullyPlayed: boolean;
2920
+ resumePositionMs: number;
2921
+ } | undefined;
2922
+ restrictions?: {
2923
+ reason: string;
2924
+ } | undefined;
2925
+ show?: {
2926
+ id: string;
2927
+ images: {
2928
+ url: string;
2929
+ height: number | null;
2930
+ width: number | null;
2931
+ }[];
2932
+ name: string;
2933
+ type: "show";
2934
+ availableMarkets?: string[] | undefined;
2935
+ copyrights?: {
2936
+ text: string;
2937
+ type: string;
2938
+ }[] | undefined;
2939
+ description?: string | undefined;
2940
+ explicit?: boolean | undefined;
2941
+ externalUrls?: {
2942
+ spotify?: string | undefined;
2943
+ } | undefined;
2944
+ href?: string | undefined;
2945
+ languages?: string[] | undefined;
2946
+ mediaType?: string | undefined;
2947
+ publisher?: string | undefined;
2948
+ totalEpisodes?: number | undefined;
2949
+ uri?: string | undefined;
2950
+ } | undefined;
2951
+ uri?: string | undefined;
2952
+ } | {
2953
+ artists: {
2954
+ id: string;
2955
+ name: string;
2956
+ type: "artist";
2957
+ externalUrls?: {
2958
+ spotify?: string | undefined;
2959
+ } | undefined;
2960
+ href?: string | undefined;
2961
+ uri?: string | undefined;
2962
+ }[];
2963
+ durationMs: number;
2964
+ explicit: boolean;
2965
+ id: string;
2966
+ name: string;
2967
+ type: "track";
2968
+ album?: {
2969
+ artists: {
2970
+ id: string;
2971
+ name: string;
2972
+ type: "artist";
2973
+ externalUrls?: {
2974
+ spotify?: string | undefined;
2975
+ } | undefined;
2976
+ href?: string | undefined;
2977
+ uri?: string | undefined;
2978
+ }[];
2979
+ id: string;
2980
+ images: {
2981
+ url: string;
2982
+ height: number | null;
2983
+ width: number | null;
2984
+ }[];
2985
+ name: string;
2986
+ type: "album";
2987
+ albumType?: "album" | "single" | "compilation" | undefined;
2988
+ availableMarkets?: string[] | undefined;
2989
+ externalUrls?: {
2990
+ spotify?: string | undefined;
2991
+ } | undefined;
2992
+ href?: string | undefined;
2993
+ releaseDate?: string | undefined;
2994
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
2995
+ totalTracks?: number | undefined;
2996
+ uri?: string | undefined;
2997
+ } | undefined;
2998
+ availableMarkets?: string[] | undefined;
2999
+ discNumber?: number | undefined;
3000
+ externalIds?: {
3001
+ isrc?: string | undefined;
3002
+ ean?: string | undefined;
3003
+ upc?: string | undefined;
3004
+ } | undefined;
3005
+ externalUrls?: {
3006
+ spotify?: string | undefined;
3007
+ } | undefined;
3008
+ href?: string | undefined;
3009
+ isLocal?: boolean | undefined;
3010
+ isPlayable?: boolean | undefined;
3011
+ popularity?: number | undefined;
3012
+ previewUrl?: string | null | undefined;
3013
+ restrictions?: {
3014
+ reason: string;
3015
+ } | undefined;
3016
+ trackNumber?: number | undefined;
3017
+ uri?: string | undefined;
3018
+ })[];
3019
+ currentlyPlaying?: {
3020
+ durationMs: number;
3021
+ explicit: boolean;
3022
+ id: string;
3023
+ images: {
3024
+ url: string;
3025
+ height: number | null;
3026
+ width: number | null;
3027
+ }[];
3028
+ name: string;
3029
+ type: "episode";
3030
+ audioPreviewUrl?: string | null | undefined;
3031
+ description?: string | undefined;
3032
+ externalUrls?: {
3033
+ spotify?: string | undefined;
3034
+ } | undefined;
3035
+ href?: string | undefined;
3036
+ htmlDescription?: string | undefined;
3037
+ isExternallyHosted?: boolean | undefined;
3038
+ isPlayable?: boolean | undefined;
3039
+ language?: string | undefined;
3040
+ languages?: string[] | undefined;
3041
+ releaseDate?: string | undefined;
3042
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
3043
+ resumePoint?: {
3044
+ fullyPlayed: boolean;
3045
+ resumePositionMs: number;
3046
+ } | undefined;
3047
+ restrictions?: {
3048
+ reason: string;
3049
+ } | undefined;
3050
+ show?: {
3051
+ id: string;
3052
+ images: {
3053
+ url: string;
3054
+ height: number | null;
3055
+ width: number | null;
3056
+ }[];
3057
+ name: string;
3058
+ type: "show";
3059
+ availableMarkets?: string[] | undefined;
3060
+ copyrights?: {
3061
+ text: string;
3062
+ type: string;
3063
+ }[] | undefined;
3064
+ description?: string | undefined;
3065
+ explicit?: boolean | undefined;
3066
+ externalUrls?: {
3067
+ spotify?: string | undefined;
3068
+ } | undefined;
3069
+ href?: string | undefined;
3070
+ languages?: string[] | undefined;
3071
+ mediaType?: string | undefined;
3072
+ publisher?: string | undefined;
3073
+ totalEpisodes?: number | undefined;
3074
+ uri?: string | undefined;
3075
+ } | undefined;
3076
+ uri?: string | undefined;
3077
+ } | {
3078
+ artists: {
3079
+ id: string;
3080
+ name: string;
3081
+ type: "artist";
3082
+ externalUrls?: {
3083
+ spotify?: string | undefined;
3084
+ } | undefined;
3085
+ href?: string | undefined;
3086
+ uri?: string | undefined;
3087
+ }[];
3088
+ durationMs: number;
3089
+ explicit: boolean;
3090
+ id: string;
3091
+ name: string;
3092
+ type: "track";
3093
+ album?: {
3094
+ artists: {
3095
+ id: string;
3096
+ name: string;
3097
+ type: "artist";
3098
+ externalUrls?: {
3099
+ spotify?: string | undefined;
3100
+ } | undefined;
3101
+ href?: string | undefined;
3102
+ uri?: string | undefined;
3103
+ }[];
3104
+ id: string;
3105
+ images: {
3106
+ url: string;
3107
+ height: number | null;
3108
+ width: number | null;
3109
+ }[];
3110
+ name: string;
3111
+ type: "album";
3112
+ albumType?: "album" | "single" | "compilation" | undefined;
3113
+ availableMarkets?: string[] | undefined;
3114
+ externalUrls?: {
3115
+ spotify?: string | undefined;
3116
+ } | undefined;
3117
+ href?: string | undefined;
3118
+ releaseDate?: string | undefined;
3119
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
3120
+ totalTracks?: number | undefined;
3121
+ uri?: string | undefined;
3122
+ } | undefined;
3123
+ availableMarkets?: string[] | undefined;
3124
+ discNumber?: number | undefined;
3125
+ externalIds?: {
3126
+ isrc?: string | undefined;
3127
+ ean?: string | undefined;
3128
+ upc?: string | undefined;
3129
+ } | undefined;
3130
+ externalUrls?: {
3131
+ spotify?: string | undefined;
3132
+ } | undefined;
3133
+ href?: string | undefined;
3134
+ isLocal?: boolean | undefined;
3135
+ isPlayable?: boolean | undefined;
3136
+ popularity?: number | undefined;
3137
+ previewUrl?: string | null | undefined;
3138
+ restrictions?: {
3139
+ reason: string;
3140
+ } | undefined;
3141
+ trackNumber?: number | undefined;
3142
+ uri?: string | undefined;
3143
+ } | null | undefined;
3144
+ }>;
3145
+ };
3146
+ readonly library: {
3147
+ readonly listSavedAlbums: (query?: {
3148
+ limit?: number;
3149
+ offset?: number;
3150
+ market?: string;
3151
+ }) => Promise<{
3152
+ items: {
3153
+ addedAt: string;
3154
+ album: {
3155
+ artists: {
3156
+ id: string;
3157
+ name: string;
3158
+ type: "artist";
3159
+ externalUrls?: {
3160
+ spotify?: string | undefined;
3161
+ } | undefined;
3162
+ href?: string | undefined;
3163
+ uri?: string | undefined;
3164
+ }[];
3165
+ id: string;
3166
+ images: {
3167
+ url: string;
3168
+ height: number | null;
3169
+ width: number | null;
3170
+ }[];
3171
+ name: string;
3172
+ type: "album";
3173
+ albumType?: "album" | "single" | "compilation" | undefined;
3174
+ availableMarkets?: string[] | undefined;
3175
+ externalUrls?: {
3176
+ spotify?: string | undefined;
3177
+ } | undefined;
3178
+ href?: string | undefined;
3179
+ releaseDate?: string | undefined;
3180
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
3181
+ totalTracks?: number | undefined;
3182
+ uri?: string | undefined;
3183
+ copyrights?: {
3184
+ text: string;
3185
+ type: string;
3186
+ }[] | undefined;
3187
+ genres?: string[] | undefined;
3188
+ label?: string | undefined;
3189
+ popularity?: number | undefined;
3190
+ restrictions?: {
3191
+ reason: string;
3192
+ } | undefined;
3193
+ };
3194
+ }[];
3195
+ limit: number;
3196
+ offset: number;
3197
+ href?: string | undefined;
3198
+ nextPageToken?: string | undefined;
3199
+ previousPageToken?: string | undefined;
3200
+ total?: number | undefined;
3201
+ }>;
3202
+ readonly saveAlbums: (ids: readonly string[]) => Promise<{
3203
+ success: true;
3204
+ }>;
3205
+ readonly removeSavedAlbums: (ids: readonly string[]) => Promise<{
3206
+ success: true;
3207
+ }>;
3208
+ readonly checkSavedAlbums: (ids: readonly string[]) => Promise<boolean[]>;
3209
+ readonly listSavedTracks: (query?: {
3210
+ limit?: number;
3211
+ offset?: number;
3212
+ market?: string;
3213
+ }) => Promise<{
3214
+ items: {
3215
+ addedAt: string;
3216
+ track: {
3217
+ artists: {
3218
+ id: string;
3219
+ name: string;
3220
+ type: "artist";
3221
+ externalUrls?: {
3222
+ spotify?: string | undefined;
3223
+ } | undefined;
3224
+ href?: string | undefined;
3225
+ uri?: string | undefined;
3226
+ }[];
3227
+ durationMs: number;
3228
+ explicit: boolean;
3229
+ id: string;
3230
+ name: string;
3231
+ type: "track";
3232
+ album?: {
3233
+ artists: {
3234
+ id: string;
3235
+ name: string;
3236
+ type: "artist";
3237
+ externalUrls?: {
3238
+ spotify?: string | undefined;
3239
+ } | undefined;
3240
+ href?: string | undefined;
3241
+ uri?: string | undefined;
3242
+ }[];
3243
+ id: string;
3244
+ images: {
3245
+ url: string;
3246
+ height: number | null;
3247
+ width: number | null;
3248
+ }[];
3249
+ name: string;
3250
+ type: "album";
3251
+ albumType?: "album" | "single" | "compilation" | undefined;
3252
+ availableMarkets?: string[] | undefined;
3253
+ externalUrls?: {
3254
+ spotify?: string | undefined;
3255
+ } | undefined;
3256
+ href?: string | undefined;
3257
+ releaseDate?: string | undefined;
3258
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
3259
+ totalTracks?: number | undefined;
3260
+ uri?: string | undefined;
3261
+ } | undefined;
3262
+ availableMarkets?: string[] | undefined;
3263
+ discNumber?: number | undefined;
3264
+ externalIds?: {
3265
+ isrc?: string | undefined;
3266
+ ean?: string | undefined;
3267
+ upc?: string | undefined;
3268
+ } | undefined;
3269
+ externalUrls?: {
3270
+ spotify?: string | undefined;
3271
+ } | undefined;
3272
+ href?: string | undefined;
3273
+ isLocal?: boolean | undefined;
3274
+ isPlayable?: boolean | undefined;
3275
+ popularity?: number | undefined;
3276
+ previewUrl?: string | null | undefined;
3277
+ restrictions?: {
3278
+ reason: string;
3279
+ } | undefined;
3280
+ trackNumber?: number | undefined;
3281
+ uri?: string | undefined;
3282
+ };
3283
+ }[];
3284
+ limit: number;
3285
+ offset: number;
3286
+ href?: string | undefined;
3287
+ nextPageToken?: string | undefined;
3288
+ previousPageToken?: string | undefined;
3289
+ total?: number | undefined;
3290
+ }>;
3291
+ readonly saveTracks: (ids: readonly string[]) => Promise<{
3292
+ success: true;
3293
+ }>;
3294
+ readonly removeSavedTracks: (ids: readonly string[]) => Promise<{
3295
+ success: true;
3296
+ }>;
3297
+ readonly checkSavedTracks: (ids: readonly string[]) => Promise<boolean[]>;
3298
+ readonly listSavedShows: (query?: {
3299
+ limit?: number;
3300
+ offset?: number;
3301
+ }) => Promise<{
3302
+ items: {
3303
+ addedAt: string;
3304
+ show: {
3305
+ id: string;
3306
+ images: {
3307
+ url: string;
3308
+ height: number | null;
3309
+ width: number | null;
3310
+ }[];
3311
+ name: string;
3312
+ type: "show";
3313
+ availableMarkets?: string[] | undefined;
3314
+ copyrights?: {
3315
+ text: string;
3316
+ type: string;
3317
+ }[] | undefined;
3318
+ description?: string | undefined;
3319
+ explicit?: boolean | undefined;
3320
+ externalUrls?: {
3321
+ spotify?: string | undefined;
3322
+ } | undefined;
3323
+ href?: string | undefined;
3324
+ languages?: string[] | undefined;
3325
+ mediaType?: string | undefined;
3326
+ publisher?: string | undefined;
3327
+ totalEpisodes?: number | undefined;
3328
+ uri?: string | undefined;
3329
+ htmlDescription?: string | undefined;
3330
+ isExternallyHosted?: boolean | undefined;
3331
+ };
3332
+ }[];
3333
+ limit: number;
3334
+ offset: number;
3335
+ href?: string | undefined;
3336
+ nextPageToken?: string | undefined;
3337
+ previousPageToken?: string | undefined;
3338
+ total?: number | undefined;
3339
+ }>;
3340
+ readonly saveShows: (ids: readonly string[]) => Promise<{
3341
+ success: true;
3342
+ }>;
3343
+ readonly removeSavedShows: (ids: readonly string[]) => Promise<{
3344
+ success: true;
3345
+ }>;
3346
+ readonly checkSavedShows: (ids: readonly string[]) => Promise<boolean[]>;
3347
+ readonly listSavedEpisodes: (query?: {
3348
+ limit?: number;
3349
+ offset?: number;
3350
+ market?: string;
3351
+ }) => Promise<{
3352
+ items: {
3353
+ addedAt: string;
3354
+ episode: {
3355
+ durationMs: number;
3356
+ explicit: boolean;
3357
+ id: string;
3358
+ images: {
3359
+ url: string;
3360
+ height: number | null;
3361
+ width: number | null;
3362
+ }[];
3363
+ name: string;
3364
+ type: "episode";
3365
+ audioPreviewUrl?: string | null | undefined;
3366
+ description?: string | undefined;
3367
+ externalUrls?: {
3368
+ spotify?: string | undefined;
3369
+ } | undefined;
3370
+ href?: string | undefined;
3371
+ htmlDescription?: string | undefined;
3372
+ isExternallyHosted?: boolean | undefined;
3373
+ isPlayable?: boolean | undefined;
3374
+ language?: string | undefined;
3375
+ languages?: string[] | undefined;
3376
+ releaseDate?: string | undefined;
3377
+ releaseDatePrecision?: "year" | "month" | "day" | undefined;
3378
+ resumePoint?: {
3379
+ fullyPlayed: boolean;
3380
+ resumePositionMs: number;
3381
+ } | undefined;
3382
+ restrictions?: {
3383
+ reason: string;
3384
+ } | undefined;
3385
+ show?: {
3386
+ id: string;
3387
+ images: {
3388
+ url: string;
3389
+ height: number | null;
3390
+ width: number | null;
3391
+ }[];
3392
+ name: string;
3393
+ type: "show";
3394
+ availableMarkets?: string[] | undefined;
3395
+ copyrights?: {
3396
+ text: string;
3397
+ type: string;
3398
+ }[] | undefined;
3399
+ description?: string | undefined;
3400
+ explicit?: boolean | undefined;
3401
+ externalUrls?: {
3402
+ spotify?: string | undefined;
3403
+ } | undefined;
3404
+ href?: string | undefined;
3405
+ languages?: string[] | undefined;
3406
+ mediaType?: string | undefined;
3407
+ publisher?: string | undefined;
3408
+ totalEpisodes?: number | undefined;
3409
+ uri?: string | undefined;
3410
+ } | undefined;
3411
+ uri?: string | undefined;
3412
+ };
3413
+ }[];
3414
+ limit: number;
3415
+ offset: number;
3416
+ href?: string | undefined;
3417
+ nextPageToken?: string | undefined;
3418
+ previousPageToken?: string | undefined;
3419
+ total?: number | undefined;
3420
+ }>;
3421
+ readonly saveEpisodes: (ids: readonly string[]) => Promise<{
3422
+ success: true;
3423
+ }>;
3424
+ readonly removeSavedEpisodes: (ids: readonly string[]) => Promise<{
3425
+ success: true;
3426
+ }>;
3427
+ readonly checkSavedEpisodes: (ids: readonly string[]) => Promise<boolean[]>;
3428
+ readonly listSavedAudiobooks: (query?: {
3429
+ limit?: number;
3430
+ offset?: number;
3431
+ }) => Promise<{
3432
+ items: {
3433
+ addedAt: string;
3434
+ audiobook: {
3435
+ id: string;
3436
+ images: {
3437
+ url: string;
3438
+ height: number | null;
3439
+ width: number | null;
3440
+ }[];
3441
+ name: string;
3442
+ type: "audiobook";
3443
+ authors?: {
3444
+ name: string;
3445
+ }[] | undefined;
3446
+ availableMarkets?: string[] | undefined;
3447
+ copyrights?: {
3448
+ text: string;
3449
+ type: string;
3450
+ }[] | undefined;
3451
+ description?: string | undefined;
3452
+ explicit?: boolean | undefined;
3453
+ externalUrls?: {
3454
+ spotify?: string | undefined;
3455
+ } | undefined;
3456
+ href?: string | undefined;
3457
+ htmlDescription?: string | undefined;
3458
+ languages?: string[] | undefined;
3459
+ mediaType?: string | undefined;
3460
+ narrators?: {
3461
+ name: string;
3462
+ }[] | undefined;
3463
+ publisher?: string | undefined;
3464
+ totalChapters?: number | undefined;
3465
+ uri?: string | undefined;
3466
+ };
3467
+ }[];
3468
+ limit: number;
3469
+ offset: number;
3470
+ href?: string | undefined;
3471
+ nextPageToken?: string | undefined;
3472
+ previousPageToken?: string | undefined;
3473
+ total?: number | undefined;
3474
+ }>;
3475
+ readonly saveAudiobooks: (ids: readonly string[]) => Promise<{
3476
+ success: true;
3477
+ }>;
3478
+ readonly removeSavedAudiobooks: (ids: readonly string[]) => Promise<{
3479
+ success: true;
3480
+ }>;
3481
+ readonly checkSavedAudiobooks: (ids: readonly string[]) => Promise<boolean[]>;
3482
+ };
3483
+ };
3484
+ type SpotifyClient = ReturnType<typeof createSpotifyClient>;
3485
+ //#endregion
3486
+ export { SpotifyClient, createSpotifyClient };