@codingfactory/socialkit-vue 0.4.0 → 0.5.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,2017 @@
1
+ /**
2
+ * Generic discussion store factory for SocialKit-powered frontends.
3
+ */
4
+ import type { CreateReplyInput, CreateThreadInput, DiscussionCategorySummary, DiscussionStoreConfig, DiscussionTag, QuoteResponse, Reply, SaveDraftOptions, Space, SpaceMembership, SpaceThreadSort, Thread, UpdateThreadInput } from '../types/discussion.js';
5
+ export type DiscussionStoreReturn = ReturnType<ReturnType<typeof createDiscussionStoreDefinition>>;
6
+ export declare function createDiscussionStoreDefinition(config: DiscussionStoreConfig): import("pinia").StoreDefinition<string, Pick<{
7
+ spaces: import("vue").Ref<{
8
+ id: string;
9
+ slug: string;
10
+ name: string;
11
+ description?: string | undefined;
12
+ kind: "forum" | "context";
13
+ visibility?: string | undefined;
14
+ meta?: {
15
+ icon?: string | undefined;
16
+ color?: string | undefined;
17
+ category?: string | undefined;
18
+ is_category?: boolean | undefined;
19
+ member_count?: number | undefined;
20
+ online_count?: number | undefined;
21
+ is_featured?: boolean | undefined;
22
+ rules?: string[] | undefined;
23
+ moderation_policy?: string | string[] | {
24
+ summary?: string | undefined;
25
+ rules?: string[] | undefined;
26
+ notes?: string[] | undefined;
27
+ } | undefined;
28
+ } | undefined;
29
+ parent_id?: string | null | undefined;
30
+ depth?: number | undefined;
31
+ children_count?: number | undefined;
32
+ children?: /*elided*/ any[] | undefined;
33
+ breadcrumb?: {
34
+ id: string;
35
+ slug: string;
36
+ name: string;
37
+ }[] | undefined;
38
+ is_leaf?: boolean | undefined;
39
+ thread_count?: number | undefined;
40
+ post_count?: number | undefined;
41
+ last_activity_at?: string | undefined;
42
+ created_at: string;
43
+ }[], Space[] | {
44
+ id: string;
45
+ slug: string;
46
+ name: string;
47
+ description?: string | undefined;
48
+ kind: "forum" | "context";
49
+ visibility?: string | undefined;
50
+ meta?: {
51
+ icon?: string | undefined;
52
+ color?: string | undefined;
53
+ category?: string | undefined;
54
+ is_category?: boolean | undefined;
55
+ member_count?: number | undefined;
56
+ online_count?: number | undefined;
57
+ is_featured?: boolean | undefined;
58
+ rules?: string[] | undefined;
59
+ moderation_policy?: string | string[] | {
60
+ summary?: string | undefined;
61
+ rules?: string[] | undefined;
62
+ notes?: string[] | undefined;
63
+ } | undefined;
64
+ } | undefined;
65
+ parent_id?: string | null | undefined;
66
+ depth?: number | undefined;
67
+ children_count?: number | undefined;
68
+ children?: /*elided*/ any[] | undefined;
69
+ breadcrumb?: {
70
+ id: string;
71
+ slug: string;
72
+ name: string;
73
+ }[] | undefined;
74
+ is_leaf?: boolean | undefined;
75
+ thread_count?: number | undefined;
76
+ post_count?: number | undefined;
77
+ last_activity_at?: string | undefined;
78
+ created_at: string;
79
+ }[]>;
80
+ spaceTree: import("vue").Ref<{
81
+ id: string;
82
+ slug: string;
83
+ name: string;
84
+ description?: string | undefined;
85
+ kind: "forum" | "context";
86
+ visibility?: string | undefined;
87
+ meta?: {
88
+ icon?: string | undefined;
89
+ color?: string | undefined;
90
+ category?: string | undefined;
91
+ is_category?: boolean | undefined;
92
+ member_count?: number | undefined;
93
+ online_count?: number | undefined;
94
+ is_featured?: boolean | undefined;
95
+ rules?: string[] | undefined;
96
+ moderation_policy?: string | string[] | {
97
+ summary?: string | undefined;
98
+ rules?: string[] | undefined;
99
+ notes?: string[] | undefined;
100
+ } | undefined;
101
+ } | undefined;
102
+ parent_id?: string | null | undefined;
103
+ depth?: number | undefined;
104
+ children_count?: number | undefined;
105
+ children?: /*elided*/ any[] | undefined;
106
+ breadcrumb?: {
107
+ id: string;
108
+ slug: string;
109
+ name: string;
110
+ }[] | undefined;
111
+ is_leaf?: boolean | undefined;
112
+ thread_count?: number | undefined;
113
+ post_count?: number | undefined;
114
+ last_activity_at?: string | undefined;
115
+ created_at: string;
116
+ }[], Space[] | {
117
+ id: string;
118
+ slug: string;
119
+ name: string;
120
+ description?: string | undefined;
121
+ kind: "forum" | "context";
122
+ visibility?: string | undefined;
123
+ meta?: {
124
+ icon?: string | undefined;
125
+ color?: string | undefined;
126
+ category?: string | undefined;
127
+ is_category?: boolean | undefined;
128
+ member_count?: number | undefined;
129
+ online_count?: number | undefined;
130
+ is_featured?: boolean | undefined;
131
+ rules?: string[] | undefined;
132
+ moderation_policy?: string | string[] | {
133
+ summary?: string | undefined;
134
+ rules?: string[] | undefined;
135
+ notes?: string[] | undefined;
136
+ } | undefined;
137
+ } | undefined;
138
+ parent_id?: string | null | undefined;
139
+ depth?: number | undefined;
140
+ children_count?: number | undefined;
141
+ children?: /*elided*/ any[] | undefined;
142
+ breadcrumb?: {
143
+ id: string;
144
+ slug: string;
145
+ name: string;
146
+ }[] | undefined;
147
+ is_leaf?: boolean | undefined;
148
+ thread_count?: number | undefined;
149
+ post_count?: number | undefined;
150
+ last_activity_at?: string | undefined;
151
+ created_at: string;
152
+ }[]>;
153
+ currentSpace: import("vue").Ref<{
154
+ id: string;
155
+ slug: string;
156
+ name: string;
157
+ description?: string | undefined;
158
+ kind: "forum" | "context";
159
+ visibility?: string | undefined;
160
+ meta?: {
161
+ icon?: string | undefined;
162
+ color?: string | undefined;
163
+ category?: string | undefined;
164
+ is_category?: boolean | undefined;
165
+ member_count?: number | undefined;
166
+ online_count?: number | undefined;
167
+ is_featured?: boolean | undefined;
168
+ rules?: string[] | undefined;
169
+ moderation_policy?: string | string[] | {
170
+ summary?: string | undefined;
171
+ rules?: string[] | undefined;
172
+ notes?: string[] | undefined;
173
+ } | undefined;
174
+ } | undefined;
175
+ parent_id?: string | null | undefined;
176
+ depth?: number | undefined;
177
+ children_count?: number | undefined;
178
+ children?: /*elided*/ any[] | undefined;
179
+ breadcrumb?: {
180
+ id: string;
181
+ slug: string;
182
+ name: string;
183
+ }[] | undefined;
184
+ is_leaf?: boolean | undefined;
185
+ thread_count?: number | undefined;
186
+ post_count?: number | undefined;
187
+ last_activity_at?: string | undefined;
188
+ created_at: string;
189
+ } | null, Space | {
190
+ id: string;
191
+ slug: string;
192
+ name: string;
193
+ description?: string | undefined;
194
+ kind: "forum" | "context";
195
+ visibility?: string | undefined;
196
+ meta?: {
197
+ icon?: string | undefined;
198
+ color?: string | undefined;
199
+ category?: string | undefined;
200
+ is_category?: boolean | undefined;
201
+ member_count?: number | undefined;
202
+ online_count?: number | undefined;
203
+ is_featured?: boolean | undefined;
204
+ rules?: string[] | undefined;
205
+ moderation_policy?: string | string[] | {
206
+ summary?: string | undefined;
207
+ rules?: string[] | undefined;
208
+ notes?: string[] | undefined;
209
+ } | undefined;
210
+ } | undefined;
211
+ parent_id?: string | null | undefined;
212
+ depth?: number | undefined;
213
+ children_count?: number | undefined;
214
+ children?: /*elided*/ any[] | undefined;
215
+ breadcrumb?: {
216
+ id: string;
217
+ slug: string;
218
+ name: string;
219
+ }[] | undefined;
220
+ is_leaf?: boolean | undefined;
221
+ thread_count?: number | undefined;
222
+ post_count?: number | undefined;
223
+ last_activity_at?: string | undefined;
224
+ created_at: string;
225
+ } | null>;
226
+ spaceMemberships: import("vue").Ref<Record<string, SpaceMembership>, Record<string, SpaceMembership>>;
227
+ spaceMembershipLoading: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
228
+ cleanupRealtimeChannels: () => void;
229
+ threads: import("vue").Ref<{
230
+ id: string;
231
+ space_id: string;
232
+ author_id: string;
233
+ author?: {
234
+ id: string;
235
+ name: string;
236
+ handle?: string | null | undefined;
237
+ avatar?: string | {
238
+ url?: string | null | undefined;
239
+ thumb_url?: string | null | undefined;
240
+ preview_url?: string | null | undefined;
241
+ urls?: Record<string, string | null | undefined> | undefined;
242
+ } | null | undefined;
243
+ avatar_url?: string | null | undefined;
244
+ } | undefined;
245
+ title: string;
246
+ body?: string | undefined;
247
+ slug?: string | undefined;
248
+ audience: "public" | "authenticated" | "private";
249
+ status: "open" | "locked" | "archived";
250
+ is_pinned: boolean;
251
+ reply_count: number;
252
+ last_activity_at: string;
253
+ created_at: string;
254
+ meta?: {
255
+ views?: number | undefined;
256
+ upvotes?: number | undefined;
257
+ tags?: string[] | undefined;
258
+ } | undefined;
259
+ tags?: {
260
+ id: string;
261
+ slug: string;
262
+ label: string;
263
+ thread_count?: number | undefined;
264
+ }[] | undefined;
265
+ is_subscribed?: boolean | undefined;
266
+ media?: {
267
+ id: string;
268
+ uuid: string;
269
+ mime_type: string;
270
+ size: number;
271
+ name: string;
272
+ type: "image" | "video";
273
+ is_image: boolean;
274
+ url?: string | undefined;
275
+ thumb_url?: string | null | undefined;
276
+ preview_url?: string | null | undefined;
277
+ urls?: Record<string, string> | undefined;
278
+ responsive?: unknown;
279
+ playback_url?: string | null | undefined;
280
+ provider?: string | null | undefined;
281
+ playback_id?: string | null | undefined;
282
+ provider_asset_id?: string | null | undefined;
283
+ processing_status?: string | null | undefined;
284
+ duration?: number | null | undefined;
285
+ width?: number | null | undefined;
286
+ height?: number | null | undefined;
287
+ aspect_ratio?: string | null | undefined;
288
+ thumbnail_url?: string | null | undefined;
289
+ }[] | undefined;
290
+ deleted_at?: string | null | undefined;
291
+ }[], Thread[] | {
292
+ id: string;
293
+ space_id: string;
294
+ author_id: string;
295
+ author?: {
296
+ id: string;
297
+ name: string;
298
+ handle?: string | null | undefined;
299
+ avatar?: string | {
300
+ url?: string | null | undefined;
301
+ thumb_url?: string | null | undefined;
302
+ preview_url?: string | null | undefined;
303
+ urls?: Record<string, string | null | undefined> | undefined;
304
+ } | null | undefined;
305
+ avatar_url?: string | null | undefined;
306
+ } | undefined;
307
+ title: string;
308
+ body?: string | undefined;
309
+ slug?: string | undefined;
310
+ audience: "public" | "authenticated" | "private";
311
+ status: "open" | "locked" | "archived";
312
+ is_pinned: boolean;
313
+ reply_count: number;
314
+ last_activity_at: string;
315
+ created_at: string;
316
+ meta?: {
317
+ views?: number | undefined;
318
+ upvotes?: number | undefined;
319
+ tags?: string[] | undefined;
320
+ } | undefined;
321
+ tags?: {
322
+ id: string;
323
+ slug: string;
324
+ label: string;
325
+ thread_count?: number | undefined;
326
+ }[] | undefined;
327
+ is_subscribed?: boolean | undefined;
328
+ media?: {
329
+ id: string;
330
+ uuid: string;
331
+ mime_type: string;
332
+ size: number;
333
+ name: string;
334
+ type: "image" | "video";
335
+ is_image: boolean;
336
+ url?: string | undefined;
337
+ thumb_url?: string | null | undefined;
338
+ preview_url?: string | null | undefined;
339
+ urls?: Record<string, string> | undefined;
340
+ responsive?: unknown;
341
+ playback_url?: string | null | undefined;
342
+ provider?: string | null | undefined;
343
+ playback_id?: string | null | undefined;
344
+ provider_asset_id?: string | null | undefined;
345
+ processing_status?: string | null | undefined;
346
+ duration?: number | null | undefined;
347
+ width?: number | null | undefined;
348
+ height?: number | null | undefined;
349
+ aspect_ratio?: string | null | undefined;
350
+ thumbnail_url?: string | null | undefined;
351
+ }[] | undefined;
352
+ deleted_at?: string | null | undefined;
353
+ }[]>;
354
+ currentThread: import("vue").Ref<{
355
+ id: string;
356
+ space_id: string;
357
+ author_id: string;
358
+ author?: {
359
+ id: string;
360
+ name: string;
361
+ handle?: string | null | undefined;
362
+ avatar?: string | {
363
+ url?: string | null | undefined;
364
+ thumb_url?: string | null | undefined;
365
+ preview_url?: string | null | undefined;
366
+ urls?: Record<string, string | null | undefined> | undefined;
367
+ } | null | undefined;
368
+ avatar_url?: string | null | undefined;
369
+ } | undefined;
370
+ title: string;
371
+ body?: string | undefined;
372
+ slug?: string | undefined;
373
+ audience: "public" | "authenticated" | "private";
374
+ status: "open" | "locked" | "archived";
375
+ is_pinned: boolean;
376
+ reply_count: number;
377
+ last_activity_at: string;
378
+ created_at: string;
379
+ meta?: {
380
+ views?: number | undefined;
381
+ upvotes?: number | undefined;
382
+ tags?: string[] | undefined;
383
+ } | undefined;
384
+ tags?: {
385
+ id: string;
386
+ slug: string;
387
+ label: string;
388
+ thread_count?: number | undefined;
389
+ }[] | undefined;
390
+ is_subscribed?: boolean | undefined;
391
+ media?: {
392
+ id: string;
393
+ uuid: string;
394
+ mime_type: string;
395
+ size: number;
396
+ name: string;
397
+ type: "image" | "video";
398
+ is_image: boolean;
399
+ url?: string | undefined;
400
+ thumb_url?: string | null | undefined;
401
+ preview_url?: string | null | undefined;
402
+ urls?: Record<string, string> | undefined;
403
+ responsive?: unknown;
404
+ playback_url?: string | null | undefined;
405
+ provider?: string | null | undefined;
406
+ playback_id?: string | null | undefined;
407
+ provider_asset_id?: string | null | undefined;
408
+ processing_status?: string | null | undefined;
409
+ duration?: number | null | undefined;
410
+ width?: number | null | undefined;
411
+ height?: number | null | undefined;
412
+ aspect_ratio?: string | null | undefined;
413
+ thumbnail_url?: string | null | undefined;
414
+ }[] | undefined;
415
+ deleted_at?: string | null | undefined;
416
+ } | null, Thread | {
417
+ id: string;
418
+ space_id: string;
419
+ author_id: string;
420
+ author?: {
421
+ id: string;
422
+ name: string;
423
+ handle?: string | null | undefined;
424
+ avatar?: string | {
425
+ url?: string | null | undefined;
426
+ thumb_url?: string | null | undefined;
427
+ preview_url?: string | null | undefined;
428
+ urls?: Record<string, string | null | undefined> | undefined;
429
+ } | null | undefined;
430
+ avatar_url?: string | null | undefined;
431
+ } | undefined;
432
+ title: string;
433
+ body?: string | undefined;
434
+ slug?: string | undefined;
435
+ audience: "public" | "authenticated" | "private";
436
+ status: "open" | "locked" | "archived";
437
+ is_pinned: boolean;
438
+ reply_count: number;
439
+ last_activity_at: string;
440
+ created_at: string;
441
+ meta?: {
442
+ views?: number | undefined;
443
+ upvotes?: number | undefined;
444
+ tags?: string[] | undefined;
445
+ } | undefined;
446
+ tags?: {
447
+ id: string;
448
+ slug: string;
449
+ label: string;
450
+ thread_count?: number | undefined;
451
+ }[] | undefined;
452
+ is_subscribed?: boolean | undefined;
453
+ media?: {
454
+ id: string;
455
+ uuid: string;
456
+ mime_type: string;
457
+ size: number;
458
+ name: string;
459
+ type: "image" | "video";
460
+ is_image: boolean;
461
+ url?: string | undefined;
462
+ thumb_url?: string | null | undefined;
463
+ preview_url?: string | null | undefined;
464
+ urls?: Record<string, string> | undefined;
465
+ responsive?: unknown;
466
+ playback_url?: string | null | undefined;
467
+ provider?: string | null | undefined;
468
+ playback_id?: string | null | undefined;
469
+ provider_asset_id?: string | null | undefined;
470
+ processing_status?: string | null | undefined;
471
+ duration?: number | null | undefined;
472
+ width?: number | null | undefined;
473
+ height?: number | null | undefined;
474
+ aspect_ratio?: string | null | undefined;
475
+ thumbnail_url?: string | null | undefined;
476
+ }[] | undefined;
477
+ deleted_at?: string | null | undefined;
478
+ } | null>;
479
+ replies: import("vue").Ref<{
480
+ id: string;
481
+ thread_id: string;
482
+ author_id: string;
483
+ author?: {
484
+ id: string;
485
+ name: string;
486
+ handle?: string | null | undefined;
487
+ avatar?: string | {
488
+ url?: string | null | undefined;
489
+ thumb_url?: string | null | undefined;
490
+ preview_url?: string | null | undefined;
491
+ urls?: Record<string, string | null | undefined> | undefined;
492
+ } | null | undefined;
493
+ avatar_url?: string | null | undefined;
494
+ } | undefined;
495
+ body: string;
496
+ parent_id?: string | null | undefined;
497
+ parent_reply_id?: string | null | undefined;
498
+ depth?: number | undefined;
499
+ display_depth?: number | undefined;
500
+ reply_count?: number | undefined;
501
+ children_count?: number | undefined;
502
+ created_at: string;
503
+ updated_at: string;
504
+ likes_count?: number | undefined;
505
+ dislikes_count?: number | undefined;
506
+ user_reaction?: string | {
507
+ kind: string;
508
+ } | null | undefined;
509
+ quoted_reply_id?: string | null | undefined;
510
+ quoted_reply?: {
511
+ id: string;
512
+ author_id: string;
513
+ author?: {
514
+ id: string;
515
+ name: string;
516
+ handle?: string | null | undefined;
517
+ } | null | undefined;
518
+ body: string;
519
+ } | null | undefined;
520
+ quote_data?: (Record<string, unknown> | null) | undefined;
521
+ is_initial_reply?: boolean | undefined;
522
+ meta?: {
523
+ upvotes?: number | undefined;
524
+ is_solution?: boolean | undefined;
525
+ } | undefined;
526
+ media?: {
527
+ id: string;
528
+ uuid: string;
529
+ mime_type: string;
530
+ size: number;
531
+ name: string;
532
+ type: "image" | "video";
533
+ is_image: boolean;
534
+ url?: string | undefined;
535
+ thumb_url?: string | null | undefined;
536
+ preview_url?: string | null | undefined;
537
+ urls?: Record<string, string> | undefined;
538
+ responsive?: unknown;
539
+ playback_url?: string | null | undefined;
540
+ provider?: string | null | undefined;
541
+ playback_id?: string | null | undefined;
542
+ provider_asset_id?: string | null | undefined;
543
+ processing_status?: string | null | undefined;
544
+ duration?: number | null | undefined;
545
+ width?: number | null | undefined;
546
+ height?: number | null | undefined;
547
+ aspect_ratio?: string | null | undefined;
548
+ thumbnail_url?: string | null | undefined;
549
+ }[] | undefined;
550
+ }[], Reply[] | {
551
+ id: string;
552
+ thread_id: string;
553
+ author_id: string;
554
+ author?: {
555
+ id: string;
556
+ name: string;
557
+ handle?: string | null | undefined;
558
+ avatar?: string | {
559
+ url?: string | null | undefined;
560
+ thumb_url?: string | null | undefined;
561
+ preview_url?: string | null | undefined;
562
+ urls?: Record<string, string | null | undefined> | undefined;
563
+ } | null | undefined;
564
+ avatar_url?: string | null | undefined;
565
+ } | undefined;
566
+ body: string;
567
+ parent_id?: string | null | undefined;
568
+ parent_reply_id?: string | null | undefined;
569
+ depth?: number | undefined;
570
+ display_depth?: number | undefined;
571
+ reply_count?: number | undefined;
572
+ children_count?: number | undefined;
573
+ created_at: string;
574
+ updated_at: string;
575
+ likes_count?: number | undefined;
576
+ dislikes_count?: number | undefined;
577
+ user_reaction?: string | {
578
+ kind: string;
579
+ } | null | undefined;
580
+ quoted_reply_id?: string | null | undefined;
581
+ quoted_reply?: {
582
+ id: string;
583
+ author_id: string;
584
+ author?: {
585
+ id: string;
586
+ name: string;
587
+ handle?: string | null | undefined;
588
+ } | null | undefined;
589
+ body: string;
590
+ } | null | undefined;
591
+ quote_data?: (Record<string, unknown> | null) | undefined;
592
+ is_initial_reply?: boolean | undefined;
593
+ meta?: {
594
+ upvotes?: number | undefined;
595
+ is_solution?: boolean | undefined;
596
+ } | undefined;
597
+ media?: {
598
+ id: string;
599
+ uuid: string;
600
+ mime_type: string;
601
+ size: number;
602
+ name: string;
603
+ type: "image" | "video";
604
+ is_image: boolean;
605
+ url?: string | undefined;
606
+ thumb_url?: string | null | undefined;
607
+ preview_url?: string | null | undefined;
608
+ urls?: Record<string, string> | undefined;
609
+ responsive?: unknown;
610
+ playback_url?: string | null | undefined;
611
+ provider?: string | null | undefined;
612
+ playback_id?: string | null | undefined;
613
+ provider_asset_id?: string | null | undefined;
614
+ processing_status?: string | null | undefined;
615
+ duration?: number | null | undefined;
616
+ width?: number | null | undefined;
617
+ height?: number | null | undefined;
618
+ aspect_ratio?: string | null | undefined;
619
+ thumbnail_url?: string | null | undefined;
620
+ }[] | undefined;
621
+ }[]>;
622
+ loading: import("vue").Ref<boolean, boolean>;
623
+ error: import("vue").Ref<string | null, string | null>;
624
+ nextCursor: import("vue").Ref<string | null, string | null>;
625
+ repliesNextCursor: import("vue").Ref<string | null, string | null>;
626
+ spacesLoadingState: import("../index.js").DiscussionLoadingState;
627
+ threadsLoadingState: import("../index.js").DiscussionLoadingState;
628
+ repliesLoadingState: import("../index.js").DiscussionLoadingState;
629
+ loadSpaces: () => Promise<unknown>;
630
+ loadSpaceDetail: (slug: string, options?: {
631
+ signal?: AbortSignal;
632
+ }) => Promise<Space | null>;
633
+ loadSpaceMembership: (spaceId: string) => Promise<SpaceMembership | null>;
634
+ joinSpace: (spaceId: string) => Promise<SpaceMembership>;
635
+ leaveSpace: (spaceId: string) => Promise<SpaceMembership>;
636
+ getSpaceMembership: (spaceId: string) => SpaceMembership | null;
637
+ flattenTree: (tree: Space[]) => Space[];
638
+ rootSpaces: () => Space[];
639
+ leafSpaces: () => Space[];
640
+ loadThreads: (spaceSlug: string, cursor?: string, options?: {
641
+ signal?: AbortSignal;
642
+ sort?: SpaceThreadSort;
643
+ }) => Promise<unknown>;
644
+ loadThread: (spaceSlug: string, threadId: string) => Promise<Thread | null>;
645
+ loadReplies: (threadId: string, cursor?: string, sortBy?: "best" | "top" | "new" | "controversial") => Promise<unknown>;
646
+ createThread: (spaceSlug: string, input: CreateThreadInput) => Promise<unknown>;
647
+ loadTagCategories: (query?: string) => Promise<DiscussionTag[]>;
648
+ createReply: (threadId: string, input: CreateReplyInput) => Promise<unknown>;
649
+ fetchQuote: (replyId: string) => Promise<QuoteResponse>;
650
+ subscribeToThread: (threadId: string) => Promise<unknown>;
651
+ unsubscribeFromThread: (threadId: string) => Promise<unknown>;
652
+ searchThreads: (query: string, spaceSlug?: string) => Promise<unknown>;
653
+ searchThreadsInSpace: (query: string, spaceId: string) => Promise<Thread[]>;
654
+ searchThreadsGlobally: (query: string) => Promise<Thread[]>;
655
+ featuredSpaces: () => Space[];
656
+ getCategories: () => DiscussionCategorySummary[];
657
+ setThreadPinned: (threadId: string, pinned: boolean) => Promise<void>;
658
+ setThreadLocked: (threadId: string, locked: boolean) => Promise<void>;
659
+ moveThread: (threadId: string, toSpaceSlug: string) => Promise<void>;
660
+ updateThread: (threadId: string, updates: UpdateThreadInput) => Promise<unknown>;
661
+ deleteThread: (threadId: string) => Promise<unknown>;
662
+ restoreThread: (threadId: string) => Promise<Thread>;
663
+ deleteReply: (replyId: string) => Promise<void>;
664
+ updateReply: (replyId: string, body: string) => Promise<Reply>;
665
+ toggleReplyReaction: (replyId: string, kind: string) => Promise<void>;
666
+ draftTypes: {
667
+ readonly THREAD: "thread";
668
+ readonly REPLY: "reply";
669
+ };
670
+ saveDraft: (type: string, id: string, content: string, options?: SaveDraftOptions) => Promise<unknown>;
671
+ getDraft: (type: string, id: string) => Promise<unknown>;
672
+ clearDraft: (type: string, id: string) => Promise<void>;
673
+ generateThreadDraftId: (spaceSlug: string) => string;
674
+ generateReplyDraftId: (threadId: string) => string;
675
+ setError: (message: string | null) => void;
676
+ }, "error" | "loading" | "spaces" | "spaceTree" | "currentSpace" | "spaceMemberships" | "spaceMembershipLoading" | "threads" | "currentThread" | "replies" | "nextCursor" | "repliesNextCursor" | "spacesLoadingState" | "threadsLoadingState" | "repliesLoadingState" | "draftTypes">, Pick<{
677
+ spaces: import("vue").Ref<{
678
+ id: string;
679
+ slug: string;
680
+ name: string;
681
+ description?: string | undefined;
682
+ kind: "forum" | "context";
683
+ visibility?: string | undefined;
684
+ meta?: {
685
+ icon?: string | undefined;
686
+ color?: string | undefined;
687
+ category?: string | undefined;
688
+ is_category?: boolean | undefined;
689
+ member_count?: number | undefined;
690
+ online_count?: number | undefined;
691
+ is_featured?: boolean | undefined;
692
+ rules?: string[] | undefined;
693
+ moderation_policy?: string | string[] | {
694
+ summary?: string | undefined;
695
+ rules?: string[] | undefined;
696
+ notes?: string[] | undefined;
697
+ } | undefined;
698
+ } | undefined;
699
+ parent_id?: string | null | undefined;
700
+ depth?: number | undefined;
701
+ children_count?: number | undefined;
702
+ children?: /*elided*/ any[] | undefined;
703
+ breadcrumb?: {
704
+ id: string;
705
+ slug: string;
706
+ name: string;
707
+ }[] | undefined;
708
+ is_leaf?: boolean | undefined;
709
+ thread_count?: number | undefined;
710
+ post_count?: number | undefined;
711
+ last_activity_at?: string | undefined;
712
+ created_at: string;
713
+ }[], Space[] | {
714
+ id: string;
715
+ slug: string;
716
+ name: string;
717
+ description?: string | undefined;
718
+ kind: "forum" | "context";
719
+ visibility?: string | undefined;
720
+ meta?: {
721
+ icon?: string | undefined;
722
+ color?: string | undefined;
723
+ category?: string | undefined;
724
+ is_category?: boolean | undefined;
725
+ member_count?: number | undefined;
726
+ online_count?: number | undefined;
727
+ is_featured?: boolean | undefined;
728
+ rules?: string[] | undefined;
729
+ moderation_policy?: string | string[] | {
730
+ summary?: string | undefined;
731
+ rules?: string[] | undefined;
732
+ notes?: string[] | undefined;
733
+ } | undefined;
734
+ } | undefined;
735
+ parent_id?: string | null | undefined;
736
+ depth?: number | undefined;
737
+ children_count?: number | undefined;
738
+ children?: /*elided*/ any[] | undefined;
739
+ breadcrumb?: {
740
+ id: string;
741
+ slug: string;
742
+ name: string;
743
+ }[] | undefined;
744
+ is_leaf?: boolean | undefined;
745
+ thread_count?: number | undefined;
746
+ post_count?: number | undefined;
747
+ last_activity_at?: string | undefined;
748
+ created_at: string;
749
+ }[]>;
750
+ spaceTree: import("vue").Ref<{
751
+ id: string;
752
+ slug: string;
753
+ name: string;
754
+ description?: string | undefined;
755
+ kind: "forum" | "context";
756
+ visibility?: string | undefined;
757
+ meta?: {
758
+ icon?: string | undefined;
759
+ color?: string | undefined;
760
+ category?: string | undefined;
761
+ is_category?: boolean | undefined;
762
+ member_count?: number | undefined;
763
+ online_count?: number | undefined;
764
+ is_featured?: boolean | undefined;
765
+ rules?: string[] | undefined;
766
+ moderation_policy?: string | string[] | {
767
+ summary?: string | undefined;
768
+ rules?: string[] | undefined;
769
+ notes?: string[] | undefined;
770
+ } | undefined;
771
+ } | undefined;
772
+ parent_id?: string | null | undefined;
773
+ depth?: number | undefined;
774
+ children_count?: number | undefined;
775
+ children?: /*elided*/ any[] | undefined;
776
+ breadcrumb?: {
777
+ id: string;
778
+ slug: string;
779
+ name: string;
780
+ }[] | undefined;
781
+ is_leaf?: boolean | undefined;
782
+ thread_count?: number | undefined;
783
+ post_count?: number | undefined;
784
+ last_activity_at?: string | undefined;
785
+ created_at: string;
786
+ }[], Space[] | {
787
+ id: string;
788
+ slug: string;
789
+ name: string;
790
+ description?: string | undefined;
791
+ kind: "forum" | "context";
792
+ visibility?: string | undefined;
793
+ meta?: {
794
+ icon?: string | undefined;
795
+ color?: string | undefined;
796
+ category?: string | undefined;
797
+ is_category?: boolean | undefined;
798
+ member_count?: number | undefined;
799
+ online_count?: number | undefined;
800
+ is_featured?: boolean | undefined;
801
+ rules?: string[] | undefined;
802
+ moderation_policy?: string | string[] | {
803
+ summary?: string | undefined;
804
+ rules?: string[] | undefined;
805
+ notes?: string[] | undefined;
806
+ } | undefined;
807
+ } | undefined;
808
+ parent_id?: string | null | undefined;
809
+ depth?: number | undefined;
810
+ children_count?: number | undefined;
811
+ children?: /*elided*/ any[] | undefined;
812
+ breadcrumb?: {
813
+ id: string;
814
+ slug: string;
815
+ name: string;
816
+ }[] | undefined;
817
+ is_leaf?: boolean | undefined;
818
+ thread_count?: number | undefined;
819
+ post_count?: number | undefined;
820
+ last_activity_at?: string | undefined;
821
+ created_at: string;
822
+ }[]>;
823
+ currentSpace: import("vue").Ref<{
824
+ id: string;
825
+ slug: string;
826
+ name: string;
827
+ description?: string | undefined;
828
+ kind: "forum" | "context";
829
+ visibility?: string | undefined;
830
+ meta?: {
831
+ icon?: string | undefined;
832
+ color?: string | undefined;
833
+ category?: string | undefined;
834
+ is_category?: boolean | undefined;
835
+ member_count?: number | undefined;
836
+ online_count?: number | undefined;
837
+ is_featured?: boolean | undefined;
838
+ rules?: string[] | undefined;
839
+ moderation_policy?: string | string[] | {
840
+ summary?: string | undefined;
841
+ rules?: string[] | undefined;
842
+ notes?: string[] | undefined;
843
+ } | undefined;
844
+ } | undefined;
845
+ parent_id?: string | null | undefined;
846
+ depth?: number | undefined;
847
+ children_count?: number | undefined;
848
+ children?: /*elided*/ any[] | undefined;
849
+ breadcrumb?: {
850
+ id: string;
851
+ slug: string;
852
+ name: string;
853
+ }[] | undefined;
854
+ is_leaf?: boolean | undefined;
855
+ thread_count?: number | undefined;
856
+ post_count?: number | undefined;
857
+ last_activity_at?: string | undefined;
858
+ created_at: string;
859
+ } | null, Space | {
860
+ id: string;
861
+ slug: string;
862
+ name: string;
863
+ description?: string | undefined;
864
+ kind: "forum" | "context";
865
+ visibility?: string | undefined;
866
+ meta?: {
867
+ icon?: string | undefined;
868
+ color?: string | undefined;
869
+ category?: string | undefined;
870
+ is_category?: boolean | undefined;
871
+ member_count?: number | undefined;
872
+ online_count?: number | undefined;
873
+ is_featured?: boolean | undefined;
874
+ rules?: string[] | undefined;
875
+ moderation_policy?: string | string[] | {
876
+ summary?: string | undefined;
877
+ rules?: string[] | undefined;
878
+ notes?: string[] | undefined;
879
+ } | undefined;
880
+ } | undefined;
881
+ parent_id?: string | null | undefined;
882
+ depth?: number | undefined;
883
+ children_count?: number | undefined;
884
+ children?: /*elided*/ any[] | undefined;
885
+ breadcrumb?: {
886
+ id: string;
887
+ slug: string;
888
+ name: string;
889
+ }[] | undefined;
890
+ is_leaf?: boolean | undefined;
891
+ thread_count?: number | undefined;
892
+ post_count?: number | undefined;
893
+ last_activity_at?: string | undefined;
894
+ created_at: string;
895
+ } | null>;
896
+ spaceMemberships: import("vue").Ref<Record<string, SpaceMembership>, Record<string, SpaceMembership>>;
897
+ spaceMembershipLoading: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
898
+ cleanupRealtimeChannels: () => void;
899
+ threads: import("vue").Ref<{
900
+ id: string;
901
+ space_id: string;
902
+ author_id: string;
903
+ author?: {
904
+ id: string;
905
+ name: string;
906
+ handle?: string | null | undefined;
907
+ avatar?: string | {
908
+ url?: string | null | undefined;
909
+ thumb_url?: string | null | undefined;
910
+ preview_url?: string | null | undefined;
911
+ urls?: Record<string, string | null | undefined> | undefined;
912
+ } | null | undefined;
913
+ avatar_url?: string | null | undefined;
914
+ } | undefined;
915
+ title: string;
916
+ body?: string | undefined;
917
+ slug?: string | undefined;
918
+ audience: "public" | "authenticated" | "private";
919
+ status: "open" | "locked" | "archived";
920
+ is_pinned: boolean;
921
+ reply_count: number;
922
+ last_activity_at: string;
923
+ created_at: string;
924
+ meta?: {
925
+ views?: number | undefined;
926
+ upvotes?: number | undefined;
927
+ tags?: string[] | undefined;
928
+ } | undefined;
929
+ tags?: {
930
+ id: string;
931
+ slug: string;
932
+ label: string;
933
+ thread_count?: number | undefined;
934
+ }[] | undefined;
935
+ is_subscribed?: boolean | undefined;
936
+ media?: {
937
+ id: string;
938
+ uuid: string;
939
+ mime_type: string;
940
+ size: number;
941
+ name: string;
942
+ type: "image" | "video";
943
+ is_image: boolean;
944
+ url?: string | undefined;
945
+ thumb_url?: string | null | undefined;
946
+ preview_url?: string | null | undefined;
947
+ urls?: Record<string, string> | undefined;
948
+ responsive?: unknown;
949
+ playback_url?: string | null | undefined;
950
+ provider?: string | null | undefined;
951
+ playback_id?: string | null | undefined;
952
+ provider_asset_id?: string | null | undefined;
953
+ processing_status?: string | null | undefined;
954
+ duration?: number | null | undefined;
955
+ width?: number | null | undefined;
956
+ height?: number | null | undefined;
957
+ aspect_ratio?: string | null | undefined;
958
+ thumbnail_url?: string | null | undefined;
959
+ }[] | undefined;
960
+ deleted_at?: string | null | undefined;
961
+ }[], Thread[] | {
962
+ id: string;
963
+ space_id: string;
964
+ author_id: string;
965
+ author?: {
966
+ id: string;
967
+ name: string;
968
+ handle?: string | null | undefined;
969
+ avatar?: string | {
970
+ url?: string | null | undefined;
971
+ thumb_url?: string | null | undefined;
972
+ preview_url?: string | null | undefined;
973
+ urls?: Record<string, string | null | undefined> | undefined;
974
+ } | null | undefined;
975
+ avatar_url?: string | null | undefined;
976
+ } | undefined;
977
+ title: string;
978
+ body?: string | undefined;
979
+ slug?: string | undefined;
980
+ audience: "public" | "authenticated" | "private";
981
+ status: "open" | "locked" | "archived";
982
+ is_pinned: boolean;
983
+ reply_count: number;
984
+ last_activity_at: string;
985
+ created_at: string;
986
+ meta?: {
987
+ views?: number | undefined;
988
+ upvotes?: number | undefined;
989
+ tags?: string[] | undefined;
990
+ } | undefined;
991
+ tags?: {
992
+ id: string;
993
+ slug: string;
994
+ label: string;
995
+ thread_count?: number | undefined;
996
+ }[] | undefined;
997
+ is_subscribed?: boolean | undefined;
998
+ media?: {
999
+ id: string;
1000
+ uuid: string;
1001
+ mime_type: string;
1002
+ size: number;
1003
+ name: string;
1004
+ type: "image" | "video";
1005
+ is_image: boolean;
1006
+ url?: string | undefined;
1007
+ thumb_url?: string | null | undefined;
1008
+ preview_url?: string | null | undefined;
1009
+ urls?: Record<string, string> | undefined;
1010
+ responsive?: unknown;
1011
+ playback_url?: string | null | undefined;
1012
+ provider?: string | null | undefined;
1013
+ playback_id?: string | null | undefined;
1014
+ provider_asset_id?: string | null | undefined;
1015
+ processing_status?: string | null | undefined;
1016
+ duration?: number | null | undefined;
1017
+ width?: number | null | undefined;
1018
+ height?: number | null | undefined;
1019
+ aspect_ratio?: string | null | undefined;
1020
+ thumbnail_url?: string | null | undefined;
1021
+ }[] | undefined;
1022
+ deleted_at?: string | null | undefined;
1023
+ }[]>;
1024
+ currentThread: import("vue").Ref<{
1025
+ id: string;
1026
+ space_id: string;
1027
+ author_id: string;
1028
+ author?: {
1029
+ id: string;
1030
+ name: string;
1031
+ handle?: string | null | undefined;
1032
+ avatar?: string | {
1033
+ url?: string | null | undefined;
1034
+ thumb_url?: string | null | undefined;
1035
+ preview_url?: string | null | undefined;
1036
+ urls?: Record<string, string | null | undefined> | undefined;
1037
+ } | null | undefined;
1038
+ avatar_url?: string | null | undefined;
1039
+ } | undefined;
1040
+ title: string;
1041
+ body?: string | undefined;
1042
+ slug?: string | undefined;
1043
+ audience: "public" | "authenticated" | "private";
1044
+ status: "open" | "locked" | "archived";
1045
+ is_pinned: boolean;
1046
+ reply_count: number;
1047
+ last_activity_at: string;
1048
+ created_at: string;
1049
+ meta?: {
1050
+ views?: number | undefined;
1051
+ upvotes?: number | undefined;
1052
+ tags?: string[] | undefined;
1053
+ } | undefined;
1054
+ tags?: {
1055
+ id: string;
1056
+ slug: string;
1057
+ label: string;
1058
+ thread_count?: number | undefined;
1059
+ }[] | undefined;
1060
+ is_subscribed?: boolean | undefined;
1061
+ media?: {
1062
+ id: string;
1063
+ uuid: string;
1064
+ mime_type: string;
1065
+ size: number;
1066
+ name: string;
1067
+ type: "image" | "video";
1068
+ is_image: boolean;
1069
+ url?: string | undefined;
1070
+ thumb_url?: string | null | undefined;
1071
+ preview_url?: string | null | undefined;
1072
+ urls?: Record<string, string> | undefined;
1073
+ responsive?: unknown;
1074
+ playback_url?: string | null | undefined;
1075
+ provider?: string | null | undefined;
1076
+ playback_id?: string | null | undefined;
1077
+ provider_asset_id?: string | null | undefined;
1078
+ processing_status?: string | null | undefined;
1079
+ duration?: number | null | undefined;
1080
+ width?: number | null | undefined;
1081
+ height?: number | null | undefined;
1082
+ aspect_ratio?: string | null | undefined;
1083
+ thumbnail_url?: string | null | undefined;
1084
+ }[] | undefined;
1085
+ deleted_at?: string | null | undefined;
1086
+ } | null, Thread | {
1087
+ id: string;
1088
+ space_id: string;
1089
+ author_id: string;
1090
+ author?: {
1091
+ id: string;
1092
+ name: string;
1093
+ handle?: string | null | undefined;
1094
+ avatar?: string | {
1095
+ url?: string | null | undefined;
1096
+ thumb_url?: string | null | undefined;
1097
+ preview_url?: string | null | undefined;
1098
+ urls?: Record<string, string | null | undefined> | undefined;
1099
+ } | null | undefined;
1100
+ avatar_url?: string | null | undefined;
1101
+ } | undefined;
1102
+ title: string;
1103
+ body?: string | undefined;
1104
+ slug?: string | undefined;
1105
+ audience: "public" | "authenticated" | "private";
1106
+ status: "open" | "locked" | "archived";
1107
+ is_pinned: boolean;
1108
+ reply_count: number;
1109
+ last_activity_at: string;
1110
+ created_at: string;
1111
+ meta?: {
1112
+ views?: number | undefined;
1113
+ upvotes?: number | undefined;
1114
+ tags?: string[] | undefined;
1115
+ } | undefined;
1116
+ tags?: {
1117
+ id: string;
1118
+ slug: string;
1119
+ label: string;
1120
+ thread_count?: number | undefined;
1121
+ }[] | undefined;
1122
+ is_subscribed?: boolean | undefined;
1123
+ media?: {
1124
+ id: string;
1125
+ uuid: string;
1126
+ mime_type: string;
1127
+ size: number;
1128
+ name: string;
1129
+ type: "image" | "video";
1130
+ is_image: boolean;
1131
+ url?: string | undefined;
1132
+ thumb_url?: string | null | undefined;
1133
+ preview_url?: string | null | undefined;
1134
+ urls?: Record<string, string> | undefined;
1135
+ responsive?: unknown;
1136
+ playback_url?: string | null | undefined;
1137
+ provider?: string | null | undefined;
1138
+ playback_id?: string | null | undefined;
1139
+ provider_asset_id?: string | null | undefined;
1140
+ processing_status?: string | null | undefined;
1141
+ duration?: number | null | undefined;
1142
+ width?: number | null | undefined;
1143
+ height?: number | null | undefined;
1144
+ aspect_ratio?: string | null | undefined;
1145
+ thumbnail_url?: string | null | undefined;
1146
+ }[] | undefined;
1147
+ deleted_at?: string | null | undefined;
1148
+ } | null>;
1149
+ replies: import("vue").Ref<{
1150
+ id: string;
1151
+ thread_id: string;
1152
+ author_id: string;
1153
+ author?: {
1154
+ id: string;
1155
+ name: string;
1156
+ handle?: string | null | undefined;
1157
+ avatar?: string | {
1158
+ url?: string | null | undefined;
1159
+ thumb_url?: string | null | undefined;
1160
+ preview_url?: string | null | undefined;
1161
+ urls?: Record<string, string | null | undefined> | undefined;
1162
+ } | null | undefined;
1163
+ avatar_url?: string | null | undefined;
1164
+ } | undefined;
1165
+ body: string;
1166
+ parent_id?: string | null | undefined;
1167
+ parent_reply_id?: string | null | undefined;
1168
+ depth?: number | undefined;
1169
+ display_depth?: number | undefined;
1170
+ reply_count?: number | undefined;
1171
+ children_count?: number | undefined;
1172
+ created_at: string;
1173
+ updated_at: string;
1174
+ likes_count?: number | undefined;
1175
+ dislikes_count?: number | undefined;
1176
+ user_reaction?: string | {
1177
+ kind: string;
1178
+ } | null | undefined;
1179
+ quoted_reply_id?: string | null | undefined;
1180
+ quoted_reply?: {
1181
+ id: string;
1182
+ author_id: string;
1183
+ author?: {
1184
+ id: string;
1185
+ name: string;
1186
+ handle?: string | null | undefined;
1187
+ } | null | undefined;
1188
+ body: string;
1189
+ } | null | undefined;
1190
+ quote_data?: (Record<string, unknown> | null) | undefined;
1191
+ is_initial_reply?: boolean | undefined;
1192
+ meta?: {
1193
+ upvotes?: number | undefined;
1194
+ is_solution?: boolean | undefined;
1195
+ } | undefined;
1196
+ media?: {
1197
+ id: string;
1198
+ uuid: string;
1199
+ mime_type: string;
1200
+ size: number;
1201
+ name: string;
1202
+ type: "image" | "video";
1203
+ is_image: boolean;
1204
+ url?: string | undefined;
1205
+ thumb_url?: string | null | undefined;
1206
+ preview_url?: string | null | undefined;
1207
+ urls?: Record<string, string> | undefined;
1208
+ responsive?: unknown;
1209
+ playback_url?: string | null | undefined;
1210
+ provider?: string | null | undefined;
1211
+ playback_id?: string | null | undefined;
1212
+ provider_asset_id?: string | null | undefined;
1213
+ processing_status?: string | null | undefined;
1214
+ duration?: number | null | undefined;
1215
+ width?: number | null | undefined;
1216
+ height?: number | null | undefined;
1217
+ aspect_ratio?: string | null | undefined;
1218
+ thumbnail_url?: string | null | undefined;
1219
+ }[] | undefined;
1220
+ }[], Reply[] | {
1221
+ id: string;
1222
+ thread_id: string;
1223
+ author_id: string;
1224
+ author?: {
1225
+ id: string;
1226
+ name: string;
1227
+ handle?: string | null | undefined;
1228
+ avatar?: string | {
1229
+ url?: string | null | undefined;
1230
+ thumb_url?: string | null | undefined;
1231
+ preview_url?: string | null | undefined;
1232
+ urls?: Record<string, string | null | undefined> | undefined;
1233
+ } | null | undefined;
1234
+ avatar_url?: string | null | undefined;
1235
+ } | undefined;
1236
+ body: string;
1237
+ parent_id?: string | null | undefined;
1238
+ parent_reply_id?: string | null | undefined;
1239
+ depth?: number | undefined;
1240
+ display_depth?: number | undefined;
1241
+ reply_count?: number | undefined;
1242
+ children_count?: number | undefined;
1243
+ created_at: string;
1244
+ updated_at: string;
1245
+ likes_count?: number | undefined;
1246
+ dislikes_count?: number | undefined;
1247
+ user_reaction?: string | {
1248
+ kind: string;
1249
+ } | null | undefined;
1250
+ quoted_reply_id?: string | null | undefined;
1251
+ quoted_reply?: {
1252
+ id: string;
1253
+ author_id: string;
1254
+ author?: {
1255
+ id: string;
1256
+ name: string;
1257
+ handle?: string | null | undefined;
1258
+ } | null | undefined;
1259
+ body: string;
1260
+ } | null | undefined;
1261
+ quote_data?: (Record<string, unknown> | null) | undefined;
1262
+ is_initial_reply?: boolean | undefined;
1263
+ meta?: {
1264
+ upvotes?: number | undefined;
1265
+ is_solution?: boolean | undefined;
1266
+ } | undefined;
1267
+ media?: {
1268
+ id: string;
1269
+ uuid: string;
1270
+ mime_type: string;
1271
+ size: number;
1272
+ name: string;
1273
+ type: "image" | "video";
1274
+ is_image: boolean;
1275
+ url?: string | undefined;
1276
+ thumb_url?: string | null | undefined;
1277
+ preview_url?: string | null | undefined;
1278
+ urls?: Record<string, string> | undefined;
1279
+ responsive?: unknown;
1280
+ playback_url?: string | null | undefined;
1281
+ provider?: string | null | undefined;
1282
+ playback_id?: string | null | undefined;
1283
+ provider_asset_id?: string | null | undefined;
1284
+ processing_status?: string | null | undefined;
1285
+ duration?: number | null | undefined;
1286
+ width?: number | null | undefined;
1287
+ height?: number | null | undefined;
1288
+ aspect_ratio?: string | null | undefined;
1289
+ thumbnail_url?: string | null | undefined;
1290
+ }[] | undefined;
1291
+ }[]>;
1292
+ loading: import("vue").Ref<boolean, boolean>;
1293
+ error: import("vue").Ref<string | null, string | null>;
1294
+ nextCursor: import("vue").Ref<string | null, string | null>;
1295
+ repliesNextCursor: import("vue").Ref<string | null, string | null>;
1296
+ spacesLoadingState: import("../index.js").DiscussionLoadingState;
1297
+ threadsLoadingState: import("../index.js").DiscussionLoadingState;
1298
+ repliesLoadingState: import("../index.js").DiscussionLoadingState;
1299
+ loadSpaces: () => Promise<unknown>;
1300
+ loadSpaceDetail: (slug: string, options?: {
1301
+ signal?: AbortSignal;
1302
+ }) => Promise<Space | null>;
1303
+ loadSpaceMembership: (spaceId: string) => Promise<SpaceMembership | null>;
1304
+ joinSpace: (spaceId: string) => Promise<SpaceMembership>;
1305
+ leaveSpace: (spaceId: string) => Promise<SpaceMembership>;
1306
+ getSpaceMembership: (spaceId: string) => SpaceMembership | null;
1307
+ flattenTree: (tree: Space[]) => Space[];
1308
+ rootSpaces: () => Space[];
1309
+ leafSpaces: () => Space[];
1310
+ loadThreads: (spaceSlug: string, cursor?: string, options?: {
1311
+ signal?: AbortSignal;
1312
+ sort?: SpaceThreadSort;
1313
+ }) => Promise<unknown>;
1314
+ loadThread: (spaceSlug: string, threadId: string) => Promise<Thread | null>;
1315
+ loadReplies: (threadId: string, cursor?: string, sortBy?: "best" | "top" | "new" | "controversial") => Promise<unknown>;
1316
+ createThread: (spaceSlug: string, input: CreateThreadInput) => Promise<unknown>;
1317
+ loadTagCategories: (query?: string) => Promise<DiscussionTag[]>;
1318
+ createReply: (threadId: string, input: CreateReplyInput) => Promise<unknown>;
1319
+ fetchQuote: (replyId: string) => Promise<QuoteResponse>;
1320
+ subscribeToThread: (threadId: string) => Promise<unknown>;
1321
+ unsubscribeFromThread: (threadId: string) => Promise<unknown>;
1322
+ searchThreads: (query: string, spaceSlug?: string) => Promise<unknown>;
1323
+ searchThreadsInSpace: (query: string, spaceId: string) => Promise<Thread[]>;
1324
+ searchThreadsGlobally: (query: string) => Promise<Thread[]>;
1325
+ featuredSpaces: () => Space[];
1326
+ getCategories: () => DiscussionCategorySummary[];
1327
+ setThreadPinned: (threadId: string, pinned: boolean) => Promise<void>;
1328
+ setThreadLocked: (threadId: string, locked: boolean) => Promise<void>;
1329
+ moveThread: (threadId: string, toSpaceSlug: string) => Promise<void>;
1330
+ updateThread: (threadId: string, updates: UpdateThreadInput) => Promise<unknown>;
1331
+ deleteThread: (threadId: string) => Promise<unknown>;
1332
+ restoreThread: (threadId: string) => Promise<Thread>;
1333
+ deleteReply: (replyId: string) => Promise<void>;
1334
+ updateReply: (replyId: string, body: string) => Promise<Reply>;
1335
+ toggleReplyReaction: (replyId: string, kind: string) => Promise<void>;
1336
+ draftTypes: {
1337
+ readonly THREAD: "thread";
1338
+ readonly REPLY: "reply";
1339
+ };
1340
+ saveDraft: (type: string, id: string, content: string, options?: SaveDraftOptions) => Promise<unknown>;
1341
+ getDraft: (type: string, id: string) => Promise<unknown>;
1342
+ clearDraft: (type: string, id: string) => Promise<void>;
1343
+ generateThreadDraftId: (spaceSlug: string) => string;
1344
+ generateReplyDraftId: (threadId: string) => string;
1345
+ setError: (message: string | null) => void;
1346
+ }, never>, Pick<{
1347
+ spaces: import("vue").Ref<{
1348
+ id: string;
1349
+ slug: string;
1350
+ name: string;
1351
+ description?: string | undefined;
1352
+ kind: "forum" | "context";
1353
+ visibility?: string | undefined;
1354
+ meta?: {
1355
+ icon?: string | undefined;
1356
+ color?: string | undefined;
1357
+ category?: string | undefined;
1358
+ is_category?: boolean | undefined;
1359
+ member_count?: number | undefined;
1360
+ online_count?: number | undefined;
1361
+ is_featured?: boolean | undefined;
1362
+ rules?: string[] | undefined;
1363
+ moderation_policy?: string | string[] | {
1364
+ summary?: string | undefined;
1365
+ rules?: string[] | undefined;
1366
+ notes?: string[] | undefined;
1367
+ } | undefined;
1368
+ } | undefined;
1369
+ parent_id?: string | null | undefined;
1370
+ depth?: number | undefined;
1371
+ children_count?: number | undefined;
1372
+ children?: /*elided*/ any[] | undefined;
1373
+ breadcrumb?: {
1374
+ id: string;
1375
+ slug: string;
1376
+ name: string;
1377
+ }[] | undefined;
1378
+ is_leaf?: boolean | undefined;
1379
+ thread_count?: number | undefined;
1380
+ post_count?: number | undefined;
1381
+ last_activity_at?: string | undefined;
1382
+ created_at: string;
1383
+ }[], Space[] | {
1384
+ id: string;
1385
+ slug: string;
1386
+ name: string;
1387
+ description?: string | undefined;
1388
+ kind: "forum" | "context";
1389
+ visibility?: string | undefined;
1390
+ meta?: {
1391
+ icon?: string | undefined;
1392
+ color?: string | undefined;
1393
+ category?: string | undefined;
1394
+ is_category?: boolean | undefined;
1395
+ member_count?: number | undefined;
1396
+ online_count?: number | undefined;
1397
+ is_featured?: boolean | undefined;
1398
+ rules?: string[] | undefined;
1399
+ moderation_policy?: string | string[] | {
1400
+ summary?: string | undefined;
1401
+ rules?: string[] | undefined;
1402
+ notes?: string[] | undefined;
1403
+ } | undefined;
1404
+ } | undefined;
1405
+ parent_id?: string | null | undefined;
1406
+ depth?: number | undefined;
1407
+ children_count?: number | undefined;
1408
+ children?: /*elided*/ any[] | undefined;
1409
+ breadcrumb?: {
1410
+ id: string;
1411
+ slug: string;
1412
+ name: string;
1413
+ }[] | undefined;
1414
+ is_leaf?: boolean | undefined;
1415
+ thread_count?: number | undefined;
1416
+ post_count?: number | undefined;
1417
+ last_activity_at?: string | undefined;
1418
+ created_at: string;
1419
+ }[]>;
1420
+ spaceTree: import("vue").Ref<{
1421
+ id: string;
1422
+ slug: string;
1423
+ name: string;
1424
+ description?: string | undefined;
1425
+ kind: "forum" | "context";
1426
+ visibility?: string | undefined;
1427
+ meta?: {
1428
+ icon?: string | undefined;
1429
+ color?: string | undefined;
1430
+ category?: string | undefined;
1431
+ is_category?: boolean | undefined;
1432
+ member_count?: number | undefined;
1433
+ online_count?: number | undefined;
1434
+ is_featured?: boolean | undefined;
1435
+ rules?: string[] | undefined;
1436
+ moderation_policy?: string | string[] | {
1437
+ summary?: string | undefined;
1438
+ rules?: string[] | undefined;
1439
+ notes?: string[] | undefined;
1440
+ } | undefined;
1441
+ } | undefined;
1442
+ parent_id?: string | null | undefined;
1443
+ depth?: number | undefined;
1444
+ children_count?: number | undefined;
1445
+ children?: /*elided*/ any[] | undefined;
1446
+ breadcrumb?: {
1447
+ id: string;
1448
+ slug: string;
1449
+ name: string;
1450
+ }[] | undefined;
1451
+ is_leaf?: boolean | undefined;
1452
+ thread_count?: number | undefined;
1453
+ post_count?: number | undefined;
1454
+ last_activity_at?: string | undefined;
1455
+ created_at: string;
1456
+ }[], Space[] | {
1457
+ id: string;
1458
+ slug: string;
1459
+ name: string;
1460
+ description?: string | undefined;
1461
+ kind: "forum" | "context";
1462
+ visibility?: string | undefined;
1463
+ meta?: {
1464
+ icon?: string | undefined;
1465
+ color?: string | undefined;
1466
+ category?: string | undefined;
1467
+ is_category?: boolean | undefined;
1468
+ member_count?: number | undefined;
1469
+ online_count?: number | undefined;
1470
+ is_featured?: boolean | undefined;
1471
+ rules?: string[] | undefined;
1472
+ moderation_policy?: string | string[] | {
1473
+ summary?: string | undefined;
1474
+ rules?: string[] | undefined;
1475
+ notes?: string[] | undefined;
1476
+ } | undefined;
1477
+ } | undefined;
1478
+ parent_id?: string | null | undefined;
1479
+ depth?: number | undefined;
1480
+ children_count?: number | undefined;
1481
+ children?: /*elided*/ any[] | undefined;
1482
+ breadcrumb?: {
1483
+ id: string;
1484
+ slug: string;
1485
+ name: string;
1486
+ }[] | undefined;
1487
+ is_leaf?: boolean | undefined;
1488
+ thread_count?: number | undefined;
1489
+ post_count?: number | undefined;
1490
+ last_activity_at?: string | undefined;
1491
+ created_at: string;
1492
+ }[]>;
1493
+ currentSpace: import("vue").Ref<{
1494
+ id: string;
1495
+ slug: string;
1496
+ name: string;
1497
+ description?: string | undefined;
1498
+ kind: "forum" | "context";
1499
+ visibility?: string | undefined;
1500
+ meta?: {
1501
+ icon?: string | undefined;
1502
+ color?: string | undefined;
1503
+ category?: string | undefined;
1504
+ is_category?: boolean | undefined;
1505
+ member_count?: number | undefined;
1506
+ online_count?: number | undefined;
1507
+ is_featured?: boolean | undefined;
1508
+ rules?: string[] | undefined;
1509
+ moderation_policy?: string | string[] | {
1510
+ summary?: string | undefined;
1511
+ rules?: string[] | undefined;
1512
+ notes?: string[] | undefined;
1513
+ } | undefined;
1514
+ } | undefined;
1515
+ parent_id?: string | null | undefined;
1516
+ depth?: number | undefined;
1517
+ children_count?: number | undefined;
1518
+ children?: /*elided*/ any[] | undefined;
1519
+ breadcrumb?: {
1520
+ id: string;
1521
+ slug: string;
1522
+ name: string;
1523
+ }[] | undefined;
1524
+ is_leaf?: boolean | undefined;
1525
+ thread_count?: number | undefined;
1526
+ post_count?: number | undefined;
1527
+ last_activity_at?: string | undefined;
1528
+ created_at: string;
1529
+ } | null, Space | {
1530
+ id: string;
1531
+ slug: string;
1532
+ name: string;
1533
+ description?: string | undefined;
1534
+ kind: "forum" | "context";
1535
+ visibility?: string | undefined;
1536
+ meta?: {
1537
+ icon?: string | undefined;
1538
+ color?: string | undefined;
1539
+ category?: string | undefined;
1540
+ is_category?: boolean | undefined;
1541
+ member_count?: number | undefined;
1542
+ online_count?: number | undefined;
1543
+ is_featured?: boolean | undefined;
1544
+ rules?: string[] | undefined;
1545
+ moderation_policy?: string | string[] | {
1546
+ summary?: string | undefined;
1547
+ rules?: string[] | undefined;
1548
+ notes?: string[] | undefined;
1549
+ } | undefined;
1550
+ } | undefined;
1551
+ parent_id?: string | null | undefined;
1552
+ depth?: number | undefined;
1553
+ children_count?: number | undefined;
1554
+ children?: /*elided*/ any[] | undefined;
1555
+ breadcrumb?: {
1556
+ id: string;
1557
+ slug: string;
1558
+ name: string;
1559
+ }[] | undefined;
1560
+ is_leaf?: boolean | undefined;
1561
+ thread_count?: number | undefined;
1562
+ post_count?: number | undefined;
1563
+ last_activity_at?: string | undefined;
1564
+ created_at: string;
1565
+ } | null>;
1566
+ spaceMemberships: import("vue").Ref<Record<string, SpaceMembership>, Record<string, SpaceMembership>>;
1567
+ spaceMembershipLoading: import("vue").Ref<Record<string, boolean>, Record<string, boolean>>;
1568
+ cleanupRealtimeChannels: () => void;
1569
+ threads: import("vue").Ref<{
1570
+ id: string;
1571
+ space_id: string;
1572
+ author_id: string;
1573
+ author?: {
1574
+ id: string;
1575
+ name: string;
1576
+ handle?: string | null | undefined;
1577
+ avatar?: string | {
1578
+ url?: string | null | undefined;
1579
+ thumb_url?: string | null | undefined;
1580
+ preview_url?: string | null | undefined;
1581
+ urls?: Record<string, string | null | undefined> | undefined;
1582
+ } | null | undefined;
1583
+ avatar_url?: string | null | undefined;
1584
+ } | undefined;
1585
+ title: string;
1586
+ body?: string | undefined;
1587
+ slug?: string | undefined;
1588
+ audience: "public" | "authenticated" | "private";
1589
+ status: "open" | "locked" | "archived";
1590
+ is_pinned: boolean;
1591
+ reply_count: number;
1592
+ last_activity_at: string;
1593
+ created_at: string;
1594
+ meta?: {
1595
+ views?: number | undefined;
1596
+ upvotes?: number | undefined;
1597
+ tags?: string[] | undefined;
1598
+ } | undefined;
1599
+ tags?: {
1600
+ id: string;
1601
+ slug: string;
1602
+ label: string;
1603
+ thread_count?: number | undefined;
1604
+ }[] | undefined;
1605
+ is_subscribed?: boolean | undefined;
1606
+ media?: {
1607
+ id: string;
1608
+ uuid: string;
1609
+ mime_type: string;
1610
+ size: number;
1611
+ name: string;
1612
+ type: "image" | "video";
1613
+ is_image: boolean;
1614
+ url?: string | undefined;
1615
+ thumb_url?: string | null | undefined;
1616
+ preview_url?: string | null | undefined;
1617
+ urls?: Record<string, string> | undefined;
1618
+ responsive?: unknown;
1619
+ playback_url?: string | null | undefined;
1620
+ provider?: string | null | undefined;
1621
+ playback_id?: string | null | undefined;
1622
+ provider_asset_id?: string | null | undefined;
1623
+ processing_status?: string | null | undefined;
1624
+ duration?: number | null | undefined;
1625
+ width?: number | null | undefined;
1626
+ height?: number | null | undefined;
1627
+ aspect_ratio?: string | null | undefined;
1628
+ thumbnail_url?: string | null | undefined;
1629
+ }[] | undefined;
1630
+ deleted_at?: string | null | undefined;
1631
+ }[], Thread[] | {
1632
+ id: string;
1633
+ space_id: string;
1634
+ author_id: string;
1635
+ author?: {
1636
+ id: string;
1637
+ name: string;
1638
+ handle?: string | null | undefined;
1639
+ avatar?: string | {
1640
+ url?: string | null | undefined;
1641
+ thumb_url?: string | null | undefined;
1642
+ preview_url?: string | null | undefined;
1643
+ urls?: Record<string, string | null | undefined> | undefined;
1644
+ } | null | undefined;
1645
+ avatar_url?: string | null | undefined;
1646
+ } | undefined;
1647
+ title: string;
1648
+ body?: string | undefined;
1649
+ slug?: string | undefined;
1650
+ audience: "public" | "authenticated" | "private";
1651
+ status: "open" | "locked" | "archived";
1652
+ is_pinned: boolean;
1653
+ reply_count: number;
1654
+ last_activity_at: string;
1655
+ created_at: string;
1656
+ meta?: {
1657
+ views?: number | undefined;
1658
+ upvotes?: number | undefined;
1659
+ tags?: string[] | undefined;
1660
+ } | undefined;
1661
+ tags?: {
1662
+ id: string;
1663
+ slug: string;
1664
+ label: string;
1665
+ thread_count?: number | undefined;
1666
+ }[] | undefined;
1667
+ is_subscribed?: boolean | undefined;
1668
+ media?: {
1669
+ id: string;
1670
+ uuid: string;
1671
+ mime_type: string;
1672
+ size: number;
1673
+ name: string;
1674
+ type: "image" | "video";
1675
+ is_image: boolean;
1676
+ url?: string | undefined;
1677
+ thumb_url?: string | null | undefined;
1678
+ preview_url?: string | null | undefined;
1679
+ urls?: Record<string, string> | undefined;
1680
+ responsive?: unknown;
1681
+ playback_url?: string | null | undefined;
1682
+ provider?: string | null | undefined;
1683
+ playback_id?: string | null | undefined;
1684
+ provider_asset_id?: string | null | undefined;
1685
+ processing_status?: string | null | undefined;
1686
+ duration?: number | null | undefined;
1687
+ width?: number | null | undefined;
1688
+ height?: number | null | undefined;
1689
+ aspect_ratio?: string | null | undefined;
1690
+ thumbnail_url?: string | null | undefined;
1691
+ }[] | undefined;
1692
+ deleted_at?: string | null | undefined;
1693
+ }[]>;
1694
+ currentThread: import("vue").Ref<{
1695
+ id: string;
1696
+ space_id: string;
1697
+ author_id: string;
1698
+ author?: {
1699
+ id: string;
1700
+ name: string;
1701
+ handle?: string | null | undefined;
1702
+ avatar?: string | {
1703
+ url?: string | null | undefined;
1704
+ thumb_url?: string | null | undefined;
1705
+ preview_url?: string | null | undefined;
1706
+ urls?: Record<string, string | null | undefined> | undefined;
1707
+ } | null | undefined;
1708
+ avatar_url?: string | null | undefined;
1709
+ } | undefined;
1710
+ title: string;
1711
+ body?: string | undefined;
1712
+ slug?: string | undefined;
1713
+ audience: "public" | "authenticated" | "private";
1714
+ status: "open" | "locked" | "archived";
1715
+ is_pinned: boolean;
1716
+ reply_count: number;
1717
+ last_activity_at: string;
1718
+ created_at: string;
1719
+ meta?: {
1720
+ views?: number | undefined;
1721
+ upvotes?: number | undefined;
1722
+ tags?: string[] | undefined;
1723
+ } | undefined;
1724
+ tags?: {
1725
+ id: string;
1726
+ slug: string;
1727
+ label: string;
1728
+ thread_count?: number | undefined;
1729
+ }[] | undefined;
1730
+ is_subscribed?: boolean | undefined;
1731
+ media?: {
1732
+ id: string;
1733
+ uuid: string;
1734
+ mime_type: string;
1735
+ size: number;
1736
+ name: string;
1737
+ type: "image" | "video";
1738
+ is_image: boolean;
1739
+ url?: string | undefined;
1740
+ thumb_url?: string | null | undefined;
1741
+ preview_url?: string | null | undefined;
1742
+ urls?: Record<string, string> | undefined;
1743
+ responsive?: unknown;
1744
+ playback_url?: string | null | undefined;
1745
+ provider?: string | null | undefined;
1746
+ playback_id?: string | null | undefined;
1747
+ provider_asset_id?: string | null | undefined;
1748
+ processing_status?: string | null | undefined;
1749
+ duration?: number | null | undefined;
1750
+ width?: number | null | undefined;
1751
+ height?: number | null | undefined;
1752
+ aspect_ratio?: string | null | undefined;
1753
+ thumbnail_url?: string | null | undefined;
1754
+ }[] | undefined;
1755
+ deleted_at?: string | null | undefined;
1756
+ } | null, Thread | {
1757
+ id: string;
1758
+ space_id: string;
1759
+ author_id: string;
1760
+ author?: {
1761
+ id: string;
1762
+ name: string;
1763
+ handle?: string | null | undefined;
1764
+ avatar?: string | {
1765
+ url?: string | null | undefined;
1766
+ thumb_url?: string | null | undefined;
1767
+ preview_url?: string | null | undefined;
1768
+ urls?: Record<string, string | null | undefined> | undefined;
1769
+ } | null | undefined;
1770
+ avatar_url?: string | null | undefined;
1771
+ } | undefined;
1772
+ title: string;
1773
+ body?: string | undefined;
1774
+ slug?: string | undefined;
1775
+ audience: "public" | "authenticated" | "private";
1776
+ status: "open" | "locked" | "archived";
1777
+ is_pinned: boolean;
1778
+ reply_count: number;
1779
+ last_activity_at: string;
1780
+ created_at: string;
1781
+ meta?: {
1782
+ views?: number | undefined;
1783
+ upvotes?: number | undefined;
1784
+ tags?: string[] | undefined;
1785
+ } | undefined;
1786
+ tags?: {
1787
+ id: string;
1788
+ slug: string;
1789
+ label: string;
1790
+ thread_count?: number | undefined;
1791
+ }[] | undefined;
1792
+ is_subscribed?: boolean | undefined;
1793
+ media?: {
1794
+ id: string;
1795
+ uuid: string;
1796
+ mime_type: string;
1797
+ size: number;
1798
+ name: string;
1799
+ type: "image" | "video";
1800
+ is_image: boolean;
1801
+ url?: string | undefined;
1802
+ thumb_url?: string | null | undefined;
1803
+ preview_url?: string | null | undefined;
1804
+ urls?: Record<string, string> | undefined;
1805
+ responsive?: unknown;
1806
+ playback_url?: string | null | undefined;
1807
+ provider?: string | null | undefined;
1808
+ playback_id?: string | null | undefined;
1809
+ provider_asset_id?: string | null | undefined;
1810
+ processing_status?: string | null | undefined;
1811
+ duration?: number | null | undefined;
1812
+ width?: number | null | undefined;
1813
+ height?: number | null | undefined;
1814
+ aspect_ratio?: string | null | undefined;
1815
+ thumbnail_url?: string | null | undefined;
1816
+ }[] | undefined;
1817
+ deleted_at?: string | null | undefined;
1818
+ } | null>;
1819
+ replies: import("vue").Ref<{
1820
+ id: string;
1821
+ thread_id: string;
1822
+ author_id: string;
1823
+ author?: {
1824
+ id: string;
1825
+ name: string;
1826
+ handle?: string | null | undefined;
1827
+ avatar?: string | {
1828
+ url?: string | null | undefined;
1829
+ thumb_url?: string | null | undefined;
1830
+ preview_url?: string | null | undefined;
1831
+ urls?: Record<string, string | null | undefined> | undefined;
1832
+ } | null | undefined;
1833
+ avatar_url?: string | null | undefined;
1834
+ } | undefined;
1835
+ body: string;
1836
+ parent_id?: string | null | undefined;
1837
+ parent_reply_id?: string | null | undefined;
1838
+ depth?: number | undefined;
1839
+ display_depth?: number | undefined;
1840
+ reply_count?: number | undefined;
1841
+ children_count?: number | undefined;
1842
+ created_at: string;
1843
+ updated_at: string;
1844
+ likes_count?: number | undefined;
1845
+ dislikes_count?: number | undefined;
1846
+ user_reaction?: string | {
1847
+ kind: string;
1848
+ } | null | undefined;
1849
+ quoted_reply_id?: string | null | undefined;
1850
+ quoted_reply?: {
1851
+ id: string;
1852
+ author_id: string;
1853
+ author?: {
1854
+ id: string;
1855
+ name: string;
1856
+ handle?: string | null | undefined;
1857
+ } | null | undefined;
1858
+ body: string;
1859
+ } | null | undefined;
1860
+ quote_data?: (Record<string, unknown> | null) | undefined;
1861
+ is_initial_reply?: boolean | undefined;
1862
+ meta?: {
1863
+ upvotes?: number | undefined;
1864
+ is_solution?: boolean | undefined;
1865
+ } | undefined;
1866
+ media?: {
1867
+ id: string;
1868
+ uuid: string;
1869
+ mime_type: string;
1870
+ size: number;
1871
+ name: string;
1872
+ type: "image" | "video";
1873
+ is_image: boolean;
1874
+ url?: string | undefined;
1875
+ thumb_url?: string | null | undefined;
1876
+ preview_url?: string | null | undefined;
1877
+ urls?: Record<string, string> | undefined;
1878
+ responsive?: unknown;
1879
+ playback_url?: string | null | undefined;
1880
+ provider?: string | null | undefined;
1881
+ playback_id?: string | null | undefined;
1882
+ provider_asset_id?: string | null | undefined;
1883
+ processing_status?: string | null | undefined;
1884
+ duration?: number | null | undefined;
1885
+ width?: number | null | undefined;
1886
+ height?: number | null | undefined;
1887
+ aspect_ratio?: string | null | undefined;
1888
+ thumbnail_url?: string | null | undefined;
1889
+ }[] | undefined;
1890
+ }[], Reply[] | {
1891
+ id: string;
1892
+ thread_id: string;
1893
+ author_id: string;
1894
+ author?: {
1895
+ id: string;
1896
+ name: string;
1897
+ handle?: string | null | undefined;
1898
+ avatar?: string | {
1899
+ url?: string | null | undefined;
1900
+ thumb_url?: string | null | undefined;
1901
+ preview_url?: string | null | undefined;
1902
+ urls?: Record<string, string | null | undefined> | undefined;
1903
+ } | null | undefined;
1904
+ avatar_url?: string | null | undefined;
1905
+ } | undefined;
1906
+ body: string;
1907
+ parent_id?: string | null | undefined;
1908
+ parent_reply_id?: string | null | undefined;
1909
+ depth?: number | undefined;
1910
+ display_depth?: number | undefined;
1911
+ reply_count?: number | undefined;
1912
+ children_count?: number | undefined;
1913
+ created_at: string;
1914
+ updated_at: string;
1915
+ likes_count?: number | undefined;
1916
+ dislikes_count?: number | undefined;
1917
+ user_reaction?: string | {
1918
+ kind: string;
1919
+ } | null | undefined;
1920
+ quoted_reply_id?: string | null | undefined;
1921
+ quoted_reply?: {
1922
+ id: string;
1923
+ author_id: string;
1924
+ author?: {
1925
+ id: string;
1926
+ name: string;
1927
+ handle?: string | null | undefined;
1928
+ } | null | undefined;
1929
+ body: string;
1930
+ } | null | undefined;
1931
+ quote_data?: (Record<string, unknown> | null) | undefined;
1932
+ is_initial_reply?: boolean | undefined;
1933
+ meta?: {
1934
+ upvotes?: number | undefined;
1935
+ is_solution?: boolean | undefined;
1936
+ } | undefined;
1937
+ media?: {
1938
+ id: string;
1939
+ uuid: string;
1940
+ mime_type: string;
1941
+ size: number;
1942
+ name: string;
1943
+ type: "image" | "video";
1944
+ is_image: boolean;
1945
+ url?: string | undefined;
1946
+ thumb_url?: string | null | undefined;
1947
+ preview_url?: string | null | undefined;
1948
+ urls?: Record<string, string> | undefined;
1949
+ responsive?: unknown;
1950
+ playback_url?: string | null | undefined;
1951
+ provider?: string | null | undefined;
1952
+ playback_id?: string | null | undefined;
1953
+ provider_asset_id?: string | null | undefined;
1954
+ processing_status?: string | null | undefined;
1955
+ duration?: number | null | undefined;
1956
+ width?: number | null | undefined;
1957
+ height?: number | null | undefined;
1958
+ aspect_ratio?: string | null | undefined;
1959
+ thumbnail_url?: string | null | undefined;
1960
+ }[] | undefined;
1961
+ }[]>;
1962
+ loading: import("vue").Ref<boolean, boolean>;
1963
+ error: import("vue").Ref<string | null, string | null>;
1964
+ nextCursor: import("vue").Ref<string | null, string | null>;
1965
+ repliesNextCursor: import("vue").Ref<string | null, string | null>;
1966
+ spacesLoadingState: import("../index.js").DiscussionLoadingState;
1967
+ threadsLoadingState: import("../index.js").DiscussionLoadingState;
1968
+ repliesLoadingState: import("../index.js").DiscussionLoadingState;
1969
+ loadSpaces: () => Promise<unknown>;
1970
+ loadSpaceDetail: (slug: string, options?: {
1971
+ signal?: AbortSignal;
1972
+ }) => Promise<Space | null>;
1973
+ loadSpaceMembership: (spaceId: string) => Promise<SpaceMembership | null>;
1974
+ joinSpace: (spaceId: string) => Promise<SpaceMembership>;
1975
+ leaveSpace: (spaceId: string) => Promise<SpaceMembership>;
1976
+ getSpaceMembership: (spaceId: string) => SpaceMembership | null;
1977
+ flattenTree: (tree: Space[]) => Space[];
1978
+ rootSpaces: () => Space[];
1979
+ leafSpaces: () => Space[];
1980
+ loadThreads: (spaceSlug: string, cursor?: string, options?: {
1981
+ signal?: AbortSignal;
1982
+ sort?: SpaceThreadSort;
1983
+ }) => Promise<unknown>;
1984
+ loadThread: (spaceSlug: string, threadId: string) => Promise<Thread | null>;
1985
+ loadReplies: (threadId: string, cursor?: string, sortBy?: "best" | "top" | "new" | "controversial") => Promise<unknown>;
1986
+ createThread: (spaceSlug: string, input: CreateThreadInput) => Promise<unknown>;
1987
+ loadTagCategories: (query?: string) => Promise<DiscussionTag[]>;
1988
+ createReply: (threadId: string, input: CreateReplyInput) => Promise<unknown>;
1989
+ fetchQuote: (replyId: string) => Promise<QuoteResponse>;
1990
+ subscribeToThread: (threadId: string) => Promise<unknown>;
1991
+ unsubscribeFromThread: (threadId: string) => Promise<unknown>;
1992
+ searchThreads: (query: string, spaceSlug?: string) => Promise<unknown>;
1993
+ searchThreadsInSpace: (query: string, spaceId: string) => Promise<Thread[]>;
1994
+ searchThreadsGlobally: (query: string) => Promise<Thread[]>;
1995
+ featuredSpaces: () => Space[];
1996
+ getCategories: () => DiscussionCategorySummary[];
1997
+ setThreadPinned: (threadId: string, pinned: boolean) => Promise<void>;
1998
+ setThreadLocked: (threadId: string, locked: boolean) => Promise<void>;
1999
+ moveThread: (threadId: string, toSpaceSlug: string) => Promise<void>;
2000
+ updateThread: (threadId: string, updates: UpdateThreadInput) => Promise<unknown>;
2001
+ deleteThread: (threadId: string) => Promise<unknown>;
2002
+ restoreThread: (threadId: string) => Promise<Thread>;
2003
+ deleteReply: (replyId: string) => Promise<void>;
2004
+ updateReply: (replyId: string, body: string) => Promise<Reply>;
2005
+ toggleReplyReaction: (replyId: string, kind: string) => Promise<void>;
2006
+ draftTypes: {
2007
+ readonly THREAD: "thread";
2008
+ readonly REPLY: "reply";
2009
+ };
2010
+ saveDraft: (type: string, id: string, content: string, options?: SaveDraftOptions) => Promise<unknown>;
2011
+ getDraft: (type: string, id: string) => Promise<unknown>;
2012
+ clearDraft: (type: string, id: string) => Promise<void>;
2013
+ generateThreadDraftId: (spaceSlug: string) => string;
2014
+ generateReplyDraftId: (threadId: string) => string;
2015
+ setError: (message: string | null) => void;
2016
+ }, "cleanupRealtimeChannels" | "loadSpaces" | "loadSpaceDetail" | "loadSpaceMembership" | "joinSpace" | "leaveSpace" | "getSpaceMembership" | "flattenTree" | "rootSpaces" | "leafSpaces" | "loadThreads" | "loadThread" | "loadReplies" | "createThread" | "loadTagCategories" | "createReply" | "fetchQuote" | "subscribeToThread" | "unsubscribeFromThread" | "searchThreads" | "searchThreadsInSpace" | "searchThreadsGlobally" | "featuredSpaces" | "getCategories" | "setThreadPinned" | "setThreadLocked" | "moveThread" | "updateThread" | "deleteThread" | "restoreThread" | "deleteReply" | "updateReply" | "toggleReplyReaction" | "saveDraft" | "getDraft" | "clearDraft" | "generateThreadDraftId" | "generateReplyDraftId" | "setError">>;
2017
+ //# sourceMappingURL=discussion.d.ts.map