@groovenet/contracts 0.1.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1077 @@
1
+ import { z } from "zod";
2
+ export declare const spinSelectionModeSchema: z.ZodEnum<{
3
+ automatic: "automatic";
4
+ playlist: "playlist";
5
+ sides: "sides";
6
+ tracks: "tracks";
7
+ }>;
8
+ export declare const spinProvenanceSchema: z.ZodEnum<{
9
+ automatic: "automatic";
10
+ manual: "manual";
11
+ playlist: "playlist";
12
+ }>;
13
+ export declare const spinMediumSchema: z.ZodEnum<{
14
+ digital: "digital";
15
+ vinyl: "vinyl";
16
+ }>;
17
+ export declare const spinSelectionTypeSchema: z.ZodEnum<{
18
+ side: "side";
19
+ track: "track";
20
+ }>;
21
+ export declare const SPIN_SELECTION_MODES: ("automatic" | "playlist" | "sides" | "tracks")[];
22
+ export declare const SPIN_PROVENANCES: ("automatic" | "manual" | "playlist")[];
23
+ export declare const SPIN_MEDIA: ("digital" | "vinyl")[];
24
+ export declare const SPIN_SELECTION_TYPES: ("side" | "track")[];
25
+ export declare const spinTrackRefSchema: z.ZodObject<{
26
+ track_id: z.ZodString;
27
+ friend_id: z.ZodNumber;
28
+ }, z.core.$strip>;
29
+ export declare const spinSessionSchema: z.ZodObject<{
30
+ id: z.ZodNumber;
31
+ friend_id: z.ZodNumber;
32
+ release_id: z.ZodString;
33
+ medium: z.ZodEnum<{
34
+ digital: "digital";
35
+ vinyl: "vinyl";
36
+ }>;
37
+ selection_mode: z.ZodEnum<{
38
+ automatic: "automatic";
39
+ playlist: "playlist";
40
+ sides: "sides";
41
+ tracks: "tracks";
42
+ }>;
43
+ played_at: z.ZodString;
44
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
45
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
46
+ provenance: z.ZodOptional<z.ZodEnum<{
47
+ automatic: "automatic";
48
+ manual: "manual";
49
+ playlist: "playlist";
50
+ }>>;
51
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
52
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
53
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
54
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
55
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
56
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
57
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
58
+ created_at: z.ZodString;
59
+ updated_at: z.ZodString;
60
+ }, z.core.$strip>;
61
+ export declare const spinSelectionSchema: z.ZodObject<{
62
+ id: z.ZodOptional<z.ZodNumber>;
63
+ session_id: z.ZodOptional<z.ZodNumber>;
64
+ ordinal: z.ZodNumber;
65
+ selection_type: z.ZodEnum<{
66
+ side: "side";
67
+ track: "track";
68
+ }>;
69
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
70
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
71
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
72
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
73
+ created_at: z.ZodOptional<z.ZodString>;
74
+ }, z.core.$strip>;
75
+ export declare const trackSpinEventSchema: z.ZodObject<{
76
+ id: z.ZodOptional<z.ZodNumber>;
77
+ session_id: z.ZodOptional<z.ZodNumber>;
78
+ friend_id: z.ZodNumber;
79
+ release_id: z.ZodString;
80
+ track_id: z.ZodString;
81
+ played_at: z.ZodString;
82
+ ordinal: z.ZodNumber;
83
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
84
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
85
+ title_snapshot: z.ZodOptional<z.ZodString>;
86
+ artist_snapshot: z.ZodOptional<z.ZodString>;
87
+ album_snapshot: z.ZodOptional<z.ZodString>;
88
+ created_at: z.ZodOptional<z.ZodString>;
89
+ }, z.core.$strip>;
90
+ export declare const spinDerivedSchema: z.ZodObject<{
91
+ is_full_album_spin: z.ZodBoolean;
92
+ selected_side_count: z.ZodNumber;
93
+ album_side_count: z.ZodNumber;
94
+ track_count: z.ZodNumber;
95
+ }, z.core.$strip>;
96
+ export declare const spinAlbumSummarySchema: z.ZodObject<{
97
+ title: z.ZodNullable<z.ZodString>;
98
+ artist: z.ZodNullable<z.ZodString>;
99
+ thumbnail: z.ZodNullable<z.ZodString>;
100
+ }, z.core.$strip>;
101
+ /** A session with what was played; `album` is joined in on list and edit responses. */
102
+ export declare const spinSessionDetailSchema: z.ZodObject<{
103
+ session: z.ZodObject<{
104
+ id: z.ZodNumber;
105
+ friend_id: z.ZodNumber;
106
+ release_id: z.ZodString;
107
+ medium: z.ZodEnum<{
108
+ digital: "digital";
109
+ vinyl: "vinyl";
110
+ }>;
111
+ selection_mode: z.ZodEnum<{
112
+ automatic: "automatic";
113
+ playlist: "playlist";
114
+ sides: "sides";
115
+ tracks: "tracks";
116
+ }>;
117
+ played_at: z.ZodString;
118
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
119
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
120
+ provenance: z.ZodOptional<z.ZodEnum<{
121
+ automatic: "automatic";
122
+ manual: "manual";
123
+ playlist: "playlist";
124
+ }>>;
125
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
126
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
127
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
128
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
129
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
130
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
131
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
132
+ created_at: z.ZodString;
133
+ updated_at: z.ZodString;
134
+ }, z.core.$strip>;
135
+ selections: z.ZodArray<z.ZodObject<{
136
+ id: z.ZodOptional<z.ZodNumber>;
137
+ session_id: z.ZodOptional<z.ZodNumber>;
138
+ ordinal: z.ZodNumber;
139
+ selection_type: z.ZodEnum<{
140
+ side: "side";
141
+ track: "track";
142
+ }>;
143
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
144
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
145
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
146
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
147
+ created_at: z.ZodOptional<z.ZodString>;
148
+ }, z.core.$strip>>;
149
+ track_events: z.ZodArray<z.ZodObject<{
150
+ id: z.ZodOptional<z.ZodNumber>;
151
+ session_id: z.ZodOptional<z.ZodNumber>;
152
+ friend_id: z.ZodNumber;
153
+ release_id: z.ZodString;
154
+ track_id: z.ZodString;
155
+ played_at: z.ZodString;
156
+ ordinal: z.ZodNumber;
157
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
158
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
159
+ title_snapshot: z.ZodOptional<z.ZodString>;
160
+ artist_snapshot: z.ZodOptional<z.ZodString>;
161
+ album_snapshot: z.ZodOptional<z.ZodString>;
162
+ created_at: z.ZodOptional<z.ZodString>;
163
+ }, z.core.$strip>>;
164
+ derived: z.ZodObject<{
165
+ is_full_album_spin: z.ZodBoolean;
166
+ selected_side_count: z.ZodNumber;
167
+ album_side_count: z.ZodNumber;
168
+ track_count: z.ZodNumber;
169
+ }, z.core.$strip>;
170
+ album: z.ZodOptional<z.ZodNullable<z.ZodObject<{
171
+ title: z.ZodNullable<z.ZodString>;
172
+ artist: z.ZodNullable<z.ZodString>;
173
+ thumbnail: z.ZodNullable<z.ZodString>;
174
+ }, z.core.$strip>>>;
175
+ }, z.core.$strip>;
176
+ export declare const spinCreateResponseSchema: z.ZodObject<{
177
+ session: z.ZodObject<{
178
+ id: z.ZodNumber;
179
+ friend_id: z.ZodNumber;
180
+ release_id: z.ZodString;
181
+ medium: z.ZodEnum<{
182
+ digital: "digital";
183
+ vinyl: "vinyl";
184
+ }>;
185
+ selection_mode: z.ZodEnum<{
186
+ automatic: "automatic";
187
+ playlist: "playlist";
188
+ sides: "sides";
189
+ tracks: "tracks";
190
+ }>;
191
+ played_at: z.ZodString;
192
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
193
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
194
+ provenance: z.ZodOptional<z.ZodEnum<{
195
+ automatic: "automatic";
196
+ manual: "manual";
197
+ playlist: "playlist";
198
+ }>>;
199
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
200
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
201
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
202
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
203
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
204
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
205
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
206
+ created_at: z.ZodString;
207
+ updated_at: z.ZodString;
208
+ }, z.core.$strip>;
209
+ selections: z.ZodArray<z.ZodObject<{
210
+ id: z.ZodOptional<z.ZodNumber>;
211
+ session_id: z.ZodOptional<z.ZodNumber>;
212
+ ordinal: z.ZodNumber;
213
+ selection_type: z.ZodEnum<{
214
+ side: "side";
215
+ track: "track";
216
+ }>;
217
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
218
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
219
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
220
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
221
+ created_at: z.ZodOptional<z.ZodString>;
222
+ }, z.core.$strip>>;
223
+ expanded_tracks: z.ZodArray<z.ZodObject<{
224
+ id: z.ZodOptional<z.ZodNumber>;
225
+ session_id: z.ZodOptional<z.ZodNumber>;
226
+ friend_id: z.ZodNumber;
227
+ release_id: z.ZodString;
228
+ track_id: z.ZodString;
229
+ played_at: z.ZodString;
230
+ ordinal: z.ZodNumber;
231
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
232
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
233
+ title_snapshot: z.ZodOptional<z.ZodString>;
234
+ artist_snapshot: z.ZodOptional<z.ZodString>;
235
+ album_snapshot: z.ZodOptional<z.ZodString>;
236
+ created_at: z.ZodOptional<z.ZodString>;
237
+ }, z.core.$strip>>;
238
+ derived: z.ZodObject<{
239
+ is_full_album_spin: z.ZodBoolean;
240
+ selected_side_count: z.ZodNumber;
241
+ album_side_count: z.ZodNumber;
242
+ track_count: z.ZodNumber;
243
+ }, z.core.$strip>;
244
+ }, z.core.$strip>;
245
+ export declare const spinUpdateResponseSchema: z.ZodObject<{
246
+ session: z.ZodObject<{
247
+ id: z.ZodNumber;
248
+ friend_id: z.ZodNumber;
249
+ release_id: z.ZodString;
250
+ medium: z.ZodEnum<{
251
+ digital: "digital";
252
+ vinyl: "vinyl";
253
+ }>;
254
+ selection_mode: z.ZodEnum<{
255
+ automatic: "automatic";
256
+ playlist: "playlist";
257
+ sides: "sides";
258
+ tracks: "tracks";
259
+ }>;
260
+ played_at: z.ZodString;
261
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
262
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
263
+ provenance: z.ZodOptional<z.ZodEnum<{
264
+ automatic: "automatic";
265
+ manual: "manual";
266
+ playlist: "playlist";
267
+ }>>;
268
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
269
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
270
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
271
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
272
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
273
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
274
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
275
+ created_at: z.ZodString;
276
+ updated_at: z.ZodString;
277
+ }, z.core.$strip>;
278
+ selections: z.ZodArray<z.ZodObject<{
279
+ id: z.ZodOptional<z.ZodNumber>;
280
+ session_id: z.ZodOptional<z.ZodNumber>;
281
+ ordinal: z.ZodNumber;
282
+ selection_type: z.ZodEnum<{
283
+ side: "side";
284
+ track: "track";
285
+ }>;
286
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
287
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
288
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
289
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
290
+ created_at: z.ZodOptional<z.ZodString>;
291
+ }, z.core.$strip>>;
292
+ track_events: z.ZodArray<z.ZodObject<{
293
+ id: z.ZodOptional<z.ZodNumber>;
294
+ session_id: z.ZodOptional<z.ZodNumber>;
295
+ friend_id: z.ZodNumber;
296
+ release_id: z.ZodString;
297
+ track_id: z.ZodString;
298
+ played_at: z.ZodString;
299
+ ordinal: z.ZodNumber;
300
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
301
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
302
+ title_snapshot: z.ZodOptional<z.ZodString>;
303
+ artist_snapshot: z.ZodOptional<z.ZodString>;
304
+ album_snapshot: z.ZodOptional<z.ZodString>;
305
+ created_at: z.ZodOptional<z.ZodString>;
306
+ }, z.core.$strip>>;
307
+ derived: z.ZodObject<{
308
+ is_full_album_spin: z.ZodBoolean;
309
+ selected_side_count: z.ZodNumber;
310
+ album_side_count: z.ZodNumber;
311
+ track_count: z.ZodNumber;
312
+ }, z.core.$strip>;
313
+ album: z.ZodOptional<z.ZodNullable<z.ZodObject<{
314
+ title: z.ZodNullable<z.ZodString>;
315
+ artist: z.ZodNullable<z.ZodString>;
316
+ thumbnail: z.ZodNullable<z.ZodString>;
317
+ }, z.core.$strip>>>;
318
+ }, z.core.$strip>;
319
+ export declare const spinListResponseSchema: z.ZodObject<{
320
+ items: z.ZodArray<z.ZodObject<{
321
+ session: z.ZodObject<{
322
+ id: z.ZodNumber;
323
+ friend_id: z.ZodNumber;
324
+ release_id: z.ZodString;
325
+ medium: z.ZodEnum<{
326
+ digital: "digital";
327
+ vinyl: "vinyl";
328
+ }>;
329
+ selection_mode: z.ZodEnum<{
330
+ automatic: "automatic";
331
+ playlist: "playlist";
332
+ sides: "sides";
333
+ tracks: "tracks";
334
+ }>;
335
+ played_at: z.ZodString;
336
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
337
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
338
+ provenance: z.ZodOptional<z.ZodEnum<{
339
+ automatic: "automatic";
340
+ manual: "manual";
341
+ playlist: "playlist";
342
+ }>>;
343
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
344
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
345
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
346
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
347
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
348
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
349
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
350
+ created_at: z.ZodString;
351
+ updated_at: z.ZodString;
352
+ }, z.core.$strip>;
353
+ selections: z.ZodArray<z.ZodObject<{
354
+ id: z.ZodOptional<z.ZodNumber>;
355
+ session_id: z.ZodOptional<z.ZodNumber>;
356
+ ordinal: z.ZodNumber;
357
+ selection_type: z.ZodEnum<{
358
+ side: "side";
359
+ track: "track";
360
+ }>;
361
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
362
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
363
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
364
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
365
+ created_at: z.ZodOptional<z.ZodString>;
366
+ }, z.core.$strip>>;
367
+ track_events: z.ZodArray<z.ZodObject<{
368
+ id: z.ZodOptional<z.ZodNumber>;
369
+ session_id: z.ZodOptional<z.ZodNumber>;
370
+ friend_id: z.ZodNumber;
371
+ release_id: z.ZodString;
372
+ track_id: z.ZodString;
373
+ played_at: z.ZodString;
374
+ ordinal: z.ZodNumber;
375
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
376
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
377
+ title_snapshot: z.ZodOptional<z.ZodString>;
378
+ artist_snapshot: z.ZodOptional<z.ZodString>;
379
+ album_snapshot: z.ZodOptional<z.ZodString>;
380
+ created_at: z.ZodOptional<z.ZodString>;
381
+ }, z.core.$strip>>;
382
+ derived: z.ZodObject<{
383
+ is_full_album_spin: z.ZodBoolean;
384
+ selected_side_count: z.ZodNumber;
385
+ album_side_count: z.ZodNumber;
386
+ track_count: z.ZodNumber;
387
+ }, z.core.$strip>;
388
+ album: z.ZodOptional<z.ZodNullable<z.ZodObject<{
389
+ title: z.ZodNullable<z.ZodString>;
390
+ artist: z.ZodNullable<z.ZodString>;
391
+ thumbnail: z.ZodNullable<z.ZodString>;
392
+ }, z.core.$strip>>>;
393
+ }, z.core.$strip>>;
394
+ limit: z.ZodNumber;
395
+ offset: z.ZodNumber;
396
+ }, z.core.$strip>;
397
+ export declare const spinDeleteResponseSchema: z.ZodObject<{
398
+ success: z.ZodBoolean;
399
+ session: z.ZodObject<{
400
+ id: z.ZodNumber;
401
+ friend_id: z.ZodNumber;
402
+ release_id: z.ZodString;
403
+ medium: z.ZodEnum<{
404
+ digital: "digital";
405
+ vinyl: "vinyl";
406
+ }>;
407
+ selection_mode: z.ZodEnum<{
408
+ automatic: "automatic";
409
+ playlist: "playlist";
410
+ sides: "sides";
411
+ tracks: "tracks";
412
+ }>;
413
+ played_at: z.ZodString;
414
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
415
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
416
+ provenance: z.ZodOptional<z.ZodEnum<{
417
+ automatic: "automatic";
418
+ manual: "manual";
419
+ playlist: "playlist";
420
+ }>>;
421
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
422
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
423
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
424
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
425
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
426
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
427
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
428
+ created_at: z.ZodString;
429
+ updated_at: z.ZodString;
430
+ }, z.core.$strip>;
431
+ }, z.core.$strip>;
432
+ export declare const spinTopTrackSchema: z.ZodObject<{
433
+ friend_id: z.ZodNumber;
434
+ release_id: z.ZodString;
435
+ track_id: z.ZodString;
436
+ play_count: z.ZodNumber;
437
+ last_played_at: z.ZodString;
438
+ title_snapshot: z.ZodString;
439
+ artist_snapshot: z.ZodString;
440
+ album_snapshot: z.ZodString;
441
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
442
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
443
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
444
+ audio_file_album_art_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
445
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
446
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
447
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
448
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
449
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
450
+ library_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
451
+ hasVectors: z.ZodOptional<z.ZodBoolean>;
452
+ track_genres: z.ZodOptional<z.ZodArray<z.ZodObject<{
453
+ id: z.ZodString;
454
+ name: z.ZodString;
455
+ slug: z.ZodString;
456
+ parent_id: z.ZodNullable<z.ZodString>;
457
+ parent_name: z.ZodNullable<z.ZodString>;
458
+ }, z.core.$strip>>>;
459
+ }, z.core.$strip>;
460
+ export declare const spinTopTracksResponseSchema: z.ZodObject<{
461
+ items: z.ZodArray<z.ZodObject<{
462
+ friend_id: z.ZodNumber;
463
+ release_id: z.ZodString;
464
+ track_id: z.ZodString;
465
+ play_count: z.ZodNumber;
466
+ last_played_at: z.ZodString;
467
+ title_snapshot: z.ZodString;
468
+ artist_snapshot: z.ZodString;
469
+ album_snapshot: z.ZodString;
470
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
471
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
472
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
473
+ audio_file_album_art_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
474
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
475
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
476
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
477
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
478
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
479
+ library_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
480
+ hasVectors: z.ZodOptional<z.ZodBoolean>;
481
+ track_genres: z.ZodOptional<z.ZodArray<z.ZodObject<{
482
+ id: z.ZodString;
483
+ name: z.ZodString;
484
+ slug: z.ZodString;
485
+ parent_id: z.ZodNullable<z.ZodString>;
486
+ parent_name: z.ZodNullable<z.ZodString>;
487
+ }, z.core.$strip>>>;
488
+ }, z.core.$strip>>;
489
+ limit: z.ZodNumber;
490
+ offset: z.ZodNumber;
491
+ }, z.core.$strip>;
492
+ export declare const spinCreateObjectSchema: z.ZodObject<{
493
+ friend_id: z.ZodNumber;
494
+ release_id: z.ZodString;
495
+ played_at: z.ZodString;
496
+ medium: z.ZodOptional<z.ZodEnum<{
497
+ digital: "digital";
498
+ vinyl: "vinyl";
499
+ }>>;
500
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
501
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
502
+ side_keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
503
+ track_refs: z.ZodOptional<z.ZodArray<z.ZodObject<{
504
+ track_id: z.ZodString;
505
+ friend_id: z.ZodNumber;
506
+ }, z.core.$strip>>>;
507
+ }, z.core.$strip>;
508
+ type SpinCreateFields = z.infer<typeof spinCreateObjectSchema>;
509
+ /** Exactly one non-empty selection; a single JSON Schema cannot say so. */
510
+ export declare function refineSpinCreate(value: SpinCreateFields, ctx: z.RefinementCtx): void;
511
+ export declare const spinCreateSchema: z.ZodObject<{
512
+ friend_id: z.ZodNumber;
513
+ release_id: z.ZodString;
514
+ played_at: z.ZodString;
515
+ medium: z.ZodOptional<z.ZodEnum<{
516
+ digital: "digital";
517
+ vinyl: "vinyl";
518
+ }>>;
519
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
520
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
521
+ side_keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
522
+ track_refs: z.ZodOptional<z.ZodArray<z.ZodObject<{
523
+ track_id: z.ZodString;
524
+ friend_id: z.ZodNumber;
525
+ }, z.core.$strip>>>;
526
+ }, z.core.$strip>;
527
+ export declare const spinUpdateObjectSchema: z.ZodObject<{
528
+ friend_id: z.ZodNumber;
529
+ played_at: z.ZodOptional<z.ZodString>;
530
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
531
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
532
+ side_keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
533
+ track_refs: z.ZodOptional<z.ZodArray<z.ZodObject<{
534
+ track_id: z.ZodString;
535
+ friend_id: z.ZodNumber;
536
+ }, z.core.$strip>>>;
537
+ }, z.core.$strip>;
538
+ type SpinUpdateFields = z.infer<typeof spinUpdateObjectSchema>;
539
+ /** At most one selection form, and something to change. */
540
+ export declare function refineSpinUpdate(value: SpinUpdateFields, ctx: z.RefinementCtx): void;
541
+ export declare const spinUpdateSchema: z.ZodObject<{
542
+ friend_id: z.ZodNumber;
543
+ played_at: z.ZodOptional<z.ZodString>;
544
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
545
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
546
+ side_keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
547
+ track_refs: z.ZodOptional<z.ZodArray<z.ZodObject<{
548
+ track_id: z.ZodString;
549
+ friend_id: z.ZodNumber;
550
+ }, z.core.$strip>>>;
551
+ }, z.core.$strip>;
552
+ export declare const spinAggregateRequestSchema: z.ZodObject<{
553
+ since: z.ZodString;
554
+ source_id: z.ZodOptional<z.ZodString>;
555
+ }, z.core.$strip>;
556
+ export declare const spinAggregateSourceResultSchema: z.ZodObject<{
557
+ source_id: z.ZodString;
558
+ created: z.ZodNumber;
559
+ skipped: z.ZodNumber;
560
+ }, z.core.$strip>;
561
+ export declare const spinAggregateResultSchema: z.ZodObject<{
562
+ since: z.ZodString;
563
+ created: z.ZodNumber;
564
+ skipped: z.ZodNumber;
565
+ sources: z.ZodArray<z.ZodObject<{
566
+ source_id: z.ZodString;
567
+ created: z.ZodNumber;
568
+ skipped: z.ZodNumber;
569
+ }, z.core.$strip>>;
570
+ }, z.core.$strip>;
571
+ export declare const spinListQuerySchema: z.ZodObject<{
572
+ friend_id: z.ZodNumber;
573
+ release_id: z.ZodOptional<z.ZodString>;
574
+ track_id: z.ZodOptional<z.ZodString>;
575
+ from: z.ZodOptional<z.ZodString>;
576
+ to: z.ZodOptional<z.ZodString>;
577
+ limit: z.ZodOptional<z.ZodNumber>;
578
+ offset: z.ZodOptional<z.ZodNumber>;
579
+ }, z.core.$strip>;
580
+ export declare const spinTopTracksQuerySchema: z.ZodObject<{
581
+ friend_id: z.ZodNumber;
582
+ release_id: z.ZodOptional<z.ZodString>;
583
+ limit: z.ZodOptional<z.ZodNumber>;
584
+ offset: z.ZodOptional<z.ZodNumber>;
585
+ }, z.core.$strip>;
586
+ export type SpinSelectionMode = z.infer<typeof spinSelectionModeSchema>;
587
+ export type SpinMedium = z.infer<typeof spinMediumSchema>;
588
+ export type SpinProvenance = z.infer<typeof spinProvenanceSchema>;
589
+ export type SpinSelectionType = z.infer<typeof spinSelectionTypeSchema>;
590
+ export type SpinTrackRef = z.infer<typeof spinTrackRefSchema>;
591
+ export type SpinSession = z.infer<typeof spinSessionSchema>;
592
+ export type SpinSelection = z.infer<typeof spinSelectionSchema>;
593
+ export type TrackSpinEvent = z.infer<typeof trackSpinEventSchema>;
594
+ export type SpinDerived = z.infer<typeof spinDerivedSchema>;
595
+ export type SpinAlbumSummary = z.infer<typeof spinAlbumSummarySchema>;
596
+ export type SpinSessionDetail = z.infer<typeof spinSessionDetailSchema>;
597
+ export type SpinCreateResponse = z.infer<typeof spinCreateResponseSchema>;
598
+ export type SpinUpdateResponse = z.infer<typeof spinUpdateResponseSchema>;
599
+ export type SpinListResponse = z.infer<typeof spinListResponseSchema>;
600
+ export type SpinDeleteResponse = z.infer<typeof spinDeleteResponseSchema>;
601
+ export type SpinTopTrack = z.infer<typeof spinTopTrackSchema>;
602
+ export type SpinTopTracksResponse = z.infer<typeof spinTopTracksResponseSchema>;
603
+ export type SpinUpdateInput = z.infer<typeof spinUpdateSchema>;
604
+ export type SpinAggregateRequest = z.infer<typeof spinAggregateRequestSchema>;
605
+ export type SpinAggregateSourceResult = z.infer<typeof spinAggregateSourceResultSchema>;
606
+ export type SpinAggregateResult = z.infer<typeof spinAggregateResultSchema>;
607
+ export type SpinListQuery = z.infer<typeof spinListQuerySchema>;
608
+ export type SpinTopTracksQuery = z.infer<typeof spinTopTracksQuerySchema>;
609
+ type SpinCreateBase = Omit<SpinCreateFields, "side_keys" | "track_refs">;
610
+ /**
611
+ * Played sides, or played tracks. The schema's refinement enforces "exactly
612
+ * one"; this type states it for callers.
613
+ */
614
+ export type SpinCreateInput = (SpinCreateBase & {
615
+ side_keys: string[];
616
+ track_refs?: never;
617
+ }) | (SpinCreateBase & {
618
+ side_keys?: never;
619
+ track_refs: SpinTrackRef[];
620
+ });
621
+ export declare const spinJsonSchemas: {
622
+ SpinSelectionMode: z.core.ZodStandardJSONSchemaPayload<z.ZodEnum<{
623
+ automatic: "automatic";
624
+ playlist: "playlist";
625
+ sides: "sides";
626
+ tracks: "tracks";
627
+ }>>;
628
+ SpinProvenance: z.core.ZodStandardJSONSchemaPayload<z.ZodEnum<{
629
+ automatic: "automatic";
630
+ manual: "manual";
631
+ playlist: "playlist";
632
+ }>>;
633
+ SpinSelectionType: z.core.ZodStandardJSONSchemaPayload<z.ZodEnum<{
634
+ side: "side";
635
+ track: "track";
636
+ }>>;
637
+ SpinTrackRef: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
638
+ track_id: z.ZodString;
639
+ friend_id: z.ZodNumber;
640
+ }, z.core.$strip>>;
641
+ SpinSession: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
642
+ id: z.ZodNumber;
643
+ friend_id: z.ZodNumber;
644
+ release_id: z.ZodString;
645
+ medium: z.ZodEnum<{
646
+ digital: "digital";
647
+ vinyl: "vinyl";
648
+ }>;
649
+ selection_mode: z.ZodEnum<{
650
+ automatic: "automatic";
651
+ playlist: "playlist";
652
+ sides: "sides";
653
+ tracks: "tracks";
654
+ }>;
655
+ played_at: z.ZodString;
656
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
657
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
658
+ provenance: z.ZodOptional<z.ZodEnum<{
659
+ automatic: "automatic";
660
+ manual: "manual";
661
+ playlist: "playlist";
662
+ }>>;
663
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
664
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
665
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
666
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
667
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
668
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
669
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
670
+ created_at: z.ZodString;
671
+ updated_at: z.ZodString;
672
+ }, z.core.$strip>>;
673
+ SpinSelection: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
674
+ id: z.ZodOptional<z.ZodNumber>;
675
+ session_id: z.ZodOptional<z.ZodNumber>;
676
+ ordinal: z.ZodNumber;
677
+ selection_type: z.ZodEnum<{
678
+ side: "side";
679
+ track: "track";
680
+ }>;
681
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
682
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
683
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
684
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
685
+ created_at: z.ZodOptional<z.ZodString>;
686
+ }, z.core.$strip>>;
687
+ TrackSpinEvent: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
688
+ id: z.ZodOptional<z.ZodNumber>;
689
+ session_id: z.ZodOptional<z.ZodNumber>;
690
+ friend_id: z.ZodNumber;
691
+ release_id: z.ZodString;
692
+ track_id: z.ZodString;
693
+ played_at: z.ZodString;
694
+ ordinal: z.ZodNumber;
695
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
696
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
697
+ title_snapshot: z.ZodOptional<z.ZodString>;
698
+ artist_snapshot: z.ZodOptional<z.ZodString>;
699
+ album_snapshot: z.ZodOptional<z.ZodString>;
700
+ created_at: z.ZodOptional<z.ZodString>;
701
+ }, z.core.$strip>>;
702
+ SpinDerived: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
703
+ is_full_album_spin: z.ZodBoolean;
704
+ selected_side_count: z.ZodNumber;
705
+ album_side_count: z.ZodNumber;
706
+ track_count: z.ZodNumber;
707
+ }, z.core.$strip>>;
708
+ SpinAlbumSummary: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
709
+ title: z.ZodNullable<z.ZodString>;
710
+ artist: z.ZodNullable<z.ZodString>;
711
+ thumbnail: z.ZodNullable<z.ZodString>;
712
+ }, z.core.$strip>>;
713
+ SpinSessionDetail: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
714
+ session: z.ZodObject<{
715
+ id: z.ZodNumber;
716
+ friend_id: z.ZodNumber;
717
+ release_id: z.ZodString;
718
+ medium: z.ZodEnum<{
719
+ digital: "digital";
720
+ vinyl: "vinyl";
721
+ }>;
722
+ selection_mode: z.ZodEnum<{
723
+ automatic: "automatic";
724
+ playlist: "playlist";
725
+ sides: "sides";
726
+ tracks: "tracks";
727
+ }>;
728
+ played_at: z.ZodString;
729
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
730
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
731
+ provenance: z.ZodOptional<z.ZodEnum<{
732
+ automatic: "automatic";
733
+ manual: "manual";
734
+ playlist: "playlist";
735
+ }>>;
736
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
737
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
738
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
739
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
740
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
741
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
742
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
743
+ created_at: z.ZodString;
744
+ updated_at: z.ZodString;
745
+ }, z.core.$strip>;
746
+ selections: z.ZodArray<z.ZodObject<{
747
+ id: z.ZodOptional<z.ZodNumber>;
748
+ session_id: z.ZodOptional<z.ZodNumber>;
749
+ ordinal: z.ZodNumber;
750
+ selection_type: z.ZodEnum<{
751
+ side: "side";
752
+ track: "track";
753
+ }>;
754
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
755
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
756
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
757
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
758
+ created_at: z.ZodOptional<z.ZodString>;
759
+ }, z.core.$strip>>;
760
+ track_events: z.ZodArray<z.ZodObject<{
761
+ id: z.ZodOptional<z.ZodNumber>;
762
+ session_id: z.ZodOptional<z.ZodNumber>;
763
+ friend_id: z.ZodNumber;
764
+ release_id: z.ZodString;
765
+ track_id: z.ZodString;
766
+ played_at: z.ZodString;
767
+ ordinal: z.ZodNumber;
768
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
769
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
770
+ title_snapshot: z.ZodOptional<z.ZodString>;
771
+ artist_snapshot: z.ZodOptional<z.ZodString>;
772
+ album_snapshot: z.ZodOptional<z.ZodString>;
773
+ created_at: z.ZodOptional<z.ZodString>;
774
+ }, z.core.$strip>>;
775
+ derived: z.ZodObject<{
776
+ is_full_album_spin: z.ZodBoolean;
777
+ selected_side_count: z.ZodNumber;
778
+ album_side_count: z.ZodNumber;
779
+ track_count: z.ZodNumber;
780
+ }, z.core.$strip>;
781
+ album: z.ZodOptional<z.ZodNullable<z.ZodObject<{
782
+ title: z.ZodNullable<z.ZodString>;
783
+ artist: z.ZodNullable<z.ZodString>;
784
+ thumbnail: z.ZodNullable<z.ZodString>;
785
+ }, z.core.$strip>>>;
786
+ }, z.core.$strip>>;
787
+ SpinCreateResponse: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
788
+ session: z.ZodObject<{
789
+ id: z.ZodNumber;
790
+ friend_id: z.ZodNumber;
791
+ release_id: z.ZodString;
792
+ medium: z.ZodEnum<{
793
+ digital: "digital";
794
+ vinyl: "vinyl";
795
+ }>;
796
+ selection_mode: z.ZodEnum<{
797
+ automatic: "automatic";
798
+ playlist: "playlist";
799
+ sides: "sides";
800
+ tracks: "tracks";
801
+ }>;
802
+ played_at: z.ZodString;
803
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
804
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
805
+ provenance: z.ZodOptional<z.ZodEnum<{
806
+ automatic: "automatic";
807
+ manual: "manual";
808
+ playlist: "playlist";
809
+ }>>;
810
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
811
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
812
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
813
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
814
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
815
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
816
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
817
+ created_at: z.ZodString;
818
+ updated_at: z.ZodString;
819
+ }, z.core.$strip>;
820
+ selections: z.ZodArray<z.ZodObject<{
821
+ id: z.ZodOptional<z.ZodNumber>;
822
+ session_id: z.ZodOptional<z.ZodNumber>;
823
+ ordinal: z.ZodNumber;
824
+ selection_type: z.ZodEnum<{
825
+ side: "side";
826
+ track: "track";
827
+ }>;
828
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
829
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
830
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
831
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
832
+ created_at: z.ZodOptional<z.ZodString>;
833
+ }, z.core.$strip>>;
834
+ expanded_tracks: z.ZodArray<z.ZodObject<{
835
+ id: z.ZodOptional<z.ZodNumber>;
836
+ session_id: z.ZodOptional<z.ZodNumber>;
837
+ friend_id: z.ZodNumber;
838
+ release_id: z.ZodString;
839
+ track_id: z.ZodString;
840
+ played_at: z.ZodString;
841
+ ordinal: z.ZodNumber;
842
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
843
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
844
+ title_snapshot: z.ZodOptional<z.ZodString>;
845
+ artist_snapshot: z.ZodOptional<z.ZodString>;
846
+ album_snapshot: z.ZodOptional<z.ZodString>;
847
+ created_at: z.ZodOptional<z.ZodString>;
848
+ }, z.core.$strip>>;
849
+ derived: z.ZodObject<{
850
+ is_full_album_spin: z.ZodBoolean;
851
+ selected_side_count: z.ZodNumber;
852
+ album_side_count: z.ZodNumber;
853
+ track_count: z.ZodNumber;
854
+ }, z.core.$strip>;
855
+ }, z.core.$strip>>;
856
+ SpinListResponse: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
857
+ items: z.ZodArray<z.ZodObject<{
858
+ session: z.ZodObject<{
859
+ id: z.ZodNumber;
860
+ friend_id: z.ZodNumber;
861
+ release_id: z.ZodString;
862
+ medium: z.ZodEnum<{
863
+ digital: "digital";
864
+ vinyl: "vinyl";
865
+ }>;
866
+ selection_mode: z.ZodEnum<{
867
+ automatic: "automatic";
868
+ playlist: "playlist";
869
+ sides: "sides";
870
+ tracks: "tracks";
871
+ }>;
872
+ played_at: z.ZodString;
873
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
874
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
875
+ provenance: z.ZodOptional<z.ZodEnum<{
876
+ automatic: "automatic";
877
+ manual: "manual";
878
+ playlist: "playlist";
879
+ }>>;
880
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
881
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
882
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
883
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
884
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
885
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
886
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
887
+ created_at: z.ZodString;
888
+ updated_at: z.ZodString;
889
+ }, z.core.$strip>;
890
+ selections: z.ZodArray<z.ZodObject<{
891
+ id: z.ZodOptional<z.ZodNumber>;
892
+ session_id: z.ZodOptional<z.ZodNumber>;
893
+ ordinal: z.ZodNumber;
894
+ selection_type: z.ZodEnum<{
895
+ side: "side";
896
+ track: "track";
897
+ }>;
898
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
899
+ track_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
900
+ friend_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
901
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
902
+ created_at: z.ZodOptional<z.ZodString>;
903
+ }, z.core.$strip>>;
904
+ track_events: z.ZodArray<z.ZodObject<{
905
+ id: z.ZodOptional<z.ZodNumber>;
906
+ session_id: z.ZodOptional<z.ZodNumber>;
907
+ friend_id: z.ZodNumber;
908
+ release_id: z.ZodString;
909
+ track_id: z.ZodString;
910
+ played_at: z.ZodString;
911
+ ordinal: z.ZodNumber;
912
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
913
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
914
+ title_snapshot: z.ZodOptional<z.ZodString>;
915
+ artist_snapshot: z.ZodOptional<z.ZodString>;
916
+ album_snapshot: z.ZodOptional<z.ZodString>;
917
+ created_at: z.ZodOptional<z.ZodString>;
918
+ }, z.core.$strip>>;
919
+ derived: z.ZodObject<{
920
+ is_full_album_spin: z.ZodBoolean;
921
+ selected_side_count: z.ZodNumber;
922
+ album_side_count: z.ZodNumber;
923
+ track_count: z.ZodNumber;
924
+ }, z.core.$strip>;
925
+ album: z.ZodOptional<z.ZodNullable<z.ZodObject<{
926
+ title: z.ZodNullable<z.ZodString>;
927
+ artist: z.ZodNullable<z.ZodString>;
928
+ thumbnail: z.ZodNullable<z.ZodString>;
929
+ }, z.core.$strip>>>;
930
+ }, z.core.$strip>>;
931
+ limit: z.ZodNumber;
932
+ offset: z.ZodNumber;
933
+ }, z.core.$strip>>;
934
+ SpinDeleteResponse: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
935
+ success: z.ZodBoolean;
936
+ session: z.ZodObject<{
937
+ id: z.ZodNumber;
938
+ friend_id: z.ZodNumber;
939
+ release_id: z.ZodString;
940
+ medium: z.ZodEnum<{
941
+ digital: "digital";
942
+ vinyl: "vinyl";
943
+ }>;
944
+ selection_mode: z.ZodEnum<{
945
+ automatic: "automatic";
946
+ playlist: "playlist";
947
+ sides: "sides";
948
+ tracks: "tracks";
949
+ }>;
950
+ played_at: z.ZodString;
951
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
952
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
953
+ provenance: z.ZodOptional<z.ZodEnum<{
954
+ automatic: "automatic";
955
+ manual: "manual";
956
+ playlist: "playlist";
957
+ }>>;
958
+ source_id: z.ZodOptional<z.ZodNullable<z.ZodString>>;
959
+ confidence: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
960
+ playlist_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
961
+ live_set_performance_id: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
962
+ playlist_played_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
963
+ playlist_position: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
964
+ corrected_at: z.ZodOptional<z.ZodNullable<z.ZodString>>;
965
+ created_at: z.ZodString;
966
+ updated_at: z.ZodString;
967
+ }, z.core.$strip>;
968
+ }, z.core.$strip>>;
969
+ SpinTopTrack: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
970
+ friend_id: z.ZodNumber;
971
+ release_id: z.ZodString;
972
+ track_id: z.ZodString;
973
+ play_count: z.ZodNumber;
974
+ last_played_at: z.ZodString;
975
+ title_snapshot: z.ZodString;
976
+ artist_snapshot: z.ZodString;
977
+ album_snapshot: z.ZodString;
978
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
979
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
980
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
981
+ audio_file_album_art_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
982
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
983
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
984
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
985
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
986
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
987
+ library_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
988
+ hasVectors: z.ZodOptional<z.ZodBoolean>;
989
+ track_genres: z.ZodOptional<z.ZodArray<z.ZodObject<{
990
+ id: z.ZodString;
991
+ name: z.ZodString;
992
+ slug: z.ZodString;
993
+ parent_id: z.ZodNullable<z.ZodString>;
994
+ parent_name: z.ZodNullable<z.ZodString>;
995
+ }, z.core.$strip>>>;
996
+ }, z.core.$strip>>;
997
+ SpinTopTracksResponse: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
998
+ items: z.ZodArray<z.ZodObject<{
999
+ friend_id: z.ZodNumber;
1000
+ release_id: z.ZodString;
1001
+ track_id: z.ZodString;
1002
+ play_count: z.ZodNumber;
1003
+ last_played_at: z.ZodString;
1004
+ title_snapshot: z.ZodString;
1005
+ artist_snapshot: z.ZodString;
1006
+ album_snapshot: z.ZodString;
1007
+ side_key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1008
+ position_snapshot: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1009
+ album_thumbnail: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1010
+ audio_file_album_art_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1011
+ local_audio_url: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1012
+ bpm: z.ZodOptional<z.ZodNullable<z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>>>;
1013
+ key: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1014
+ star_rating: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
1015
+ styles: z.ZodOptional<z.ZodArray<z.ZodString>>;
1016
+ library_identifier: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1017
+ hasVectors: z.ZodOptional<z.ZodBoolean>;
1018
+ track_genres: z.ZodOptional<z.ZodArray<z.ZodObject<{
1019
+ id: z.ZodString;
1020
+ name: z.ZodString;
1021
+ slug: z.ZodString;
1022
+ parent_id: z.ZodNullable<z.ZodString>;
1023
+ parent_name: z.ZodNullable<z.ZodString>;
1024
+ }, z.core.$strip>>>;
1025
+ }, z.core.$strip>>;
1026
+ limit: z.ZodNumber;
1027
+ offset: z.ZodNumber;
1028
+ }, z.core.$strip>>;
1029
+ SpinAggregateSourceResult: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
1030
+ source_id: z.ZodString;
1031
+ created: z.ZodNumber;
1032
+ skipped: z.ZodNumber;
1033
+ }, z.core.$strip>>;
1034
+ SpinAggregateResult: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
1035
+ since: z.ZodString;
1036
+ created: z.ZodNumber;
1037
+ skipped: z.ZodNumber;
1038
+ sources: z.ZodArray<z.ZodObject<{
1039
+ source_id: z.ZodString;
1040
+ created: z.ZodNumber;
1041
+ skipped: z.ZodNumber;
1042
+ }, z.core.$strip>>;
1043
+ }, z.core.$strip>>;
1044
+ SpinCreateInput: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
1045
+ friend_id: z.ZodNumber;
1046
+ release_id: z.ZodString;
1047
+ played_at: z.ZodString;
1048
+ medium: z.ZodOptional<z.ZodEnum<{
1049
+ digital: "digital";
1050
+ vinyl: "vinyl";
1051
+ }>>;
1052
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1053
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1054
+ side_keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
1055
+ track_refs: z.ZodOptional<z.ZodArray<z.ZodObject<{
1056
+ track_id: z.ZodString;
1057
+ friend_id: z.ZodNumber;
1058
+ }, z.core.$strip>>>;
1059
+ }, z.core.$strip>>;
1060
+ SpinUpdateInput: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
1061
+ friend_id: z.ZodNumber;
1062
+ played_at: z.ZodOptional<z.ZodString>;
1063
+ note: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1064
+ context_type: z.ZodOptional<z.ZodNullable<z.ZodString>>;
1065
+ side_keys: z.ZodOptional<z.ZodArray<z.ZodString>>;
1066
+ track_refs: z.ZodOptional<z.ZodArray<z.ZodObject<{
1067
+ track_id: z.ZodString;
1068
+ friend_id: z.ZodNumber;
1069
+ }, z.core.$strip>>>;
1070
+ }, z.core.$strip>>;
1071
+ SpinAggregateRequest: z.core.ZodStandardJSONSchemaPayload<z.ZodObject<{
1072
+ since: z.ZodString;
1073
+ source_id: z.ZodOptional<z.ZodString>;
1074
+ }, z.core.$strip>>;
1075
+ };
1076
+ export {};
1077
+ //# sourceMappingURL=spins.d.ts.map