@oxyhq/crowdsource-contracts 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/appeals.d.ts +323 -0
  2. package/dist/appeals.d.ts.map +1 -0
  3. package/dist/appeals.js +203 -0
  4. package/dist/appeals.js.map +1 -0
  5. package/dist/case-envelope.d.ts +59 -59
  6. package/dist/case-envelope.d.ts.map +1 -1
  7. package/dist/case-envelope.js +32 -32
  8. package/dist/case-envelope.js.map +1 -1
  9. package/dist/decisions.d.ts +3 -3
  10. package/dist/decisions.d.ts.map +1 -1
  11. package/dist/decisions.js +28 -28
  12. package/dist/decisions.js.map +1 -1
  13. package/dist/esm/appeals.js +200 -0
  14. package/dist/esm/appeals.js.map +1 -0
  15. package/dist/esm/case-envelope.js +380 -0
  16. package/dist/esm/case-envelope.js.map +1 -0
  17. package/dist/esm/closed.js +32 -0
  18. package/dist/esm/closed.js.map +1 -0
  19. package/dist/esm/decisions.js +195 -0
  20. package/dist/esm/decisions.js.map +1 -0
  21. package/dist/esm/index.js +48 -0
  22. package/dist/esm/index.js.map +1 -0
  23. package/dist/esm/json-schema.js +84 -0
  24. package/dist/esm/json-schema.js.map +1 -0
  25. package/dist/esm/package.json +1 -0
  26. package/dist/esm/policies.js +175 -0
  27. package/dist/esm/policies.js.map +1 -0
  28. package/dist/esm/primitives.js +249 -0
  29. package/dist/esm/primitives.js.map +1 -0
  30. package/dist/esm/reputation-events.js +125 -0
  31. package/dist/esm/reputation-events.js.map +1 -0
  32. package/dist/esm/resources.js +455 -0
  33. package/dist/esm/resources.js.map +1 -0
  34. package/dist/esm/reviewer-surface.js +612 -0
  35. package/dist/esm/reviewer-surface.js.map +1 -0
  36. package/dist/esm/reviews.js +141 -0
  37. package/dist/esm/reviews.js.map +1 -0
  38. package/dist/esm/taxonomy.js +278 -0
  39. package/dist/esm/taxonomy.js.map +1 -0
  40. package/dist/esm/webhooks.js +188 -0
  41. package/dist/esm/webhooks.js.map +1 -0
  42. package/dist/index.d.ts +13 -11
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +13 -11
  45. package/dist/index.js.map +1 -1
  46. package/dist/json-schema.d.ts +2 -2
  47. package/dist/json-schema.d.ts.map +1 -1
  48. package/dist/json-schema.js +26 -21
  49. package/dist/json-schema.js.map +1 -1
  50. package/dist/policies.d.ts +1 -1
  51. package/dist/policies.d.ts.map +1 -1
  52. package/dist/policies.js +14 -14
  53. package/dist/policies.js.map +1 -1
  54. package/dist/primitives.d.ts +17 -0
  55. package/dist/primitives.d.ts.map +1 -1
  56. package/dist/primitives.js +22 -1
  57. package/dist/primitives.js.map +1 -1
  58. package/dist/reputation-events.js +19 -19
  59. package/dist/reputation-events.js.map +1 -1
  60. package/dist/resources.d.ts +116 -39
  61. package/dist/resources.d.ts.map +1 -1
  62. package/dist/resources.js +143 -121
  63. package/dist/resources.js.map +1 -1
  64. package/dist/reviewer-surface.d.ts +1956 -0
  65. package/dist/reviewer-surface.d.ts.map +1 -0
  66. package/dist/reviewer-surface.js +615 -0
  67. package/dist/reviewer-surface.js.map +1 -0
  68. package/dist/reviews.d.ts +2 -2
  69. package/dist/reviews.js +15 -15
  70. package/dist/reviews.js.map +1 -1
  71. package/dist/webhooks.d.ts +4 -4
  72. package/dist/webhooks.d.ts.map +1 -1
  73. package/dist/webhooks.js +18 -18
  74. package/dist/webhooks.js.map +1 -1
  75. package/package.json +4 -4
  76. package/src/appeals.ts +229 -0
  77. package/src/case-envelope.ts +5 -5
  78. package/src/decisions.ts +6 -6
  79. package/src/index.ts +13 -11
  80. package/src/json-schema.ts +13 -8
  81. package/src/policies.ts +3 -3
  82. package/src/primitives.ts +25 -0
  83. package/src/reputation-events.ts +4 -4
  84. package/src/resources.ts +136 -100
  85. package/src/reviewer-surface.ts +715 -0
  86. package/src/reviews.ts +4 -4
  87. package/src/webhooks.ts +4 -4
