@sdxc/activitypub 0.0.0-pre.1

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 (73) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +711 -0
  3. package/dist/collections.d.ts +67 -0
  4. package/dist/collections.js +38 -0
  5. package/dist/conformance.d.ts +80 -0
  6. package/dist/conformance.js +313 -0
  7. package/dist/discovery.d.ts +46 -0
  8. package/dist/discovery.js +105 -0
  9. package/dist/errors.d.ts +115 -0
  10. package/dist/errors.js +124 -0
  11. package/dist/federation.d.ts +281 -0
  12. package/dist/federation.js +513 -0
  13. package/dist/fixtures/gotosocial.d.ts +114 -0
  14. package/dist/fixtures/gotosocial.js +115 -0
  15. package/dist/fixtures/index.d.ts +15 -0
  16. package/dist/fixtures/index.js +50 -0
  17. package/dist/fixtures/mastodon.d.ts +489 -0
  18. package/dist/fixtures/mastodon.js +334 -0
  19. package/dist/fixtures/misskey.d.ts +254 -0
  20. package/dist/fixtures/misskey.js +163 -0
  21. package/dist/fixtures/pixelfed.d.ts +118 -0
  22. package/dist/fixtures/pixelfed.js +126 -0
  23. package/dist/fixtures/shared.d.ts +14 -0
  24. package/dist/fixtures/shared.js +14 -0
  25. package/dist/fixtures/threads.d.ts +82 -0
  26. package/dist/fixtures/threads.js +88 -0
  27. package/dist/index.d.ts +33 -0
  28. package/dist/index.js +22 -0
  29. package/dist/keys.d.ts +100 -0
  30. package/dist/keys.js +147 -0
  31. package/dist/lib/availability.d.ts +37 -0
  32. package/dist/lib/availability.js +52 -0
  33. package/dist/lib/compact.d.ts +145 -0
  34. package/dist/lib/compact.js +514 -0
  35. package/dist/lib/constants.d.ts +35 -0
  36. package/dist/lib/constants.js +65 -0
  37. package/dist/lib/delivery-fan-out.d.ts +72 -0
  38. package/dist/lib/delivery-fan-out.js +202 -0
  39. package/dist/lib/delivery-post.d.ts +108 -0
  40. package/dist/lib/delivery-post.js +318 -0
  41. package/dist/lib/fetch.d.ts +64 -0
  42. package/dist/lib/fetch.js +103 -0
  43. package/dist/lib/inbox-error.d.ts +45 -0
  44. package/dist/lib/inbox-error.js +74 -0
  45. package/dist/lib/inbox-handle.d.ts +119 -0
  46. package/dist/lib/inbox-handle.js +587 -0
  47. package/dist/lib/inbox-receive.d.ts +117 -0
  48. package/dist/lib/inbox-receive.js +233 -0
  49. package/dist/lib/inbox-signature.d.ts +61 -0
  50. package/dist/lib/inbox-signature.js +156 -0
  51. package/dist/lib/inbox-summarize.d.ts +41 -0
  52. package/dist/lib/inbox-summarize.js +97 -0
  53. package/dist/lib/messages.d.ts +36 -0
  54. package/dist/lib/messages.js +35 -0
  55. package/dist/lib/parse.d.ts +42 -0
  56. package/dist/lib/parse.js +348 -0
  57. package/dist/lib/response.d.ts +45 -0
  58. package/dist/lib/response.js +59 -0
  59. package/dist/lib/stringify.d.ts +51 -0
  60. package/dist/lib/stringify.js +122 -0
  61. package/dist/lib/tombstone.d.ts +24 -0
  62. package/dist/lib/tombstone.js +15 -0
  63. package/dist/lib/types.d.ts +249 -0
  64. package/dist/lib/types.js +0 -0
  65. package/dist/memory.d.ts +77 -0
  66. package/dist/memory.js +146 -0
  67. package/dist/remote.d.ts +105 -0
  68. package/dist/remote.js +262 -0
  69. package/dist/store.d.ts +78 -0
  70. package/dist/store.js +8 -0
  71. package/dist/testing.d.ts +12 -0
  72. package/dist/testing.js +10 -0
  73. package/package.json +54 -0
