@stream-io/feeds-client 0.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.
Files changed (96) hide show
  1. package/@react-bindings/index.ts +2 -0
  2. package/CHANGELOG.md +44 -0
  3. package/LICENSE +219 -0
  4. package/README.md +9 -0
  5. package/dist/@react-bindings/hooks/useComments.d.ts +12 -0
  6. package/dist/@react-bindings/hooks/useStateStore.d.ts +3 -0
  7. package/dist/@react-bindings/index.d.ts +2 -0
  8. package/dist/index-react-bindings.browser.cjs +56 -0
  9. package/dist/index-react-bindings.browser.cjs.map +1 -0
  10. package/dist/index-react-bindings.browser.js +53 -0
  11. package/dist/index-react-bindings.browser.js.map +1 -0
  12. package/dist/index-react-bindings.node.cjs +56 -0
  13. package/dist/index-react-bindings.node.cjs.map +1 -0
  14. package/dist/index-react-bindings.node.js +53 -0
  15. package/dist/index-react-bindings.node.js.map +1 -0
  16. package/dist/index.browser.cjs +5799 -0
  17. package/dist/index.browser.cjs.map +1 -0
  18. package/dist/index.browser.js +5782 -0
  19. package/dist/index.browser.js.map +1 -0
  20. package/dist/index.d.ts +13 -0
  21. package/dist/index.node.cjs +5799 -0
  22. package/dist/index.node.cjs.map +1 -0
  23. package/dist/index.node.js +5782 -0
  24. package/dist/index.node.js.map +1 -0
  25. package/dist/src/Feed.d.ts +109 -0
  26. package/dist/src/FeedsClient.d.ts +63 -0
  27. package/dist/src/ModerationClient.d.ts +3 -0
  28. package/dist/src/common/ActivitySearchSource.d.ts +17 -0
  29. package/dist/src/common/ApiClient.d.ts +20 -0
  30. package/dist/src/common/BaseSearchSource.d.ts +87 -0
  31. package/dist/src/common/ConnectionIdManager.d.ts +11 -0
  32. package/dist/src/common/EventDispatcher.d.ts +11 -0
  33. package/dist/src/common/FeedSearchSource.d.ts +17 -0
  34. package/dist/src/common/Poll.d.ts +34 -0
  35. package/dist/src/common/SearchController.d.ts +41 -0
  36. package/dist/src/common/StateStore.d.ts +124 -0
  37. package/dist/src/common/TokenManager.d.ts +29 -0
  38. package/dist/src/common/UserSearchSource.d.ts +17 -0
  39. package/dist/src/common/gen-imports.d.ts +2 -0
  40. package/dist/src/common/rate-limit.d.ts +2 -0
  41. package/dist/src/common/real-time/StableWSConnection.d.ts +144 -0
  42. package/dist/src/common/real-time/event-models.d.ts +36 -0
  43. package/dist/src/common/types.d.ts +29 -0
  44. package/dist/src/common/utils.d.ts +54 -0
  45. package/dist/src/gen/feeds/FeedApi.d.ts +26 -0
  46. package/dist/src/gen/feeds/FeedsApi.d.ts +237 -0
  47. package/dist/src/gen/model-decoders/decoders.d.ts +3 -0
  48. package/dist/src/gen/model-decoders/event-decoder-mapping.d.ts +6 -0
  49. package/dist/src/gen/models/index.d.ts +3437 -0
  50. package/dist/src/gen/moderation/ModerationApi.d.ts +21 -0
  51. package/dist/src/gen-imports.d.ts +3 -0
  52. package/dist/src/state-updates/activity-reaction-utils.d.ts +10 -0
  53. package/dist/src/state-updates/activity-utils.d.ts +13 -0
  54. package/dist/src/state-updates/bookmark-utils.d.ts +14 -0
  55. package/dist/src/types-internal.d.ts +4 -0
  56. package/dist/src/types.d.ts +13 -0
  57. package/dist/src/utils.d.ts +1 -0
  58. package/dist/tsconfig.tsbuildinfo +1 -0
  59. package/index.ts +13 -0
  60. package/package.json +85 -0
  61. package/src/Feed.ts +1070 -0
  62. package/src/FeedsClient.ts +352 -0
  63. package/src/ModerationClient.ts +3 -0
  64. package/src/common/ActivitySearchSource.ts +46 -0
  65. package/src/common/ApiClient.ts +197 -0
  66. package/src/common/BaseSearchSource.ts +238 -0
  67. package/src/common/ConnectionIdManager.ts +51 -0
  68. package/src/common/EventDispatcher.ts +52 -0
  69. package/src/common/FeedSearchSource.ts +94 -0
  70. package/src/common/Poll.ts +313 -0
  71. package/src/common/SearchController.ts +152 -0
  72. package/src/common/StateStore.ts +314 -0
  73. package/src/common/TokenManager.ts +112 -0
  74. package/src/common/UserSearchSource.ts +93 -0
  75. package/src/common/gen-imports.ts +2 -0
  76. package/src/common/rate-limit.ts +23 -0
  77. package/src/common/real-time/StableWSConnection.ts +761 -0
  78. package/src/common/real-time/event-models.ts +38 -0
  79. package/src/common/types.ts +40 -0
  80. package/src/common/utils.ts +194 -0
  81. package/src/gen/feeds/FeedApi.ts +129 -0
  82. package/src/gen/feeds/FeedsApi.ts +2192 -0
  83. package/src/gen/model-decoders/decoders.ts +1877 -0
  84. package/src/gen/model-decoders/event-decoder-mapping.ts +150 -0
  85. package/src/gen/models/index.ts +5882 -0
  86. package/src/gen/moderation/ModerationApi.ts +270 -0
  87. package/src/gen-imports.ts +3 -0
  88. package/src/state-updates/activity-reaction-utils.test.ts +348 -0
  89. package/src/state-updates/activity-reaction-utils.ts +107 -0
  90. package/src/state-updates/activity-utils.test.ts +257 -0
  91. package/src/state-updates/activity-utils.ts +80 -0
  92. package/src/state-updates/bookmark-utils.test.ts +383 -0
  93. package/src/state-updates/bookmark-utils.ts +157 -0
  94. package/src/types-internal.ts +5 -0
  95. package/src/types.ts +20 -0
  96. package/src/utils.ts +4 -0