@@ -0,0 +1,1956 @@
1
+ /**
2
+ * The Reviewer API wire contract (§10.3) — what the backend sends and the
3
+ * reviewer app receives, declared once.
4
+ *
5
+ * ## Why this module exists at all
6
+ *
7
+ * It exists because the alternative was tried and failed silently. The backend
8
+ * and the reviewer app each wrote their own version of these shapes, and they
9
+ * agreed on almost nothing: the state vocabularies differed outright
10
+ * (`community` against `community_reviewer`), so did the sensitivity classes
11
+ * (`standard`/`sensitive`/`restricted` against an invented
12
+ * `none`/`low`/`high`/`critical`); the assignment package disagreed on
13
+ * `allegation` against `allegations`, on `policyVersion` against `version`, and
14
+ * on five fields that existed on one side only. Nothing caught it, because there
15
+ * was no shared declaration for anything to be checked against.
16
+ *
17
+ * So the rule this module encodes: **a field that crosses the reviewer boundary
18
+ * is declared here and nowhere else.**
19
+ *
20
+ * ## Schemas, and types inferred from them
21
+ *
22
+ * Every shape is a Zod schema, and its TypeScript type is `z.infer` of that
23
+ * schema. One declaration, so the two cannot disagree — which is a property worth
24
+ * more here than the hand-written interfaces it replaces, since "two declarations
25
+ * of one shape drifted apart" is the exact bug this file was written to end.
26
+ *
27
+ * Both halves are load-bearing and they catch different failures:
28
+ *
29
+ * - The **type** is what the backend's builders return and what the app's
30
+ * projections return, so a renamed field is a compile error on BOTH sides at
31
+ * once — the check that would have caught every drift listed above on the day
32
+ * it appeared.
33
+ * - The **schema** is what the app parses the response WITH, and it is
34
+ * `.strict()` at every level. §9.1's hidden column has no field on any shape
35
+ * here, so a server that starts sending a report count or an author's
36
+ * reputation is REFUSED rather than having it quietly reach a screen. A type
37
+ * cannot do that: types are gone at runtime, and the wire is where an
38
+ * unexpected field actually arrives.
39
+ *
40
+ * Strict is the right direction for this surface specifically. A reviewer seeing
41
+ * a blank screen is a bug somebody fixes today; a reviewer seeing an author's
42
+ * reputation is a bug nobody notices.
43
+ *
44
+ * ## What is deliberately NOT here
45
+ *
46
+ * No case id, on any shape. §8.7 pseudonymises what a reviewer does not need and
47
+ * a case id is not needed to judge material; more to the point, a case id on the
48
+ * wire is a case id in a URL, and "nobody chooses the case they review" holds
49
+ * because the assignment is the only handle. No reporter, no report count, no
50
+ * reputation, no juror identity, no partial tally.
51
+ */
52
+ import { z } from 'zod';
53
+ import { type Resource } from './resources.js';
54
+ /**
55
+ * §8.1's seven onboarding states, ordered from least to most capable.
56
+ *
57
+ * §8.1 writes them as English prose labels ("Community Reviewer", "Category
58
+ * Specialist"). These are the identifiers, and they are the SHORT forms on
59
+ * purpose: the `_reviewer` suffix says nothing a `ReviewerState` type does not
60
+ * already say, and `specialist` pairs with a separate `specialistCategories`
61
+ * field, so `category_specialist` would name the category twice.
62
+ *
63
+ * `suspended` is apart from the ordering rather than at the bottom of it — see
64
+ * the backend's `REVIEWER_STATE_RANK`, which gives it -1 so every capability
65
+ * comparison fails for it, including one against `applicant`.
66
+ */
67
+ export declare const REVIEWER_STATES: readonly ["applicant", "calibrating", "community", "trusted", "specialist", "appeals", "suspended"];
68
+ export declare const ReviewerStateSchema: z.ZodEnum<{
69
+ applicant: "applicant";
70
+ calibrating: "calibrating";
71
+ community: "community";
72
+ trusted: "trusted";
73
+ specialist: "specialist";
74
+ appeals: "appeals";
75
+ suspended: "suspended";
76
+ }>;
77
+ export type ReviewerState = z.infer<typeof ReviewerStateSchema>;
78
+ /**
79
+ * The sensitivity classes a jury can be shown, ranked (§7.5, §13.7).
80
+ *
81
+ * Triage computes a fourth, `prohibited`, and it is absent here on purpose: §7.5
82
+ * routes that material to a specialist team under legal protocol and never to a
83
+ * jury, so a reviewer-facing type that could express it would eventually be
84
+ * handed it. The backend's `sensitivityRank` throws rather than returning a
85
+ * number for it, for the same reason.
86
+ *
87
+ * This is also the vocabulary a reviewer's own consent is stored in, as a rank —
88
+ * which is why it could never have been the app's invented
89
+ * `none`/`low`/`high`/`critical`: those four map onto nothing the server computes
90
+ * or the reviewer consented to.
91
+ */
92
+ export declare const REVIEWER_SENSITIVITY_CLASSES: readonly ["standard", "sensitive", "restricted"];
93
+ export declare const ReviewerSensitivityClassSchema: z.ZodEnum<{
94
+ standard: "standard";
95
+ sensitive: "sensitive";
96
+ restricted: "restricted";
97
+ }>;
98
+ export type ReviewerSensitivityClass = z.infer<typeof ReviewerSensitivityClassSchema>;
99
+ /**
100
+ * The eligibility requirements a reviewer may be TOLD about (§8.2).
101
+ *
102
+ * §8.2 lists ten conditions and this list is eight, which is the interesting
103
+ * part. Two groups are missing and neither is an oversight:
104
+ *
105
+ * - **Relative to a case.** Conflict with a party, prior participation in the
106
+ * case or incident, and coordination-cluster overlap are properties of a
107
+ * candidate against a specific case's parties — they live in
108
+ * `sortition/exclusions.ts` where the parties are known, and outside a draw
109
+ * there is no answer to give.
110
+ * - **Anti-abuse signals.** A sock-puppet suspicion is deliberately not
111
+ * disclosed. Telling somebody they are flagged tells them what to change,
112
+ * which is the same reasoning that keeps `suspectedSockPuppet` and
113
+ * `riskClusterId` out of the profile projection entirely.
114
+ *
115
+ * Exposure is absent too, but only because it has a richer home of its own:
116
+ * `ReviewerExposureView` gives the numbers rather than a boolean.
117
+ *
118
+ * Every id here maps to a check the server actually performs, so the app can
119
+ * never display a requirement nobody enforces. There is no server-authored
120
+ * explanation string: the app is translated (`locales/*.json`) and a sentence
121
+ * composed by a backend with no locale would arrive in the wrong language.
122
+ */
123
+ export declare const REVIEWER_ELIGIBILITY_REQUIREMENTS: readonly ["oxy_account", "personhood", "age", "rules_accepted", "languages_selected", "categories_selected", "training_current", "calibration_current"];
124
+ export declare const ReviewerEligibilityRequirementIdSchema: z.ZodEnum<{
125
+ oxy_account: "oxy_account";
126
+ personhood: "personhood";
127
+ age: "age";
128
+ rules_accepted: "rules_accepted";
129
+ languages_selected: "languages_selected";
130
+ categories_selected: "categories_selected";
131
+ training_current: "training_current";
132
+ calibration_current: "calibration_current";
133
+ }>;
134
+ export type ReviewerEligibilityRequirementId = z.infer<typeof ReviewerEligibilityRequirementIdSchema>;
135
+ /**
136
+ * §13.7's ceiling on a self-chosen daily limit.
137
+ *
138
+ * Declared here because the request schema below bounds the body with it and the
139
+ * app's control has to offer the same range — two numbers that must agree, so
140
+ * there is one.
141
+ */
142
+ export declare const REVIEWER_DAILY_LIMIT_MAX = 40;
143
+ /** The header §8.7's assignment token travels in. One spelling, both sides. */
144
+ export declare const ASSIGNMENT_TOKEN_HEADER = "x-assignment-token";
145
+ /**
146
+ * A resource asset as a reviewer receives it (§8.7, §9.1).
147
+ *
148
+ * The envelope's `AssetRef` carries `uploadId` OR `url`, plus a `sha256`. None of
149
+ * the three reaches a reviewer:
150
+ *
151
+ * - `url` is a location on the REPORTING APPLICATION's own host, so sending it
152
+ * puts that application's brand in front of the jury — §9.1's last hidden row
153
+ * — and it bypasses the media chokepoint every Oxy surface resolves files
154
+ * through.
155
+ * - `sha256` is what pins a case to the exact bytes reported. A reviewer does
156
+ * not verify that; the case does.
157
+ *
158
+ * What replaces them is `fileId`, a bare Oxy file id resolved through
159
+ * `getFileDownloadUrl` at the app root, and `retrievable`, which is the honest
160
+ * answer when there is nothing a reviewer can be shown. A reviewer facing an
161
+ * unretrievable resource has an outcome for exactly that (`content_unavailable`),
162
+ * which is why this is a flag rather than an omission: dropping the resource
163
+ * would hide from the jury that material existed at all.
164
+ */
165
+ export declare const ReviewerAssetSchema: z.ZodObject<{
166
+ mediaType: z.ZodString;
167
+ fileId: z.ZodOptional<z.ZodString>;
168
+ retrievable: z.ZodBoolean;
169
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
170
+ width: z.ZodOptional<z.ZodNumber>;
171
+ height: z.ZodOptional<z.ZodNumber>;
172
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
173
+ }, z.core.$strict>;
174
+ export type ReviewerAssetView = z.infer<typeof ReviewerAssetSchema>;
175
+ /**
176
+ * One resource of case material, as a reviewer receives it.
177
+ *
178
+ * Built from the same `*DataSchema` exports the envelope's own resources are
179
+ * built from, so the twelve content shapes exist once. What differs is exactly
180
+ * the two things the reviewer projection changes: no `sha256`, and `asset` is a
181
+ * media handle rather than a locator.
182
+ *
183
+ * A strict parse rather than a hand-written field-by-field copy, and the reason
184
+ * is the direction each fails in. A copy can only drop what somebody thought to
185
+ * drop, and it can also DROP MATERIAL by accident — a jury shown less than the
186
+ * application sent is the worse failure of the two. A strict parse against a
187
+ * closed union refuses an unknown field outright and cannot silently lose a known
188
+ * one.
189
+ *
190
+ * `__tests__/reviewer-surface.test.ts` asserts this union still covers every
191
+ * `RESOURCE_TYPES` member and every base field of an envelope resource, so a new
192
+ * resource type or field in `resources.ts` cannot quietly stop reaching a jury.
193
+ */
194
+ export declare const ReviewerResourceSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
195
+ type: z.ZodLiteral<"text">;
196
+ data: z.ZodObject<{
197
+ text: z.ZodString;
198
+ formatting: z.ZodOptional<z.ZodEnum<{
199
+ plain: "plain";
200
+ markdown_subset: "markdown_subset";
201
+ }>>;
202
+ }, z.core.$strict>;
203
+ id: z.ZodString;
204
+ role: z.ZodEnum<{
205
+ metadata: "metadata";
206
+ subject: "subject";
207
+ attachment: "attachment";
208
+ context: "context";
209
+ parent: "parent";
210
+ quoted: "quoted";
211
+ evidence: "evidence";
212
+ policy_context: "policy_context";
213
+ }>;
214
+ language: z.ZodOptional<z.ZodString>;
215
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
216
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
217
+ sensitivity: z.ZodOptional<z.ZodString>;
218
+ }, z.core.$strict>, z.ZodObject<{
219
+ type: z.ZodLiteral<"link">;
220
+ data: z.ZodObject<{
221
+ url: z.ZodURL;
222
+ title: z.ZodOptional<z.ZodString>;
223
+ resolvedHost: z.ZodOptional<z.ZodString>;
224
+ snapshot: z.ZodOptional<z.ZodString>;
225
+ }, z.core.$strict>;
226
+ id: z.ZodString;
227
+ role: z.ZodEnum<{
228
+ metadata: "metadata";
229
+ subject: "subject";
230
+ attachment: "attachment";
231
+ context: "context";
232
+ parent: "parent";
233
+ quoted: "quoted";
234
+ evidence: "evidence";
235
+ policy_context: "policy_context";
236
+ }>;
237
+ language: z.ZodOptional<z.ZodString>;
238
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
239
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
240
+ sensitivity: z.ZodOptional<z.ZodString>;
241
+ }, z.core.$strict>, z.ZodObject<{
242
+ type: z.ZodLiteral<"profile">;
243
+ data: z.ZodObject<{
244
+ displayName: z.ZodOptional<z.ZodString>;
245
+ bio: z.ZodOptional<z.ZodString>;
246
+ avatarRef: z.ZodOptional<z.ZodString>;
247
+ claims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
248
+ }, z.core.$strict>;
249
+ id: z.ZodString;
250
+ role: z.ZodEnum<{
251
+ metadata: "metadata";
252
+ subject: "subject";
253
+ attachment: "attachment";
254
+ context: "context";
255
+ parent: "parent";
256
+ quoted: "quoted";
257
+ evidence: "evidence";
258
+ policy_context: "policy_context";
259
+ }>;
260
+ language: z.ZodOptional<z.ZodString>;
261
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
262
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
263
+ sensitivity: z.ZodOptional<z.ZodString>;
264
+ }, z.core.$strict>, z.ZodObject<{
265
+ type: z.ZodLiteral<"conversation">;
266
+ data: z.ZodObject<{
267
+ messageResourceIds: z.ZodArray<z.ZodString>;
268
+ }, z.core.$strict>;
269
+ id: z.ZodString;
270
+ role: z.ZodEnum<{
271
+ metadata: "metadata";
272
+ subject: "subject";
273
+ attachment: "attachment";
274
+ context: "context";
275
+ parent: "parent";
276
+ quoted: "quoted";
277
+ evidence: "evidence";
278
+ policy_context: "policy_context";
279
+ }>;
280
+ language: z.ZodOptional<z.ZodString>;
281
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
282
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
283
+ sensitivity: z.ZodOptional<z.ZodString>;
284
+ }, z.core.$strict>, z.ZodObject<{
285
+ type: z.ZodLiteral<"listing">;
286
+ data: z.ZodObject<{
287
+ title: z.ZodString;
288
+ description: z.ZodOptional<z.ZodString>;
289
+ price: z.ZodOptional<z.ZodNumber>;
290
+ currency: z.ZodOptional<z.ZodString>;
291
+ sellerRef: z.ZodOptional<z.ZodString>;
292
+ mediaRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
293
+ }, z.core.$strict>;
294
+ id: z.ZodString;
295
+ role: z.ZodEnum<{
296
+ metadata: "metadata";
297
+ subject: "subject";
298
+ attachment: "attachment";
299
+ context: "context";
300
+ parent: "parent";
301
+ quoted: "quoted";
302
+ evidence: "evidence";
303
+ policy_context: "policy_context";
304
+ }>;
305
+ language: z.ZodOptional<z.ZodString>;
306
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
307
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
308
+ sensitivity: z.ZodOptional<z.ZodString>;
309
+ }, z.core.$strict>, z.ZodObject<{
310
+ type: z.ZodLiteral<"location">;
311
+ data: z.ZodObject<{
312
+ label: z.ZodOptional<z.ZodString>;
313
+ latitude: z.ZodOptional<z.ZodNumber>;
314
+ longitude: z.ZodOptional<z.ZodNumber>;
315
+ }, z.core.$strict>;
316
+ id: z.ZodString;
317
+ role: z.ZodEnum<{
318
+ metadata: "metadata";
319
+ subject: "subject";
320
+ attachment: "attachment";
321
+ context: "context";
322
+ parent: "parent";
323
+ quoted: "quoted";
324
+ evidence: "evidence";
325
+ policy_context: "policy_context";
326
+ }>;
327
+ language: z.ZodOptional<z.ZodString>;
328
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
329
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
330
+ sensitivity: z.ZodOptional<z.ZodString>;
331
+ }, z.core.$strict>, z.ZodObject<{
332
+ type: z.ZodLiteral<"metadata">;
333
+ data: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>;
334
+ id: z.ZodString;
335
+ role: z.ZodEnum<{
336
+ metadata: "metadata";
337
+ subject: "subject";
338
+ attachment: "attachment";
339
+ context: "context";
340
+ parent: "parent";
341
+ quoted: "quoted";
342
+ evidence: "evidence";
343
+ policy_context: "policy_context";
344
+ }>;
345
+ language: z.ZodOptional<z.ZodString>;
346
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
347
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
348
+ sensitivity: z.ZodOptional<z.ZodString>;
349
+ }, z.core.$strict>, z.ZodObject<{
350
+ type: z.ZodLiteral<"custom">;
351
+ schemaId: z.ZodString;
352
+ payload: z.ZodRecord<z.ZodString, z.ZodType<import("./primitives.js").CustomPayloadValue, unknown, z.core.$ZodTypeInternals<import("./primitives.js").CustomPayloadValue, unknown>>>;
353
+ id: z.ZodString;
354
+ role: z.ZodEnum<{
355
+ metadata: "metadata";
356
+ subject: "subject";
357
+ attachment: "attachment";
358
+ context: "context";
359
+ parent: "parent";
360
+ quoted: "quoted";
361
+ evidence: "evidence";
362
+ policy_context: "policy_context";
363
+ }>;
364
+ language: z.ZodOptional<z.ZodString>;
365
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
366
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
367
+ sensitivity: z.ZodOptional<z.ZodString>;
368
+ }, z.core.$strict>, z.ZodObject<{
369
+ type: z.ZodLiteral<"image">;
370
+ asset: z.ZodObject<{
371
+ mediaType: z.ZodString;
372
+ fileId: z.ZodOptional<z.ZodString>;
373
+ retrievable: z.ZodBoolean;
374
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
375
+ width: z.ZodOptional<z.ZodNumber>;
376
+ height: z.ZodOptional<z.ZodNumber>;
377
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
378
+ }, z.core.$strict>;
379
+ id: z.ZodString;
380
+ role: z.ZodEnum<{
381
+ metadata: "metadata";
382
+ subject: "subject";
383
+ attachment: "attachment";
384
+ context: "context";
385
+ parent: "parent";
386
+ quoted: "quoted";
387
+ evidence: "evidence";
388
+ policy_context: "policy_context";
389
+ }>;
390
+ language: z.ZodOptional<z.ZodString>;
391
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
392
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
393
+ sensitivity: z.ZodOptional<z.ZodString>;
394
+ }, z.core.$strict>, z.ZodObject<{
395
+ type: z.ZodLiteral<"video">;
396
+ asset: z.ZodObject<{
397
+ mediaType: z.ZodString;
398
+ fileId: z.ZodOptional<z.ZodString>;
399
+ retrievable: z.ZodBoolean;
400
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
401
+ width: z.ZodOptional<z.ZodNumber>;
402
+ height: z.ZodOptional<z.ZodNumber>;
403
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
404
+ }, z.core.$strict>;
405
+ data: z.ZodOptional<z.ZodObject<{
406
+ timeRange: z.ZodOptional<z.ZodObject<{
407
+ startSeconds: z.ZodNumber;
408
+ endSeconds: z.ZodNumber;
409
+ }, z.core.$strict>>;
410
+ }, z.core.$strict>>;
411
+ id: z.ZodString;
412
+ role: z.ZodEnum<{
413
+ metadata: "metadata";
414
+ subject: "subject";
415
+ attachment: "attachment";
416
+ context: "context";
417
+ parent: "parent";
418
+ quoted: "quoted";
419
+ evidence: "evidence";
420
+ policy_context: "policy_context";
421
+ }>;
422
+ language: z.ZodOptional<z.ZodString>;
423
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
424
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
425
+ sensitivity: z.ZodOptional<z.ZodString>;
426
+ }, z.core.$strict>, z.ZodObject<{
427
+ type: z.ZodLiteral<"audio">;
428
+ asset: z.ZodObject<{
429
+ mediaType: z.ZodString;
430
+ fileId: z.ZodOptional<z.ZodString>;
431
+ retrievable: z.ZodBoolean;
432
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
433
+ width: z.ZodOptional<z.ZodNumber>;
434
+ height: z.ZodOptional<z.ZodNumber>;
435
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
436
+ }, z.core.$strict>;
437
+ data: z.ZodOptional<z.ZodObject<{
438
+ transcript: z.ZodOptional<z.ZodString>;
439
+ }, z.core.$strict>>;
440
+ id: z.ZodString;
441
+ role: z.ZodEnum<{
442
+ metadata: "metadata";
443
+ subject: "subject";
444
+ attachment: "attachment";
445
+ context: "context";
446
+ parent: "parent";
447
+ quoted: "quoted";
448
+ evidence: "evidence";
449
+ policy_context: "policy_context";
450
+ }>;
451
+ language: z.ZodOptional<z.ZodString>;
452
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
453
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
454
+ sensitivity: z.ZodOptional<z.ZodString>;
455
+ }, z.core.$strict>, z.ZodObject<{
456
+ type: z.ZodLiteral<"document">;
457
+ asset: z.ZodObject<{
458
+ mediaType: z.ZodString;
459
+ fileId: z.ZodOptional<z.ZodString>;
460
+ retrievable: z.ZodBoolean;
461
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
462
+ width: z.ZodOptional<z.ZodNumber>;
463
+ height: z.ZodOptional<z.ZodNumber>;
464
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
465
+ }, z.core.$strict>;
466
+ data: z.ZodObject<{
467
+ title: z.ZodString;
468
+ extractedText: z.ZodOptional<z.ZodString>;
469
+ }, z.core.$strict>;
470
+ id: z.ZodString;
471
+ role: z.ZodEnum<{
472
+ metadata: "metadata";
473
+ subject: "subject";
474
+ attachment: "attachment";
475
+ context: "context";
476
+ parent: "parent";
477
+ quoted: "quoted";
478
+ evidence: "evidence";
479
+ policy_context: "policy_context";
480
+ }>;
481
+ language: z.ZodOptional<z.ZodString>;
482
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
483
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
484
+ sensitivity: z.ZodOptional<z.ZodString>;
485
+ }, z.core.$strict>], "type">;
486
+ export type ReviewerResource = z.infer<typeof ReviewerResourceSchema>;
487
+ /**
488
+ * The reviewer view of an envelope resource, derived rather than written.
489
+ *
490
+ * Not the type the two sides use — `ReviewerResource` above is. This exists so
491
+ * the test can compare the WRITTEN union against what the envelope's own
492
+ * `Resource` union implies, which is the only way a new resource type in
493
+ * `resources.ts` produces a failure rather than a resource that silently never
494
+ * reaches a jury.
495
+ */
496
+ export type ReviewerResourceOf<R = Resource> = R extends {
497
+ asset: unknown;
498
+ } ? Omit<R, 'sha256' | 'asset'> & {
499
+ asset: ReviewerAssetView;
500
+ } : Omit<R, 'sha256'>;
501
+ /**
502
+ * The renderable package for ONE assignment (§8.7, §9.1).
503
+ *
504
+ * `language` is nullable because an envelope's resources may declare none, and
505
+ * `families` is plural because a case can allege several: a reviewer is only
506
+ * drawn when they accept ALL of them (§8.2), so naming one would misdescribe what
507
+ * they were asked to judge.
508
+ *
509
+ * `allegations.unverified` is a constant `true` on the wire. It is redundant to a
510
+ * reader of this file and it is not redundant to a screen: §9.1's requirement is
511
+ * that the claim is presented AS a claim, and a flag that must be read to render
512
+ * the label cannot be forgotten the way a comment can. `codes` is plural because
513
+ * a case is the union of every report about the same material (§7.3) and
514
+ * reporters do not all choose the same code — a singular field would silently
515
+ * show a jury one allegation out of several.
516
+ *
517
+ * `watermark` is §13.8's pseudonymous per-assignment mark. Server-issued so a
518
+ * leaked screenshot is traceable to one assignment; never synthesised on the
519
+ * device, because a watermark the client composes is one the client can also omit
520
+ * or forge, leaving a reviewer with the impression of a sealed screen and no
521
+ * actual trace.
522
+ */
523
+ export declare const AssignmentPackageSchema: z.ZodObject<{
524
+ assignmentId: z.ZodString;
525
+ caseRevision: z.ZodNumber;
526
+ expiresAt: z.ZodISODateTime;
527
+ language: z.ZodNullable<z.ZodString>;
528
+ families: z.ZodArray<z.ZodEnum<{
529
+ integrity: "integrity";
530
+ harassment: "harassment";
531
+ hate: "hate";
532
+ violence: "violence";
533
+ sexual_content: "sexual_content";
534
+ child_safety: "child_safety";
535
+ self_harm: "self_harm";
536
+ privacy: "privacy";
537
+ commerce: "commerce";
538
+ platform_abuse: "platform_abuse";
539
+ other: "other";
540
+ }>>;
541
+ allegations: z.ZodObject<{
542
+ unverified: z.ZodLiteral<true>;
543
+ codes: z.ZodArray<z.ZodEnum<{
544
+ "integrity.spam": "integrity.spam";
545
+ "integrity.scam": "integrity.scam";
546
+ "integrity.fraud": "integrity.fraud";
547
+ "integrity.impersonation": "integrity.impersonation";
548
+ "integrity.coordinated_manipulation": "integrity.coordinated_manipulation";
549
+ "harassment.insult": "harassment.insult";
550
+ "harassment.targeted_abuse": "harassment.targeted_abuse";
551
+ "harassment.sexual_harassment": "harassment.sexual_harassment";
552
+ "harassment.doxxing": "harassment.doxxing";
553
+ "harassment.credible_threat": "harassment.credible_threat";
554
+ "hate.dehumanization": "hate.dehumanization";
555
+ "hate.slur": "hate.slur";
556
+ "hate.incitement": "hate.incitement";
557
+ "hate.protected_targeting": "hate.protected_targeting";
558
+ "violence.graphic": "violence.graphic";
559
+ "violence.threat": "violence.threat";
560
+ "violence.instruction": "violence.instruction";
561
+ "violence.celebration": "violence.celebration";
562
+ "sexual_content.nudity": "sexual_content.nudity";
563
+ "sexual_content.explicit_activity": "sexual_content.explicit_activity";
564
+ "sexual_content.non_consensual": "sexual_content.non_consensual";
565
+ "sexual_content.exploitation": "sexual_content.exploitation";
566
+ "child_safety.sexualization": "child_safety.sexualization";
567
+ "child_safety.grooming": "child_safety.grooming";
568
+ "child_safety.exploitation": "child_safety.exploitation";
569
+ "self_harm.promotion": "self_harm.promotion";
570
+ "self_harm.instruction": "self_harm.instruction";
571
+ "self_harm.imminent_risk": "self_harm.imminent_risk";
572
+ "privacy.personal_information": "privacy.personal_information";
573
+ "privacy.intimate_media": "privacy.intimate_media";
574
+ "privacy.location_exposure": "privacy.location_exposure";
575
+ "commerce.prohibited_item": "commerce.prohibited_item";
576
+ "commerce.counterfeit": "commerce.counterfeit";
577
+ "commerce.misleading_listing": "commerce.misleading_listing";
578
+ "commerce.unsafe_product": "commerce.unsafe_product";
579
+ "platform_abuse.ban_evasion": "platform_abuse.ban_evasion";
580
+ "platform_abuse.report_abuse": "platform_abuse.report_abuse";
581
+ "platform_abuse.automation_abuse": "platform_abuse.automation_abuse";
582
+ "other.policy_specific": "other.policy_specific";
583
+ "other.unclassifiable": "other.unclassifiable";
584
+ }>>;
585
+ }, z.core.$strict>;
586
+ policy: z.ZodObject<{
587
+ policySetId: z.ZodString;
588
+ version: z.ZodString;
589
+ taxonomyVersion: z.ZodString;
590
+ rules: z.ZodArray<z.ZodObject<{
591
+ id: z.ZodString;
592
+ title: z.ZodString;
593
+ description: z.ZodOptional<z.ZodString>;
594
+ taxonomyCodes: z.ZodArray<z.ZodEnum<{
595
+ "integrity.spam": "integrity.spam";
596
+ "integrity.scam": "integrity.scam";
597
+ "integrity.fraud": "integrity.fraud";
598
+ "integrity.impersonation": "integrity.impersonation";
599
+ "integrity.coordinated_manipulation": "integrity.coordinated_manipulation";
600
+ "harassment.insult": "harassment.insult";
601
+ "harassment.targeted_abuse": "harassment.targeted_abuse";
602
+ "harassment.sexual_harassment": "harassment.sexual_harassment";
603
+ "harassment.doxxing": "harassment.doxxing";
604
+ "harassment.credible_threat": "harassment.credible_threat";
605
+ "hate.dehumanization": "hate.dehumanization";
606
+ "hate.slur": "hate.slur";
607
+ "hate.incitement": "hate.incitement";
608
+ "hate.protected_targeting": "hate.protected_targeting";
609
+ "violence.graphic": "violence.graphic";
610
+ "violence.threat": "violence.threat";
611
+ "violence.instruction": "violence.instruction";
612
+ "violence.celebration": "violence.celebration";
613
+ "sexual_content.nudity": "sexual_content.nudity";
614
+ "sexual_content.explicit_activity": "sexual_content.explicit_activity";
615
+ "sexual_content.non_consensual": "sexual_content.non_consensual";
616
+ "sexual_content.exploitation": "sexual_content.exploitation";
617
+ "child_safety.sexualization": "child_safety.sexualization";
618
+ "child_safety.grooming": "child_safety.grooming";
619
+ "child_safety.exploitation": "child_safety.exploitation";
620
+ "self_harm.promotion": "self_harm.promotion";
621
+ "self_harm.instruction": "self_harm.instruction";
622
+ "self_harm.imminent_risk": "self_harm.imminent_risk";
623
+ "privacy.personal_information": "privacy.personal_information";
624
+ "privacy.intimate_media": "privacy.intimate_media";
625
+ "privacy.location_exposure": "privacy.location_exposure";
626
+ "commerce.prohibited_item": "commerce.prohibited_item";
627
+ "commerce.counterfeit": "commerce.counterfeit";
628
+ "commerce.misleading_listing": "commerce.misleading_listing";
629
+ "commerce.unsafe_product": "commerce.unsafe_product";
630
+ "platform_abuse.ban_evasion": "platform_abuse.ban_evasion";
631
+ "platform_abuse.report_abuse": "platform_abuse.report_abuse";
632
+ "platform_abuse.automation_abuse": "platform_abuse.automation_abuse";
633
+ "other.policy_specific": "other.policy_specific";
634
+ "other.unclassifiable": "other.unclassifiable";
635
+ }>>;
636
+ defaultSeverity: z.ZodOptional<z.ZodEnum<{
637
+ low: "low";
638
+ medium: "medium";
639
+ high: "high";
640
+ critical: "critical";
641
+ }>>;
642
+ recommendedActions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
643
+ remove_or_restrict: "remove_or_restrict";
644
+ allow_with_label: "allow_with_label";
645
+ remove: "remove";
646
+ hide: "hide";
647
+ label: "label";
648
+ age_gate: "age_gate";
649
+ reduce_distribution: "reduce_distribution";
650
+ freeze_transaction: "freeze_transaction";
651
+ suspend_user: "suspend_user";
652
+ request_changes: "request_changes";
653
+ allow: "allow";
654
+ restore: "restore";
655
+ no_action: "no_action";
656
+ request_more_context: "request_more_context";
657
+ hold: "hold";
658
+ local_manual_review: "local_manual_review";
659
+ keep_restricted_temporarily: "keep_restricted_temporarily";
660
+ escalate: "escalate";
661
+ no_global_effect: "no_global_effect";
662
+ specialist_queue: "specialist_queue";
663
+ legal_queue: "legal_queue";
664
+ safety_queue: "safety_queue";
665
+ }>>>;
666
+ }, z.core.$strict>>;
667
+ }, z.core.$strict>;
668
+ presentation: z.ZodObject<{
669
+ sensitivityClass: z.ZodEnum<{
670
+ standard: "standard";
671
+ sensitive: "sensitive";
672
+ restricted: "restricted";
673
+ }>;
674
+ requiresRedaction: z.ZodBoolean;
675
+ blurBeforeReveal: z.ZodBoolean;
676
+ }, z.core.$strict>;
677
+ resources: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
678
+ type: z.ZodLiteral<"text">;
679
+ data: z.ZodObject<{
680
+ text: z.ZodString;
681
+ formatting: z.ZodOptional<z.ZodEnum<{
682
+ plain: "plain";
683
+ markdown_subset: "markdown_subset";
684
+ }>>;
685
+ }, z.core.$strict>;
686
+ id: z.ZodString;
687
+ role: z.ZodEnum<{
688
+ metadata: "metadata";
689
+ subject: "subject";
690
+ attachment: "attachment";
691
+ context: "context";
692
+ parent: "parent";
693
+ quoted: "quoted";
694
+ evidence: "evidence";
695
+ policy_context: "policy_context";
696
+ }>;
697
+ language: z.ZodOptional<z.ZodString>;
698
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
699
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
700
+ sensitivity: z.ZodOptional<z.ZodString>;
701
+ }, z.core.$strict>, z.ZodObject<{
702
+ type: z.ZodLiteral<"link">;
703
+ data: z.ZodObject<{
704
+ url: z.ZodURL;
705
+ title: z.ZodOptional<z.ZodString>;
706
+ resolvedHost: z.ZodOptional<z.ZodString>;
707
+ snapshot: z.ZodOptional<z.ZodString>;
708
+ }, z.core.$strict>;
709
+ id: z.ZodString;
710
+ role: z.ZodEnum<{
711
+ metadata: "metadata";
712
+ subject: "subject";
713
+ attachment: "attachment";
714
+ context: "context";
715
+ parent: "parent";
716
+ quoted: "quoted";
717
+ evidence: "evidence";
718
+ policy_context: "policy_context";
719
+ }>;
720
+ language: z.ZodOptional<z.ZodString>;
721
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
722
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
723
+ sensitivity: z.ZodOptional<z.ZodString>;
724
+ }, z.core.$strict>, z.ZodObject<{
725
+ type: z.ZodLiteral<"profile">;
726
+ data: z.ZodObject<{
727
+ displayName: z.ZodOptional<z.ZodString>;
728
+ bio: z.ZodOptional<z.ZodString>;
729
+ avatarRef: z.ZodOptional<z.ZodString>;
730
+ claims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
731
+ }, z.core.$strict>;
732
+ id: z.ZodString;
733
+ role: z.ZodEnum<{
734
+ metadata: "metadata";
735
+ subject: "subject";
736
+ attachment: "attachment";
737
+ context: "context";
738
+ parent: "parent";
739
+ quoted: "quoted";
740
+ evidence: "evidence";
741
+ policy_context: "policy_context";
742
+ }>;
743
+ language: z.ZodOptional<z.ZodString>;
744
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
745
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
746
+ sensitivity: z.ZodOptional<z.ZodString>;
747
+ }, z.core.$strict>, z.ZodObject<{
748
+ type: z.ZodLiteral<"conversation">;
749
+ data: z.ZodObject<{
750
+ messageResourceIds: z.ZodArray<z.ZodString>;
751
+ }, z.core.$strict>;
752
+ id: z.ZodString;
753
+ role: z.ZodEnum<{
754
+ metadata: "metadata";
755
+ subject: "subject";
756
+ attachment: "attachment";
757
+ context: "context";
758
+ parent: "parent";
759
+ quoted: "quoted";
760
+ evidence: "evidence";
761
+ policy_context: "policy_context";
762
+ }>;
763
+ language: z.ZodOptional<z.ZodString>;
764
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
765
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
766
+ sensitivity: z.ZodOptional<z.ZodString>;
767
+ }, z.core.$strict>, z.ZodObject<{
768
+ type: z.ZodLiteral<"listing">;
769
+ data: z.ZodObject<{
770
+ title: z.ZodString;
771
+ description: z.ZodOptional<z.ZodString>;
772
+ price: z.ZodOptional<z.ZodNumber>;
773
+ currency: z.ZodOptional<z.ZodString>;
774
+ sellerRef: z.ZodOptional<z.ZodString>;
775
+ mediaRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
776
+ }, z.core.$strict>;
777
+ id: z.ZodString;
778
+ role: z.ZodEnum<{
779
+ metadata: "metadata";
780
+ subject: "subject";
781
+ attachment: "attachment";
782
+ context: "context";
783
+ parent: "parent";
784
+ quoted: "quoted";
785
+ evidence: "evidence";
786
+ policy_context: "policy_context";
787
+ }>;
788
+ language: z.ZodOptional<z.ZodString>;
789
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
790
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
791
+ sensitivity: z.ZodOptional<z.ZodString>;
792
+ }, z.core.$strict>, z.ZodObject<{
793
+ type: z.ZodLiteral<"location">;
794
+ data: z.ZodObject<{
795
+ label: z.ZodOptional<z.ZodString>;
796
+ latitude: z.ZodOptional<z.ZodNumber>;
797
+ longitude: z.ZodOptional<z.ZodNumber>;
798
+ }, z.core.$strict>;
799
+ id: z.ZodString;
800
+ role: z.ZodEnum<{
801
+ metadata: "metadata";
802
+ subject: "subject";
803
+ attachment: "attachment";
804
+ context: "context";
805
+ parent: "parent";
806
+ quoted: "quoted";
807
+ evidence: "evidence";
808
+ policy_context: "policy_context";
809
+ }>;
810
+ language: z.ZodOptional<z.ZodString>;
811
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
812
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
813
+ sensitivity: z.ZodOptional<z.ZodString>;
814
+ }, z.core.$strict>, z.ZodObject<{
815
+ type: z.ZodLiteral<"metadata">;
816
+ data: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>;
817
+ id: z.ZodString;
818
+ role: z.ZodEnum<{
819
+ metadata: "metadata";
820
+ subject: "subject";
821
+ attachment: "attachment";
822
+ context: "context";
823
+ parent: "parent";
824
+ quoted: "quoted";
825
+ evidence: "evidence";
826
+ policy_context: "policy_context";
827
+ }>;
828
+ language: z.ZodOptional<z.ZodString>;
829
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
830
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
831
+ sensitivity: z.ZodOptional<z.ZodString>;
832
+ }, z.core.$strict>, z.ZodObject<{
833
+ type: z.ZodLiteral<"custom">;
834
+ schemaId: z.ZodString;
835
+ payload: z.ZodRecord<z.ZodString, z.ZodType<import("./primitives.js").CustomPayloadValue, unknown, z.core.$ZodTypeInternals<import("./primitives.js").CustomPayloadValue, unknown>>>;
836
+ id: z.ZodString;
837
+ role: z.ZodEnum<{
838
+ metadata: "metadata";
839
+ subject: "subject";
840
+ attachment: "attachment";
841
+ context: "context";
842
+ parent: "parent";
843
+ quoted: "quoted";
844
+ evidence: "evidence";
845
+ policy_context: "policy_context";
846
+ }>;
847
+ language: z.ZodOptional<z.ZodString>;
848
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
849
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
850
+ sensitivity: z.ZodOptional<z.ZodString>;
851
+ }, z.core.$strict>, z.ZodObject<{
852
+ type: z.ZodLiteral<"image">;
853
+ asset: z.ZodObject<{
854
+ mediaType: z.ZodString;
855
+ fileId: z.ZodOptional<z.ZodString>;
856
+ retrievable: z.ZodBoolean;
857
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
858
+ width: z.ZodOptional<z.ZodNumber>;
859
+ height: z.ZodOptional<z.ZodNumber>;
860
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
861
+ }, z.core.$strict>;
862
+ id: z.ZodString;
863
+ role: z.ZodEnum<{
864
+ metadata: "metadata";
865
+ subject: "subject";
866
+ attachment: "attachment";
867
+ context: "context";
868
+ parent: "parent";
869
+ quoted: "quoted";
870
+ evidence: "evidence";
871
+ policy_context: "policy_context";
872
+ }>;
873
+ language: z.ZodOptional<z.ZodString>;
874
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
875
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
876
+ sensitivity: z.ZodOptional<z.ZodString>;
877
+ }, z.core.$strict>, z.ZodObject<{
878
+ type: z.ZodLiteral<"video">;
879
+ asset: z.ZodObject<{
880
+ mediaType: z.ZodString;
881
+ fileId: z.ZodOptional<z.ZodString>;
882
+ retrievable: z.ZodBoolean;
883
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
884
+ width: z.ZodOptional<z.ZodNumber>;
885
+ height: z.ZodOptional<z.ZodNumber>;
886
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
887
+ }, z.core.$strict>;
888
+ data: z.ZodOptional<z.ZodObject<{
889
+ timeRange: z.ZodOptional<z.ZodObject<{
890
+ startSeconds: z.ZodNumber;
891
+ endSeconds: z.ZodNumber;
892
+ }, z.core.$strict>>;
893
+ }, z.core.$strict>>;
894
+ id: z.ZodString;
895
+ role: z.ZodEnum<{
896
+ metadata: "metadata";
897
+ subject: "subject";
898
+ attachment: "attachment";
899
+ context: "context";
900
+ parent: "parent";
901
+ quoted: "quoted";
902
+ evidence: "evidence";
903
+ policy_context: "policy_context";
904
+ }>;
905
+ language: z.ZodOptional<z.ZodString>;
906
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
907
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
908
+ sensitivity: z.ZodOptional<z.ZodString>;
909
+ }, z.core.$strict>, z.ZodObject<{
910
+ type: z.ZodLiteral<"audio">;
911
+ asset: z.ZodObject<{
912
+ mediaType: z.ZodString;
913
+ fileId: z.ZodOptional<z.ZodString>;
914
+ retrievable: z.ZodBoolean;
915
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
916
+ width: z.ZodOptional<z.ZodNumber>;
917
+ height: z.ZodOptional<z.ZodNumber>;
918
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
919
+ }, z.core.$strict>;
920
+ data: z.ZodOptional<z.ZodObject<{
921
+ transcript: z.ZodOptional<z.ZodString>;
922
+ }, z.core.$strict>>;
923
+ id: z.ZodString;
924
+ role: z.ZodEnum<{
925
+ metadata: "metadata";
926
+ subject: "subject";
927
+ attachment: "attachment";
928
+ context: "context";
929
+ parent: "parent";
930
+ quoted: "quoted";
931
+ evidence: "evidence";
932
+ policy_context: "policy_context";
933
+ }>;
934
+ language: z.ZodOptional<z.ZodString>;
935
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
936
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
937
+ sensitivity: z.ZodOptional<z.ZodString>;
938
+ }, z.core.$strict>, z.ZodObject<{
939
+ type: z.ZodLiteral<"document">;
940
+ asset: z.ZodObject<{
941
+ mediaType: z.ZodString;
942
+ fileId: z.ZodOptional<z.ZodString>;
943
+ retrievable: z.ZodBoolean;
944
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
945
+ width: z.ZodOptional<z.ZodNumber>;
946
+ height: z.ZodOptional<z.ZodNumber>;
947
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
948
+ }, z.core.$strict>;
949
+ data: z.ZodObject<{
950
+ title: z.ZodString;
951
+ extractedText: z.ZodOptional<z.ZodString>;
952
+ }, z.core.$strict>;
953
+ id: z.ZodString;
954
+ role: z.ZodEnum<{
955
+ metadata: "metadata";
956
+ subject: "subject";
957
+ attachment: "attachment";
958
+ context: "context";
959
+ parent: "parent";
960
+ quoted: "quoted";
961
+ evidence: "evidence";
962
+ policy_context: "policy_context";
963
+ }>;
964
+ language: z.ZodOptional<z.ZodString>;
965
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
966
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
967
+ sensitivity: z.ZodOptional<z.ZodString>;
968
+ }, z.core.$strict>], "type">>;
969
+ relations: z.ZodArray<z.ZodObject<{
970
+ from: z.ZodString;
971
+ type: z.ZodEnum<{
972
+ has_attachment: "has_attachment";
973
+ replies_to: "replies_to";
974
+ quotes: "quotes";
975
+ authored_by: "authored_by";
976
+ contextualizes: "contextualizes";
977
+ previous_version: "previous_version";
978
+ contains: "contains";
979
+ refers_to: "refers_to";
980
+ }>;
981
+ to: z.ZodString;
982
+ }, z.core.$strict>>;
983
+ watermark: z.ZodNullable<z.ZodString>;
984
+ authorContext: z.ZodOptional<z.ZodObject<{
985
+ unverified: z.ZodLiteral<true>;
986
+ statement: z.ZodString;
987
+ resourceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
988
+ fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
989
+ }, z.core.$strict>>;
990
+ }, z.core.$strict>;
991
+ export type AssignmentPackage = z.infer<typeof AssignmentPackageSchema>;
992
+ /**
993
+ * What `POST /v1/reviewer/assignments/next` returns.
994
+ *
995
+ * The token is here and on no other response, because it is handed over exactly
996
+ * once and only its hash is stored (§8.7). Every later call on this assignment
997
+ * presents it in `x-assignment-token`.
998
+ */
999
+ export declare const IssuedAssignmentPackageSchema: z.ZodObject<{
1000
+ assignmentId: z.ZodString;
1001
+ caseRevision: z.ZodNumber;
1002
+ expiresAt: z.ZodISODateTime;
1003
+ language: z.ZodNullable<z.ZodString>;
1004
+ families: z.ZodArray<z.ZodEnum<{
1005
+ integrity: "integrity";
1006
+ harassment: "harassment";
1007
+ hate: "hate";
1008
+ violence: "violence";
1009
+ sexual_content: "sexual_content";
1010
+ child_safety: "child_safety";
1011
+ self_harm: "self_harm";
1012
+ privacy: "privacy";
1013
+ commerce: "commerce";
1014
+ platform_abuse: "platform_abuse";
1015
+ other: "other";
1016
+ }>>;
1017
+ allegations: z.ZodObject<{
1018
+ unverified: z.ZodLiteral<true>;
1019
+ codes: z.ZodArray<z.ZodEnum<{
1020
+ "integrity.spam": "integrity.spam";
1021
+ "integrity.scam": "integrity.scam";
1022
+ "integrity.fraud": "integrity.fraud";
1023
+ "integrity.impersonation": "integrity.impersonation";
1024
+ "integrity.coordinated_manipulation": "integrity.coordinated_manipulation";
1025
+ "harassment.insult": "harassment.insult";
1026
+ "harassment.targeted_abuse": "harassment.targeted_abuse";
1027
+ "harassment.sexual_harassment": "harassment.sexual_harassment";
1028
+ "harassment.doxxing": "harassment.doxxing";
1029
+ "harassment.credible_threat": "harassment.credible_threat";
1030
+ "hate.dehumanization": "hate.dehumanization";
1031
+ "hate.slur": "hate.slur";
1032
+ "hate.incitement": "hate.incitement";
1033
+ "hate.protected_targeting": "hate.protected_targeting";
1034
+ "violence.graphic": "violence.graphic";
1035
+ "violence.threat": "violence.threat";
1036
+ "violence.instruction": "violence.instruction";
1037
+ "violence.celebration": "violence.celebration";
1038
+ "sexual_content.nudity": "sexual_content.nudity";
1039
+ "sexual_content.explicit_activity": "sexual_content.explicit_activity";
1040
+ "sexual_content.non_consensual": "sexual_content.non_consensual";
1041
+ "sexual_content.exploitation": "sexual_content.exploitation";
1042
+ "child_safety.sexualization": "child_safety.sexualization";
1043
+ "child_safety.grooming": "child_safety.grooming";
1044
+ "child_safety.exploitation": "child_safety.exploitation";
1045
+ "self_harm.promotion": "self_harm.promotion";
1046
+ "self_harm.instruction": "self_harm.instruction";
1047
+ "self_harm.imminent_risk": "self_harm.imminent_risk";
1048
+ "privacy.personal_information": "privacy.personal_information";
1049
+ "privacy.intimate_media": "privacy.intimate_media";
1050
+ "privacy.location_exposure": "privacy.location_exposure";
1051
+ "commerce.prohibited_item": "commerce.prohibited_item";
1052
+ "commerce.counterfeit": "commerce.counterfeit";
1053
+ "commerce.misleading_listing": "commerce.misleading_listing";
1054
+ "commerce.unsafe_product": "commerce.unsafe_product";
1055
+ "platform_abuse.ban_evasion": "platform_abuse.ban_evasion";
1056
+ "platform_abuse.report_abuse": "platform_abuse.report_abuse";
1057
+ "platform_abuse.automation_abuse": "platform_abuse.automation_abuse";
1058
+ "other.policy_specific": "other.policy_specific";
1059
+ "other.unclassifiable": "other.unclassifiable";
1060
+ }>>;
1061
+ }, z.core.$strict>;
1062
+ policy: z.ZodObject<{
1063
+ policySetId: z.ZodString;
1064
+ version: z.ZodString;
1065
+ taxonomyVersion: z.ZodString;
1066
+ rules: z.ZodArray<z.ZodObject<{
1067
+ id: z.ZodString;
1068
+ title: z.ZodString;
1069
+ description: z.ZodOptional<z.ZodString>;
1070
+ taxonomyCodes: z.ZodArray<z.ZodEnum<{
1071
+ "integrity.spam": "integrity.spam";
1072
+ "integrity.scam": "integrity.scam";
1073
+ "integrity.fraud": "integrity.fraud";
1074
+ "integrity.impersonation": "integrity.impersonation";
1075
+ "integrity.coordinated_manipulation": "integrity.coordinated_manipulation";
1076
+ "harassment.insult": "harassment.insult";
1077
+ "harassment.targeted_abuse": "harassment.targeted_abuse";
1078
+ "harassment.sexual_harassment": "harassment.sexual_harassment";
1079
+ "harassment.doxxing": "harassment.doxxing";
1080
+ "harassment.credible_threat": "harassment.credible_threat";
1081
+ "hate.dehumanization": "hate.dehumanization";
1082
+ "hate.slur": "hate.slur";
1083
+ "hate.incitement": "hate.incitement";
1084
+ "hate.protected_targeting": "hate.protected_targeting";
1085
+ "violence.graphic": "violence.graphic";
1086
+ "violence.threat": "violence.threat";
1087
+ "violence.instruction": "violence.instruction";
1088
+ "violence.celebration": "violence.celebration";
1089
+ "sexual_content.nudity": "sexual_content.nudity";
1090
+ "sexual_content.explicit_activity": "sexual_content.explicit_activity";
1091
+ "sexual_content.non_consensual": "sexual_content.non_consensual";
1092
+ "sexual_content.exploitation": "sexual_content.exploitation";
1093
+ "child_safety.sexualization": "child_safety.sexualization";
1094
+ "child_safety.grooming": "child_safety.grooming";
1095
+ "child_safety.exploitation": "child_safety.exploitation";
1096
+ "self_harm.promotion": "self_harm.promotion";
1097
+ "self_harm.instruction": "self_harm.instruction";
1098
+ "self_harm.imminent_risk": "self_harm.imminent_risk";
1099
+ "privacy.personal_information": "privacy.personal_information";
1100
+ "privacy.intimate_media": "privacy.intimate_media";
1101
+ "privacy.location_exposure": "privacy.location_exposure";
1102
+ "commerce.prohibited_item": "commerce.prohibited_item";
1103
+ "commerce.counterfeit": "commerce.counterfeit";
1104
+ "commerce.misleading_listing": "commerce.misleading_listing";
1105
+ "commerce.unsafe_product": "commerce.unsafe_product";
1106
+ "platform_abuse.ban_evasion": "platform_abuse.ban_evasion";
1107
+ "platform_abuse.report_abuse": "platform_abuse.report_abuse";
1108
+ "platform_abuse.automation_abuse": "platform_abuse.automation_abuse";
1109
+ "other.policy_specific": "other.policy_specific";
1110
+ "other.unclassifiable": "other.unclassifiable";
1111
+ }>>;
1112
+ defaultSeverity: z.ZodOptional<z.ZodEnum<{
1113
+ low: "low";
1114
+ medium: "medium";
1115
+ high: "high";
1116
+ critical: "critical";
1117
+ }>>;
1118
+ recommendedActions: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1119
+ remove_or_restrict: "remove_or_restrict";
1120
+ allow_with_label: "allow_with_label";
1121
+ remove: "remove";
1122
+ hide: "hide";
1123
+ label: "label";
1124
+ age_gate: "age_gate";
1125
+ reduce_distribution: "reduce_distribution";
1126
+ freeze_transaction: "freeze_transaction";
1127
+ suspend_user: "suspend_user";
1128
+ request_changes: "request_changes";
1129
+ allow: "allow";
1130
+ restore: "restore";
1131
+ no_action: "no_action";
1132
+ request_more_context: "request_more_context";
1133
+ hold: "hold";
1134
+ local_manual_review: "local_manual_review";
1135
+ keep_restricted_temporarily: "keep_restricted_temporarily";
1136
+ escalate: "escalate";
1137
+ no_global_effect: "no_global_effect";
1138
+ specialist_queue: "specialist_queue";
1139
+ legal_queue: "legal_queue";
1140
+ safety_queue: "safety_queue";
1141
+ }>>>;
1142
+ }, z.core.$strict>>;
1143
+ }, z.core.$strict>;
1144
+ presentation: z.ZodObject<{
1145
+ sensitivityClass: z.ZodEnum<{
1146
+ standard: "standard";
1147
+ sensitive: "sensitive";
1148
+ restricted: "restricted";
1149
+ }>;
1150
+ requiresRedaction: z.ZodBoolean;
1151
+ blurBeforeReveal: z.ZodBoolean;
1152
+ }, z.core.$strict>;
1153
+ resources: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1154
+ type: z.ZodLiteral<"text">;
1155
+ data: z.ZodObject<{
1156
+ text: z.ZodString;
1157
+ formatting: z.ZodOptional<z.ZodEnum<{
1158
+ plain: "plain";
1159
+ markdown_subset: "markdown_subset";
1160
+ }>>;
1161
+ }, z.core.$strict>;
1162
+ id: z.ZodString;
1163
+ role: z.ZodEnum<{
1164
+ metadata: "metadata";
1165
+ subject: "subject";
1166
+ attachment: "attachment";
1167
+ context: "context";
1168
+ parent: "parent";
1169
+ quoted: "quoted";
1170
+ evidence: "evidence";
1171
+ policy_context: "policy_context";
1172
+ }>;
1173
+ language: z.ZodOptional<z.ZodString>;
1174
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1175
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1176
+ sensitivity: z.ZodOptional<z.ZodString>;
1177
+ }, z.core.$strict>, z.ZodObject<{
1178
+ type: z.ZodLiteral<"link">;
1179
+ data: z.ZodObject<{
1180
+ url: z.ZodURL;
1181
+ title: z.ZodOptional<z.ZodString>;
1182
+ resolvedHost: z.ZodOptional<z.ZodString>;
1183
+ snapshot: z.ZodOptional<z.ZodString>;
1184
+ }, z.core.$strict>;
1185
+ id: z.ZodString;
1186
+ role: z.ZodEnum<{
1187
+ metadata: "metadata";
1188
+ subject: "subject";
1189
+ attachment: "attachment";
1190
+ context: "context";
1191
+ parent: "parent";
1192
+ quoted: "quoted";
1193
+ evidence: "evidence";
1194
+ policy_context: "policy_context";
1195
+ }>;
1196
+ language: z.ZodOptional<z.ZodString>;
1197
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1198
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1199
+ sensitivity: z.ZodOptional<z.ZodString>;
1200
+ }, z.core.$strict>, z.ZodObject<{
1201
+ type: z.ZodLiteral<"profile">;
1202
+ data: z.ZodObject<{
1203
+ displayName: z.ZodOptional<z.ZodString>;
1204
+ bio: z.ZodOptional<z.ZodString>;
1205
+ avatarRef: z.ZodOptional<z.ZodString>;
1206
+ claims: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
1207
+ }, z.core.$strict>;
1208
+ id: z.ZodString;
1209
+ role: z.ZodEnum<{
1210
+ metadata: "metadata";
1211
+ subject: "subject";
1212
+ attachment: "attachment";
1213
+ context: "context";
1214
+ parent: "parent";
1215
+ quoted: "quoted";
1216
+ evidence: "evidence";
1217
+ policy_context: "policy_context";
1218
+ }>;
1219
+ language: z.ZodOptional<z.ZodString>;
1220
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1221
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1222
+ sensitivity: z.ZodOptional<z.ZodString>;
1223
+ }, z.core.$strict>, z.ZodObject<{
1224
+ type: z.ZodLiteral<"conversation">;
1225
+ data: z.ZodObject<{
1226
+ messageResourceIds: z.ZodArray<z.ZodString>;
1227
+ }, z.core.$strict>;
1228
+ id: z.ZodString;
1229
+ role: z.ZodEnum<{
1230
+ metadata: "metadata";
1231
+ subject: "subject";
1232
+ attachment: "attachment";
1233
+ context: "context";
1234
+ parent: "parent";
1235
+ quoted: "quoted";
1236
+ evidence: "evidence";
1237
+ policy_context: "policy_context";
1238
+ }>;
1239
+ language: z.ZodOptional<z.ZodString>;
1240
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1241
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1242
+ sensitivity: z.ZodOptional<z.ZodString>;
1243
+ }, z.core.$strict>, z.ZodObject<{
1244
+ type: z.ZodLiteral<"listing">;
1245
+ data: z.ZodObject<{
1246
+ title: z.ZodString;
1247
+ description: z.ZodOptional<z.ZodString>;
1248
+ price: z.ZodOptional<z.ZodNumber>;
1249
+ currency: z.ZodOptional<z.ZodString>;
1250
+ sellerRef: z.ZodOptional<z.ZodString>;
1251
+ mediaRefs: z.ZodOptional<z.ZodArray<z.ZodString>>;
1252
+ }, z.core.$strict>;
1253
+ id: z.ZodString;
1254
+ role: z.ZodEnum<{
1255
+ metadata: "metadata";
1256
+ subject: "subject";
1257
+ attachment: "attachment";
1258
+ context: "context";
1259
+ parent: "parent";
1260
+ quoted: "quoted";
1261
+ evidence: "evidence";
1262
+ policy_context: "policy_context";
1263
+ }>;
1264
+ language: z.ZodOptional<z.ZodString>;
1265
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1266
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1267
+ sensitivity: z.ZodOptional<z.ZodString>;
1268
+ }, z.core.$strict>, z.ZodObject<{
1269
+ type: z.ZodLiteral<"location">;
1270
+ data: z.ZodObject<{
1271
+ label: z.ZodOptional<z.ZodString>;
1272
+ latitude: z.ZodOptional<z.ZodNumber>;
1273
+ longitude: z.ZodOptional<z.ZodNumber>;
1274
+ }, z.core.$strict>;
1275
+ id: z.ZodString;
1276
+ role: z.ZodEnum<{
1277
+ metadata: "metadata";
1278
+ subject: "subject";
1279
+ attachment: "attachment";
1280
+ context: "context";
1281
+ parent: "parent";
1282
+ quoted: "quoted";
1283
+ evidence: "evidence";
1284
+ policy_context: "policy_context";
1285
+ }>;
1286
+ language: z.ZodOptional<z.ZodString>;
1287
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1288
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1289
+ sensitivity: z.ZodOptional<z.ZodString>;
1290
+ }, z.core.$strict>, z.ZodObject<{
1291
+ type: z.ZodLiteral<"metadata">;
1292
+ data: z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>;
1293
+ id: z.ZodString;
1294
+ role: z.ZodEnum<{
1295
+ metadata: "metadata";
1296
+ subject: "subject";
1297
+ attachment: "attachment";
1298
+ context: "context";
1299
+ parent: "parent";
1300
+ quoted: "quoted";
1301
+ evidence: "evidence";
1302
+ policy_context: "policy_context";
1303
+ }>;
1304
+ language: z.ZodOptional<z.ZodString>;
1305
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1306
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1307
+ sensitivity: z.ZodOptional<z.ZodString>;
1308
+ }, z.core.$strict>, z.ZodObject<{
1309
+ type: z.ZodLiteral<"custom">;
1310
+ schemaId: z.ZodString;
1311
+ payload: z.ZodRecord<z.ZodString, z.ZodType<import("./primitives.js").CustomPayloadValue, unknown, z.core.$ZodTypeInternals<import("./primitives.js").CustomPayloadValue, unknown>>>;
1312
+ id: z.ZodString;
1313
+ role: z.ZodEnum<{
1314
+ metadata: "metadata";
1315
+ subject: "subject";
1316
+ attachment: "attachment";
1317
+ context: "context";
1318
+ parent: "parent";
1319
+ quoted: "quoted";
1320
+ evidence: "evidence";
1321
+ policy_context: "policy_context";
1322
+ }>;
1323
+ language: z.ZodOptional<z.ZodString>;
1324
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1325
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1326
+ sensitivity: z.ZodOptional<z.ZodString>;
1327
+ }, z.core.$strict>, z.ZodObject<{
1328
+ type: z.ZodLiteral<"image">;
1329
+ asset: z.ZodObject<{
1330
+ mediaType: z.ZodString;
1331
+ fileId: z.ZodOptional<z.ZodString>;
1332
+ retrievable: z.ZodBoolean;
1333
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
1334
+ width: z.ZodOptional<z.ZodNumber>;
1335
+ height: z.ZodOptional<z.ZodNumber>;
1336
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
1337
+ }, z.core.$strict>;
1338
+ id: z.ZodString;
1339
+ role: z.ZodEnum<{
1340
+ metadata: "metadata";
1341
+ subject: "subject";
1342
+ attachment: "attachment";
1343
+ context: "context";
1344
+ parent: "parent";
1345
+ quoted: "quoted";
1346
+ evidence: "evidence";
1347
+ policy_context: "policy_context";
1348
+ }>;
1349
+ language: z.ZodOptional<z.ZodString>;
1350
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1351
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1352
+ sensitivity: z.ZodOptional<z.ZodString>;
1353
+ }, z.core.$strict>, z.ZodObject<{
1354
+ type: z.ZodLiteral<"video">;
1355
+ asset: z.ZodObject<{
1356
+ mediaType: z.ZodString;
1357
+ fileId: z.ZodOptional<z.ZodString>;
1358
+ retrievable: z.ZodBoolean;
1359
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
1360
+ width: z.ZodOptional<z.ZodNumber>;
1361
+ height: z.ZodOptional<z.ZodNumber>;
1362
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
1363
+ }, z.core.$strict>;
1364
+ data: z.ZodOptional<z.ZodObject<{
1365
+ timeRange: z.ZodOptional<z.ZodObject<{
1366
+ startSeconds: z.ZodNumber;
1367
+ endSeconds: z.ZodNumber;
1368
+ }, z.core.$strict>>;
1369
+ }, z.core.$strict>>;
1370
+ id: z.ZodString;
1371
+ role: z.ZodEnum<{
1372
+ metadata: "metadata";
1373
+ subject: "subject";
1374
+ attachment: "attachment";
1375
+ context: "context";
1376
+ parent: "parent";
1377
+ quoted: "quoted";
1378
+ evidence: "evidence";
1379
+ policy_context: "policy_context";
1380
+ }>;
1381
+ language: z.ZodOptional<z.ZodString>;
1382
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1383
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1384
+ sensitivity: z.ZodOptional<z.ZodString>;
1385
+ }, z.core.$strict>, z.ZodObject<{
1386
+ type: z.ZodLiteral<"audio">;
1387
+ asset: z.ZodObject<{
1388
+ mediaType: z.ZodString;
1389
+ fileId: z.ZodOptional<z.ZodString>;
1390
+ retrievable: z.ZodBoolean;
1391
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
1392
+ width: z.ZodOptional<z.ZodNumber>;
1393
+ height: z.ZodOptional<z.ZodNumber>;
1394
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
1395
+ }, z.core.$strict>;
1396
+ data: z.ZodOptional<z.ZodObject<{
1397
+ transcript: z.ZodOptional<z.ZodString>;
1398
+ }, z.core.$strict>>;
1399
+ id: z.ZodString;
1400
+ role: z.ZodEnum<{
1401
+ metadata: "metadata";
1402
+ subject: "subject";
1403
+ attachment: "attachment";
1404
+ context: "context";
1405
+ parent: "parent";
1406
+ quoted: "quoted";
1407
+ evidence: "evidence";
1408
+ policy_context: "policy_context";
1409
+ }>;
1410
+ language: z.ZodOptional<z.ZodString>;
1411
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1412
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1413
+ sensitivity: z.ZodOptional<z.ZodString>;
1414
+ }, z.core.$strict>, z.ZodObject<{
1415
+ type: z.ZodLiteral<"document">;
1416
+ asset: z.ZodObject<{
1417
+ mediaType: z.ZodString;
1418
+ fileId: z.ZodOptional<z.ZodString>;
1419
+ retrievable: z.ZodBoolean;
1420
+ sizeBytes: z.ZodOptional<z.ZodNumber>;
1421
+ width: z.ZodOptional<z.ZodNumber>;
1422
+ height: z.ZodOptional<z.ZodNumber>;
1423
+ durationSeconds: z.ZodOptional<z.ZodNumber>;
1424
+ }, z.core.$strict>;
1425
+ data: z.ZodObject<{
1426
+ title: z.ZodString;
1427
+ extractedText: z.ZodOptional<z.ZodString>;
1428
+ }, z.core.$strict>;
1429
+ id: z.ZodString;
1430
+ role: z.ZodEnum<{
1431
+ metadata: "metadata";
1432
+ subject: "subject";
1433
+ attachment: "attachment";
1434
+ context: "context";
1435
+ parent: "parent";
1436
+ quoted: "quoted";
1437
+ evidence: "evidence";
1438
+ policy_context: "policy_context";
1439
+ }>;
1440
+ language: z.ZodOptional<z.ZodString>;
1441
+ createdAt: z.ZodOptional<z.ZodISODateTime>;
1442
+ authorPrincipalRef: z.ZodOptional<z.ZodString>;
1443
+ sensitivity: z.ZodOptional<z.ZodString>;
1444
+ }, z.core.$strict>], "type">>;
1445
+ relations: z.ZodArray<z.ZodObject<{
1446
+ from: z.ZodString;
1447
+ type: z.ZodEnum<{
1448
+ has_attachment: "has_attachment";
1449
+ replies_to: "replies_to";
1450
+ quotes: "quotes";
1451
+ authored_by: "authored_by";
1452
+ contextualizes: "contextualizes";
1453
+ previous_version: "previous_version";
1454
+ contains: "contains";
1455
+ refers_to: "refers_to";
1456
+ }>;
1457
+ to: z.ZodString;
1458
+ }, z.core.$strict>>;
1459
+ watermark: z.ZodNullable<z.ZodString>;
1460
+ authorContext: z.ZodOptional<z.ZodObject<{
1461
+ unverified: z.ZodLiteral<true>;
1462
+ statement: z.ZodString;
1463
+ resourceIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
1464
+ fields: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodNull]>>>;
1465
+ }, z.core.$strict>>;
1466
+ token: z.ZodString;
1467
+ }, z.core.$strict>;
1468
+ export type IssuedAssignmentPackage = z.infer<typeof IssuedAssignmentPackageSchema>;
1469
+ export declare const ReviewerEligibilityRequirementSchema: z.ZodObject<{
1470
+ id: z.ZodEnum<{
1471
+ oxy_account: "oxy_account";
1472
+ personhood: "personhood";
1473
+ age: "age";
1474
+ rules_accepted: "rules_accepted";
1475
+ languages_selected: "languages_selected";
1476
+ categories_selected: "categories_selected";
1477
+ training_current: "training_current";
1478
+ calibration_current: "calibration_current";
1479
+ }>;
1480
+ met: z.ZodBoolean;
1481
+ }, z.core.$strict>;
1482
+ export type ReviewerEligibilityRequirement = z.infer<typeof ReviewerEligibilityRequirementSchema>;
1483
+ /**
1484
+ * §4.1's "Fiabilidad" — the reviewer's OWN standing in one category.
1485
+ *
1486
+ * Per category and not per (category, language): reliability is seeded by
1487
+ * calibration and moved by gold cases and audits, none of which are measured per
1488
+ * language, so a per-language figure would be the same number repeated. §4.1 asks
1489
+ * for both axes and this is the honest half of it.
1490
+ *
1491
+ * It is never anybody else's figure. §9.1 forbids a reviewer seeing another
1492
+ * person's reputation, and no shape on this surface could carry one.
1493
+ */
1494
+ export declare const ReviewerCategoryStandingSchema: z.ZodObject<{
1495
+ category: z.ZodEnum<{
1496
+ integrity: "integrity";
1497
+ harassment: "harassment";
1498
+ hate: "hate";
1499
+ violence: "violence";
1500
+ sexual_content: "sexual_content";
1501
+ child_safety: "child_safety";
1502
+ self_harm: "self_harm";
1503
+ privacy: "privacy";
1504
+ commerce: "commerce";
1505
+ platform_abuse: "platform_abuse";
1506
+ other: "other";
1507
+ }>;
1508
+ reliability: z.ZodNumber;
1509
+ specialist: z.ZodBoolean;
1510
+ }, z.core.$strict>;
1511
+ export type ReviewerCategoryStanding = z.infer<typeof ReviewerCategoryStandingSchema>;
1512
+ /**
1513
+ * §13.7's exposure and rest, as numbers rather than as a verdict.
1514
+ *
1515
+ * `breakRequiredUntil` is the sensitive-material rest of the backend's
1516
+ * `eligibility.ts`: after `SENSITIVE_EXPOSURE_MAX` sensitive cases inside
1517
+ * `SENSITIVE_EXPOSURE_WINDOW_HOURS`, the oldest of them leaving the window is
1518
+ * when the reviewer may be drawn for sensitive material again. It rests only the
1519
+ * SENSITIVE route — somebody who has worked through several distressing cases can
1520
+ * still judge a spam report — so it is not a blanket block, and a screen showing
1521
+ * it has to say which route it applies to.
1522
+ */
1523
+ export declare const ReviewerExposureViewSchema: z.ZodObject<{
1524
+ reviewedToday: z.ZodNumber;
1525
+ dailyLimit: z.ZodNumber;
1526
+ openAssignments: z.ZodNumber;
1527
+ maxOpenAssignments: z.ZodNumber;
1528
+ breakRequiredUntil: z.ZodNullable<z.ZodISODateTime>;
1529
+ }, z.core.$strict>;
1530
+ export type ReviewerExposureView = z.infer<typeof ReviewerExposureViewSchema>;
1531
+ /**
1532
+ * §13.7 — consent, per category and revocable at any moment.
1533
+ *
1534
+ * `maxSensitivity` lives here rather than in preferences because it IS consent:
1535
+ * the ceiling of what this person agreed to be shown. Keeping a second copy of
1536
+ * `sensitiveCategories` under preferences — which is what the app used to declare
1537
+ * — guarantees two fields that can disagree about the same fact.
1538
+ */
1539
+ export declare const ReviewerConsentViewSchema: z.ZodObject<{
1540
+ rulesAcceptedAt: z.ZodNullable<z.ZodISODateTime>;
1541
+ ageConfirmed: z.ZodBoolean;
1542
+ maxSensitivity: z.ZodEnum<{
1543
+ standard: "standard";
1544
+ sensitive: "sensitive";
1545
+ restricted: "restricted";
1546
+ }>;
1547
+ sensitiveCategories: z.ZodArray<z.ZodEnum<{
1548
+ integrity: "integrity";
1549
+ harassment: "harassment";
1550
+ hate: "hate";
1551
+ violence: "violence";
1552
+ sexual_content: "sexual_content";
1553
+ child_safety: "child_safety";
1554
+ self_harm: "self_harm";
1555
+ privacy: "privacy";
1556
+ commerce: "commerce";
1557
+ platform_abuse: "platform_abuse";
1558
+ other: "other";
1559
+ }>>;
1560
+ }, z.core.$strict>;
1561
+ export type ReviewerConsentView = z.infer<typeof ReviewerConsentViewSchema>;
1562
+ export declare const ReviewerPreferencesViewSchema: z.ZodObject<{
1563
+ languages: z.ZodArray<z.ZodString>;
1564
+ categories: z.ZodArray<z.ZodEnum<{
1565
+ integrity: "integrity";
1566
+ harassment: "harassment";
1567
+ hate: "hate";
1568
+ violence: "violence";
1569
+ sexual_content: "sexual_content";
1570
+ child_safety: "child_safety";
1571
+ self_harm: "self_harm";
1572
+ privacy: "privacy";
1573
+ commerce: "commerce";
1574
+ platform_abuse: "platform_abuse";
1575
+ other: "other";
1576
+ }>>;
1577
+ dailyLimit: z.ZodNumber;
1578
+ availableForAssignment: z.ZodBoolean;
1579
+ }, z.core.$strict>;
1580
+ export type ReviewerPreferencesView = z.infer<typeof ReviewerPreferencesViewSchema>;
1581
+ /**
1582
+ * `GET /v1/reviewer/profile` (§10.3: "eligibility, categories and PRIVATE
1583
+ * reliability").
1584
+ *
1585
+ * Private meaning shown to its owner and to nobody else. What the document holds
1586
+ * and this does not: `oxyUserId` (§8.7 keeps the identity and the reviewer id
1587
+ * apart), `samplingKey` (publishing it would let somebody reason about when they
1588
+ * are likely to be considered), `personhoodConfidence` (the threshold is what
1589
+ * matters; a bare number invites optimising a figure whose inputs are invisible),
1590
+ * and the anti-abuse signals.
1591
+ */
1592
+ export declare const ReviewerProfileViewSchema: z.ZodObject<{
1593
+ reviewerId: z.ZodString;
1594
+ state: z.ZodEnum<{
1595
+ applicant: "applicant";
1596
+ calibrating: "calibrating";
1597
+ community: "community";
1598
+ trusted: "trusted";
1599
+ specialist: "specialist";
1600
+ appeals: "appeals";
1601
+ suspended: "suspended";
1602
+ }>;
1603
+ eligibility: z.ZodArray<z.ZodObject<{
1604
+ id: z.ZodEnum<{
1605
+ oxy_account: "oxy_account";
1606
+ personhood: "personhood";
1607
+ age: "age";
1608
+ rules_accepted: "rules_accepted";
1609
+ languages_selected: "languages_selected";
1610
+ categories_selected: "categories_selected";
1611
+ training_current: "training_current";
1612
+ calibration_current: "calibration_current";
1613
+ }>;
1614
+ met: z.ZodBoolean;
1615
+ }, z.core.$strict>>;
1616
+ standings: z.ZodArray<z.ZodObject<{
1617
+ category: z.ZodEnum<{
1618
+ integrity: "integrity";
1619
+ harassment: "harassment";
1620
+ hate: "hate";
1621
+ violence: "violence";
1622
+ sexual_content: "sexual_content";
1623
+ child_safety: "child_safety";
1624
+ self_harm: "self_harm";
1625
+ privacy: "privacy";
1626
+ commerce: "commerce";
1627
+ platform_abuse: "platform_abuse";
1628
+ other: "other";
1629
+ }>;
1630
+ reliability: z.ZodNumber;
1631
+ specialist: z.ZodBoolean;
1632
+ }, z.core.$strict>>;
1633
+ completedReviewCount: z.ZodNumber;
1634
+ preferences: z.ZodObject<{
1635
+ languages: z.ZodArray<z.ZodString>;
1636
+ categories: z.ZodArray<z.ZodEnum<{
1637
+ integrity: "integrity";
1638
+ harassment: "harassment";
1639
+ hate: "hate";
1640
+ violence: "violence";
1641
+ sexual_content: "sexual_content";
1642
+ child_safety: "child_safety";
1643
+ self_harm: "self_harm";
1644
+ privacy: "privacy";
1645
+ commerce: "commerce";
1646
+ platform_abuse: "platform_abuse";
1647
+ other: "other";
1648
+ }>>;
1649
+ dailyLimit: z.ZodNumber;
1650
+ availableForAssignment: z.ZodBoolean;
1651
+ }, z.core.$strict>;
1652
+ consent: z.ZodObject<{
1653
+ rulesAcceptedAt: z.ZodNullable<z.ZodISODateTime>;
1654
+ ageConfirmed: z.ZodBoolean;
1655
+ maxSensitivity: z.ZodEnum<{
1656
+ standard: "standard";
1657
+ sensitive: "sensitive";
1658
+ restricted: "restricted";
1659
+ }>;
1660
+ sensitiveCategories: z.ZodArray<z.ZodEnum<{
1661
+ integrity: "integrity";
1662
+ harassment: "harassment";
1663
+ hate: "hate";
1664
+ violence: "violence";
1665
+ sexual_content: "sexual_content";
1666
+ child_safety: "child_safety";
1667
+ self_harm: "self_harm";
1668
+ privacy: "privacy";
1669
+ commerce: "commerce";
1670
+ platform_abuse: "platform_abuse";
1671
+ other: "other";
1672
+ }>>;
1673
+ }, z.core.$strict>;
1674
+ exposure: z.ZodObject<{
1675
+ reviewedToday: z.ZodNumber;
1676
+ dailyLimit: z.ZodNumber;
1677
+ openAssignments: z.ZodNumber;
1678
+ maxOpenAssignments: z.ZodNumber;
1679
+ breakRequiredUntil: z.ZodNullable<z.ZodISODateTime>;
1680
+ }, z.core.$strict>;
1681
+ }, z.core.$strict>;
1682
+ export type ReviewerProfileView = z.infer<typeof ReviewerProfileViewSchema>;
1683
+ /**
1684
+ * The body of `POST /v1/reviewer/preferences` (§10.3).
1685
+ *
1686
+ * This is also §4.1's onboarding submission. There is no
1687
+ * `POST /v1/reviewer/onboarding`: §10.3's route table has no such endpoint, and
1688
+ * everything the onboarding screen collects — languages, categories, sensitive
1689
+ * consent, age — is precisely what §10.3 says this route updates. Rules
1690
+ * acceptance is the one thing that had no home, so it is a field here.
1691
+ *
1692
+ * `.strict()` matters more here than anywhere else on this surface. `state`,
1693
+ * `personhoodConfidence`, `reliabilityByCategory` and `completedReviewCount` are
1694
+ * the fields that decide who sits on a jury, and a lenient schema plus a
1695
+ * spread-based update is exactly how a reviewer would promote themselves. The
1696
+ * schema refuses unknown keys and the service takes named arguments, so there are
1697
+ * two independent reasons it cannot happen.
1698
+ *
1699
+ * Every field is optional and at least one must be present: a partial update is
1700
+ * the normal case (the wellbeing screen changes one toggle), and an empty body is
1701
+ * a mistake worth naming rather than a no-op worth accepting.
1702
+ */
1703
+ export declare const ReviewerPreferencesUpdateSchema: z.ZodObject<{
1704
+ languages: z.ZodOptional<z.ZodArray<z.ZodString>>;
1705
+ categories: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1706
+ integrity: "integrity";
1707
+ harassment: "harassment";
1708
+ hate: "hate";
1709
+ violence: "violence";
1710
+ sexual_content: "sexual_content";
1711
+ child_safety: "child_safety";
1712
+ self_harm: "self_harm";
1713
+ privacy: "privacy";
1714
+ commerce: "commerce";
1715
+ platform_abuse: "platform_abuse";
1716
+ other: "other";
1717
+ }>>>;
1718
+ rulesAccepted: z.ZodOptional<z.ZodLiteral<true>>;
1719
+ isAdult: z.ZodOptional<z.ZodBoolean>;
1720
+ available: z.ZodOptional<z.ZodBoolean>;
1721
+ dailyReviewLimit: z.ZodOptional<z.ZodNumber>;
1722
+ maxSensitivity: z.ZodOptional<z.ZodEnum<{
1723
+ standard: "standard";
1724
+ sensitive: "sensitive";
1725
+ restricted: "restricted";
1726
+ }>>;
1727
+ consentedSensitiveCategories: z.ZodOptional<z.ZodArray<z.ZodEnum<{
1728
+ integrity: "integrity";
1729
+ harassment: "harassment";
1730
+ hate: "hate";
1731
+ violence: "violence";
1732
+ sexual_content: "sexual_content";
1733
+ child_safety: "child_safety";
1734
+ self_harm: "self_harm";
1735
+ privacy: "privacy";
1736
+ commerce: "commerce";
1737
+ platform_abuse: "platform_abuse";
1738
+ other: "other";
1739
+ }>>>;
1740
+ declaredConflictApplications: z.ZodOptional<z.ZodArray<z.ZodString>>;
1741
+ principalLinks: z.ZodOptional<z.ZodArray<z.ZodObject<{
1742
+ applicationId: z.ZodString;
1743
+ externalPrincipalId: z.ZodString;
1744
+ }, z.core.$strict>>>;
1745
+ }, z.core.$strict>;
1746
+ export type ReviewerPreferencesUpdate = z.infer<typeof ReviewerPreferencesUpdateSchema>;
1747
+ /** `GET /v1/reviewer/training` (§10.3: "list modules and calibration"). */
1748
+ export declare const ReviewerTrainingViewSchema: z.ZodObject<{
1749
+ modules: z.ZodArray<z.ZodObject<{
1750
+ moduleId: z.ZodString;
1751
+ title: z.ZodString;
1752
+ families: z.ZodArray<z.ZodEnum<{
1753
+ integrity: "integrity";
1754
+ harassment: "harassment";
1755
+ hate: "hate";
1756
+ violence: "violence";
1757
+ sexual_content: "sexual_content";
1758
+ child_safety: "child_safety";
1759
+ self_harm: "self_harm";
1760
+ privacy: "privacy";
1761
+ commerce: "commerce";
1762
+ platform_abuse: "platform_abuse";
1763
+ other: "other";
1764
+ }>>;
1765
+ completed: z.ZodBoolean;
1766
+ }, z.core.$strict>>;
1767
+ trainingComplete: z.ZodBoolean;
1768
+ calibrationItems: z.ZodArray<z.ZodObject<{
1769
+ itemId: z.ZodString;
1770
+ text: z.ZodString;
1771
+ }, z.core.$strict>>;
1772
+ calibrationOpen: z.ZodBoolean;
1773
+ calibrationPassedAt: z.ZodNullable<z.ZodISODateTime>;
1774
+ calibrationCurrentUntil: z.ZodNullable<z.ZodISODateTime>;
1775
+ calibrationScore: z.ZodNullable<z.ZodNumber>;
1776
+ calibrationAttempts: z.ZodNumber;
1777
+ calibrationPassScore: z.ZodNumber;
1778
+ }, z.core.$strict>;
1779
+ export type ReviewerTrainingView = z.infer<typeof ReviewerTrainingViewSchema>;
1780
+ /** The body of `POST /v1/reviewer/training/calibration`. */
1781
+ export declare const ReviewerCalibrationSubmissionSchema: z.ZodObject<{
1782
+ answers: z.ZodArray<z.ZodObject<{
1783
+ itemId: z.ZodString;
1784
+ violation: z.ZodBoolean;
1785
+ code: z.ZodOptional<z.ZodEnum<{
1786
+ "integrity.spam": "integrity.spam";
1787
+ "integrity.scam": "integrity.scam";
1788
+ "integrity.fraud": "integrity.fraud";
1789
+ "integrity.impersonation": "integrity.impersonation";
1790
+ "integrity.coordinated_manipulation": "integrity.coordinated_manipulation";
1791
+ "harassment.insult": "harassment.insult";
1792
+ "harassment.targeted_abuse": "harassment.targeted_abuse";
1793
+ "harassment.sexual_harassment": "harassment.sexual_harassment";
1794
+ "harassment.doxxing": "harassment.doxxing";
1795
+ "harassment.credible_threat": "harassment.credible_threat";
1796
+ "hate.dehumanization": "hate.dehumanization";
1797
+ "hate.slur": "hate.slur";
1798
+ "hate.incitement": "hate.incitement";
1799
+ "hate.protected_targeting": "hate.protected_targeting";
1800
+ "violence.graphic": "violence.graphic";
1801
+ "violence.threat": "violence.threat";
1802
+ "violence.instruction": "violence.instruction";
1803
+ "violence.celebration": "violence.celebration";
1804
+ "sexual_content.nudity": "sexual_content.nudity";
1805
+ "sexual_content.explicit_activity": "sexual_content.explicit_activity";
1806
+ "sexual_content.non_consensual": "sexual_content.non_consensual";
1807
+ "sexual_content.exploitation": "sexual_content.exploitation";
1808
+ "child_safety.sexualization": "child_safety.sexualization";
1809
+ "child_safety.grooming": "child_safety.grooming";
1810
+ "child_safety.exploitation": "child_safety.exploitation";
1811
+ "self_harm.promotion": "self_harm.promotion";
1812
+ "self_harm.instruction": "self_harm.instruction";
1813
+ "self_harm.imminent_risk": "self_harm.imminent_risk";
1814
+ "privacy.personal_information": "privacy.personal_information";
1815
+ "privacy.intimate_media": "privacy.intimate_media";
1816
+ "privacy.location_exposure": "privacy.location_exposure";
1817
+ "commerce.prohibited_item": "commerce.prohibited_item";
1818
+ "commerce.counterfeit": "commerce.counterfeit";
1819
+ "commerce.misleading_listing": "commerce.misleading_listing";
1820
+ "commerce.unsafe_product": "commerce.unsafe_product";
1821
+ "platform_abuse.ban_evasion": "platform_abuse.ban_evasion";
1822
+ "platform_abuse.report_abuse": "platform_abuse.report_abuse";
1823
+ "platform_abuse.automation_abuse": "platform_abuse.automation_abuse";
1824
+ "other.policy_specific": "other.policy_specific";
1825
+ "other.unclassifiable": "other.unclassifiable";
1826
+ }>>;
1827
+ }, z.core.$strict>>;
1828
+ }, z.core.$strict>;
1829
+ export type ReviewerCalibrationSubmission = z.infer<typeof ReviewerCalibrationSubmissionSchema>;
1830
+ /**
1831
+ * What a graded attempt reports back.
1832
+ *
1833
+ * The score and which items were wrong, never which answer was right — see
1834
+ * `calibrationItems` above.
1835
+ */
1836
+ export declare const ReviewerCalibrationResultViewSchema: z.ZodObject<{
1837
+ passed: z.ZodBoolean;
1838
+ score: z.ZodNumber;
1839
+ incorrectItemIds: z.ZodArray<z.ZodString>;
1840
+ state: z.ZodEnum<{
1841
+ applicant: "applicant";
1842
+ calibrating: "calibrating";
1843
+ community: "community";
1844
+ trusted: "trusted";
1845
+ specialist: "specialist";
1846
+ appeals: "appeals";
1847
+ suspended: "suspended";
1848
+ }>;
1849
+ }, z.core.$strict>;
1850
+ export type ReviewerCalibrationResultView = z.infer<typeof ReviewerCalibrationResultViewSchema>;
1851
+ export declare const REVIEW_HISTORY_PAGE_SIZE_MAX = 50;
1852
+ export declare const REVIEW_HISTORY_PAGE_SIZE_DEFAULT = 20;
1853
+ /**
1854
+ * §4.1's "Historial" — one completed review as its author may see it back.
1855
+ *
1856
+ * `outcome` is the reviewer's OWN submitted outcome. `decision` is populated only
1857
+ * once a decision has been PUBLISHED for the revision this reviewer judged, and
1858
+ * carries the outcome and the moment and nothing else — no agreement figure, no
1859
+ * jury size, no vote count, no findings. §4.1 asks the history to show "results
1860
+ * that may already be revealed"; §9.1 forbids previous votes and partial results.
1861
+ * Both hold: a published decision is not partial, and an agreement ratio IS a
1862
+ * tally, so it has no field here rather than merely being left unset.
1863
+ */
1864
+ export declare const ReviewHistoryEntrySchema: z.ZodObject<{
1865
+ reviewId: z.ZodString;
1866
+ submittedAt: z.ZodISODateTime;
1867
+ families: z.ZodArray<z.ZodEnum<{
1868
+ integrity: "integrity";
1869
+ harassment: "harassment";
1870
+ hate: "hate";
1871
+ violence: "violence";
1872
+ sexual_content: "sexual_content";
1873
+ child_safety: "child_safety";
1874
+ self_harm: "self_harm";
1875
+ privacy: "privacy";
1876
+ commerce: "commerce";
1877
+ platform_abuse: "platform_abuse";
1878
+ other: "other";
1879
+ }>>;
1880
+ language: z.ZodNullable<z.ZodString>;
1881
+ outcome: z.ZodEnum<{
1882
+ violation: "violation";
1883
+ no_violation: "no_violation";
1884
+ insufficient_context: "insufficient_context";
1885
+ content_unavailable: "content_unavailable";
1886
+ }>;
1887
+ decision: z.ZodNullable<z.ZodObject<{
1888
+ outcome: z.ZodEnum<{
1889
+ violation: "violation";
1890
+ no_violation: "no_violation";
1891
+ insufficient_context: "insufficient_context";
1892
+ content_unavailable: "content_unavailable";
1893
+ inconclusive: "inconclusive";
1894
+ duplicate: "duplicate";
1895
+ escalated: "escalated";
1896
+ }>;
1897
+ publishedAt: z.ZodISODateTime;
1898
+ }, z.core.$strict>>;
1899
+ }, z.core.$strict>;
1900
+ export type ReviewHistoryEntry = z.infer<typeof ReviewHistoryEntrySchema>;
1901
+ /** `GET /v1/reviewer/reviews`. */
1902
+ export declare const ReviewHistoryPageSchema: z.ZodObject<{
1903
+ entries: z.ZodArray<z.ZodObject<{
1904
+ reviewId: z.ZodString;
1905
+ submittedAt: z.ZodISODateTime;
1906
+ families: z.ZodArray<z.ZodEnum<{
1907
+ integrity: "integrity";
1908
+ harassment: "harassment";
1909
+ hate: "hate";
1910
+ violence: "violence";
1911
+ sexual_content: "sexual_content";
1912
+ child_safety: "child_safety";
1913
+ self_harm: "self_harm";
1914
+ privacy: "privacy";
1915
+ commerce: "commerce";
1916
+ platform_abuse: "platform_abuse";
1917
+ other: "other";
1918
+ }>>;
1919
+ language: z.ZodNullable<z.ZodString>;
1920
+ outcome: z.ZodEnum<{
1921
+ violation: "violation";
1922
+ no_violation: "no_violation";
1923
+ insufficient_context: "insufficient_context";
1924
+ content_unavailable: "content_unavailable";
1925
+ }>;
1926
+ decision: z.ZodNullable<z.ZodObject<{
1927
+ outcome: z.ZodEnum<{
1928
+ violation: "violation";
1929
+ no_violation: "no_violation";
1930
+ insufficient_context: "insufficient_context";
1931
+ content_unavailable: "content_unavailable";
1932
+ inconclusive: "inconclusive";
1933
+ duplicate: "duplicate";
1934
+ escalated: "escalated";
1935
+ }>;
1936
+ publishedAt: z.ZodISODateTime;
1937
+ }, z.core.$strict>>;
1938
+ }, z.core.$strict>>;
1939
+ nextCursor: z.ZodNullable<z.ZodString>;
1940
+ }, z.core.$strict>;
1941
+ export type ReviewHistoryPage = z.infer<typeof ReviewHistoryPageSchema>;
1942
+ /**
1943
+ * The query of `GET /v1/reviewer/reviews`.
1944
+ *
1945
+ * The cursor is opaque to the client and meaningful to the server, which is what
1946
+ * lets the pagination change without a client change. It is not an offset: a
1947
+ * reviewer submitting a review between two pages would shift every offset by one
1948
+ * and silently skip an entry — in a list whose only purpose is somebody checking
1949
+ * their own record.
1950
+ */
1951
+ export declare const ReviewHistoryQuerySchema: z.ZodObject<{
1952
+ cursor: z.ZodOptional<z.ZodString>;
1953
+ limit: z.ZodOptional<z.ZodCoercedNumber<unknown>>;
1954
+ }, z.core.$strict>;
1955
+ export type ReviewHistoryQuery = z.infer<typeof ReviewHistoryQuerySchema>;
1956
+ //# sourceMappingURL=reviewer-surface.d.ts.map