e621stream 0.0.0-stage → 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1204 @@
1
+ import type { Changes, PostChanges } from "./changes.ts";
2
+ export type PoolCategory = 'collection' | 'series';
3
+ export type PostEventAction = 'deleted' | 'undeleted' | 'approved' | 'unapproved' | 'flag_created' | 'flag_removed' | 'favorites_moved' | 'favorites_received' | 'rating_locked' | 'rating_unlocked' | 'status_locked' | 'status_unlocked' | 'note_locked' | 'note_unlocked' | 'comment_locked' | 'comment_unlocked' | 'replacement_accepted' | 'replacement_rejected' | 'replacement_promoted' | 'replacement_deleted' | 'expunged' | 'changed_bg_color' | 'replacement_penalty_changed' | 'owner_changed' | 'replacement_moved';
4
+ export type PostReplacementStatus = 'promoted' | 'approved' | 'rejected' | 'pending' | 'original';
5
+ export type Rating = 's' | 'q' | 'e';
6
+ export type TagCategory = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;
7
+ export type TagRequestStatus = 'active' | 'deleted' | 'processing' | 'queued' | 'retired' | 'pending' | `error: ${string}`;
8
+ export type UpDownMehVote = 1 | 0 | -1;
9
+ export type UserFeedbackCategory = 'negative' | 'neutral' | 'positive';
10
+ export type UserLevel = 0 | 10 | 20 | 30 | 40 | 50 | 60 | 70 | 80;
11
+ export type UserLevelName = 'Anonymous' | 'Blocked' | 'Member' | 'Privileged' | 'Former Staff' | 'Staff' | 'Janitor' | 'Moderator' | 'Admin';
12
+ export type WarningType = 'warning' | 'record' | 'ban';
13
+ export type Artist = {
14
+ id: number;
15
+ name: string;
16
+ updated_at: string;
17
+ is_active: boolean;
18
+ other_names: Array<string>;
19
+ group_name: string;
20
+ linked_user_id: number | null;
21
+ created_at: string;
22
+ creator_id: number;
23
+ is_locked: boolean;
24
+ notes: string | null;
25
+ };
26
+ export type ArtistURL = {
27
+ id: number;
28
+ artist_id: number;
29
+ url: string;
30
+ normalized_url: string;
31
+ created_at: string;
32
+ updated_at: string;
33
+ is_active: boolean;
34
+ };
35
+ export type ArtistVersion = {
36
+ id: number;
37
+ artist_id: number;
38
+ name: string;
39
+ updater_id: number;
40
+ created_at: string;
41
+ updated_at: string;
42
+ is_active: boolean;
43
+ other_names: Array<string>;
44
+ notes_changed: boolean;
45
+ urls: Array<string>;
46
+ };
47
+ export type AvoidPosting = {
48
+ id: number;
49
+ creator_id: number;
50
+ updater_id: number;
51
+ artist_id: number;
52
+ /**
53
+ * Only visible to Staff+
54
+ */
55
+ staff_notes?: string;
56
+ details: string;
57
+ is_active: boolean;
58
+ created_at: string;
59
+ updated_at: string;
60
+ };
61
+ export type AvoidPostingVersion = {
62
+ id: number;
63
+ updater_id: number;
64
+ avoid_posting_id: number;
65
+ details: string;
66
+ /**
67
+ * Only visible to Staff+
68
+ */
69
+ staff_notes?: string;
70
+ is_active: boolean;
71
+ updated_at: string;
72
+ };
73
+ export type Ban = {
74
+ id: number;
75
+ user_id: number;
76
+ reason: string;
77
+ banner_id: number;
78
+ expires_at: string | null;
79
+ created_at: string;
80
+ updated_at: string;
81
+ };
82
+ export type Blip = {
83
+ id: number;
84
+ creator_id: number;
85
+ body: string;
86
+ response_to: number;
87
+ created_at: string;
88
+ updated_at: string;
89
+ is_deleted: boolean;
90
+ warning_type: WarningType;
91
+ warning_user_id: number;
92
+ updater_id: number;
93
+ creator_name: string;
94
+ };
95
+ export type BulkUpdateRequest = {
96
+ id: number;
97
+ creator_id: number;
98
+ forum_topic_id: number | null;
99
+ script: string;
100
+ status: 'approved' | 'rejected' | 'pending';
101
+ created_at: string;
102
+ updated_at: string;
103
+ approver_id: number | null;
104
+ forum_post_id: number | null;
105
+ title: string;
106
+ };
107
+ export type Comment = {
108
+ id: number;
109
+ created_at: string;
110
+ post_id: number;
111
+ creator_id: number;
112
+ body: string;
113
+ score: number;
114
+ updated_at: string;
115
+ updater_id: number;
116
+ /**
117
+ * @deprecated
118
+ */
119
+ do_not_bump_post: boolean;
120
+ is_hidden: boolean;
121
+ is_sticky: boolean;
122
+ warning_type: WarningType;
123
+ warning_user_id: number | null;
124
+ creator_name: string;
125
+ updater_name: string;
126
+ vote: UpDownMehVote;
127
+ };
128
+ export type DMail = {
129
+ id: number;
130
+ owner_id: number;
131
+ from_id: number;
132
+ to_id: number;
133
+ title: string;
134
+ body: string;
135
+ is_read: boolean;
136
+ is_deleted: boolean;
137
+ created_at: string;
138
+ updated_at: string;
139
+ to_name: string;
140
+ from_name: string;
141
+ };
142
+ export type ForumPost = {
143
+ id: number;
144
+ topic_id: number;
145
+ creator_id: number;
146
+ updater_id: number;
147
+ body: string;
148
+ is_hidden: boolean;
149
+ created_at: string;
150
+ updated_at: string;
151
+ warning_type: WarningType;
152
+ warning_user_id: number | null;
153
+ /**
154
+ * Net votes divided by total votes, from -1 to 1. Null if the post has never been voted on.
155
+ */
156
+ vote_score: string | null;
157
+ creator_name: string;
158
+ updater_name: string;
159
+ };
160
+ export type ForumTopic = {
161
+ id: number;
162
+ creator_id: number;
163
+ updater_id: number;
164
+ title: string;
165
+ response_count: number;
166
+ is_sticky: boolean;
167
+ is_locked: boolean;
168
+ is_hidden: boolean;
169
+ created_at: string;
170
+ updated_at: string;
171
+ category_id: number;
172
+ last_bumped_at: string;
173
+ creator_name: string;
174
+ updater_name: string;
175
+ };
176
+ export type HelpPage = {
177
+ id: number;
178
+ name: string;
179
+ title: string;
180
+ wiki_page: string;
181
+ related: string;
182
+ created_at: string;
183
+ updated_at: string;
184
+ };
185
+ export type LegacyPost = {
186
+ id: number;
187
+ created_at: string;
188
+ updated_at: string;
189
+ file: {
190
+ width: number;
191
+ height: number;
192
+ ext: string;
193
+ size: number;
194
+ md5: string;
195
+ url: string | null;
196
+ };
197
+ preview: {
198
+ width: number;
199
+ height: number;
200
+ url: string | null;
201
+ alt?: string | null;
202
+ };
203
+ sample: {
204
+ has: boolean;
205
+ height: number | null;
206
+ width: number | null;
207
+ url: string | null;
208
+ alt?: string | null;
209
+ alternates: {
210
+ has?: boolean;
211
+ original?: PostSampleAlternate;
212
+ variants?: {
213
+ webm?: PostSampleAlternate;
214
+ mp4?: PostSampleAlternate;
215
+ };
216
+ samples?: {
217
+ '480p'?: PostSampleAlternate;
218
+ '720p'?: PostSampleAlternate;
219
+ };
220
+ };
221
+ };
222
+ score: {
223
+ up: number;
224
+ down: number;
225
+ total: number;
226
+ };
227
+ tags: {
228
+ general: Array<string>;
229
+ artist: Array<string>;
230
+ copyright: Array<string>;
231
+ character: Array<string>;
232
+ species: Array<string>;
233
+ invalid: Array<string>;
234
+ meta: Array<string>;
235
+ lore: Array<string>;
236
+ contributor: Array<string>;
237
+ };
238
+ locked_tags: Array<string> | null;
239
+ change_seq: number;
240
+ flags: {
241
+ pending: boolean;
242
+ flagged: boolean;
243
+ note_locked: boolean;
244
+ status_locked: boolean;
245
+ rating_locked: boolean;
246
+ deleted: boolean;
247
+ };
248
+ rating: Rating;
249
+ fav_count: number;
250
+ sources: Array<string>;
251
+ pools: Array<number>;
252
+ relationships: {
253
+ parent_id: number | null;
254
+ has_children: boolean;
255
+ has_active_children: boolean;
256
+ children: Array<number>;
257
+ };
258
+ approver_id: number | null;
259
+ uploader_id: number;
260
+ description: string;
261
+ comment_count: number;
262
+ is_favorited: boolean;
263
+ has_notes: boolean;
264
+ duration: number | null;
265
+ uploader_name: string;
266
+ vote: UpDownMehVote;
267
+ };
268
+ export type NewsUpdate = {
269
+ id: number;
270
+ message: string;
271
+ creator_id: number;
272
+ updater_id: number;
273
+ created_at: string;
274
+ updated_at: string;
275
+ };
276
+ export type Note = {
277
+ id: number;
278
+ created_at: string;
279
+ updated_at: string;
280
+ creator_id: number;
281
+ x: number;
282
+ y: number;
283
+ width: number;
284
+ height: number;
285
+ version: number;
286
+ is_active: boolean;
287
+ post_id: number;
288
+ body: string;
289
+ creator_name: string;
290
+ };
291
+ export type NoteVersion = {
292
+ id: number;
293
+ created_at: string;
294
+ updated_at: string;
295
+ x: number;
296
+ y: number;
297
+ width: number;
298
+ height: number;
299
+ body: string;
300
+ version: number;
301
+ is_active: boolean;
302
+ note_id: number;
303
+ post_id: number;
304
+ updater_id: number;
305
+ };
306
+ export type Pool = {
307
+ id: number;
308
+ name: string;
309
+ updated_at: string;
310
+ creator_id: number;
311
+ description: string;
312
+ is_active: boolean;
313
+ category: PoolCategory;
314
+ post_ids: Array<number>;
315
+ created_at: string;
316
+ creator_name: string;
317
+ post_count: number;
318
+ };
319
+ export type PoolVersion = {
320
+ id: number;
321
+ pool_id: number;
322
+ post_ids: Array<number>;
323
+ created_at: string;
324
+ updated_at: string;
325
+ updater_id: number;
326
+ name: string;
327
+ name_changed: boolean;
328
+ description: string;
329
+ description_changed: boolean;
330
+ is_active: boolean;
331
+ is_locked: boolean;
332
+ category: PoolCategory;
333
+ version: number;
334
+ added_post_ids: Array<number>;
335
+ removed_post_ids: Array<number>;
336
+ };
337
+ export type PostApproval = {
338
+ id: number;
339
+ user_id: number;
340
+ post_id: number;
341
+ created_at: string;
342
+ updated_at: string;
343
+ };
344
+ export type PostEvent = {
345
+ id: number;
346
+ creator_id: number | null;
347
+ post_id: number;
348
+ action: PostEventAction;
349
+ created_at: string;
350
+ };
351
+ export type PostFlag = {
352
+ id: number;
353
+ created_at: string;
354
+ post_id: number;
355
+ reason: string;
356
+ /**
357
+ * Only visible to creator and Janitor+
358
+ */
359
+ creator_id?: number | null;
360
+ is_resolved: boolean;
361
+ updated_at: string;
362
+ is_deletion: boolean;
363
+ type: 'flag' | 'deletion';
364
+ /**
365
+ * Only visible to creator and Janitor+
366
+ */
367
+ note?: string | null;
368
+ };
369
+ export type PostReplacement = {
370
+ id: number;
371
+ created_at: string;
372
+ updated_at: string;
373
+ post_id: number;
374
+ creator_id: number;
375
+ approver_id: number | null;
376
+ file_ext: string;
377
+ file_size: number;
378
+ image_height: number;
379
+ image_width: number;
380
+ md5: string;
381
+ source: string;
382
+ file_name: string;
383
+ status: PostReplacementStatus;
384
+ reason: string;
385
+ sequence_number: number;
386
+ };
387
+ export type PostSampleAlternate = {
388
+ fps: number;
389
+ codec: string | null;
390
+ size: number;
391
+ width: number;
392
+ height: number;
393
+ url: string | null;
394
+ };
395
+ export type PostSet = {
396
+ id: number;
397
+ created_at: string;
398
+ updated_at: string;
399
+ creator_id: number;
400
+ is_public: boolean;
401
+ name: string;
402
+ shortname: string;
403
+ description: string;
404
+ post_count: number;
405
+ transfer_on_delete: boolean;
406
+ post_ids: Array<number>;
407
+ };
408
+ export type PostVersion = {
409
+ id: number;
410
+ post_id: number;
411
+ tags: string;
412
+ updater_id: number;
413
+ updated_at: string;
414
+ rating: Rating;
415
+ parent_id: number | null;
416
+ source: string;
417
+ description: string;
418
+ reason: string | null;
419
+ locked_tags: string | null;
420
+ added_tags: Array<string>;
421
+ removed_tags: Array<string>;
422
+ /**
423
+ * The tag changes as the user submitted them, before aliases, implications, and automatic tags. Removed tags are prefixed with `-`. May include metatags such as `rating:`, `pool:`, `parent:`, and `source:`.
424
+ */
425
+ original_tags: Array<string>;
426
+ added_locked_tags: Array<string>;
427
+ removed_locked_tags: Array<string>;
428
+ rating_changed: boolean;
429
+ parent_changed: boolean;
430
+ source_changed: boolean;
431
+ description_changed: boolean;
432
+ version: number;
433
+ obsolete_added_tags: string;
434
+ obsolete_removed_tags: string;
435
+ unchanged_tags: string;
436
+ updater_name: string;
437
+ is_hidden: boolean;
438
+ };
439
+ export type Tag = {
440
+ id: number;
441
+ name: string;
442
+ post_count: number;
443
+ related_tags: string;
444
+ related_tags_updated_at: string | null;
445
+ category: TagCategory;
446
+ is_locked: boolean;
447
+ created_at: string;
448
+ updated_at: string;
449
+ };
450
+ export type TagAlias = {
451
+ id: number;
452
+ antecedent_name: string;
453
+ reason: string;
454
+ creator_id: number;
455
+ created_at: string | null;
456
+ forum_post_id: number | null;
457
+ updated_at: string | null;
458
+ forum_topic_id: number | null;
459
+ consequent_name: string;
460
+ status: TagRequestStatus;
461
+ post_count: number;
462
+ approver_id: number | null;
463
+ };
464
+ export type TagImplication = {
465
+ id: number;
466
+ reason: string;
467
+ creator_id: number;
468
+ created_at: string;
469
+ forum_post_id: number | null;
470
+ antecedent_name: string;
471
+ consequent_name: string;
472
+ status: TagRequestStatus;
473
+ forum_topic_id: number | null;
474
+ updated_at: string;
475
+ descendant_names: Array<string>;
476
+ approver_id: number | null;
477
+ };
478
+ export type TagTypeVersion = {
479
+ id: number;
480
+ created_at: string;
481
+ updated_at: string;
482
+ old_type: TagCategory;
483
+ new_type: TagCategory;
484
+ is_locked: boolean;
485
+ tag_id: number;
486
+ creator_id: number;
487
+ };
488
+ export type Takedown = {
489
+ id: number;
490
+ status: 'approved' | 'denied' | 'partial' | 'pending';
491
+ approver_id: number | null;
492
+ reason_hidden: boolean;
493
+ created_at: string;
494
+ updated_at: string;
495
+ post_count: number;
496
+ };
497
+ export type User = {
498
+ id: number;
499
+ created_at: string;
500
+ name: string;
501
+ level: UserLevel;
502
+ base_upload_limit: number;
503
+ upload_karma: number;
504
+ upload_karma_free: boolean;
505
+ post_upload_count: number;
506
+ post_update_count: number;
507
+ note_update_count: number;
508
+ is_banned: boolean;
509
+ can_approve_posts: boolean;
510
+ can_upload_free: boolean;
511
+ level_string: UserLevelName;
512
+ avatar_id: number | null;
513
+ is_verified?: boolean;
514
+ has_cropped_avatar: boolean;
515
+ /**
516
+ * Only visible to Admin+.
517
+ */
518
+ last_logged_in_at?: string;
519
+ };
520
+ export type UserFeedback = {
521
+ id: number;
522
+ user_id: number;
523
+ creator_id: number;
524
+ category: UserFeedbackCategory;
525
+ body: string;
526
+ created_at: string;
527
+ updated_at: string;
528
+ updater_id: number;
529
+ is_deleted: boolean;
530
+ };
531
+ export type WikiPage = {
532
+ id: number;
533
+ created_at: string;
534
+ updated_at: string;
535
+ title: string;
536
+ body: string;
537
+ creator_id: number;
538
+ is_locked: boolean;
539
+ updater_id: number;
540
+ is_deleted: boolean;
541
+ other_names: Array<string>;
542
+ parent: string | null;
543
+ creator_name: string;
544
+ category_id: TagCategory;
545
+ featured_posts?: Array<number>;
546
+ };
547
+ export type WikiPageVersion = {
548
+ id: number;
549
+ created_at: string;
550
+ updated_at: string;
551
+ title: string;
552
+ body: string;
553
+ updater_id: number;
554
+ wiki_page_id: number;
555
+ is_locked: boolean;
556
+ other_names: Array<string>;
557
+ is_deleted: boolean;
558
+ reason: string | null;
559
+ parent: string | null;
560
+ featured_posts?: Array<number>;
561
+ };
562
+ export type UploadKarmaEventsIndexResponses = {
563
+ /**
564
+ * Success
565
+ */
566
+ 200: Array<{
567
+ id: number;
568
+ user_id: number;
569
+ creator_id: number;
570
+ post_id: number | null;
571
+ reason: 'approved' | 'unapproved' | 'deleted' | 'undeleted' | 'replacement_penalty' | 'replacement_penalty_reversed' | 'replacement_transfer' | 'owner_change' | 'staff_override' | 'queue_bypass';
572
+ delta: number;
573
+ balance: number;
574
+ extra_data: {
575
+ [key: string]: unknown;
576
+ };
577
+ created_at: string;
578
+ }>;
579
+ };
580
+ export type UploadKarmaEvent = UploadKarmaEventsIndexResponses[200][number];
581
+ export interface ModActionValues {
582
+ admin_user_delete: {
583
+ user_id: number;
584
+ };
585
+ appeal_claim: {
586
+ appeal_id: number;
587
+ };
588
+ appeal_unclaim: {
589
+ appeal_id: number;
590
+ };
591
+ appeal_update: {
592
+ appeal_id: number;
593
+ response: string;
594
+ response_was: string;
595
+ status: string;
596
+ status_was: string;
597
+ };
598
+ artist_delete: {
599
+ artist_id: number;
600
+ artist_name: string;
601
+ };
602
+ artist_page_lock: {
603
+ artist_page: string;
604
+ };
605
+ artist_page_rename: {
606
+ new_name: string;
607
+ old_name: string;
608
+ };
609
+ artist_page_unlock: {
610
+ artist_page: string;
611
+ };
612
+ artist_user_linked: {
613
+ artist_page: string;
614
+ user_id: number;
615
+ };
616
+ artist_user_unlinked: {
617
+ artist_page: string;
618
+ user_id: number;
619
+ };
620
+ avoid_posting_create: {
621
+ artist_name: string;
622
+ id: number;
623
+ };
624
+ avoid_posting_delete: {
625
+ artist_name: string;
626
+ id: number;
627
+ };
628
+ avoid_posting_destroy: {
629
+ artist_name: string;
630
+ id: number;
631
+ };
632
+ avoid_posting_undelete: {
633
+ artist_name: string;
634
+ id: number;
635
+ };
636
+ avoid_posting_update: {
637
+ artist_name: string;
638
+ details: string;
639
+ id: number;
640
+ old_details: string;
641
+ old_staff_notes: string;
642
+ staff_notes: string;
643
+ };
644
+ blip_delete: {
645
+ blip_id: number;
646
+ user_id: number;
647
+ };
648
+ blip_destroy: {
649
+ blip_id: number;
650
+ user_id: number;
651
+ };
652
+ blip_undelete: {
653
+ blip_id: number;
654
+ user_id: number;
655
+ };
656
+ blip_update: {
657
+ blip_id: number;
658
+ user_id: number;
659
+ };
660
+ comment_delete: {
661
+ comment_id: number;
662
+ user_id: number;
663
+ };
664
+ comment_hide: {
665
+ comment_id: number;
666
+ user_id: number;
667
+ };
668
+ comment_unhide: {
669
+ comment_id: number;
670
+ user_id: number;
671
+ };
672
+ comment_update: {
673
+ comment_id: number;
674
+ user_id: number;
675
+ };
676
+ flag_reason_create: {
677
+ reason: string;
678
+ text: string;
679
+ };
680
+ flag_reason_delete: {
681
+ reason: string;
682
+ };
683
+ flag_reason_update: {
684
+ reason: string;
685
+ reason_was: string;
686
+ text: string;
687
+ text_was: string;
688
+ };
689
+ forum_category_create: {
690
+ forum_category_id: number;
691
+ };
692
+ forum_category_delete: {
693
+ forum_category_id: number;
694
+ };
695
+ forum_category_update: {
696
+ forum_category_id: number;
697
+ };
698
+ forum_post_delete: {
699
+ forum_post_id: number;
700
+ forum_topic_id: number;
701
+ user_id: number;
702
+ };
703
+ forum_post_hide: {
704
+ forum_post_id: number;
705
+ forum_topic_id: number;
706
+ user_id: number;
707
+ };
708
+ forum_post_unhide: {
709
+ forum_post_id: number;
710
+ forum_topic_id: number;
711
+ user_id: number;
712
+ };
713
+ forum_post_update: {
714
+ forum_post_id: number;
715
+ forum_topic_id: number;
716
+ user_id: number;
717
+ };
718
+ forum_topic_delete: {
719
+ forum_topic_id: number;
720
+ forum_topic_title: string;
721
+ user_id: number;
722
+ };
723
+ forum_topic_hide: {
724
+ forum_topic_id: number;
725
+ forum_topic_title: string;
726
+ user_id: number;
727
+ };
728
+ forum_topic_lock: {
729
+ forum_topic_id: number;
730
+ forum_topic_title: string;
731
+ user_id: number;
732
+ };
733
+ forum_topic_stick: {
734
+ forum_topic_id: number;
735
+ forum_topic_title: string;
736
+ user_id: number;
737
+ };
738
+ forum_topic_unhide: {
739
+ forum_topic_id: number;
740
+ forum_topic_title: string;
741
+ user_id: number;
742
+ };
743
+ forum_topic_unlock: {
744
+ forum_topic_id: number;
745
+ forum_topic_title: string;
746
+ user_id: number;
747
+ };
748
+ forum_topic_unstick: {
749
+ forum_topic_id: number;
750
+ forum_topic_title: string;
751
+ user_id: number;
752
+ };
753
+ forum_topic_update: {};
754
+ help_create: {
755
+ name: string;
756
+ wiki_page: string;
757
+ };
758
+ help_delete: {
759
+ name: string;
760
+ wiki_page: string;
761
+ };
762
+ help_update: {
763
+ name: string;
764
+ wiki_page: string;
765
+ };
766
+ ip_ban_create: {
767
+ ip_addr: string;
768
+ reason: string;
769
+ };
770
+ ip_ban_delete: {
771
+ ip_addr: string;
772
+ reason: string;
773
+ };
774
+ mascot_create: {
775
+ id: number;
776
+ };
777
+ mascot_delete: {
778
+ id: number;
779
+ };
780
+ mascot_update: {
781
+ id: number;
782
+ };
783
+ mass_update: {
784
+ antecedent: string;
785
+ consequent: string;
786
+ };
787
+ nuke_tag: {
788
+ tag_name: string;
789
+ };
790
+ password_reset: {
791
+ invalidated: boolean;
792
+ user_id: number;
793
+ };
794
+ pool_delete: {
795
+ pool_id: number;
796
+ pool_name: string;
797
+ user_id: number;
798
+ };
799
+ post_version_hide: {
800
+ post_id: number;
801
+ version: number;
802
+ };
803
+ post_version_unhide: {
804
+ post_id: number;
805
+ version: number;
806
+ };
807
+ report_reason_create: {
808
+ reason: string;
809
+ };
810
+ report_reason_delete: {
811
+ reason: string;
812
+ user_id: number;
813
+ };
814
+ report_reason_update: {
815
+ description: string;
816
+ description_was: string;
817
+ reason: string;
818
+ reason_was: string;
819
+ };
820
+ search_trend_blacklist_create: {
821
+ reason: string;
822
+ tag: string;
823
+ };
824
+ search_trend_blacklist_delete: {
825
+ reason: string;
826
+ tag: string;
827
+ };
828
+ search_trend_blacklist_purge: {
829
+ deleted_count: number;
830
+ reason: string;
831
+ tag: string;
832
+ };
833
+ search_trend_blacklist_update: {
834
+ reason: string;
835
+ tag: string;
836
+ };
837
+ set_change_visibility: {
838
+ is_public: boolean;
839
+ set_id: number;
840
+ user_id: number;
841
+ };
842
+ set_delete: {
843
+ set_id: number;
844
+ user_id: number;
845
+ };
846
+ set_update: {
847
+ set_id: number;
848
+ user_id: number;
849
+ };
850
+ staff_file_create: {
851
+ file_size: number;
852
+ filename: string;
853
+ id: number;
854
+ user_id: number;
855
+ };
856
+ staff_file_delete: {
857
+ filename: string;
858
+ id: number;
859
+ user_id: number;
860
+ };
861
+ staff_file_update: {
862
+ filename: string;
863
+ id: number;
864
+ user_id: number;
865
+ };
866
+ staff_note_create: {
867
+ body: string;
868
+ id: number;
869
+ user_id: number;
870
+ };
871
+ staff_note_delete: {
872
+ id: number;
873
+ user_id: number;
874
+ };
875
+ staff_note_undelete: {
876
+ id: number;
877
+ user_id: number;
878
+ };
879
+ staff_note_update: {
880
+ body: string;
881
+ id: number;
882
+ old_body: string;
883
+ user_id: number;
884
+ };
885
+ tag_alias_create: {
886
+ alias_desc: string;
887
+ alias_id: number;
888
+ };
889
+ tag_alias_undo: {
890
+ alias_desc: string;
891
+ alias_id: number;
892
+ };
893
+ tag_alias_update: {
894
+ alias_desc: string;
895
+ alias_id: number;
896
+ change_desc: string;
897
+ };
898
+ tag_destroy: {
899
+ name: string;
900
+ };
901
+ tag_implication_create: {
902
+ implication_desc: string;
903
+ implication_id: number;
904
+ };
905
+ tag_implication_undo: {
906
+ implication_desc: string;
907
+ implication_id: number;
908
+ };
909
+ tag_implication_update: {
910
+ change_desc: string;
911
+ implication_desc: string;
912
+ implication_id: number;
913
+ };
914
+ takedown_delete: {
915
+ takedown_id: number;
916
+ };
917
+ takedown_process: {
918
+ takedown_id: number;
919
+ };
920
+ ticket_claim: {
921
+ ticket_id: number;
922
+ };
923
+ ticket_unclaim: {
924
+ ticket_id: number;
925
+ };
926
+ ticket_update: {
927
+ response: string;
928
+ response_was: string;
929
+ status: string;
930
+ status_was: string;
931
+ ticket_id: number;
932
+ };
933
+ totp_reset: {
934
+ user_id: number;
935
+ };
936
+ upload_whitelist_create: {
937
+ domain: string;
938
+ hidden: boolean;
939
+ note: string;
940
+ path: string;
941
+ };
942
+ upload_whitelist_delete: {
943
+ domain: string;
944
+ hidden: boolean;
945
+ note: string;
946
+ path: string;
947
+ };
948
+ upload_whitelist_update: {
949
+ domain: string;
950
+ hidden: boolean;
951
+ note: string;
952
+ old_domain: string;
953
+ old_path: string;
954
+ path: string;
955
+ };
956
+ user_avatar_clear: {
957
+ user_id: number;
958
+ };
959
+ user_ban: {
960
+ duration: number;
961
+ reason: string;
962
+ user_id: number;
963
+ };
964
+ user_ban_update: {
965
+ ban_id: number;
966
+ expires_at: string;
967
+ expires_at_was: string;
968
+ reason: string;
969
+ reason_was: string;
970
+ user_id: number;
971
+ };
972
+ user_blacklist_changed: {
973
+ user_id: number;
974
+ };
975
+ user_blips_delete: {
976
+ user_id: number;
977
+ };
978
+ user_comments_hide: {
979
+ user_id: number;
980
+ };
981
+ user_custom_title_change: {
982
+ new_custom_title: string;
983
+ old_custom_title: string;
984
+ user_id: number;
985
+ };
986
+ user_delete: {
987
+ user_id: number;
988
+ };
989
+ user_feedback_create: {
990
+ reason: string;
991
+ record_id: number;
992
+ type: string;
993
+ user_id: number;
994
+ };
995
+ user_feedback_delete: {
996
+ reason: string;
997
+ reason_was: string;
998
+ record_id: number;
999
+ type: string;
1000
+ type_was: string;
1001
+ user_id: number;
1002
+ };
1003
+ user_feedback_destroy: {
1004
+ reason: string;
1005
+ record_id: number;
1006
+ type: string;
1007
+ user_id: number;
1008
+ };
1009
+ user_feedback_undelete: {
1010
+ reason: string;
1011
+ reason_was: string;
1012
+ record_id: number;
1013
+ type: string;
1014
+ type_was: string;
1015
+ user_id: number;
1016
+ };
1017
+ user_feedback_update: {
1018
+ reason: string;
1019
+ reason_was: string;
1020
+ record_id: number;
1021
+ type: string;
1022
+ type_was: string;
1023
+ user_id: number;
1024
+ };
1025
+ user_flags_change: {
1026
+ added: Array<string>;
1027
+ removed: Array<string>;
1028
+ user_id: number;
1029
+ };
1030
+ user_flush_favorites: {
1031
+ user_id: number;
1032
+ };
1033
+ user_forum_posts_hide: {
1034
+ user_id: number;
1035
+ };
1036
+ user_karma_change: {
1037
+ new_karma: number;
1038
+ old_karma: number;
1039
+ user_id: number;
1040
+ };
1041
+ user_karma_free_toggle: {
1042
+ disabled: boolean;
1043
+ user_id: number;
1044
+ };
1045
+ user_level_change: {
1046
+ level: string;
1047
+ level_was: string;
1048
+ user_id: number;
1049
+ };
1050
+ user_name_change: {
1051
+ user_id: number;
1052
+ };
1053
+ user_profile_clear: {
1054
+ user_id: number;
1055
+ };
1056
+ user_text_change: {
1057
+ user_id: number;
1058
+ };
1059
+ user_unban: {
1060
+ user_id: number;
1061
+ };
1062
+ user_upload_limit_change: {
1063
+ new_upload_limit: number;
1064
+ old_upload_limit: number;
1065
+ user_id: number;
1066
+ };
1067
+ user_uploads_toggle: {
1068
+ disabled: boolean;
1069
+ user_id: number;
1070
+ };
1071
+ wiki_page_delete: {
1072
+ wiki_page: string;
1073
+ wiki_page_id: number;
1074
+ };
1075
+ wiki_page_lock: {
1076
+ wiki_page: string;
1077
+ };
1078
+ wiki_page_rename: {
1079
+ new_title: string;
1080
+ old_title: string;
1081
+ };
1082
+ wiki_page_unlock: {
1083
+ wiki_page: string;
1084
+ };
1085
+ }
1086
+ export type ModActionName = keyof ModActionValues;
1087
+ /** one variant per action, so checking `action` narrows `values` */
1088
+ export type ModAction<A extends ModActionName = ModActionName> = A extends ModActionName ? {
1089
+ action: A;
1090
+ created_at: string;
1091
+ creator_id: number;
1092
+ id: number;
1093
+ updated_at: string;
1094
+ /** what the action applies to */
1095
+ values: ModActionValues[A];
1096
+ } : never;
1097
+ /** a record wrapped under its resource name with what changed, `changes` is null when its previous state isn't known */
1098
+ export type Update<Resource extends string, R, Field extends keyof R & string> = Record<Resource, R> & {
1099
+ changes: Changes<R, Field> | null;
1100
+ };
1101
+ /** what each event type's `data` is */
1102
+ export interface EventDataMap {
1103
+ "artist.create": Artist;
1104
+ "artist.delete": ModAction<"artist_delete">;
1105
+ "artist.update": ArtistVersion;
1106
+ "artist_url.create": ArtistURL;
1107
+ "artist_version.create": ArtistVersion;
1108
+ "avoid_posting.create": AvoidPosting;
1109
+ "avoid_posting.delete": ModAction<"avoid_posting_delete">;
1110
+ "avoid_posting.destroy": ModAction<"avoid_posting_destroy">;
1111
+ "avoid_posting.undelete": ModAction<"avoid_posting_undelete">;
1112
+ "avoid_posting.update": AvoidPostingVersion;
1113
+ "avoid_posting_version.create": AvoidPostingVersion;
1114
+ "ban.create": Ban;
1115
+ "ban.delete": ModAction<"user_unban">;
1116
+ "ban.update": ModAction<"user_ban_update">;
1117
+ "blip.create": Blip;
1118
+ "bulk_update_request.create": BulkUpdateRequest;
1119
+ "bulk_update_request.update": Update<"bulk_update_request", BulkUpdateRequest, "status" | "title" | "script" | "approver_id" | "forum_topic_id">;
1120
+ "comment.create": Comment;
1121
+ "comment.delete": ModAction<"comment_delete">;
1122
+ "comment.hide": ModAction<"comment_hide">;
1123
+ "comment.unhide": ModAction<"comment_unhide">;
1124
+ "comment.update": Update<"comment", Comment, "body" | "is_hidden" | "is_sticky" | "warning_type" | "warning_user_id">;
1125
+ "forum_post.create": ForumPost;
1126
+ "forum_post.delete": ModAction<"forum_post_delete">;
1127
+ "forum_post.hide": ModAction<"forum_post_hide">;
1128
+ "forum_post.unhide": ModAction<"forum_post_unhide">;
1129
+ "forum_post.update": Update<"forum_post", ForumPost, "body" | "is_hidden" | "warning_type" | "warning_user_id">;
1130
+ "forum_topic.create": ForumTopic;
1131
+ "forum_topic.delete": ModAction<"forum_topic_delete">;
1132
+ "forum_topic.hide": ModAction<"forum_topic_hide">;
1133
+ "forum_topic.unhide": ModAction<"forum_topic_unhide">;
1134
+ "forum_topic.update": Update<"forum_topic", ForumTopic, "title" | "category_id" | "is_hidden" | "is_locked" | "is_sticky">;
1135
+ "help_page.create": HelpPage;
1136
+ "help_page.update": Update<"help_page", HelpPage, "name" | "title" | "wiki_page" | "related">;
1137
+ "mod_action.create": ModAction;
1138
+ "news_update.create": NewsUpdate;
1139
+ "news_update.update": Update<"news_update", NewsUpdate, "message">;
1140
+ "note.create": Note;
1141
+ "note.update": NoteVersion;
1142
+ "note_version.create": NoteVersion;
1143
+ "pool.add_posts": {
1144
+ pool_version: PoolVersion;
1145
+ post_ids: Array<number>;
1146
+ };
1147
+ "pool.create": Pool;
1148
+ "pool.delete": ModAction<"pool_delete">;
1149
+ "pool.remove_posts": {
1150
+ pool_version: PoolVersion;
1151
+ post_ids: Array<number>;
1152
+ };
1153
+ "pool.update": PoolVersion;
1154
+ "pool_version.create": PoolVersion;
1155
+ "post.create": {
1156
+ post: LegacyPost;
1157
+ };
1158
+ "post.update": {
1159
+ changes: PostChanges | null;
1160
+ post: LegacyPost;
1161
+ };
1162
+ "post_approval.create": PostApproval;
1163
+ "post_event.create": PostEvent;
1164
+ "post_flag.create": PostFlag;
1165
+ "post_flag.update": Update<"post_flag", PostFlag, "is_resolved">;
1166
+ "post_replacement.create": PostReplacement;
1167
+ "post_set.add_posts": Record<"post_set", PostSet> & {
1168
+ post_ids: Array<number>;
1169
+ };
1170
+ "post_set.create": PostSet;
1171
+ "post_set.delete": ModAction<"set_delete">;
1172
+ "post_set.remove_posts": Record<"post_set", PostSet> & {
1173
+ post_ids: Array<number>;
1174
+ };
1175
+ "post_set.update": Update<"post_set", PostSet, "name" | "shortname" | "description" | "is_public" | "transfer_on_delete">;
1176
+ "post_version.create": PostVersion;
1177
+ "post_version.hide": ModAction<"post_version_hide">;
1178
+ "post_version.unhide": ModAction<"post_version_unhide">;
1179
+ "tag.create": Tag;
1180
+ "tag.delete": ModAction<"tag_destroy">;
1181
+ "tag.update": TagTypeVersion;
1182
+ "tag_alias.create": TagAlias;
1183
+ "tag_alias.update": Update<"tag_alias", TagAlias, "status" | "antecedent_name" | "consequent_name" | "reason" | "approver_id" | "forum_topic_id">;
1184
+ "tag_implication.create": TagImplication;
1185
+ "tag_implication.update": Update<"tag_implication", TagImplication, "status" | "antecedent_name" | "consequent_name" | "reason" | "approver_id" | "forum_topic_id">;
1186
+ "tag_type_version.create": TagTypeVersion;
1187
+ "takedown.create": Takedown;
1188
+ "takedown.delete": ModAction<"takedown_delete">;
1189
+ "takedown.update": Update<"takedown", Takedown, "status">;
1190
+ "upload_karma_event.create": UploadKarmaEvent;
1191
+ "user.create": User;
1192
+ "user.delete": ModAction<"admin_user_delete" | "user_delete">;
1193
+ "user.update": ModAction<"user_avatar_clear" | "user_blacklist_changed" | "user_custom_title_change" | "user_flags_change" | "user_karma_change" | "user_karma_free_toggle" | "user_level_change" | "user_name_change" | "user_profile_clear" | "user_text_change" | "user_upload_limit_change" | "user_uploads_toggle">;
1194
+ "user_feedback.create": UserFeedback;
1195
+ "user_feedback.delete": ModAction<"user_feedback_delete">;
1196
+ "user_feedback.destroy": ModAction<"user_feedback_destroy">;
1197
+ "user_feedback.undelete": ModAction<"user_feedback_undelete">;
1198
+ "user_feedback.update": ModAction<"user_feedback_update">;
1199
+ "wiki_page.create": WikiPage;
1200
+ "wiki_page.delete": ModAction<"wiki_page_delete">;
1201
+ "wiki_page.update": WikiPageVersion;
1202
+ "wiki_page_version.create": WikiPageVersion;
1203
+ "dmail.create": DMail;
1204
+ }