@nuclearplayer/plugin-sdk 1.1.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.ts +689 -15
  2. package/dist/index.js +2902 -210
  3. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { z } from 'zod';
2
+
1
3
  export declare type Album = {
2
4
  title: string;
3
5
  artists: ArtistCredit[];
@@ -20,7 +22,7 @@ export declare type AlbumRef = {
20
22
  source: ProviderRef;
21
23
  };
22
24
 
23
- export declare type Artist = {
25
+ export declare type ArtistBio = {
24
26
  name: string;
25
27
  disambiguation?: string;
26
28
  bio?: string;
@@ -36,7 +38,7 @@ export declare type ArtistCredit = {
36
38
  source?: ProviderRef;
37
39
  };
38
40
 
39
- export declare type ArtistMetadataCapability = 'artistDetails' | 'artistAlbums' | 'artistTopTracks' | 'artistRelatedArtists';
41
+ export declare type ArtistMetadataCapability = 'artistBio' | 'artistSocialStats' | 'artistTopTracks' | 'artistAlbums' | 'artistPlaylists' | 'artistRelatedArtists';
40
42
 
41
43
  export declare type ArtistRef = {
42
44
  name: string;
@@ -45,6 +47,18 @@ export declare type ArtistRef = {
45
47
  source: ProviderRef;
46
48
  };
47
49
 
50
+ export declare type ArtistSocialStats = {
51
+ name: string;
52
+ artwork?: ArtworkSet;
53
+ city?: string;
54
+ country?: string;
55
+ followersCount?: number;
56
+ followingsCount?: number;
57
+ trackCount?: number;
58
+ playlistCount?: number;
59
+ source: ProviderRef;
60
+ };
61
+
48
62
  export declare type Artwork = {
49
63
  url: string;
50
64
  width?: number;
@@ -186,22 +200,43 @@ export declare type LocalFileInfo = {
186
200
  scannedAtIso?: string;
187
201
  };
188
202
 
203
+ export declare class LoggerAPI {
204
+ private host;
205
+ constructor(host?: LoggerHost);
206
+ trace(message: string): void;
207
+ debug(message: string): void;
208
+ info(message: string): void;
209
+ warn(message: string): void;
210
+ error(message: string): void;
211
+ log(level: LogLevel, message: string): void;
212
+ }
213
+
214
+ export declare type LoggerHost = {
215
+ log: (level: LogLevel, message: string) => void;
216
+ };
217
+
218
+ export declare type LogLevel = 'trace' | 'debug' | 'info' | 'warn' | 'error';
219
+
189
220
  declare class MetadataAPI {
190
221
  #private;
191
222
  constructor(host?: MetadataHost);
192
223
  search(params: SearchParams, providerId?: string): Promise<SearchResults>;
193
- fetchArtistDetails(artistId: string, providerId?: string): Promise<Artist>;
224
+ fetchArtistBio(artistId: string, providerId?: string): Promise<ArtistBio>;
225
+ fetchArtistSocialStats(artistId: string, providerId?: string): Promise<ArtistSocialStats>;
194
226
  fetchArtistAlbums(artistId: string, providerId?: string): Promise<AlbumRef[]>;
195
227
  fetchArtistTopTracks(artistId: string, providerId?: string): Promise<TrackRef[]>;
228
+ fetchArtistPlaylists(artistId: string, providerId?: string): Promise<PlaylistRef[]>;
196
229
  fetchArtistRelatedArtists(artistId: string, providerId?: string): Promise<ArtistRef[]>;
197
230
  fetchAlbumDetails(albumId: string, providerId?: string): Promise<Album>;
198
231
  }
199
232
 
200
233
  export declare type MetadataHost = {
201
234
  search: (params: SearchParams, providerId?: string) => Promise<SearchResults>;
202
- fetchArtistDetails: (artistId: string, providerId?: string) => Promise<Artist>;
235
+ fetchArtistBio: (artistId: string, providerId?: string) => Promise<ArtistBio>;
236
+ fetchArtistSocialStats: (artistId: string, providerId?: string) => Promise<ArtistSocialStats>;
203
237
  fetchArtistAlbums: (artistId: string, providerId?: string) => Promise<AlbumRef[]>;
204
238
  fetchArtistTopTracks: (artistId: string, providerId?: string) => Promise<TrackRef[]>;
239
+ fetchArtistPlaylists: (artistId: string, providerId?: string) => Promise<PlaylistRef[]>;
205
240
  fetchArtistRelatedArtists: (artistId: string, providerId?: string) => Promise<ArtistRef[]>;
206
241
  fetchAlbumDetails: (albumId: string, providerId?: string) => Promise<Album>;
207
242
  };
@@ -215,10 +250,12 @@ export declare type MetadataProvider = ProviderDescriptor<'metadata'> & {
215
250
  searchAlbums?: (params: Omit<SearchParams, 'types'>) => Promise<AlbumRef[]>;
216
251
  searchTracks?: (params: Omit<SearchParams, 'types'>) => Promise<Track[]>;
217
252
  searchPlaylists?: (params: Omit<SearchParams, 'types'>) => Promise<PlaylistRef[]>;
218
- fetchArtistDetails?: (query: string) => Promise<Artist>;
253
+ fetchArtistBio?: (artistId: string) => Promise<ArtistBio>;
254
+ fetchArtistSocialStats?: (artistId: string) => Promise<ArtistSocialStats>;
219
255
  fetchAlbumDetails?: (query: string) => Promise<Album>;
220
- fetchArtistAlbums?: (artistId: string) => Promise<AlbumRef[]>;
221
256
  fetchArtistTopTracks?: (artistId: string) => Promise<TrackRef[]>;
257
+ fetchArtistAlbums?: (artistId: string) => Promise<AlbumRef[]>;
258
+ fetchArtistPlaylists?: (artistId: string) => Promise<PlaylistRef[]>;
222
259
  fetchArtistRelatedArtists?: (artistId: string) => Promise<ArtistRef[]>;
223
260
  };
224
261
 
@@ -235,6 +272,7 @@ export declare class NuclearAPI {
235
272
  readonly Http: HttpAPI;
236
273
  readonly Ytdlp: YtdlpAPI;
237
274
  readonly Favorites: FavoritesAPI;
275
+ readonly Logger: LoggerAPI;
238
276
  constructor(opts?: {
239
277
  settingsHost?: SettingsHost;
240
278
  providersHost?: ProvidersHost;
@@ -244,6 +282,7 @@ export declare class NuclearAPI {
244
282
  httpHost?: HttpHost;
245
283
  ytdlpHost?: YtdlpHost;
246
284
  favoritesHost?: FavoritesHost;
285
+ loggerHost?: LoggerHost;
247
286
  });
248
287
  }
249
288
 
@@ -292,20 +331,261 @@ export declare function pickArtwork(set: ArtworkSet | undefined, purpose: Artwor
292
331
  export declare type Playlist = {
293
332
  id: string;
294
333
  name: string;
295
- lastModifiedIso?: string;
334
+ description?: string;
335
+ artwork?: ArtworkSet;
336
+ tags?: string[];
337
+ createdAtIso: string;
338
+ lastModifiedIso: string;
339
+ origin?: ProviderRef;
340
+ isReadOnly: boolean;
341
+ parentId?: string;
296
342
  items: PlaylistItem[];
297
343
  };
298
344
 
299
- export declare type PlaylistItem = {
345
+ export declare type PlaylistIndexEntry = Pick<Playlist, 'id' | 'name' | 'createdAtIso' | 'lastModifiedIso' | 'isReadOnly' | 'artwork'> & {
346
+ itemCount: number;
347
+ totalDurationMs: number;
348
+ };
349
+
350
+ export declare const playlistIndexEntrySchema: z.ZodObject<{
351
+ id: z.ZodString;
352
+ name: z.ZodString;
353
+ createdAtIso: z.ZodString;
354
+ lastModifiedIso: z.ZodString;
355
+ isReadOnly: z.ZodBoolean;
356
+ artwork: z.ZodOptional<z.ZodObject<{
357
+ items: z.ZodArray<z.ZodObject<{
358
+ url: z.ZodString;
359
+ width: z.ZodOptional<z.ZodNumber>;
360
+ height: z.ZodOptional<z.ZodNumber>;
361
+ purpose: z.ZodOptional<z.ZodEnum<["avatar", "cover", "background", "thumbnail"]>>;
362
+ source: z.ZodOptional<z.ZodObject<{
363
+ provider: z.ZodString;
364
+ id: z.ZodString;
365
+ url: z.ZodOptional<z.ZodString>;
366
+ }, "strip", z.ZodTypeAny, {
367
+ id: string;
368
+ provider: string;
369
+ url?: string | undefined;
370
+ }, {
371
+ id: string;
372
+ provider: string;
373
+ url?: string | undefined;
374
+ }>>;
375
+ }, "strip", z.ZodTypeAny, {
376
+ url: string;
377
+ width?: number | undefined;
378
+ height?: number | undefined;
379
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
380
+ source?: {
381
+ id: string;
382
+ provider: string;
383
+ url?: string | undefined;
384
+ } | undefined;
385
+ }, {
386
+ url: string;
387
+ width?: number | undefined;
388
+ height?: number | undefined;
389
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
390
+ source?: {
391
+ id: string;
392
+ provider: string;
393
+ url?: string | undefined;
394
+ } | undefined;
395
+ }>, "many">;
396
+ }, "strip", z.ZodTypeAny, {
397
+ items: {
398
+ url: string;
399
+ width?: number | undefined;
400
+ height?: number | undefined;
401
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
402
+ source?: {
403
+ id: string;
404
+ provider: string;
405
+ url?: string | undefined;
406
+ } | undefined;
407
+ }[];
408
+ }, {
409
+ items: {
410
+ url: string;
411
+ width?: number | undefined;
412
+ height?: number | undefined;
413
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
414
+ source?: {
415
+ id: string;
416
+ provider: string;
417
+ url?: string | undefined;
418
+ } | undefined;
419
+ }[];
420
+ }>>;
421
+ itemCount: z.ZodNumber;
422
+ totalDurationMs: z.ZodNumber;
423
+ }, "strip", z.ZodTypeAny, {
300
424
  id: string;
301
- title: string;
302
- artists: ArtistCredit[];
303
- album?: string;
304
- durationMs?: number;
305
- artwork?: ArtworkSet;
425
+ name: string;
426
+ createdAtIso: string;
427
+ lastModifiedIso: string;
428
+ isReadOnly: boolean;
429
+ itemCount: number;
430
+ totalDurationMs: number;
431
+ artwork?: {
432
+ items: {
433
+ url: string;
434
+ width?: number | undefined;
435
+ height?: number | undefined;
436
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
437
+ source?: {
438
+ id: string;
439
+ provider: string;
440
+ url?: string | undefined;
441
+ } | undefined;
442
+ }[];
443
+ } | undefined;
444
+ }, {
445
+ id: string;
446
+ name: string;
447
+ createdAtIso: string;
448
+ lastModifiedIso: string;
449
+ isReadOnly: boolean;
450
+ itemCount: number;
451
+ totalDurationMs: number;
452
+ artwork?: {
453
+ items: {
454
+ url: string;
455
+ width?: number | undefined;
456
+ height?: number | undefined;
457
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
458
+ source?: {
459
+ id: string;
460
+ provider: string;
461
+ url?: string | undefined;
462
+ } | undefined;
463
+ }[];
464
+ } | undefined;
465
+ }>;
466
+
467
+ export declare const playlistIndexSchema: z.ZodArray<z.ZodObject<{
468
+ id: z.ZodString;
469
+ name: z.ZodString;
470
+ createdAtIso: z.ZodString;
471
+ lastModifiedIso: z.ZodString;
472
+ isReadOnly: z.ZodBoolean;
473
+ artwork: z.ZodOptional<z.ZodObject<{
474
+ items: z.ZodArray<z.ZodObject<{
475
+ url: z.ZodString;
476
+ width: z.ZodOptional<z.ZodNumber>;
477
+ height: z.ZodOptional<z.ZodNumber>;
478
+ purpose: z.ZodOptional<z.ZodEnum<["avatar", "cover", "background", "thumbnail"]>>;
479
+ source: z.ZodOptional<z.ZodObject<{
480
+ provider: z.ZodString;
481
+ id: z.ZodString;
482
+ url: z.ZodOptional<z.ZodString>;
483
+ }, "strip", z.ZodTypeAny, {
484
+ id: string;
485
+ provider: string;
486
+ url?: string | undefined;
487
+ }, {
488
+ id: string;
489
+ provider: string;
490
+ url?: string | undefined;
491
+ }>>;
492
+ }, "strip", z.ZodTypeAny, {
493
+ url: string;
494
+ width?: number | undefined;
495
+ height?: number | undefined;
496
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
497
+ source?: {
498
+ id: string;
499
+ provider: string;
500
+ url?: string | undefined;
501
+ } | undefined;
502
+ }, {
503
+ url: string;
504
+ width?: number | undefined;
505
+ height?: number | undefined;
506
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
507
+ source?: {
508
+ id: string;
509
+ provider: string;
510
+ url?: string | undefined;
511
+ } | undefined;
512
+ }>, "many">;
513
+ }, "strip", z.ZodTypeAny, {
514
+ items: {
515
+ url: string;
516
+ width?: number | undefined;
517
+ height?: number | undefined;
518
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
519
+ source?: {
520
+ id: string;
521
+ provider: string;
522
+ url?: string | undefined;
523
+ } | undefined;
524
+ }[];
525
+ }, {
526
+ items: {
527
+ url: string;
528
+ width?: number | undefined;
529
+ height?: number | undefined;
530
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
531
+ source?: {
532
+ id: string;
533
+ provider: string;
534
+ url?: string | undefined;
535
+ } | undefined;
536
+ }[];
537
+ }>>;
538
+ itemCount: z.ZodNumber;
539
+ totalDurationMs: z.ZodNumber;
540
+ }, "strip", z.ZodTypeAny, {
541
+ id: string;
542
+ name: string;
543
+ createdAtIso: string;
544
+ lastModifiedIso: string;
545
+ isReadOnly: boolean;
546
+ itemCount: number;
547
+ totalDurationMs: number;
548
+ artwork?: {
549
+ items: {
550
+ url: string;
551
+ width?: number | undefined;
552
+ height?: number | undefined;
553
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
554
+ source?: {
555
+ id: string;
556
+ provider: string;
557
+ url?: string | undefined;
558
+ } | undefined;
559
+ }[];
560
+ } | undefined;
561
+ }, {
562
+ id: string;
563
+ name: string;
564
+ createdAtIso: string;
565
+ lastModifiedIso: string;
566
+ isReadOnly: boolean;
567
+ itemCount: number;
568
+ totalDurationMs: number;
569
+ artwork?: {
570
+ items: {
571
+ url: string;
572
+ width?: number | undefined;
573
+ height?: number | undefined;
574
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
575
+ source?: {
576
+ id: string;
577
+ provider: string;
578
+ url?: string | undefined;
579
+ } | undefined;
580
+ }[];
581
+ } | undefined;
582
+ }>, "many">;
583
+
584
+ export declare type PlaylistItem<T extends Track = Track> = {
585
+ id: string;
586
+ track: T;
306
587
  note?: string;
307
- addedAtIso?: string;
308
- source: ProviderRef;
588
+ addedAtIso: string;
309
589
  };
310
590
 
311
591
  export declare type PlaylistRef = {
@@ -315,6 +595,400 @@ export declare type PlaylistRef = {
315
595
  source: ProviderRef;
316
596
  };
317
597
 
598
+ export declare const playlistSchema: z.ZodObject<{
599
+ id: z.ZodString;
600
+ name: z.ZodString;
601
+ description: z.ZodOptional<z.ZodString>;
602
+ artwork: z.ZodOptional<z.ZodObject<{
603
+ items: z.ZodArray<z.ZodObject<{
604
+ url: z.ZodString;
605
+ width: z.ZodOptional<z.ZodNumber>;
606
+ height: z.ZodOptional<z.ZodNumber>;
607
+ purpose: z.ZodOptional<z.ZodEnum<["avatar", "cover", "background", "thumbnail"]>>;
608
+ source: z.ZodOptional<z.ZodObject<{
609
+ provider: z.ZodString;
610
+ id: z.ZodString;
611
+ url: z.ZodOptional<z.ZodString>;
612
+ }, "strip", z.ZodTypeAny, {
613
+ id: string;
614
+ provider: string;
615
+ url?: string | undefined;
616
+ }, {
617
+ id: string;
618
+ provider: string;
619
+ url?: string | undefined;
620
+ }>>;
621
+ }, "strip", z.ZodTypeAny, {
622
+ url: string;
623
+ width?: number | undefined;
624
+ height?: number | undefined;
625
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
626
+ source?: {
627
+ id: string;
628
+ provider: string;
629
+ url?: string | undefined;
630
+ } | undefined;
631
+ }, {
632
+ url: string;
633
+ width?: number | undefined;
634
+ height?: number | undefined;
635
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
636
+ source?: {
637
+ id: string;
638
+ provider: string;
639
+ url?: string | undefined;
640
+ } | undefined;
641
+ }>, "many">;
642
+ }, "strip", z.ZodTypeAny, {
643
+ items: {
644
+ url: string;
645
+ width?: number | undefined;
646
+ height?: number | undefined;
647
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
648
+ source?: {
649
+ id: string;
650
+ provider: string;
651
+ url?: string | undefined;
652
+ } | undefined;
653
+ }[];
654
+ }, {
655
+ items: {
656
+ url: string;
657
+ width?: number | undefined;
658
+ height?: number | undefined;
659
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
660
+ source?: {
661
+ id: string;
662
+ provider: string;
663
+ url?: string | undefined;
664
+ } | undefined;
665
+ }[];
666
+ }>>;
667
+ tags: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
668
+ createdAtIso: z.ZodString;
669
+ lastModifiedIso: z.ZodString;
670
+ origin: z.ZodOptional<z.ZodObject<{
671
+ provider: z.ZodString;
672
+ id: z.ZodString;
673
+ url: z.ZodOptional<z.ZodString>;
674
+ }, "strip", z.ZodTypeAny, {
675
+ id: string;
676
+ provider: string;
677
+ url?: string | undefined;
678
+ }, {
679
+ id: string;
680
+ provider: string;
681
+ url?: string | undefined;
682
+ }>>;
683
+ isReadOnly: z.ZodBoolean;
684
+ parentId: z.ZodOptional<z.ZodString>;
685
+ items: z.ZodArray<z.ZodObject<{
686
+ id: z.ZodString;
687
+ track: z.ZodObject<{
688
+ title: z.ZodString;
689
+ artists: z.ZodArray<z.ZodObject<{
690
+ name: z.ZodString;
691
+ roles: z.ZodArray<z.ZodString, "many">;
692
+ source: z.ZodOptional<z.ZodObject<{
693
+ provider: z.ZodString;
694
+ id: z.ZodString;
695
+ url: z.ZodOptional<z.ZodString>;
696
+ }, "strip", z.ZodTypeAny, {
697
+ id: string;
698
+ provider: string;
699
+ url?: string | undefined;
700
+ }, {
701
+ id: string;
702
+ provider: string;
703
+ url?: string | undefined;
704
+ }>>;
705
+ }, "strip", z.ZodTypeAny, {
706
+ name: string;
707
+ roles: string[];
708
+ source?: {
709
+ id: string;
710
+ provider: string;
711
+ url?: string | undefined;
712
+ } | undefined;
713
+ }, {
714
+ name: string;
715
+ roles: string[];
716
+ source?: {
717
+ id: string;
718
+ provider: string;
719
+ url?: string | undefined;
720
+ } | undefined;
721
+ }>, "many">;
722
+ durationMs: z.ZodOptional<z.ZodNumber>;
723
+ source: z.ZodObject<{
724
+ provider: z.ZodString;
725
+ id: z.ZodString;
726
+ url: z.ZodOptional<z.ZodString>;
727
+ }, "strip", z.ZodTypeAny, {
728
+ id: string;
729
+ provider: string;
730
+ url?: string | undefined;
731
+ }, {
732
+ id: string;
733
+ provider: string;
734
+ url?: string | undefined;
735
+ }>;
736
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
737
+ title: z.ZodString;
738
+ artists: z.ZodArray<z.ZodObject<{
739
+ name: z.ZodString;
740
+ roles: z.ZodArray<z.ZodString, "many">;
741
+ source: z.ZodOptional<z.ZodObject<{
742
+ provider: z.ZodString;
743
+ id: z.ZodString;
744
+ url: z.ZodOptional<z.ZodString>;
745
+ }, "strip", z.ZodTypeAny, {
746
+ id: string;
747
+ provider: string;
748
+ url?: string | undefined;
749
+ }, {
750
+ id: string;
751
+ provider: string;
752
+ url?: string | undefined;
753
+ }>>;
754
+ }, "strip", z.ZodTypeAny, {
755
+ name: string;
756
+ roles: string[];
757
+ source?: {
758
+ id: string;
759
+ provider: string;
760
+ url?: string | undefined;
761
+ } | undefined;
762
+ }, {
763
+ name: string;
764
+ roles: string[];
765
+ source?: {
766
+ id: string;
767
+ provider: string;
768
+ url?: string | undefined;
769
+ } | undefined;
770
+ }>, "many">;
771
+ durationMs: z.ZodOptional<z.ZodNumber>;
772
+ source: z.ZodObject<{
773
+ provider: z.ZodString;
774
+ id: z.ZodString;
775
+ url: z.ZodOptional<z.ZodString>;
776
+ }, "strip", z.ZodTypeAny, {
777
+ id: string;
778
+ provider: string;
779
+ url?: string | undefined;
780
+ }, {
781
+ id: string;
782
+ provider: string;
783
+ url?: string | undefined;
784
+ }>;
785
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
786
+ title: z.ZodString;
787
+ artists: z.ZodArray<z.ZodObject<{
788
+ name: z.ZodString;
789
+ roles: z.ZodArray<z.ZodString, "many">;
790
+ source: z.ZodOptional<z.ZodObject<{
791
+ provider: z.ZodString;
792
+ id: z.ZodString;
793
+ url: z.ZodOptional<z.ZodString>;
794
+ }, "strip", z.ZodTypeAny, {
795
+ id: string;
796
+ provider: string;
797
+ url?: string | undefined;
798
+ }, {
799
+ id: string;
800
+ provider: string;
801
+ url?: string | undefined;
802
+ }>>;
803
+ }, "strip", z.ZodTypeAny, {
804
+ name: string;
805
+ roles: string[];
806
+ source?: {
807
+ id: string;
808
+ provider: string;
809
+ url?: string | undefined;
810
+ } | undefined;
811
+ }, {
812
+ name: string;
813
+ roles: string[];
814
+ source?: {
815
+ id: string;
816
+ provider: string;
817
+ url?: string | undefined;
818
+ } | undefined;
819
+ }>, "many">;
820
+ durationMs: z.ZodOptional<z.ZodNumber>;
821
+ source: z.ZodObject<{
822
+ provider: z.ZodString;
823
+ id: z.ZodString;
824
+ url: z.ZodOptional<z.ZodString>;
825
+ }, "strip", z.ZodTypeAny, {
826
+ id: string;
827
+ provider: string;
828
+ url?: string | undefined;
829
+ }, {
830
+ id: string;
831
+ provider: string;
832
+ url?: string | undefined;
833
+ }>;
834
+ }, z.ZodTypeAny, "passthrough">>;
835
+ note: z.ZodOptional<z.ZodString>;
836
+ addedAtIso: z.ZodString;
837
+ }, "strip", z.ZodTypeAny, {
838
+ id: string;
839
+ track: {
840
+ artists: {
841
+ name: string;
842
+ roles: string[];
843
+ source?: {
844
+ id: string;
845
+ provider: string;
846
+ url?: string | undefined;
847
+ } | undefined;
848
+ }[];
849
+ source: {
850
+ id: string;
851
+ provider: string;
852
+ url?: string | undefined;
853
+ };
854
+ title: string;
855
+ durationMs?: number | undefined;
856
+ } & {
857
+ [k: string]: unknown;
858
+ };
859
+ addedAtIso: string;
860
+ note?: string | undefined;
861
+ }, {
862
+ id: string;
863
+ track: {
864
+ artists: {
865
+ name: string;
866
+ roles: string[];
867
+ source?: {
868
+ id: string;
869
+ provider: string;
870
+ url?: string | undefined;
871
+ } | undefined;
872
+ }[];
873
+ source: {
874
+ id: string;
875
+ provider: string;
876
+ url?: string | undefined;
877
+ };
878
+ title: string;
879
+ durationMs?: number | undefined;
880
+ } & {
881
+ [k: string]: unknown;
882
+ };
883
+ addedAtIso: string;
884
+ note?: string | undefined;
885
+ }>, "many">;
886
+ }, "strip", z.ZodTypeAny, {
887
+ items: {
888
+ id: string;
889
+ track: {
890
+ artists: {
891
+ name: string;
892
+ roles: string[];
893
+ source?: {
894
+ id: string;
895
+ provider: string;
896
+ url?: string | undefined;
897
+ } | undefined;
898
+ }[];
899
+ source: {
900
+ id: string;
901
+ provider: string;
902
+ url?: string | undefined;
903
+ };
904
+ title: string;
905
+ durationMs?: number | undefined;
906
+ } & {
907
+ [k: string]: unknown;
908
+ };
909
+ addedAtIso: string;
910
+ note?: string | undefined;
911
+ }[];
912
+ id: string;
913
+ name: string;
914
+ createdAtIso: string;
915
+ lastModifiedIso: string;
916
+ isReadOnly: boolean;
917
+ artwork?: {
918
+ items: {
919
+ url: string;
920
+ width?: number | undefined;
921
+ height?: number | undefined;
922
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
923
+ source?: {
924
+ id: string;
925
+ provider: string;
926
+ url?: string | undefined;
927
+ } | undefined;
928
+ }[];
929
+ } | undefined;
930
+ description?: string | undefined;
931
+ tags?: string[] | undefined;
932
+ origin?: {
933
+ id: string;
934
+ provider: string;
935
+ url?: string | undefined;
936
+ } | undefined;
937
+ parentId?: string | undefined;
938
+ }, {
939
+ items: {
940
+ id: string;
941
+ track: {
942
+ artists: {
943
+ name: string;
944
+ roles: string[];
945
+ source?: {
946
+ id: string;
947
+ provider: string;
948
+ url?: string | undefined;
949
+ } | undefined;
950
+ }[];
951
+ source: {
952
+ id: string;
953
+ provider: string;
954
+ url?: string | undefined;
955
+ };
956
+ title: string;
957
+ durationMs?: number | undefined;
958
+ } & {
959
+ [k: string]: unknown;
960
+ };
961
+ addedAtIso: string;
962
+ note?: string | undefined;
963
+ }[];
964
+ id: string;
965
+ name: string;
966
+ createdAtIso: string;
967
+ lastModifiedIso: string;
968
+ isReadOnly: boolean;
969
+ artwork?: {
970
+ items: {
971
+ url: string;
972
+ width?: number | undefined;
973
+ height?: number | undefined;
974
+ purpose?: "avatar" | "cover" | "background" | "thumbnail" | undefined;
975
+ source?: {
976
+ id: string;
977
+ provider: string;
978
+ url?: string | undefined;
979
+ } | undefined;
980
+ }[];
981
+ } | undefined;
982
+ description?: string | undefined;
983
+ tags?: string[] | undefined;
984
+ origin?: {
985
+ id: string;
986
+ provider: string;
987
+ url?: string | undefined;
988
+ } | undefined;
989
+ parentId?: string | undefined;
990
+ }>;
991
+
318
992
  export declare type PluginIcon = {
319
993
  type: 'link';
320
994
  link: string;