@@ -0,0 +1,1877 @@
1
+ type Decoder = (i: any) => any;
2
+
3
+ type TypeMapping = Record<string, { type: string; isSingle: boolean }>;
4
+
5
+ export const decoders: Record<string, Decoder> = {};
6
+
7
+ const decodeDatetimeType = (input: number | string) =>
8
+ typeof input === 'number'
9
+ ? new Date(Math.floor(input / 1000000))
10
+ : new Date(input);
11
+
12
+ decoders.DatetimeType = decodeDatetimeType;
13
+
14
+ const decode = (typeMappings: TypeMapping, input?: Record<string, any>) => {
15
+ if (!input || Object.keys(typeMappings).length === 0) return input;
16
+
17
+ Object.keys(typeMappings).forEach((key) => {
18
+ if (input[key] != null) {
19
+ if (typeMappings[key]) {
20
+ const decoder = decoders[typeMappings[key].type];
21
+ if (decoder) {
22
+ if (typeMappings[key].isSingle) {
23
+ input[key] = decoder(input[key]);
24
+ } else {
25
+ Object.keys(input[key]).forEach((k) => {
26
+ input[key][k] = decoder(input[key][k]);
27
+ });
28
+ }
29
+ }
30
+ }
31
+ }
32
+ });
33
+
34
+ return input;
35
+ };
36
+
37
+ decoders.AcceptFeedMemberInviteResponse = (input?: Record<string, any>) => {
38
+ const typeMappings: TypeMapping = {
39
+ member: { type: 'FeedMemberResponse', isSingle: true },
40
+ };
41
+ return decode(typeMappings, input);
42
+ };
43
+
44
+ decoders.AcceptFollowResponse = (input?: Record<string, any>) => {
45
+ const typeMappings: TypeMapping = {
46
+ follow: { type: 'FollowResponse', isSingle: true },
47
+ };
48
+ return decode(typeMappings, input);
49
+ };
50
+
51
+ decoders.ActionLogResponse = (input?: Record<string, any>) => {
52
+ const typeMappings: TypeMapping = {
53
+ created_at: { type: 'DatetimeType', isSingle: true },
54
+
55
+ review_queue_item: { type: 'ReviewQueueItemResponse', isSingle: true },
56
+
57
+ target_user: { type: 'UserResponse', isSingle: true },
58
+
59
+ user: { type: 'UserResponse', isSingle: true },
60
+ };
61
+ return decode(typeMappings, input);
62
+ };
63
+
64
+ decoders.ActivityAddedEvent = (input?: Record<string, any>) => {
65
+ const typeMappings: TypeMapping = {
66
+ created_at: { type: 'DatetimeType', isSingle: true },
67
+
68
+ activity: { type: 'ActivityResponse', isSingle: true },
69
+
70
+ received_at: { type: 'DatetimeType', isSingle: true },
71
+ };
72
+ return decode(typeMappings, input);
73
+ };
74
+
75
+ decoders.ActivityDeletedEvent = (input?: Record<string, any>) => {
76
+ const typeMappings: TypeMapping = {
77
+ created_at: { type: 'DatetimeType', isSingle: true },
78
+
79
+ activity: { type: 'ActivityResponse', isSingle: true },
80
+
81
+ received_at: { type: 'DatetimeType', isSingle: true },
82
+ };
83
+ return decode(typeMappings, input);
84
+ };
85
+
86
+ decoders.ActivityMarkEvent = (input?: Record<string, any>) => {
87
+ const typeMappings: TypeMapping = {
88
+ created_at: { type: 'DatetimeType', isSingle: true },
89
+
90
+ received_at: { type: 'DatetimeType', isSingle: true },
91
+ };
92
+ return decode(typeMappings, input);
93
+ };
94
+
95
+ decoders.ActivityPinResponse = (input?: Record<string, any>) => {
96
+ const typeMappings: TypeMapping = {
97
+ created_at: { type: 'DatetimeType', isSingle: true },
98
+
99
+ updated_at: { type: 'DatetimeType', isSingle: true },
100
+
101
+ activity: { type: 'ActivityResponse', isSingle: true },
102
+
103
+ user: { type: 'UserResponse', isSingle: true },
104
+ };
105
+ return decode(typeMappings, input);
106
+ };
107
+
108
+ decoders.ActivityPinnedEvent = (input?: Record<string, any>) => {
109
+ const typeMappings: TypeMapping = {
110
+ created_at: { type: 'DatetimeType', isSingle: true },
111
+
112
+ pinned_activity: { type: 'PinActivityResponse', isSingle: true },
113
+
114
+ received_at: { type: 'DatetimeType', isSingle: true },
115
+ };
116
+ return decode(typeMappings, input);
117
+ };
118
+
119
+ decoders.ActivityReactionAddedEvent = (input?: Record<string, any>) => {
120
+ const typeMappings: TypeMapping = {
121
+ created_at: { type: 'DatetimeType', isSingle: true },
122
+
123
+ activity: { type: 'ActivityResponse', isSingle: true },
124
+
125
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
126
+
127
+ received_at: { type: 'DatetimeType', isSingle: true },
128
+ };
129
+ return decode(typeMappings, input);
130
+ };
131
+
132
+ decoders.ActivityReactionDeletedEvent = (input?: Record<string, any>) => {
133
+ const typeMappings: TypeMapping = {
134
+ created_at: { type: 'DatetimeType', isSingle: true },
135
+
136
+ activity: { type: 'ActivityResponse', isSingle: true },
137
+
138
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
139
+
140
+ received_at: { type: 'DatetimeType', isSingle: true },
141
+ };
142
+ return decode(typeMappings, input);
143
+ };
144
+
145
+ decoders.ActivityReactionUpdatedEvent = (input?: Record<string, any>) => {
146
+ const typeMappings: TypeMapping = {
147
+ created_at: { type: 'DatetimeType', isSingle: true },
148
+
149
+ activity: { type: 'ActivityResponse', isSingle: true },
150
+
151
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
152
+
153
+ received_at: { type: 'DatetimeType', isSingle: true },
154
+ };
155
+ return decode(typeMappings, input);
156
+ };
157
+
158
+ decoders.ActivityRemovedFromFeedEvent = (input?: Record<string, any>) => {
159
+ const typeMappings: TypeMapping = {
160
+ created_at: { type: 'DatetimeType', isSingle: true },
161
+
162
+ activity: { type: 'ActivityResponse', isSingle: true },
163
+
164
+ received_at: { type: 'DatetimeType', isSingle: true },
165
+ };
166
+ return decode(typeMappings, input);
167
+ };
168
+
169
+ decoders.ActivityResponse = (input?: Record<string, any>) => {
170
+ const typeMappings: TypeMapping = {
171
+ created_at: { type: 'DatetimeType', isSingle: true },
172
+
173
+ updated_at: { type: 'DatetimeType', isSingle: true },
174
+
175
+ comments: { type: 'CommentResponse', isSingle: false },
176
+
177
+ latest_reactions: { type: 'FeedsReactionResponse', isSingle: false },
178
+
179
+ mentioned_users: { type: 'UserResponse', isSingle: false },
180
+
181
+ own_bookmarks: { type: 'BookmarkResponse', isSingle: false },
182
+
183
+ own_reactions: { type: 'FeedsReactionResponse', isSingle: false },
184
+
185
+ reaction_groups: { type: 'ReactionGroupResponse', isSingle: false },
186
+
187
+ user: { type: 'UserResponse', isSingle: true },
188
+
189
+ deleted_at: { type: 'DatetimeType', isSingle: true },
190
+
191
+ edited_at: { type: 'DatetimeType', isSingle: true },
192
+
193
+ expires_at: { type: 'DatetimeType', isSingle: true },
194
+
195
+ current_feed: { type: 'FeedResponse', isSingle: true },
196
+
197
+ parent: { type: 'ActivityResponse', isSingle: true },
198
+
199
+ poll: { type: 'PollResponseData', isSingle: true },
200
+ };
201
+ return decode(typeMappings, input);
202
+ };
203
+
204
+ decoders.ActivityUnpinnedEvent = (input?: Record<string, any>) => {
205
+ const typeMappings: TypeMapping = {
206
+ created_at: { type: 'DatetimeType', isSingle: true },
207
+
208
+ pinned_activity: { type: 'PinActivityResponse', isSingle: true },
209
+
210
+ received_at: { type: 'DatetimeType', isSingle: true },
211
+ };
212
+ return decode(typeMappings, input);
213
+ };
214
+
215
+ decoders.ActivityUpdatedEvent = (input?: Record<string, any>) => {
216
+ const typeMappings: TypeMapping = {
217
+ created_at: { type: 'DatetimeType', isSingle: true },
218
+
219
+ activity: { type: 'ActivityResponse', isSingle: true },
220
+
221
+ received_at: { type: 'DatetimeType', isSingle: true },
222
+ };
223
+ return decode(typeMappings, input);
224
+ };
225
+
226
+ decoders.AddActivityResponse = (input?: Record<string, any>) => {
227
+ const typeMappings: TypeMapping = {
228
+ activity: { type: 'ActivityResponse', isSingle: true },
229
+ };
230
+ return decode(typeMappings, input);
231
+ };
232
+
233
+ decoders.AddBookmarkResponse = (input?: Record<string, any>) => {
234
+ const typeMappings: TypeMapping = {
235
+ bookmark: { type: 'BookmarkResponse', isSingle: true },
236
+ };
237
+ return decode(typeMappings, input);
238
+ };
239
+
240
+ decoders.AddCommentReactionResponse = (input?: Record<string, any>) => {
241
+ const typeMappings: TypeMapping = {
242
+ comment: { type: 'CommentResponse', isSingle: true },
243
+
244
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
245
+ };
246
+ return decode(typeMappings, input);
247
+ };
248
+
249
+ decoders.AddCommentResponse = (input?: Record<string, any>) => {
250
+ const typeMappings: TypeMapping = {
251
+ comment: { type: 'CommentResponse', isSingle: true },
252
+ };
253
+ return decode(typeMappings, input);
254
+ };
255
+
256
+ decoders.AddCommentsBatchResponse = (input?: Record<string, any>) => {
257
+ const typeMappings: TypeMapping = {
258
+ comments: { type: 'CommentResponse', isSingle: false },
259
+ };
260
+ return decode(typeMappings, input);
261
+ };
262
+
263
+ decoders.AddReactionResponse = (input?: Record<string, any>) => {
264
+ const typeMappings: TypeMapping = {
265
+ activity: { type: 'ActivityResponse', isSingle: true },
266
+
267
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
268
+ };
269
+ return decode(typeMappings, input);
270
+ };
271
+
272
+ decoders.AggregatedActivityResponse = (input?: Record<string, any>) => {
273
+ const typeMappings: TypeMapping = {
274
+ created_at: { type: 'DatetimeType', isSingle: true },
275
+
276
+ updated_at: { type: 'DatetimeType', isSingle: true },
277
+
278
+ activities: { type: 'ActivityResponse', isSingle: false },
279
+ };
280
+ return decode(typeMappings, input);
281
+ };
282
+
283
+ decoders.AppUpdatedEvent = (input?: Record<string, any>) => {
284
+ const typeMappings: TypeMapping = {
285
+ created_at: { type: 'DatetimeType', isSingle: true },
286
+
287
+ received_at: { type: 'DatetimeType', isSingle: true },
288
+ };
289
+ return decode(typeMappings, input);
290
+ };
291
+
292
+ decoders.Ban = (input?: Record<string, any>) => {
293
+ const typeMappings: TypeMapping = {
294
+ created_at: { type: 'DatetimeType', isSingle: true },
295
+
296
+ expires: { type: 'DatetimeType', isSingle: true },
297
+
298
+ channel: { type: 'Channel', isSingle: true },
299
+
300
+ created_by: { type: 'User', isSingle: true },
301
+
302
+ target: { type: 'User', isSingle: true },
303
+ };
304
+ return decode(typeMappings, input);
305
+ };
306
+
307
+ decoders.BlockListResponse = (input?: Record<string, any>) => {
308
+ const typeMappings: TypeMapping = {
309
+ created_at: { type: 'DatetimeType', isSingle: true },
310
+
311
+ updated_at: { type: 'DatetimeType', isSingle: true },
312
+ };
313
+ return decode(typeMappings, input);
314
+ };
315
+
316
+ decoders.BlockUsersResponse = (input?: Record<string, any>) => {
317
+ const typeMappings: TypeMapping = {
318
+ created_at: { type: 'DatetimeType', isSingle: true },
319
+ };
320
+ return decode(typeMappings, input);
321
+ };
322
+
323
+ decoders.BlockedUserResponse = (input?: Record<string, any>) => {
324
+ const typeMappings: TypeMapping = {
325
+ created_at: { type: 'DatetimeType', isSingle: true },
326
+
327
+ blocked_user: { type: 'UserResponse', isSingle: true },
328
+
329
+ user: { type: 'UserResponse', isSingle: true },
330
+ };
331
+ return decode(typeMappings, input);
332
+ };
333
+
334
+ decoders.BookmarkAddedEvent = (input?: Record<string, any>) => {
335
+ const typeMappings: TypeMapping = {
336
+ created_at: { type: 'DatetimeType', isSingle: true },
337
+
338
+ bookmark: { type: 'BookmarkResponse', isSingle: true },
339
+
340
+ received_at: { type: 'DatetimeType', isSingle: true },
341
+ };
342
+ return decode(typeMappings, input);
343
+ };
344
+
345
+ decoders.BookmarkDeletedEvent = (input?: Record<string, any>) => {
346
+ const typeMappings: TypeMapping = {
347
+ created_at: { type: 'DatetimeType', isSingle: true },
348
+
349
+ bookmark: { type: 'BookmarkResponse', isSingle: true },
350
+
351
+ received_at: { type: 'DatetimeType', isSingle: true },
352
+ };
353
+ return decode(typeMappings, input);
354
+ };
355
+
356
+ decoders.BookmarkFolderResponse = (input?: Record<string, any>) => {
357
+ const typeMappings: TypeMapping = {
358
+ created_at: { type: 'DatetimeType', isSingle: true },
359
+
360
+ updated_at: { type: 'DatetimeType', isSingle: true },
361
+ };
362
+ return decode(typeMappings, input);
363
+ };
364
+
365
+ decoders.BookmarkResponse = (input?: Record<string, any>) => {
366
+ const typeMappings: TypeMapping = {
367
+ created_at: { type: 'DatetimeType', isSingle: true },
368
+
369
+ updated_at: { type: 'DatetimeType', isSingle: true },
370
+
371
+ activity: { type: 'ActivityResponse', isSingle: true },
372
+
373
+ user: { type: 'UserResponse', isSingle: true },
374
+
375
+ folder: { type: 'BookmarkFolderResponse', isSingle: true },
376
+ };
377
+ return decode(typeMappings, input);
378
+ };
379
+
380
+ decoders.BookmarkUpdatedEvent = (input?: Record<string, any>) => {
381
+ const typeMappings: TypeMapping = {
382
+ created_at: { type: 'DatetimeType', isSingle: true },
383
+
384
+ bookmark: { type: 'BookmarkResponse', isSingle: true },
385
+
386
+ received_at: { type: 'DatetimeType', isSingle: true },
387
+ };
388
+ return decode(typeMappings, input);
389
+ };
390
+
391
+ decoders.CallParticipantResponse = (input?: Record<string, any>) => {
392
+ const typeMappings: TypeMapping = {
393
+ joined_at: { type: 'DatetimeType', isSingle: true },
394
+
395
+ user: { type: 'UserResponse', isSingle: true },
396
+ };
397
+ return decode(typeMappings, input);
398
+ };
399
+
400
+ decoders.CallResponse = (input?: Record<string, any>) => {
401
+ const typeMappings: TypeMapping = {
402
+ created_at: { type: 'DatetimeType', isSingle: true },
403
+
404
+ updated_at: { type: 'DatetimeType', isSingle: true },
405
+
406
+ created_by: { type: 'UserResponse', isSingle: true },
407
+
408
+ ended_at: { type: 'DatetimeType', isSingle: true },
409
+
410
+ starts_at: { type: 'DatetimeType', isSingle: true },
411
+
412
+ session: { type: 'CallSessionResponse', isSingle: true },
413
+ };
414
+ return decode(typeMappings, input);
415
+ };
416
+
417
+ decoders.CallSessionResponse = (input?: Record<string, any>) => {
418
+ const typeMappings: TypeMapping = {
419
+ participants: { type: 'CallParticipantResponse', isSingle: false },
420
+
421
+ accepted_by: { type: 'DatetimeType', isSingle: false },
422
+
423
+ missed_by: { type: 'DatetimeType', isSingle: false },
424
+
425
+ rejected_by: { type: 'DatetimeType', isSingle: false },
426
+
427
+ ended_at: { type: 'DatetimeType', isSingle: true },
428
+
429
+ live_ended_at: { type: 'DatetimeType', isSingle: true },
430
+
431
+ live_started_at: { type: 'DatetimeType', isSingle: true },
432
+
433
+ started_at: { type: 'DatetimeType', isSingle: true },
434
+
435
+ timer_ends_at: { type: 'DatetimeType', isSingle: true },
436
+ };
437
+ return decode(typeMappings, input);
438
+ };
439
+
440
+ decoders.Channel = (input?: Record<string, any>) => {
441
+ const typeMappings: TypeMapping = {
442
+ created_at: { type: 'DatetimeType', isSingle: true },
443
+
444
+ updated_at: { type: 'DatetimeType', isSingle: true },
445
+
446
+ deleted_at: { type: 'DatetimeType', isSingle: true },
447
+
448
+ last_message_at: { type: 'DatetimeType', isSingle: true },
449
+
450
+ active_live_locations: { type: 'SharedLocation', isSingle: false },
451
+
452
+ invites: { type: 'ChannelMember', isSingle: false },
453
+
454
+ members: { type: 'ChannelMember', isSingle: false },
455
+
456
+ config: { type: 'ChannelConfig', isSingle: true },
457
+
458
+ created_by: { type: 'User', isSingle: true },
459
+
460
+ truncated_by: { type: 'User', isSingle: true },
461
+ };
462
+ return decode(typeMappings, input);
463
+ };
464
+
465
+ decoders.ChannelConfig = (input?: Record<string, any>) => {
466
+ const typeMappings: TypeMapping = {
467
+ created_at: { type: 'DatetimeType', isSingle: true },
468
+
469
+ updated_at: { type: 'DatetimeType', isSingle: true },
470
+ };
471
+ return decode(typeMappings, input);
472
+ };
473
+
474
+ decoders.ChannelConfigWithInfo = (input?: Record<string, any>) => {
475
+ const typeMappings: TypeMapping = {
476
+ created_at: { type: 'DatetimeType', isSingle: true },
477
+
478
+ updated_at: { type: 'DatetimeType', isSingle: true },
479
+
480
+ commands: { type: 'Command', isSingle: false },
481
+ };
482
+ return decode(typeMappings, input);
483
+ };
484
+
485
+ decoders.ChannelMember = (input?: Record<string, any>) => {
486
+ const typeMappings: TypeMapping = {
487
+ created_at: { type: 'DatetimeType', isSingle: true },
488
+
489
+ updated_at: { type: 'DatetimeType', isSingle: true },
490
+
491
+ archived_at: { type: 'DatetimeType', isSingle: true },
492
+
493
+ ban_expires: { type: 'DatetimeType', isSingle: true },
494
+
495
+ deleted_at: { type: 'DatetimeType', isSingle: true },
496
+
497
+ invite_accepted_at: { type: 'DatetimeType', isSingle: true },
498
+
499
+ invite_rejected_at: { type: 'DatetimeType', isSingle: true },
500
+
501
+ pinned_at: { type: 'DatetimeType', isSingle: true },
502
+
503
+ user: { type: 'UserResponse', isSingle: true },
504
+ };
505
+ return decode(typeMappings, input);
506
+ };
507
+
508
+ decoders.ChannelMute = (input?: Record<string, any>) => {
509
+ const typeMappings: TypeMapping = {
510
+ created_at: { type: 'DatetimeType', isSingle: true },
511
+
512
+ updated_at: { type: 'DatetimeType', isSingle: true },
513
+
514
+ expires: { type: 'DatetimeType', isSingle: true },
515
+
516
+ channel: { type: 'ChannelResponse', isSingle: true },
517
+
518
+ user: { type: 'UserResponse', isSingle: true },
519
+ };
520
+ return decode(typeMappings, input);
521
+ };
522
+
523
+ decoders.ChannelResponse = (input?: Record<string, any>) => {
524
+ const typeMappings: TypeMapping = {
525
+ created_at: { type: 'DatetimeType', isSingle: true },
526
+
527
+ updated_at: { type: 'DatetimeType', isSingle: true },
528
+
529
+ deleted_at: { type: 'DatetimeType', isSingle: true },
530
+
531
+ hide_messages_before: { type: 'DatetimeType', isSingle: true },
532
+
533
+ last_message_at: { type: 'DatetimeType', isSingle: true },
534
+
535
+ mute_expires_at: { type: 'DatetimeType', isSingle: true },
536
+
537
+ truncated_at: { type: 'DatetimeType', isSingle: true },
538
+
539
+ members: { type: 'ChannelMember', isSingle: false },
540
+
541
+ config: { type: 'ChannelConfigWithInfo', isSingle: true },
542
+
543
+ created_by: { type: 'UserResponse', isSingle: true },
544
+
545
+ truncated_by: { type: 'UserResponse', isSingle: true },
546
+ };
547
+ return decode(typeMappings, input);
548
+ };
549
+
550
+ decoders.Command = (input?: Record<string, any>) => {
551
+ const typeMappings: TypeMapping = {
552
+ created_at: { type: 'DatetimeType', isSingle: true },
553
+
554
+ updated_at: { type: 'DatetimeType', isSingle: true },
555
+ };
556
+ return decode(typeMappings, input);
557
+ };
558
+
559
+ decoders.CommentAddedEvent = (input?: Record<string, any>) => {
560
+ const typeMappings: TypeMapping = {
561
+ created_at: { type: 'DatetimeType', isSingle: true },
562
+
563
+ comment: { type: 'CommentResponse', isSingle: true },
564
+
565
+ received_at: { type: 'DatetimeType', isSingle: true },
566
+ };
567
+ return decode(typeMappings, input);
568
+ };
569
+
570
+ decoders.CommentDeletedEvent = (input?: Record<string, any>) => {
571
+ const typeMappings: TypeMapping = {
572
+ created_at: { type: 'DatetimeType', isSingle: true },
573
+
574
+ comment: { type: 'CommentResponse', isSingle: true },
575
+
576
+ received_at: { type: 'DatetimeType', isSingle: true },
577
+ };
578
+ return decode(typeMappings, input);
579
+ };
580
+
581
+ decoders.CommentReactionAddedEvent = (input?: Record<string, any>) => {
582
+ const typeMappings: TypeMapping = {
583
+ created_at: { type: 'DatetimeType', isSingle: true },
584
+
585
+ comment: { type: 'CommentResponse', isSingle: true },
586
+
587
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
588
+
589
+ received_at: { type: 'DatetimeType', isSingle: true },
590
+ };
591
+ return decode(typeMappings, input);
592
+ };
593
+
594
+ decoders.CommentReactionDeletedEvent = (input?: Record<string, any>) => {
595
+ const typeMappings: TypeMapping = {
596
+ created_at: { type: 'DatetimeType', isSingle: true },
597
+
598
+ comment: { type: 'CommentResponse', isSingle: true },
599
+
600
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
601
+
602
+ received_at: { type: 'DatetimeType', isSingle: true },
603
+ };
604
+ return decode(typeMappings, input);
605
+ };
606
+
607
+ decoders.CommentReactionUpdatedEvent = (input?: Record<string, any>) => {
608
+ const typeMappings: TypeMapping = {
609
+ created_at: { type: 'DatetimeType', isSingle: true },
610
+
611
+ comment: { type: 'CommentResponse', isSingle: true },
612
+
613
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
614
+
615
+ received_at: { type: 'DatetimeType', isSingle: true },
616
+ };
617
+ return decode(typeMappings, input);
618
+ };
619
+
620
+ decoders.CommentResponse = (input?: Record<string, any>) => {
621
+ const typeMappings: TypeMapping = {
622
+ created_at: { type: 'DatetimeType', isSingle: true },
623
+
624
+ updated_at: { type: 'DatetimeType', isSingle: true },
625
+
626
+ mentioned_users: { type: 'UserResponse', isSingle: false },
627
+
628
+ own_reactions: { type: 'FeedsReactionResponse', isSingle: false },
629
+
630
+ user: { type: 'UserResponse', isSingle: true },
631
+
632
+ deleted_at: { type: 'DatetimeType', isSingle: true },
633
+
634
+ latest_reactions: { type: 'FeedsReactionResponse', isSingle: false },
635
+
636
+ reaction_groups: { type: 'ReactionGroupResponse', isSingle: false },
637
+ };
638
+ return decode(typeMappings, input);
639
+ };
640
+
641
+ decoders.CommentUpdatedEvent = (input?: Record<string, any>) => {
642
+ const typeMappings: TypeMapping = {
643
+ created_at: { type: 'DatetimeType', isSingle: true },
644
+
645
+ comment: { type: 'CommentResponse', isSingle: true },
646
+
647
+ received_at: { type: 'DatetimeType', isSingle: true },
648
+ };
649
+ return decode(typeMappings, input);
650
+ };
651
+
652
+ decoders.ConfigResponse = (input?: Record<string, any>) => {
653
+ const typeMappings: TypeMapping = {
654
+ created_at: { type: 'DatetimeType', isSingle: true },
655
+
656
+ updated_at: { type: 'DatetimeType', isSingle: true },
657
+ };
658
+ return decode(typeMappings, input);
659
+ };
660
+
661
+ decoders.CreateBlockListResponse = (input?: Record<string, any>) => {
662
+ const typeMappings: TypeMapping = {
663
+ blocklist: { type: 'BlockListResponse', isSingle: true },
664
+ };
665
+ return decode(typeMappings, input);
666
+ };
667
+
668
+ decoders.CreateFeedsBatchResponse = (input?: Record<string, any>) => {
669
+ const typeMappings: TypeMapping = {
670
+ feeds: { type: 'FeedResponse', isSingle: false },
671
+ };
672
+ return decode(typeMappings, input);
673
+ };
674
+
675
+ decoders.CreateGuestResponse = (input?: Record<string, any>) => {
676
+ const typeMappings: TypeMapping = {
677
+ user: { type: 'UserResponse', isSingle: true },
678
+ };
679
+ return decode(typeMappings, input);
680
+ };
681
+
682
+ decoders.DeleteActivityReactionResponse = (input?: Record<string, any>) => {
683
+ const typeMappings: TypeMapping = {
684
+ activity: { type: 'ActivityResponse', isSingle: true },
685
+
686
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
687
+ };
688
+ return decode(typeMappings, input);
689
+ };
690
+
691
+ decoders.DeleteBookmarkResponse = (input?: Record<string, any>) => {
692
+ const typeMappings: TypeMapping = {
693
+ bookmark: { type: 'BookmarkResponse', isSingle: true },
694
+ };
695
+ return decode(typeMappings, input);
696
+ };
697
+
698
+ decoders.DeleteCommentReactionResponse = (input?: Record<string, any>) => {
699
+ const typeMappings: TypeMapping = {
700
+ comment: { type: 'CommentResponse', isSingle: true },
701
+
702
+ reaction: { type: 'FeedsReactionResponse', isSingle: true },
703
+ };
704
+ return decode(typeMappings, input);
705
+ };
706
+
707
+ decoders.Device = (input?: Record<string, any>) => {
708
+ const typeMappings: TypeMapping = {
709
+ created_at: { type: 'DatetimeType', isSingle: true },
710
+ };
711
+ return decode(typeMappings, input);
712
+ };
713
+
714
+ decoders.DeviceResponse = (input?: Record<string, any>) => {
715
+ const typeMappings: TypeMapping = {
716
+ created_at: { type: 'DatetimeType', isSingle: true },
717
+ };
718
+ return decode(typeMappings, input);
719
+ };
720
+
721
+ decoders.DraftPayloadResponse = (input?: Record<string, any>) => {
722
+ const typeMappings: TypeMapping = {
723
+ mentioned_users: { type: 'UserResponse', isSingle: false },
724
+ };
725
+ return decode(typeMappings, input);
726
+ };
727
+
728
+ decoders.DraftResponse = (input?: Record<string, any>) => {
729
+ const typeMappings: TypeMapping = {
730
+ created_at: { type: 'DatetimeType', isSingle: true },
731
+
732
+ message: { type: 'DraftPayloadResponse', isSingle: true },
733
+
734
+ channel: { type: 'ChannelResponse', isSingle: true },
735
+
736
+ parent_message: { type: 'MessageResponse', isSingle: true },
737
+
738
+ quoted_message: { type: 'MessageResponse', isSingle: true },
739
+ };
740
+ return decode(typeMappings, input);
741
+ };
742
+
743
+ decoders.EgressRTMPResponse = (input?: Record<string, any>) => {
744
+ const typeMappings: TypeMapping = {
745
+ started_at: { type: 'DatetimeType', isSingle: true },
746
+ };
747
+ return decode(typeMappings, input);
748
+ };
749
+
750
+ decoders.EntityCreatorResponse = (input?: Record<string, any>) => {
751
+ const typeMappings: TypeMapping = {
752
+ created_at: { type: 'DatetimeType', isSingle: true },
753
+
754
+ updated_at: { type: 'DatetimeType', isSingle: true },
755
+
756
+ deactivated_at: { type: 'DatetimeType', isSingle: true },
757
+
758
+ deleted_at: { type: 'DatetimeType', isSingle: true },
759
+
760
+ last_active: { type: 'DatetimeType', isSingle: true },
761
+
762
+ revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
763
+ };
764
+ return decode(typeMappings, input);
765
+ };
766
+
767
+ decoders.FeedCreatedEvent = (input?: Record<string, any>) => {
768
+ const typeMappings: TypeMapping = {
769
+ created_at: { type: 'DatetimeType', isSingle: true },
770
+
771
+ members: { type: 'FeedMemberResponse', isSingle: false },
772
+
773
+ feed: { type: 'FeedResponse', isSingle: true },
774
+
775
+ received_at: { type: 'DatetimeType', isSingle: true },
776
+ };
777
+ return decode(typeMappings, input);
778
+ };
779
+
780
+ decoders.FeedDeletedEvent = (input?: Record<string, any>) => {
781
+ const typeMappings: TypeMapping = {
782
+ created_at: { type: 'DatetimeType', isSingle: true },
783
+
784
+ received_at: { type: 'DatetimeType', isSingle: true },
785
+ };
786
+ return decode(typeMappings, input);
787
+ };
788
+
789
+ decoders.FeedGroupChangedEvent = (input?: Record<string, any>) => {
790
+ const typeMappings: TypeMapping = {
791
+ created_at: { type: 'DatetimeType', isSingle: true },
792
+
793
+ received_at: { type: 'DatetimeType', isSingle: true },
794
+ };
795
+ return decode(typeMappings, input);
796
+ };
797
+
798
+ decoders.FeedGroupDeletedEvent = (input?: Record<string, any>) => {
799
+ const typeMappings: TypeMapping = {
800
+ created_at: { type: 'DatetimeType', isSingle: true },
801
+
802
+ received_at: { type: 'DatetimeType', isSingle: true },
803
+ };
804
+ return decode(typeMappings, input);
805
+ };
806
+
807
+ decoders.FeedMemberAddedEvent = (input?: Record<string, any>) => {
808
+ const typeMappings: TypeMapping = {
809
+ created_at: { type: 'DatetimeType', isSingle: true },
810
+
811
+ member: { type: 'FeedMemberResponse', isSingle: true },
812
+
813
+ received_at: { type: 'DatetimeType', isSingle: true },
814
+ };
815
+ return decode(typeMappings, input);
816
+ };
817
+
818
+ decoders.FeedMemberRemovedEvent = (input?: Record<string, any>) => {
819
+ const typeMappings: TypeMapping = {
820
+ created_at: { type: 'DatetimeType', isSingle: true },
821
+
822
+ received_at: { type: 'DatetimeType', isSingle: true },
823
+ };
824
+ return decode(typeMappings, input);
825
+ };
826
+
827
+ decoders.FeedMemberResponse = (input?: Record<string, any>) => {
828
+ const typeMappings: TypeMapping = {
829
+ created_at: { type: 'DatetimeType', isSingle: true },
830
+
831
+ updated_at: { type: 'DatetimeType', isSingle: true },
832
+
833
+ user: { type: 'UserResponse', isSingle: true },
834
+
835
+ invite_accepted_at: { type: 'DatetimeType', isSingle: true },
836
+
837
+ invite_rejected_at: { type: 'DatetimeType', isSingle: true },
838
+ };
839
+ return decode(typeMappings, input);
840
+ };
841
+
842
+ decoders.FeedMemberUpdatedEvent = (input?: Record<string, any>) => {
843
+ const typeMappings: TypeMapping = {
844
+ created_at: { type: 'DatetimeType', isSingle: true },
845
+
846
+ member: { type: 'FeedMemberResponse', isSingle: true },
847
+
848
+ received_at: { type: 'DatetimeType', isSingle: true },
849
+ };
850
+ return decode(typeMappings, input);
851
+ };
852
+
853
+ decoders.FeedResponse = (input?: Record<string, any>) => {
854
+ const typeMappings: TypeMapping = {
855
+ created_at: { type: 'DatetimeType', isSingle: true },
856
+
857
+ updated_at: { type: 'DatetimeType', isSingle: true },
858
+
859
+ created_by: { type: 'UserResponse', isSingle: true },
860
+
861
+ deleted_at: { type: 'DatetimeType', isSingle: true },
862
+ };
863
+ return decode(typeMappings, input);
864
+ };
865
+
866
+ decoders.FeedUpdatedEvent = (input?: Record<string, any>) => {
867
+ const typeMappings: TypeMapping = {
868
+ created_at: { type: 'DatetimeType', isSingle: true },
869
+
870
+ feed: { type: 'FeedResponse', isSingle: true },
871
+
872
+ received_at: { type: 'DatetimeType', isSingle: true },
873
+ };
874
+ return decode(typeMappings, input);
875
+ };
876
+
877
+ decoders.FeedsReactionResponse = (input?: Record<string, any>) => {
878
+ const typeMappings: TypeMapping = {
879
+ created_at: { type: 'DatetimeType', isSingle: true },
880
+
881
+ updated_at: { type: 'DatetimeType', isSingle: true },
882
+
883
+ user: { type: 'UserResponse', isSingle: true },
884
+ };
885
+ return decode(typeMappings, input);
886
+ };
887
+
888
+ decoders.FollowBatchResponse = (input?: Record<string, any>) => {
889
+ const typeMappings: TypeMapping = {
890
+ follows: { type: 'FollowResponse', isSingle: false },
891
+ };
892
+ return decode(typeMappings, input);
893
+ };
894
+
895
+ decoders.FollowCreatedEvent = (input?: Record<string, any>) => {
896
+ const typeMappings: TypeMapping = {
897
+ created_at: { type: 'DatetimeType', isSingle: true },
898
+
899
+ follow: { type: 'FollowResponse', isSingle: true },
900
+
901
+ received_at: { type: 'DatetimeType', isSingle: true },
902
+ };
903
+ return decode(typeMappings, input);
904
+ };
905
+
906
+ decoders.FollowDeletedEvent = (input?: Record<string, any>) => {
907
+ const typeMappings: TypeMapping = {
908
+ created_at: { type: 'DatetimeType', isSingle: true },
909
+
910
+ follow: { type: 'FollowResponse', isSingle: true },
911
+
912
+ received_at: { type: 'DatetimeType', isSingle: true },
913
+ };
914
+ return decode(typeMappings, input);
915
+ };
916
+
917
+ decoders.FollowResponse = (input?: Record<string, any>) => {
918
+ const typeMappings: TypeMapping = {
919
+ created_at: { type: 'DatetimeType', isSingle: true },
920
+
921
+ updated_at: { type: 'DatetimeType', isSingle: true },
922
+
923
+ source_feed: { type: 'FeedResponse', isSingle: true },
924
+
925
+ target_feed: { type: 'FeedResponse', isSingle: true },
926
+
927
+ request_accepted_at: { type: 'DatetimeType', isSingle: true },
928
+
929
+ request_rejected_at: { type: 'DatetimeType', isSingle: true },
930
+ };
931
+ return decode(typeMappings, input);
932
+ };
933
+
934
+ decoders.FollowUpdatedEvent = (input?: Record<string, any>) => {
935
+ const typeMappings: TypeMapping = {
936
+ created_at: { type: 'DatetimeType', isSingle: true },
937
+
938
+ follow: { type: 'FollowResponse', isSingle: true },
939
+
940
+ received_at: { type: 'DatetimeType', isSingle: true },
941
+ };
942
+ return decode(typeMappings, input);
943
+ };
944
+
945
+ decoders.FullUserResponse = (input?: Record<string, any>) => {
946
+ const typeMappings: TypeMapping = {
947
+ created_at: { type: 'DatetimeType', isSingle: true },
948
+
949
+ updated_at: { type: 'DatetimeType', isSingle: true },
950
+
951
+ channel_mutes: { type: 'ChannelMute', isSingle: false },
952
+
953
+ devices: { type: 'DeviceResponse', isSingle: false },
954
+
955
+ mutes: { type: 'UserMuteResponse', isSingle: false },
956
+
957
+ ban_expires: { type: 'DatetimeType', isSingle: true },
958
+
959
+ deactivated_at: { type: 'DatetimeType', isSingle: true },
960
+
961
+ deleted_at: { type: 'DatetimeType', isSingle: true },
962
+
963
+ last_active: { type: 'DatetimeType', isSingle: true },
964
+
965
+ revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
966
+ };
967
+ return decode(typeMappings, input);
968
+ };
969
+
970
+ decoders.GetActivityResponse = (input?: Record<string, any>) => {
971
+ const typeMappings: TypeMapping = {
972
+ activity: { type: 'ActivityResponse', isSingle: true },
973
+ };
974
+ return decode(typeMappings, input);
975
+ };
976
+
977
+ decoders.GetBlockedUsersResponse = (input?: Record<string, any>) => {
978
+ const typeMappings: TypeMapping = {
979
+ blocks: { type: 'BlockedUserResponse', isSingle: false },
980
+ };
981
+ return decode(typeMappings, input);
982
+ };
983
+
984
+ decoders.GetCommentRepliesResponse = (input?: Record<string, any>) => {
985
+ const typeMappings: TypeMapping = {
986
+ comments: { type: 'ThreadedCommentResponse', isSingle: false },
987
+ };
988
+ return decode(typeMappings, input);
989
+ };
990
+
991
+ decoders.GetCommentResponse = (input?: Record<string, any>) => {
992
+ const typeMappings: TypeMapping = {
993
+ comment: { type: 'CommentResponse', isSingle: true },
994
+ };
995
+ return decode(typeMappings, input);
996
+ };
997
+
998
+ decoders.GetCommentsResponse = (input?: Record<string, any>) => {
999
+ const typeMappings: TypeMapping = {
1000
+ comments: { type: 'ThreadedCommentResponse', isSingle: false },
1001
+ };
1002
+ return decode(typeMappings, input);
1003
+ };
1004
+
1005
+ decoders.GetConfigResponse = (input?: Record<string, any>) => {
1006
+ const typeMappings: TypeMapping = {
1007
+ config: { type: 'ConfigResponse', isSingle: true },
1008
+ };
1009
+ return decode(typeMappings, input);
1010
+ };
1011
+
1012
+ decoders.GetFollowSuggestionsResponse = (input?: Record<string, any>) => {
1013
+ const typeMappings: TypeMapping = {
1014
+ suggestions: { type: 'FeedResponse', isSingle: false },
1015
+ };
1016
+ return decode(typeMappings, input);
1017
+ };
1018
+
1019
+ decoders.GetOrCreateFeedResponse = (input?: Record<string, any>) => {
1020
+ const typeMappings: TypeMapping = {
1021
+ activities: { type: 'ActivityResponse', isSingle: false },
1022
+
1023
+ aggregated_activities: {
1024
+ type: 'AggregatedActivityResponse',
1025
+ isSingle: false,
1026
+ },
1027
+
1028
+ followers: { type: 'FollowResponse', isSingle: false },
1029
+
1030
+ following: { type: 'FollowResponse', isSingle: false },
1031
+
1032
+ members: { type: 'FeedMemberResponse', isSingle: false },
1033
+
1034
+ pinned_activities: { type: 'ActivityPinResponse', isSingle: false },
1035
+
1036
+ feed: { type: 'FeedResponse', isSingle: true },
1037
+
1038
+ own_follows: { type: 'FollowResponse', isSingle: false },
1039
+
1040
+ notification_status: { type: 'NotificationStatusResponse', isSingle: true },
1041
+
1042
+ own_membership: { type: 'FeedMemberResponse', isSingle: true },
1043
+ };
1044
+ return decode(typeMappings, input);
1045
+ };
1046
+
1047
+ decoders.HealthCheckEvent = (input?: Record<string, any>) => {
1048
+ const typeMappings: TypeMapping = {
1049
+ created_at: { type: 'DatetimeType', isSingle: true },
1050
+
1051
+ received_at: { type: 'DatetimeType', isSingle: true },
1052
+ };
1053
+ return decode(typeMappings, input);
1054
+ };
1055
+
1056
+ decoders.ListBlockListResponse = (input?: Record<string, any>) => {
1057
+ const typeMappings: TypeMapping = {
1058
+ blocklists: { type: 'BlockListResponse', isSingle: false },
1059
+ };
1060
+ return decode(typeMappings, input);
1061
+ };
1062
+
1063
+ decoders.ListDevicesResponse = (input?: Record<string, any>) => {
1064
+ const typeMappings: TypeMapping = {
1065
+ devices: { type: 'DeviceResponse', isSingle: false },
1066
+ };
1067
+ return decode(typeMappings, input);
1068
+ };
1069
+
1070
+ decoders.Message = (input?: Record<string, any>) => {
1071
+ const typeMappings: TypeMapping = {
1072
+ created_at: { type: 'DatetimeType', isSingle: true },
1073
+
1074
+ updated_at: { type: 'DatetimeType', isSingle: true },
1075
+
1076
+ latest_reactions: { type: 'Reaction', isSingle: false },
1077
+
1078
+ mentioned_users: { type: 'User', isSingle: false },
1079
+
1080
+ own_reactions: { type: 'Reaction', isSingle: false },
1081
+
1082
+ reaction_groups: { type: 'ReactionGroupResponse', isSingle: false },
1083
+
1084
+ deleted_at: { type: 'DatetimeType', isSingle: true },
1085
+
1086
+ message_text_updated_at: { type: 'DatetimeType', isSingle: true },
1087
+
1088
+ pin_expires: { type: 'DatetimeType', isSingle: true },
1089
+
1090
+ pinned_at: { type: 'DatetimeType', isSingle: true },
1091
+
1092
+ thread_participants: { type: 'User', isSingle: false },
1093
+
1094
+ pinned_by: { type: 'User', isSingle: true },
1095
+
1096
+ poll: { type: 'Poll', isSingle: true },
1097
+
1098
+ quoted_message: { type: 'Message', isSingle: true },
1099
+
1100
+ reminder: { type: 'MessageReminder', isSingle: true },
1101
+
1102
+ shared_location: { type: 'SharedLocation', isSingle: true },
1103
+
1104
+ user: { type: 'User', isSingle: true },
1105
+ };
1106
+ return decode(typeMappings, input);
1107
+ };
1108
+
1109
+ decoders.MessageReminder = (input?: Record<string, any>) => {
1110
+ const typeMappings: TypeMapping = {
1111
+ created_at: { type: 'DatetimeType', isSingle: true },
1112
+
1113
+ updated_at: { type: 'DatetimeType', isSingle: true },
1114
+
1115
+ remind_at: { type: 'DatetimeType', isSingle: true },
1116
+
1117
+ channel: { type: 'Channel', isSingle: true },
1118
+
1119
+ message: { type: 'Message', isSingle: true },
1120
+
1121
+ user: { type: 'User', isSingle: true },
1122
+ };
1123
+ return decode(typeMappings, input);
1124
+ };
1125
+
1126
+ decoders.MessageResponse = (input?: Record<string, any>) => {
1127
+ const typeMappings: TypeMapping = {
1128
+ created_at: { type: 'DatetimeType', isSingle: true },
1129
+
1130
+ updated_at: { type: 'DatetimeType', isSingle: true },
1131
+
1132
+ latest_reactions: { type: 'ReactionResponse', isSingle: false },
1133
+
1134
+ mentioned_users: { type: 'UserResponse', isSingle: false },
1135
+
1136
+ own_reactions: { type: 'ReactionResponse', isSingle: false },
1137
+
1138
+ user: { type: 'UserResponse', isSingle: true },
1139
+
1140
+ deleted_at: { type: 'DatetimeType', isSingle: true },
1141
+
1142
+ message_text_updated_at: { type: 'DatetimeType', isSingle: true },
1143
+
1144
+ pin_expires: { type: 'DatetimeType', isSingle: true },
1145
+
1146
+ pinned_at: { type: 'DatetimeType', isSingle: true },
1147
+
1148
+ thread_participants: { type: 'UserResponse', isSingle: false },
1149
+
1150
+ draft: { type: 'DraftResponse', isSingle: true },
1151
+
1152
+ pinned_by: { type: 'UserResponse', isSingle: true },
1153
+
1154
+ poll: { type: 'PollResponseData', isSingle: true },
1155
+
1156
+ quoted_message: { type: 'MessageResponse', isSingle: true },
1157
+
1158
+ reaction_groups: { type: 'ReactionGroupResponse', isSingle: false },
1159
+
1160
+ reminder: { type: 'ReminderResponseData', isSingle: true },
1161
+
1162
+ shared_location: { type: 'SharedLocationResponseData', isSingle: true },
1163
+ };
1164
+ return decode(typeMappings, input);
1165
+ };
1166
+
1167
+ decoders.ModerationCustomActionEvent = (input?: Record<string, any>) => {
1168
+ const typeMappings: TypeMapping = {
1169
+ created_at: { type: 'DatetimeType', isSingle: true },
1170
+
1171
+ message: { type: 'Message', isSingle: true },
1172
+
1173
+ user: { type: 'User', isSingle: true },
1174
+ };
1175
+ return decode(typeMappings, input);
1176
+ };
1177
+
1178
+ decoders.ModerationFlaggedEvent = (input?: Record<string, any>) => {
1179
+ const typeMappings: TypeMapping = {
1180
+ created_at: { type: 'DatetimeType', isSingle: true },
1181
+
1182
+ user: { type: 'User', isSingle: true },
1183
+ };
1184
+ return decode(typeMappings, input);
1185
+ };
1186
+
1187
+ decoders.ModerationMarkReviewedEvent = (input?: Record<string, any>) => {
1188
+ const typeMappings: TypeMapping = {
1189
+ created_at: { type: 'DatetimeType', isSingle: true },
1190
+
1191
+ message: { type: 'Message', isSingle: true },
1192
+
1193
+ user: { type: 'User', isSingle: true },
1194
+ };
1195
+ return decode(typeMappings, input);
1196
+ };
1197
+
1198
+ decoders.MuteResponse = (input?: Record<string, any>) => {
1199
+ const typeMappings: TypeMapping = {
1200
+ mutes: { type: 'UserMute', isSingle: false },
1201
+
1202
+ own_user: { type: 'OwnUser', isSingle: true },
1203
+ };
1204
+ return decode(typeMappings, input);
1205
+ };
1206
+
1207
+ decoders.NotificationStatusResponse = (input?: Record<string, any>) => {
1208
+ const typeMappings: TypeMapping = {
1209
+ last_seen_at: { type: 'DatetimeType', isSingle: true },
1210
+ };
1211
+ return decode(typeMappings, input);
1212
+ };
1213
+
1214
+ decoders.OwnUser = (input?: Record<string, any>) => {
1215
+ const typeMappings: TypeMapping = {
1216
+ created_at: { type: 'DatetimeType', isSingle: true },
1217
+
1218
+ updated_at: { type: 'DatetimeType', isSingle: true },
1219
+
1220
+ channel_mutes: { type: 'ChannelMute', isSingle: false },
1221
+
1222
+ devices: { type: 'Device', isSingle: false },
1223
+
1224
+ mutes: { type: 'UserMute', isSingle: false },
1225
+
1226
+ deactivated_at: { type: 'DatetimeType', isSingle: true },
1227
+
1228
+ deleted_at: { type: 'DatetimeType', isSingle: true },
1229
+
1230
+ last_active: { type: 'DatetimeType', isSingle: true },
1231
+
1232
+ last_engaged_at: { type: 'DatetimeType', isSingle: true },
1233
+
1234
+ push_preferences: { type: 'PushPreferences', isSingle: true },
1235
+ };
1236
+ return decode(typeMappings, input);
1237
+ };
1238
+
1239
+ decoders.PinActivityResponse = (input?: Record<string, any>) => {
1240
+ const typeMappings: TypeMapping = {
1241
+ created_at: { type: 'DatetimeType', isSingle: true },
1242
+
1243
+ activity: { type: 'ActivityResponse', isSingle: true },
1244
+ };
1245
+ return decode(typeMappings, input);
1246
+ };
1247
+
1248
+ decoders.Poll = (input?: Record<string, any>) => {
1249
+ const typeMappings: TypeMapping = {
1250
+ created_at: { type: 'DatetimeType', isSingle: true },
1251
+
1252
+ updated_at: { type: 'DatetimeType', isSingle: true },
1253
+
1254
+ latest_answers: { type: 'PollVote', isSingle: false },
1255
+
1256
+ own_votes: { type: 'PollVote', isSingle: false },
1257
+
1258
+ created_by: { type: 'User', isSingle: true },
1259
+ };
1260
+ return decode(typeMappings, input);
1261
+ };
1262
+
1263
+ decoders.PollClosedFeedEvent = (input?: Record<string, any>) => {
1264
+ const typeMappings: TypeMapping = {
1265
+ created_at: { type: 'DatetimeType', isSingle: true },
1266
+
1267
+ poll: { type: 'PollResponseData', isSingle: true },
1268
+
1269
+ received_at: { type: 'DatetimeType', isSingle: true },
1270
+ };
1271
+ return decode(typeMappings, input);
1272
+ };
1273
+
1274
+ decoders.PollDeletedFeedEvent = (input?: Record<string, any>) => {
1275
+ const typeMappings: TypeMapping = {
1276
+ created_at: { type: 'DatetimeType', isSingle: true },
1277
+
1278
+ poll: { type: 'PollResponseData', isSingle: true },
1279
+
1280
+ received_at: { type: 'DatetimeType', isSingle: true },
1281
+ };
1282
+ return decode(typeMappings, input);
1283
+ };
1284
+
1285
+ decoders.PollResponse = (input?: Record<string, any>) => {
1286
+ const typeMappings: TypeMapping = {
1287
+ poll: { type: 'PollResponseData', isSingle: true },
1288
+ };
1289
+ return decode(typeMappings, input);
1290
+ };
1291
+
1292
+ decoders.PollResponseData = (input?: Record<string, any>) => {
1293
+ const typeMappings: TypeMapping = {
1294
+ created_at: { type: 'DatetimeType', isSingle: true },
1295
+
1296
+ updated_at: { type: 'DatetimeType', isSingle: true },
1297
+
1298
+ latest_answers: { type: 'PollVoteResponseData', isSingle: false },
1299
+
1300
+ own_votes: { type: 'PollVoteResponseData', isSingle: false },
1301
+
1302
+ created_by: { type: 'UserResponse', isSingle: true },
1303
+ };
1304
+ return decode(typeMappings, input);
1305
+ };
1306
+
1307
+ decoders.PollUpdatedFeedEvent = (input?: Record<string, any>) => {
1308
+ const typeMappings: TypeMapping = {
1309
+ created_at: { type: 'DatetimeType', isSingle: true },
1310
+
1311
+ poll: { type: 'PollResponseData', isSingle: true },
1312
+
1313
+ received_at: { type: 'DatetimeType', isSingle: true },
1314
+ };
1315
+ return decode(typeMappings, input);
1316
+ };
1317
+
1318
+ decoders.PollVote = (input?: Record<string, any>) => {
1319
+ const typeMappings: TypeMapping = {
1320
+ created_at: { type: 'DatetimeType', isSingle: true },
1321
+
1322
+ updated_at: { type: 'DatetimeType', isSingle: true },
1323
+
1324
+ user: { type: 'User', isSingle: true },
1325
+ };
1326
+ return decode(typeMappings, input);
1327
+ };
1328
+
1329
+ decoders.PollVoteCastedFeedEvent = (input?: Record<string, any>) => {
1330
+ const typeMappings: TypeMapping = {
1331
+ created_at: { type: 'DatetimeType', isSingle: true },
1332
+
1333
+ poll: { type: 'PollResponseData', isSingle: true },
1334
+
1335
+ poll_vote: { type: 'PollVoteResponseData', isSingle: true },
1336
+
1337
+ received_at: { type: 'DatetimeType', isSingle: true },
1338
+ };
1339
+ return decode(typeMappings, input);
1340
+ };
1341
+
1342
+ decoders.PollVoteChangedFeedEvent = (input?: Record<string, any>) => {
1343
+ const typeMappings: TypeMapping = {
1344
+ created_at: { type: 'DatetimeType', isSingle: true },
1345
+
1346
+ poll: { type: 'PollResponseData', isSingle: true },
1347
+
1348
+ poll_vote: { type: 'PollVoteResponseData', isSingle: true },
1349
+
1350
+ received_at: { type: 'DatetimeType', isSingle: true },
1351
+ };
1352
+ return decode(typeMappings, input);
1353
+ };
1354
+
1355
+ decoders.PollVoteRemovedFeedEvent = (input?: Record<string, any>) => {
1356
+ const typeMappings: TypeMapping = {
1357
+ created_at: { type: 'DatetimeType', isSingle: true },
1358
+
1359
+ poll: { type: 'PollResponseData', isSingle: true },
1360
+
1361
+ poll_vote: { type: 'PollVoteResponseData', isSingle: true },
1362
+
1363
+ received_at: { type: 'DatetimeType', isSingle: true },
1364
+ };
1365
+ return decode(typeMappings, input);
1366
+ };
1367
+
1368
+ decoders.PollVoteResponse = (input?: Record<string, any>) => {
1369
+ const typeMappings: TypeMapping = {
1370
+ vote: { type: 'PollVoteResponseData', isSingle: true },
1371
+ };
1372
+ return decode(typeMappings, input);
1373
+ };
1374
+
1375
+ decoders.PollVoteResponseData = (input?: Record<string, any>) => {
1376
+ const typeMappings: TypeMapping = {
1377
+ created_at: { type: 'DatetimeType', isSingle: true },
1378
+
1379
+ updated_at: { type: 'DatetimeType', isSingle: true },
1380
+
1381
+ user: { type: 'UserResponse', isSingle: true },
1382
+ };
1383
+ return decode(typeMappings, input);
1384
+ };
1385
+
1386
+ decoders.PollVotesResponse = (input?: Record<string, any>) => {
1387
+ const typeMappings: TypeMapping = {
1388
+ votes: { type: 'PollVoteResponseData', isSingle: false },
1389
+ };
1390
+ return decode(typeMappings, input);
1391
+ };
1392
+
1393
+ decoders.PushPreferences = (input?: Record<string, any>) => {
1394
+ const typeMappings: TypeMapping = {
1395
+ disabled_until: { type: 'DatetimeType', isSingle: true },
1396
+ };
1397
+ return decode(typeMappings, input);
1398
+ };
1399
+
1400
+ decoders.QueryActivitiesResponse = (input?: Record<string, any>) => {
1401
+ const typeMappings: TypeMapping = {
1402
+ activities: { type: 'ActivityResponse', isSingle: false },
1403
+ };
1404
+ return decode(typeMappings, input);
1405
+ };
1406
+
1407
+ decoders.QueryActivityReactionsResponse = (input?: Record<string, any>) => {
1408
+ const typeMappings: TypeMapping = {
1409
+ reactions: { type: 'FeedsReactionResponse', isSingle: false },
1410
+ };
1411
+ return decode(typeMappings, input);
1412
+ };
1413
+
1414
+ decoders.QueryBookmarkFoldersResponse = (input?: Record<string, any>) => {
1415
+ const typeMappings: TypeMapping = {
1416
+ bookmark_folders: { type: 'BookmarkFolderResponse', isSingle: false },
1417
+ };
1418
+ return decode(typeMappings, input);
1419
+ };
1420
+
1421
+ decoders.QueryBookmarksResponse = (input?: Record<string, any>) => {
1422
+ const typeMappings: TypeMapping = {
1423
+ bookmarks: { type: 'BookmarkResponse', isSingle: false },
1424
+ };
1425
+ return decode(typeMappings, input);
1426
+ };
1427
+
1428
+ decoders.QueryCommentReactionsResponse = (input?: Record<string, any>) => {
1429
+ const typeMappings: TypeMapping = {
1430
+ reactions: { type: 'FeedsReactionResponse', isSingle: false },
1431
+ };
1432
+ return decode(typeMappings, input);
1433
+ };
1434
+
1435
+ decoders.QueryCommentsResponse = (input?: Record<string, any>) => {
1436
+ const typeMappings: TypeMapping = {
1437
+ comments: { type: 'CommentResponse', isSingle: false },
1438
+ };
1439
+ return decode(typeMappings, input);
1440
+ };
1441
+
1442
+ decoders.QueryFeedMembersResponse = (input?: Record<string, any>) => {
1443
+ const typeMappings: TypeMapping = {
1444
+ members: { type: 'FeedMemberResponse', isSingle: false },
1445
+ };
1446
+ return decode(typeMappings, input);
1447
+ };
1448
+
1449
+ decoders.QueryFeedsResponse = (input?: Record<string, any>) => {
1450
+ const typeMappings: TypeMapping = {
1451
+ feeds: { type: 'FeedResponse', isSingle: false },
1452
+ };
1453
+ return decode(typeMappings, input);
1454
+ };
1455
+
1456
+ decoders.QueryFollowsResponse = (input?: Record<string, any>) => {
1457
+ const typeMappings: TypeMapping = {
1458
+ follows: { type: 'FollowResponse', isSingle: false },
1459
+ };
1460
+ return decode(typeMappings, input);
1461
+ };
1462
+
1463
+ decoders.QueryModerationConfigsResponse = (input?: Record<string, any>) => {
1464
+ const typeMappings: TypeMapping = {
1465
+ configs: { type: 'ConfigResponse', isSingle: false },
1466
+ };
1467
+ return decode(typeMappings, input);
1468
+ };
1469
+
1470
+ decoders.QueryPollsResponse = (input?: Record<string, any>) => {
1471
+ const typeMappings: TypeMapping = {
1472
+ polls: { type: 'PollResponseData', isSingle: false },
1473
+ };
1474
+ return decode(typeMappings, input);
1475
+ };
1476
+
1477
+ decoders.QueryReviewQueueResponse = (input?: Record<string, any>) => {
1478
+ const typeMappings: TypeMapping = {
1479
+ items: { type: 'ReviewQueueItemResponse', isSingle: false },
1480
+ };
1481
+ return decode(typeMappings, input);
1482
+ };
1483
+
1484
+ decoders.QueryUsersResponse = (input?: Record<string, any>) => {
1485
+ const typeMappings: TypeMapping = {
1486
+ users: { type: 'FullUserResponse', isSingle: false },
1487
+ };
1488
+ return decode(typeMappings, input);
1489
+ };
1490
+
1491
+ decoders.Reaction = (input?: Record<string, any>) => {
1492
+ const typeMappings: TypeMapping = {
1493
+ created_at: { type: 'DatetimeType', isSingle: true },
1494
+
1495
+ updated_at: { type: 'DatetimeType', isSingle: true },
1496
+
1497
+ user: { type: 'User', isSingle: true },
1498
+ };
1499
+ return decode(typeMappings, input);
1500
+ };
1501
+
1502
+ decoders.ReactionGroupResponse = (input?: Record<string, any>) => {
1503
+ const typeMappings: TypeMapping = {
1504
+ first_reaction_at: { type: 'DatetimeType', isSingle: true },
1505
+
1506
+ last_reaction_at: { type: 'DatetimeType', isSingle: true },
1507
+ };
1508
+ return decode(typeMappings, input);
1509
+ };
1510
+
1511
+ decoders.ReactionResponse = (input?: Record<string, any>) => {
1512
+ const typeMappings: TypeMapping = {
1513
+ created_at: { type: 'DatetimeType', isSingle: true },
1514
+
1515
+ updated_at: { type: 'DatetimeType', isSingle: true },
1516
+
1517
+ user: { type: 'UserResponse', isSingle: true },
1518
+ };
1519
+ return decode(typeMappings, input);
1520
+ };
1521
+
1522
+ decoders.RejectFeedMemberInviteResponse = (input?: Record<string, any>) => {
1523
+ const typeMappings: TypeMapping = {
1524
+ member: { type: 'FeedMemberResponse', isSingle: true },
1525
+ };
1526
+ return decode(typeMappings, input);
1527
+ };
1528
+
1529
+ decoders.RejectFollowResponse = (input?: Record<string, any>) => {
1530
+ const typeMappings: TypeMapping = {
1531
+ follow: { type: 'FollowResponse', isSingle: true },
1532
+ };
1533
+ return decode(typeMappings, input);
1534
+ };
1535
+
1536
+ decoders.ReminderResponseData = (input?: Record<string, any>) => {
1537
+ const typeMappings: TypeMapping = {
1538
+ created_at: { type: 'DatetimeType', isSingle: true },
1539
+
1540
+ updated_at: { type: 'DatetimeType', isSingle: true },
1541
+
1542
+ remind_at: { type: 'DatetimeType', isSingle: true },
1543
+
1544
+ channel: { type: 'ChannelResponse', isSingle: true },
1545
+
1546
+ message: { type: 'Message', isSingle: true },
1547
+
1548
+ user: { type: 'User', isSingle: true },
1549
+ };
1550
+ return decode(typeMappings, input);
1551
+ };
1552
+
1553
+ decoders.ReviewQueueItemResponse = (input?: Record<string, any>) => {
1554
+ const typeMappings: TypeMapping = {
1555
+ created_at: { type: 'DatetimeType', isSingle: true },
1556
+
1557
+ updated_at: { type: 'DatetimeType', isSingle: true },
1558
+
1559
+ actions: { type: 'ActionLogResponse', isSingle: false },
1560
+
1561
+ bans: { type: 'Ban', isSingle: false },
1562
+
1563
+ completed_at: { type: 'DatetimeType', isSingle: true },
1564
+
1565
+ reviewed_at: { type: 'DatetimeType', isSingle: true },
1566
+
1567
+ assigned_to: { type: 'UserResponse', isSingle: true },
1568
+
1569
+ call: { type: 'CallResponse', isSingle: true },
1570
+
1571
+ entity_creator: { type: 'EntityCreatorResponse', isSingle: true },
1572
+
1573
+ feeds_v2_reaction: { type: 'Reaction', isSingle: true },
1574
+
1575
+ message: { type: 'MessageResponse', isSingle: true },
1576
+
1577
+ reaction: { type: 'Reaction', isSingle: true },
1578
+ };
1579
+ return decode(typeMappings, input);
1580
+ };
1581
+
1582
+ decoders.SharedLocation = (input?: Record<string, any>) => {
1583
+ const typeMappings: TypeMapping = {
1584
+ created_at: { type: 'DatetimeType', isSingle: true },
1585
+
1586
+ updated_at: { type: 'DatetimeType', isSingle: true },
1587
+
1588
+ end_at: { type: 'DatetimeType', isSingle: true },
1589
+
1590
+ channel: { type: 'Channel', isSingle: true },
1591
+
1592
+ message: { type: 'Message', isSingle: true },
1593
+ };
1594
+ return decode(typeMappings, input);
1595
+ };
1596
+
1597
+ decoders.SharedLocationResponse = (input?: Record<string, any>) => {
1598
+ const typeMappings: TypeMapping = {
1599
+ created_at: { type: 'DatetimeType', isSingle: true },
1600
+
1601
+ updated_at: { type: 'DatetimeType', isSingle: true },
1602
+
1603
+ end_at: { type: 'DatetimeType', isSingle: true },
1604
+
1605
+ channel: { type: 'ChannelResponse', isSingle: true },
1606
+
1607
+ message: { type: 'MessageResponse', isSingle: true },
1608
+ };
1609
+ return decode(typeMappings, input);
1610
+ };
1611
+
1612
+ decoders.SharedLocationResponseData = (input?: Record<string, any>) => {
1613
+ const typeMappings: TypeMapping = {
1614
+ created_at: { type: 'DatetimeType', isSingle: true },
1615
+
1616
+ updated_at: { type: 'DatetimeType', isSingle: true },
1617
+
1618
+ end_at: { type: 'DatetimeType', isSingle: true },
1619
+
1620
+ channel: { type: 'ChannelResponse', isSingle: true },
1621
+
1622
+ message: { type: 'MessageResponse', isSingle: true },
1623
+ };
1624
+ return decode(typeMappings, input);
1625
+ };
1626
+
1627
+ decoders.SharedLocationsResponse = (input?: Record<string, any>) => {
1628
+ const typeMappings: TypeMapping = {
1629
+ active_live_locations: {
1630
+ type: 'SharedLocationResponseData',
1631
+ isSingle: false,
1632
+ },
1633
+ };
1634
+ return decode(typeMappings, input);
1635
+ };
1636
+
1637
+ decoders.SingleFollowResponse = (input?: Record<string, any>) => {
1638
+ const typeMappings: TypeMapping = {
1639
+ follow: { type: 'FollowResponse', isSingle: true },
1640
+ };
1641
+ return decode(typeMappings, input);
1642
+ };
1643
+
1644
+ decoders.SubmitActionResponse = (input?: Record<string, any>) => {
1645
+ const typeMappings: TypeMapping = {
1646
+ item: { type: 'ReviewQueueItemResponse', isSingle: true },
1647
+ };
1648
+ return decode(typeMappings, input);
1649
+ };
1650
+
1651
+ decoders.ThreadedCommentResponse = (input?: Record<string, any>) => {
1652
+ const typeMappings: TypeMapping = {
1653
+ created_at: { type: 'DatetimeType', isSingle: true },
1654
+
1655
+ updated_at: { type: 'DatetimeType', isSingle: true },
1656
+
1657
+ mentioned_users: { type: 'UserResponse', isSingle: false },
1658
+
1659
+ own_reactions: { type: 'FeedsReactionResponse', isSingle: false },
1660
+
1661
+ user: { type: 'UserResponse', isSingle: true },
1662
+
1663
+ deleted_at: { type: 'DatetimeType', isSingle: true },
1664
+
1665
+ latest_reactions: { type: 'FeedsReactionResponse', isSingle: false },
1666
+
1667
+ replies: { type: 'ThreadedCommentResponse', isSingle: false },
1668
+
1669
+ reaction_groups: { type: 'ReactionGroupResponse', isSingle: false },
1670
+ };
1671
+ return decode(typeMappings, input);
1672
+ };
1673
+
1674
+ decoders.UnpinActivityResponse = (input?: Record<string, any>) => {
1675
+ const typeMappings: TypeMapping = {
1676
+ activity: { type: 'ActivityResponse', isSingle: true },
1677
+ };
1678
+ return decode(typeMappings, input);
1679
+ };
1680
+
1681
+ decoders.UpdateActivityPartialResponse = (input?: Record<string, any>) => {
1682
+ const typeMappings: TypeMapping = {
1683
+ activity: { type: 'ActivityResponse', isSingle: true },
1684
+ };
1685
+ return decode(typeMappings, input);
1686
+ };
1687
+
1688
+ decoders.UpdateActivityResponse = (input?: Record<string, any>) => {
1689
+ const typeMappings: TypeMapping = {
1690
+ activity: { type: 'ActivityResponse', isSingle: true },
1691
+ };
1692
+ return decode(typeMappings, input);
1693
+ };
1694
+
1695
+ decoders.UpdateBlockListResponse = (input?: Record<string, any>) => {
1696
+ const typeMappings: TypeMapping = {
1697
+ blocklist: { type: 'BlockListResponse', isSingle: true },
1698
+ };
1699
+ return decode(typeMappings, input);
1700
+ };
1701
+
1702
+ decoders.UpdateBookmarkResponse = (input?: Record<string, any>) => {
1703
+ const typeMappings: TypeMapping = {
1704
+ bookmark: { type: 'BookmarkResponse', isSingle: true },
1705
+ };
1706
+ return decode(typeMappings, input);
1707
+ };
1708
+
1709
+ decoders.UpdateCommentResponse = (input?: Record<string, any>) => {
1710
+ const typeMappings: TypeMapping = {
1711
+ comment: { type: 'CommentResponse', isSingle: true },
1712
+ };
1713
+ return decode(typeMappings, input);
1714
+ };
1715
+
1716
+ decoders.UpdateFeedMembersResponse = (input?: Record<string, any>) => {
1717
+ const typeMappings: TypeMapping = {
1718
+ added: { type: 'FeedMemberResponse', isSingle: false },
1719
+
1720
+ updated: { type: 'FeedMemberResponse', isSingle: false },
1721
+ };
1722
+ return decode(typeMappings, input);
1723
+ };
1724
+
1725
+ decoders.UpdateFeedResponse = (input?: Record<string, any>) => {
1726
+ const typeMappings: TypeMapping = {
1727
+ feed: { type: 'FeedResponse', isSingle: true },
1728
+ };
1729
+ return decode(typeMappings, input);
1730
+ };
1731
+
1732
+ decoders.UpdateFollowResponse = (input?: Record<string, any>) => {
1733
+ const typeMappings: TypeMapping = {
1734
+ follow: { type: 'FollowResponse', isSingle: true },
1735
+ };
1736
+ return decode(typeMappings, input);
1737
+ };
1738
+
1739
+ decoders.UpdateUsersResponse = (input?: Record<string, any>) => {
1740
+ const typeMappings: TypeMapping = {
1741
+ users: { type: 'FullUserResponse', isSingle: false },
1742
+ };
1743
+ return decode(typeMappings, input);
1744
+ };
1745
+
1746
+ decoders.UpsertActivitiesResponse = (input?: Record<string, any>) => {
1747
+ const typeMappings: TypeMapping = {
1748
+ activities: { type: 'ActivityResponse', isSingle: false },
1749
+ };
1750
+ return decode(typeMappings, input);
1751
+ };
1752
+
1753
+ decoders.UpsertConfigResponse = (input?: Record<string, any>) => {
1754
+ const typeMappings: TypeMapping = {
1755
+ config: { type: 'ConfigResponse', isSingle: true },
1756
+ };
1757
+ return decode(typeMappings, input);
1758
+ };
1759
+
1760
+ decoders.User = (input?: Record<string, any>) => {
1761
+ const typeMappings: TypeMapping = {
1762
+ ban_expires: { type: 'DatetimeType', isSingle: true },
1763
+
1764
+ created_at: { type: 'DatetimeType', isSingle: true },
1765
+
1766
+ deactivated_at: { type: 'DatetimeType', isSingle: true },
1767
+
1768
+ deleted_at: { type: 'DatetimeType', isSingle: true },
1769
+
1770
+ last_active: { type: 'DatetimeType', isSingle: true },
1771
+
1772
+ last_engaged_at: { type: 'DatetimeType', isSingle: true },
1773
+
1774
+ revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
1775
+
1776
+ updated_at: { type: 'DatetimeType', isSingle: true },
1777
+ };
1778
+ return decode(typeMappings, input);
1779
+ };
1780
+
1781
+ decoders.UserBannedEvent = (input?: Record<string, any>) => {
1782
+ const typeMappings: TypeMapping = {
1783
+ created_at: { type: 'DatetimeType', isSingle: true },
1784
+
1785
+ created_by: { type: 'User', isSingle: true },
1786
+
1787
+ expiration: { type: 'DatetimeType', isSingle: true },
1788
+
1789
+ user: { type: 'User', isSingle: true },
1790
+ };
1791
+ return decode(typeMappings, input);
1792
+ };
1793
+
1794
+ decoders.UserDeactivatedEvent = (input?: Record<string, any>) => {
1795
+ const typeMappings: TypeMapping = {
1796
+ created_at: { type: 'DatetimeType', isSingle: true },
1797
+
1798
+ created_by: { type: 'User', isSingle: true },
1799
+
1800
+ user: { type: 'User', isSingle: true },
1801
+ };
1802
+ return decode(typeMappings, input);
1803
+ };
1804
+
1805
+ decoders.UserMute = (input?: Record<string, any>) => {
1806
+ const typeMappings: TypeMapping = {
1807
+ created_at: { type: 'DatetimeType', isSingle: true },
1808
+
1809
+ updated_at: { type: 'DatetimeType', isSingle: true },
1810
+
1811
+ expires: { type: 'DatetimeType', isSingle: true },
1812
+
1813
+ target: { type: 'User', isSingle: true },
1814
+
1815
+ user: { type: 'User', isSingle: true },
1816
+ };
1817
+ return decode(typeMappings, input);
1818
+ };
1819
+
1820
+ decoders.UserMuteResponse = (input?: Record<string, any>) => {
1821
+ const typeMappings: TypeMapping = {
1822
+ created_at: { type: 'DatetimeType', isSingle: true },
1823
+
1824
+ updated_at: { type: 'DatetimeType', isSingle: true },
1825
+
1826
+ expires: { type: 'DatetimeType', isSingle: true },
1827
+
1828
+ target: { type: 'UserResponse', isSingle: true },
1829
+
1830
+ user: { type: 'UserResponse', isSingle: true },
1831
+ };
1832
+ return decode(typeMappings, input);
1833
+ };
1834
+
1835
+ decoders.UserMutedEvent = (input?: Record<string, any>) => {
1836
+ const typeMappings: TypeMapping = {
1837
+ created_at: { type: 'DatetimeType', isSingle: true },
1838
+
1839
+ user: { type: 'User', isSingle: true },
1840
+ };
1841
+ return decode(typeMappings, input);
1842
+ };
1843
+
1844
+ decoders.UserReactivatedEvent = (input?: Record<string, any>) => {
1845
+ const typeMappings: TypeMapping = {
1846
+ created_at: { type: 'DatetimeType', isSingle: true },
1847
+
1848
+ user: { type: 'User', isSingle: true },
1849
+ };
1850
+ return decode(typeMappings, input);
1851
+ };
1852
+
1853
+ decoders.UserResponse = (input?: Record<string, any>) => {
1854
+ const typeMappings: TypeMapping = {
1855
+ created_at: { type: 'DatetimeType', isSingle: true },
1856
+
1857
+ updated_at: { type: 'DatetimeType', isSingle: true },
1858
+
1859
+ deactivated_at: { type: 'DatetimeType', isSingle: true },
1860
+
1861
+ deleted_at: { type: 'DatetimeType', isSingle: true },
1862
+
1863
+ last_active: { type: 'DatetimeType', isSingle: true },
1864
+
1865
+ revoke_tokens_issued_before: { type: 'DatetimeType', isSingle: true },
1866
+ };
1867
+ return decode(typeMappings, input);
1868
+ };
1869
+
1870
+ decoders.UserUpdatedEvent = (input?: Record<string, any>) => {
1871
+ const typeMappings: TypeMapping = {
1872
+ created_at: { type: 'DatetimeType', isSingle: true },
1873
+
1874
+ received_at: { type: 'DatetimeType', isSingle: true },
1875
+ };
1876
+ return decode(typeMappings, input);
1877
+ };