@@ -0,0 +1,115 @@
1
+ /**
2
+ * Documents in the shapes GoToSocial emits: members sorted by name, one-entry lists
3
+ * written as a single value, a key id without a fragment, and `interactionPolicy`. Ids
4
+ * are made up; the members are GoToSocial's.
5
+ *
6
+ * @author [Sergio Xalambrí](https://sergiodxa.com)
7
+ * @copyright Sergio Xalambrí 2026
8
+ */
9
+ import { FAKE_PUBLIC_KEY_PEM, LOCAL_ACTOR, LOCAL_ARTICLE } from "./shared.js";
10
+ /** A GoToSocial account that approves followers by hand. */
11
+ export const GOTOSOCIAL_ACTOR = {
12
+ "@context": [
13
+ "https://w3id.org/security/v1",
14
+ "https://www.w3.org/ns/activitystreams",
15
+ {
16
+ discoverable: "toot:discoverable",
17
+ featured: { "@id": "toot:featured", "@type": "@id" },
18
+ manuallyApprovesFollowers: "as:manuallyApprovesFollowers",
19
+ toot: "http://joinmastodon.org/ns#",
20
+ },
21
+ ],
22
+ discoverable: true,
23
+ endpoints: { sharedInbox: "https://gts.superseriousbusiness.org/sharedInbox" },
24
+ featured: "https://gts.superseriousbusiness.org/users/erin/collections/featured",
25
+ followers: "https://gts.superseriousbusiness.org/users/erin/followers",
26
+ following: "https://gts.superseriousbusiness.org/users/erin/following",
27
+ icon: {
28
+ mediaType: "image/webp",
29
+ type: "Image",
30
+ url: "https://gts.superseriousbusiness.org/fileserver/01H0000000/attachment/original/01H0000001.webp",
31
+ },
32
+ id: "https://gts.superseriousbusiness.org/users/erin",
33
+ inbox: "https://gts.superseriousbusiness.org/users/erin/inbox",
34
+ manuallyApprovesFollowers: true,
35
+ name: "Erin",
36
+ outbox: "https://gts.superseriousbusiness.org/users/erin/outbox",
37
+ preferredUsername: "erin",
38
+ publicKey: {
39
+ id: "https://gts.superseriousbusiness.org/users/erin/main-key",
40
+ owner: "https://gts.superseriousbusiness.org/users/erin",
41
+ publicKeyPem: FAKE_PUBLIC_KEY_PEM,
42
+ },
43
+ published: "2023-01-10T12:00:00Z",
44
+ summary: "<p>Small server, big opinions.</p>",
45
+ tag: [],
46
+ type: "Person",
47
+ url: "https://gts.superseriousbusiness.org/@erin",
48
+ };
49
+ /** A reply addressed to one audience entry each, written as plain values. */
50
+ export const GOTOSOCIAL_CREATE_NOTE = {
51
+ "@context": [
52
+ "https://gotosocial.org/ns",
53
+ "https://www.w3.org/ns/activitystreams",
54
+ { sensitive: "as:sensitive" },
55
+ ],
56
+ actor: "https://gts.superseriousbusiness.org/users/erin",
57
+ cc: "https://gts.superseriousbusiness.org/users/erin/followers",
58
+ id: "https://gts.superseriousbusiness.org/users/erin/statuses/01J9Z8Y7X6W5V4T3S2R1Q0P9N8/activity",
59
+ object: {
60
+ attachment: [],
61
+ attributedTo: "https://gts.superseriousbusiness.org/users/erin",
62
+ cc: ["https://gts.superseriousbusiness.org/users/erin/followers", LOCAL_ACTOR],
63
+ content: "<p>Agreed with most of this.</p>",
64
+ contentMap: { en: "<p>Agreed with most of this.</p>" },
65
+ id: "https://gts.superseriousbusiness.org/users/erin/statuses/01J9Z8Y7X6W5V4T3S2R1Q0P9N8",
66
+ inReplyTo: LOCAL_ARTICLE,
67
+ interactionPolicy: {
68
+ canAnnounce: {
69
+ always: ["https://www.w3.org/ns/activitystreams#Public"],
70
+ approvalRequired: [],
71
+ },
72
+ canLike: { always: ["https://www.w3.org/ns/activitystreams#Public"], approvalRequired: [] },
73
+ canReply: { always: ["https://www.w3.org/ns/activitystreams#Public"], approvalRequired: [] },
74
+ },
75
+ published: "2026-10-04T07:15:00Z",
76
+ replies: {
77
+ first: {
78
+ id: "https://gts.superseriousbusiness.org/users/erin/statuses/01J9Z8Y7X6W5V4T3S2R1Q0P9N8/replies?page=true",
79
+ next: "https://gts.superseriousbusiness.org/users/erin/statuses/01J9Z8Y7X6W5V4T3S2R1Q0P9N8/replies?only_other_accounts=false&page=true",
80
+ partOf: "https://gts.superseriousbusiness.org/users/erin/statuses/01J9Z8Y7X6W5V4T3S2R1Q0P9N8/replies",
81
+ type: "CollectionPage",
82
+ },
83
+ id: "https://gts.superseriousbusiness.org/users/erin/statuses/01J9Z8Y7X6W5V4T3S2R1Q0P9N8/replies",
84
+ type: "Collection",
85
+ },
86
+ sensitive: false,
87
+ summary: "",
88
+ tag: { href: LOCAL_ACTOR, name: "@hello@letters.blog", type: "Mention" },
89
+ to: "https://www.w3.org/ns/activitystreams#Public",
90
+ type: "Note",
91
+ url: "https://gts.superseriousbusiness.org/@erin/statuses/01J9Z8Y7X6W5V4T3S2R1Q0P9N8",
92
+ },
93
+ published: "2026-10-04T07:15:00Z",
94
+ to: "https://www.w3.org/ns/activitystreams#Public",
95
+ type: "Create",
96
+ };
97
+ /** A follow of the local actor, written with a string `@context`. */
98
+ export const GOTOSOCIAL_FOLLOW = {
99
+ "@context": "https://www.w3.org/ns/activitystreams",
100
+ actor: "https://gts.superseriousbusiness.org/users/erin",
101
+ id: "https://gts.superseriousbusiness.org/users/erin/follow/01J9Z9A0B1C2D3E4F5G6H7J8K9",
102
+ object: LOCAL_ACTOR,
103
+ type: "Follow",
104
+ };
105
+ /** Pinned posts: an ordered collection whose items are IRIs. */
106
+ export const GOTOSOCIAL_FEATURED = {
107
+ "@context": "https://www.w3.org/ns/activitystreams",
108
+ id: "https://gts.superseriousbusiness.org/users/erin/collections/featured",
109
+ orderedItems: [
110
+ "https://gts.superseriousbusiness.org/users/erin/statuses/01J9Z8Y7X6W5V4T3S2R1Q0P9N8",
111
+ "https://gts.superseriousbusiness.org/users/erin/statuses/01J0000000000000000000000",
112
+ ],
113
+ totalItems: 2,
114
+ type: "OrderedCollection",
115
+ };
@@ -0,0 +1,15 @@
1
+ export * from "./gotosocial.js";
2
+ export * from "./mastodon.js";
3
+ export * from "./misskey.js";
4
+ export * from "./pixelfed.js";
5
+ export * from "./shared.js";
6
+ export * from "./threads.js";
7
+ /** One captured-shape document and the reader that must accept it. */
8
+ export interface Fixture {
9
+ /** `<implementation> <what>`, for a test name. */
10
+ name: string;
11
+ kind: "activity" | "actor" | "collection";
12
+ document: unknown;
13
+ }
14
+ /** Every fixture, grouped by implementation. */
15
+ export declare const FIXTURES: Fixture[];
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Every captured-shape document, labelled with the implementation that emits it and the
3
+ * reader it is for, so one test can run each `parse*` over all of them and later suites
4
+ * reuse the same documents as inbound traffic.
5
+ *
6
+ * @author [Sergio Xalambrí](https://sergiodxa.com)
7
+ * @copyright Sergio Xalambrí 2026
8
+ */
9
+ import { GOTOSOCIAL_ACTOR, GOTOSOCIAL_CREATE_NOTE, GOTOSOCIAL_FEATURED, GOTOSOCIAL_FOLLOW, } from "./gotosocial.js";
10
+ import { MASTODON_ACCEPT, MASTODON_ACTOR, MASTODON_ANNOUNCE, MASTODON_CREATE_NOTE, MASTODON_DELETE_ACTOR, MASTODON_DELETE_NOTE, MASTODON_FOLLOW, MASTODON_FOLLOWERS, MASTODON_LIKE, MASTODON_OUTBOX_PAGE, MASTODON_QUOTE, MASTODON_REPLIES, MASTODON_UNDO_FOLLOW, } from "./mastodon.js";
11
+ import { MISSKEY_ACTOR, MISSKEY_CREATE_NOTE, MISSKEY_FOLLOW, MISSKEY_QUOTE, MISSKEY_REACTION, } from "./misskey.js";
12
+ import { PIXELFED_ACTOR, PIXELFED_CREATE_NOTE, PIXELFED_LIKE } from "./pixelfed.js";
13
+ import { THREADS_ACTOR, THREADS_CREATE_NOTE, THREADS_LIKE } from "./threads.js";
14
+ export * from "./gotosocial.js";
15
+ export * from "./mastodon.js";
16
+ export * from "./misskey.js";
17
+ export * from "./pixelfed.js";
18
+ export * from "./shared.js";
19
+ export * from "./threads.js";
20
+ /** Every fixture, grouped by implementation. */
21
+ export const FIXTURES = [
22
+ { name: "Mastodon actor", kind: "actor", document: MASTODON_ACTOR },
23
+ { name: "Mastodon Create/Note", kind: "activity", document: MASTODON_CREATE_NOTE },
24
+ { name: "Mastodon Like", kind: "activity", document: MASTODON_LIKE },
25
+ { name: "Mastodon Announce", kind: "activity", document: MASTODON_ANNOUNCE },
26
+ { name: "Mastodon Follow", kind: "activity", document: MASTODON_FOLLOW },
27
+ { name: "Mastodon Undo/Follow", kind: "activity", document: MASTODON_UNDO_FOLLOW },
28
+ { name: "Mastodon Accept/Follow", kind: "activity", document: MASTODON_ACCEPT },
29
+ { name: "Mastodon Delete/Tombstone", kind: "activity", document: MASTODON_DELETE_NOTE },
30
+ { name: "Mastodon Delete/actor", kind: "activity", document: MASTODON_DELETE_ACTOR },
31
+ { name: "Mastodon 4.5 quote", kind: "activity", document: MASTODON_QUOTE },
32
+ { name: "Mastodon followers", kind: "collection", document: MASTODON_FOLLOWERS },
33
+ { name: "Mastodon outbox page", kind: "collection", document: MASTODON_OUTBOX_PAGE },
34
+ { name: "Mastodon replies", kind: "collection", document: MASTODON_REPLIES },
35
+ { name: "Misskey actor", kind: "actor", document: MISSKEY_ACTOR },
36
+ { name: "Misskey Create/Note", kind: "activity", document: MISSKEY_CREATE_NOTE },
37
+ { name: "Misskey reaction", kind: "activity", document: MISSKEY_REACTION },
38
+ { name: "Misskey quote", kind: "activity", document: MISSKEY_QUOTE },
39
+ { name: "Misskey Follow", kind: "activity", document: MISSKEY_FOLLOW },
40
+ { name: "Pixelfed actor", kind: "actor", document: PIXELFED_ACTOR },
41
+ { name: "Pixelfed Create/Note", kind: "activity", document: PIXELFED_CREATE_NOTE },
42
+ { name: "Pixelfed Like", kind: "activity", document: PIXELFED_LIKE },
43
+ { name: "GoToSocial actor", kind: "actor", document: GOTOSOCIAL_ACTOR },
44
+ { name: "GoToSocial Create/Note", kind: "activity", document: GOTOSOCIAL_CREATE_NOTE },
45
+ { name: "GoToSocial Follow", kind: "activity", document: GOTOSOCIAL_FOLLOW },
46
+ { name: "GoToSocial featured", kind: "collection", document: GOTOSOCIAL_FEATURED },
47
+ { name: "Threads actor", kind: "actor", document: THREADS_ACTOR },
48
+ { name: "Threads Create/Note", kind: "activity", document: THREADS_CREATE_NOTE },
49
+ { name: "Threads Like", kind: "activity", document: THREADS_LIKE },
50
+ ];
@@ -0,0 +1,489 @@
1
+ /** A Mastodon account: profile fields, featured collection, a shared inbox and `#main-key`. */
2
+ export declare const MASTODON_ACTOR: {
3
+ "@context": (string | {
4
+ manuallyApprovesFollowers: string;
5
+ toot: string;
6
+ featured: {
7
+ "@id": string;
8
+ "@type": string;
9
+ };
10
+ featuredTags: {
11
+ "@id": string;
12
+ "@type": string;
13
+ };
14
+ alsoKnownAs: {
15
+ "@id": string;
16
+ "@type": string;
17
+ };
18
+ movedTo: {
19
+ "@id": string;
20
+ "@type": string;
21
+ };
22
+ schema: string;
23
+ PropertyValue: string;
24
+ value: string;
25
+ discoverable: string;
26
+ suspended: string;
27
+ memorial: string;
28
+ indexable: string;
29
+ attributionDomains: {
30
+ "@id": string;
31
+ "@type": string;
32
+ };
33
+ focalPoint: {
34
+ "@container": string;
35
+ "@id": string;
36
+ };
37
+ })[];
38
+ id: string;
39
+ type: string;
40
+ following: string;
41
+ followers: string;
42
+ inbox: string;
43
+ outbox: string;
44
+ featured: string;
45
+ featuredTags: string;
46
+ preferredUsername: string;
47
+ name: string;
48
+ summary: string;
49
+ url: string;
50
+ manuallyApprovesFollowers: boolean;
51
+ discoverable: boolean;
52
+ indexable: boolean;
53
+ published: string;
54
+ memorial: boolean;
55
+ devices: string;
56
+ alsoKnownAs: string[];
57
+ publicKey: {
58
+ id: string;
59
+ owner: string;
60
+ publicKeyPem: string;
61
+ };
62
+ tag: {
63
+ id: string;
64
+ type: string;
65
+ name: string;
66
+ updated: string;
67
+ icon: {
68
+ type: string;
69
+ mediaType: string;
70
+ url: string;
71
+ };
72
+ }[];
73
+ attachment: {
74
+ type: string;
75
+ name: string;
76
+ value: string;
77
+ }[];
78
+ endpoints: {
79
+ sharedInbox: string;
80
+ };
81
+ icon: {
82
+ type: string;
83
+ mediaType: string;
84
+ url: string;
85
+ };
86
+ image: {
87
+ type: string;
88
+ mediaType: string;
89
+ url: string;
90
+ };
91
+ };
92
+ /** A public reply to a local article, with an image, a mention, a hashtag and an emoji. */
93
+ export declare const MASTODON_CREATE_NOTE: {
94
+ "@context": (string | {
95
+ ostatus: string;
96
+ atomUri: string;
97
+ inReplyToAtomUri: string;
98
+ conversation: string;
99
+ sensitive: string;
100
+ toot: string;
101
+ votersCount: string;
102
+ blurhash: string;
103
+ focalPoint: {
104
+ "@container": string;
105
+ "@id": string;
106
+ };
107
+ Hashtag: string;
108
+ Emoji: string;
109
+ quote: {
110
+ "@id": string;
111
+ "@type": string;
112
+ };
113
+ quoteUri: string;
114
+ _misskey_quote: string;
115
+ })[];
116
+ id: string;
117
+ type: string;
118
+ actor: string;
119
+ published: string;
120
+ to: string[];
121
+ cc: string[];
122
+ object: {
123
+ id: string;
124
+ type: string;
125
+ summary: null;
126
+ inReplyTo: string;
127
+ published: string;
128
+ url: string;
129
+ attributedTo: string;
130
+ to: string[];
131
+ cc: string[];
132
+ sensitive: boolean;
133
+ atomUri: string;
134
+ inReplyToAtomUri: string;
135
+ conversation: string;
136
+ content: string;
137
+ contentMap: {
138
+ en: string;
139
+ };
140
+ updated: string;
141
+ attachment: {
142
+ type: string;
143
+ mediaType: string;
144
+ url: string;
145
+ name: string;
146
+ blurhash: string;
147
+ focalPoint: number[];
148
+ width: number;
149
+ height: number;
150
+ }[];
151
+ tag: ({
152
+ type: string;
153
+ href: string;
154
+ name: string;
155
+ id?: undefined;
156
+ updated?: undefined;
157
+ icon?: undefined;
158
+ } | {
159
+ id: string;
160
+ type: string;
161
+ name: string;
162
+ updated: string;
163
+ icon: {
164
+ type: string;
165
+ mediaType: string;
166
+ url: string;
167
+ };
168
+ href?: undefined;
169
+ })[];
170
+ replies: {
171
+ id: string;
172
+ type: string;
173
+ first: {
174
+ type: string;
175
+ next: string;
176
+ partOf: string;
177
+ items: never[];
178
+ };
179
+ };
180
+ likes: {
181
+ id: string;
182
+ type: string;
183
+ totalItems: number;
184
+ };
185
+ shares: {
186
+ id: string;
187
+ type: string;
188
+ totalItems: number;
189
+ };
190
+ };
191
+ signature: {
192
+ type: string;
193
+ creator: string;
194
+ created: string;
195
+ signatureValue: string;
196
+ };
197
+ };
198
+ /** A favourite of a local article; Mastodon's Like ids are fragments of the actor. */
199
+ export declare const MASTODON_LIKE: {
200
+ "@context": string;
201
+ id: string;
202
+ type: string;
203
+ actor: string;
204
+ object: string;
205
+ };
206
+ /** A boost of a local article. */
207
+ export declare const MASTODON_ANNOUNCE: {
208
+ "@context": string;
209
+ id: string;
210
+ type: string;
211
+ actor: string;
212
+ published: string;
213
+ to: string[];
214
+ cc: string[];
215
+ object: string;
216
+ };
217
+ /** A follow of the local actor; Mastodon ids a Follow with a bare UUID path. */
218
+ export declare const MASTODON_FOLLOW: {
219
+ "@context": string;
220
+ id: string;
221
+ type: string;
222
+ actor: string;
223
+ object: string;
224
+ };
225
+ /** An unfollow, embedding the Follow it undoes. */
226
+ export declare const MASTODON_UNDO_FOLLOW: {
227
+ "@context": string;
228
+ id: string;
229
+ type: string;
230
+ actor: string;
231
+ object: {
232
+ id: string;
233
+ type: string;
234
+ actor: string;
235
+ object: string;
236
+ };
237
+ };
238
+ /** Mastodon accepting a follow the local actor sent, with the Follow embedded. */
239
+ export declare const MASTODON_ACCEPT: {
240
+ "@context": string;
241
+ id: string;
242
+ type: string;
243
+ actor: string;
244
+ object: {
245
+ id: string;
246
+ type: string;
247
+ actor: string;
248
+ object: string;
249
+ };
250
+ };
251
+ /** A deleted status, sent as a Delete of its Tombstone. */
252
+ export declare const MASTODON_DELETE_NOTE: {
253
+ "@context": (string | {
254
+ ostatus: string;
255
+ atomUri: string;
256
+ })[];
257
+ id: string;
258
+ type: string;
259
+ actor: string;
260
+ to: string[];
261
+ object: {
262
+ id: string;
263
+ type: string;
264
+ atomUri: string;
265
+ };
266
+ };
267
+ /** A deleted account, which Mastodon sends to every server it ever talked to. */
268
+ export declare const MASTODON_DELETE_ACTOR: {
269
+ "@context": string;
270
+ id: string;
271
+ type: string;
272
+ actor: string;
273
+ to: string[];
274
+ object: string;
275
+ };
276
+ /** A Mastodon 4.5 quote post, with the FEP-044f `quote` and the names older servers read. */
277
+ export declare const MASTODON_QUOTE: {
278
+ "@context": (string | {
279
+ ostatus: string;
280
+ atomUri: string;
281
+ inReplyToAtomUri: string;
282
+ conversation: string;
283
+ sensitive: string;
284
+ toot: string;
285
+ votersCount: string;
286
+ blurhash: string;
287
+ focalPoint: {
288
+ "@container": string;
289
+ "@id": string;
290
+ };
291
+ Hashtag: string;
292
+ Emoji: string;
293
+ quote: {
294
+ "@id": string;
295
+ "@type": string;
296
+ };
297
+ quoteUri: string;
298
+ _misskey_quote: string;
299
+ })[];
300
+ id: string;
301
+ type: string;
302
+ actor: string;
303
+ published: string;
304
+ to: string[];
305
+ cc: string[];
306
+ object: {
307
+ id: string;
308
+ type: string;
309
+ summary: null;
310
+ inReplyTo: null;
311
+ published: string;
312
+ url: string;
313
+ attributedTo: string;
314
+ to: string[];
315
+ cc: string[];
316
+ sensitive: boolean;
317
+ content: string;
318
+ contentMap: {
319
+ en: string;
320
+ };
321
+ quote: string;
322
+ _misskey_quote: string;
323
+ quoteUri: string;
324
+ attachment: never[];
325
+ tag: never[];
326
+ };
327
+ };
328
+ /** A followers collection that shows its count and pages its members. */
329
+ export declare const MASTODON_FOLLOWERS: {
330
+ "@context": string;
331
+ id: string;
332
+ type: string;
333
+ totalItems: number;
334
+ first: string;
335
+ };
336
+ /** The first page of an outbox, its items each a Create with the Note embedded. */
337
+ export declare const MASTODON_OUTBOX_PAGE: {
338
+ "@context": (string | {
339
+ ostatus: string;
340
+ atomUri: string;
341
+ inReplyToAtomUri: string;
342
+ conversation: string;
343
+ sensitive: string;
344
+ toot: string;
345
+ votersCount: string;
346
+ blurhash: string;
347
+ focalPoint: {
348
+ "@container": string;
349
+ "@id": string;
350
+ };
351
+ Hashtag: string;
352
+ Emoji: string;
353
+ quote: {
354
+ "@id": string;
355
+ "@type": string;
356
+ };
357
+ quoteUri: string;
358
+ _misskey_quote: string;
359
+ })[];
360
+ id: string;
361
+ type: string;
362
+ next: string;
363
+ prev: string;
364
+ partOf: string;
365
+ orderedItems: ({
366
+ "@context": (string | {
367
+ ostatus: string;
368
+ atomUri: string;
369
+ inReplyToAtomUri: string;
370
+ conversation: string;
371
+ sensitive: string;
372
+ toot: string;
373
+ votersCount: string;
374
+ blurhash: string;
375
+ focalPoint: {
376
+ "@container": string;
377
+ "@id": string;
378
+ };
379
+ Hashtag: string;
380
+ Emoji: string;
381
+ quote: {
382
+ "@id": string;
383
+ "@type": string;
384
+ };
385
+ quoteUri: string;
386
+ _misskey_quote: string;
387
+ })[];
388
+ id: string;
389
+ type: string;
390
+ actor: string;
391
+ published: string;
392
+ to: string[];
393
+ cc: string[];
394
+ object: {
395
+ id: string;
396
+ type: string;
397
+ summary: null;
398
+ inReplyTo: string;
399
+ published: string;
400
+ url: string;
401
+ attributedTo: string;
402
+ to: string[];
403
+ cc: string[];
404
+ sensitive: boolean;
405
+ atomUri: string;
406
+ inReplyToAtomUri: string;
407
+ conversation: string;
408
+ content: string;
409
+ contentMap: {
410
+ en: string;
411
+ };
412
+ updated: string;
413
+ attachment: {
414
+ type: string;
415
+ mediaType: string;
416
+ url: string;
417
+ name: string;
418
+ blurhash: string;
419
+ focalPoint: number[];
420
+ width: number;
421
+ height: number;
422
+ }[];
423
+ tag: ({
424
+ type: string;
425
+ href: string;
426
+ name: string;
427
+ id?: undefined;
428
+ updated?: undefined;
429
+ icon?: undefined;
430
+ } | {
431
+ id: string;
432
+ type: string;
433
+ name: string;
434
+ updated: string;
435
+ icon: {
436
+ type: string;
437
+ mediaType: string;
438
+ url: string;
439
+ };
440
+ href?: undefined;
441
+ })[];
442
+ replies: {
443
+ id: string;
444
+ type: string;
445
+ first: {
446
+ type: string;
447
+ next: string;
448
+ partOf: string;
449
+ items: never[];
450
+ };
451
+ };
452
+ likes: {
453
+ id: string;
454
+ type: string;
455
+ totalItems: number;
456
+ };
457
+ shares: {
458
+ id: string;
459
+ type: string;
460
+ totalItems: number;
461
+ };
462
+ };
463
+ signature: {
464
+ type: string;
465
+ creator: string;
466
+ created: string;
467
+ signatureValue: string;
468
+ };
469
+ } | {
470
+ id: string;
471
+ type: string;
472
+ actor: string;
473
+ published: string;
474
+ to: string[];
475
+ cc: string[];
476
+ object: string;
477
+ })[];
478
+ };
479
+ /** A status's replies: a Collection whose first page is embedded without an id. */
480
+ export declare const MASTODON_REPLIES: {
481
+ id: string;
482
+ type: string;
483
+ first: {
484
+ type: string;
485
+ next: string;
486
+ partOf: string;
487
+ items: never[];
488
+ };
489
+ };