stated-protocol-parser 1.0.6 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/README.md +231 -22
  2. package/dist/constants.d.ts +193 -15
  3. package/dist/constants.d.ts.map +1 -1
  4. package/dist/constants.js +197 -20
  5. package/dist/constants.js.map +1 -1
  6. package/dist/esm/constants.d.ts +193 -15
  7. package/dist/esm/constants.d.ts.map +1 -1
  8. package/dist/esm/{hash.browser.d.ts → hash.d.ts} +11 -5
  9. package/dist/esm/hash.d.ts.map +1 -0
  10. package/dist/esm/index.d.ts +4 -42
  11. package/dist/esm/index.d.ts.map +1 -1
  12. package/dist/esm/index.js +2102 -641
  13. package/dist/esm/index.js.map +7 -1
  14. package/dist/esm/protocol.d.ts +30 -0
  15. package/dist/esm/protocol.d.ts.map +1 -0
  16. package/dist/esm/signature.d.ts +49 -0
  17. package/dist/esm/signature.d.ts.map +1 -0
  18. package/dist/esm/types.d.ts +26 -60
  19. package/dist/esm/types.d.ts.map +1 -1
  20. package/dist/esm/utils.d.ts +10 -0
  21. package/dist/esm/utils.d.ts.map +1 -1
  22. package/dist/{hash.browser.d.ts → hash.d.ts} +11 -5
  23. package/dist/hash.d.ts.map +1 -0
  24. package/dist/{hash.browser.js → hash.js} +44 -10
  25. package/dist/hash.js.map +1 -0
  26. package/dist/index.d.ts +4 -42
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +4 -674
  29. package/dist/index.js.map +1 -1
  30. package/dist/protocol.d.ts +30 -0
  31. package/dist/protocol.d.ts.map +1 -0
  32. package/dist/protocol.js +677 -0
  33. package/dist/protocol.js.map +1 -0
  34. package/dist/signature.d.ts +49 -0
  35. package/dist/signature.d.ts.map +1 -0
  36. package/dist/signature.js +169 -0
  37. package/dist/signature.js.map +1 -0
  38. package/dist/types.d.ts +26 -60
  39. package/dist/types.d.ts.map +1 -1
  40. package/dist/types.js +27 -0
  41. package/dist/types.js.map +1 -1
  42. package/dist/utils.d.ts +10 -0
  43. package/dist/utils.d.ts.map +1 -1
  44. package/dist/utils.js +79 -11
  45. package/dist/utils.js.map +1 -1
  46. package/package.json +25 -16
  47. package/src/constants.ts +228 -44
  48. package/src/fixtures.test.ts +236 -0
  49. package/src/hash.test.ts +217 -215
  50. package/src/hash.ts +99 -0
  51. package/src/index.ts +5 -678
  52. package/src/organisation-verification.test.ts +50 -0
  53. package/src/person-verification.test.ts +55 -0
  54. package/src/poll.test.ts +28 -0
  55. package/src/protocol.ts +871 -0
  56. package/src/rating.test.ts +25 -0
  57. package/src/signature.test.ts +200 -0
  58. package/src/signature.ts +159 -0
  59. package/src/statement.test.ts +101 -0
  60. package/src/types.ts +155 -156
  61. package/src/utils.test.ts +140 -0
  62. package/src/utils.ts +102 -16
  63. package/dist/esm/constants.js +0 -47
  64. package/dist/esm/constants.js.map +0 -1
  65. package/dist/esm/hash.browser.d.ts.map +0 -1
  66. package/dist/esm/hash.browser.js +0 -58
  67. package/dist/esm/hash.browser.js.map +0 -1
  68. package/dist/esm/hash.node.d.ts +0 -31
  69. package/dist/esm/hash.node.d.ts.map +0 -1
  70. package/dist/esm/hash.node.js +0 -43
  71. package/dist/esm/hash.node.js.map +0 -1
  72. package/dist/esm/hash.test.d.ts +0 -2
  73. package/dist/esm/hash.test.d.ts.map +0 -1
  74. package/dist/esm/hash.test.js +0 -181
  75. package/dist/esm/hash.test.js.map +0 -1
  76. package/dist/esm/index.test.d.ts +0 -2
  77. package/dist/esm/index.test.d.ts.map +0 -1
  78. package/dist/esm/index.test.js +0 -293
  79. package/dist/esm/index.test.js.map +0 -1
  80. package/dist/esm/types.js +0 -2
  81. package/dist/esm/types.js.map +0 -1
  82. package/dist/esm/utils.js +0 -23
  83. package/dist/esm/utils.js.map +0 -1
  84. package/dist/esm/v3.d.ts +0 -5
  85. package/dist/esm/v3.d.ts.map +0 -1
  86. package/dist/esm/v3.js +0 -60
  87. package/dist/esm/v3.js.map +0 -1
  88. package/dist/hash.browser.d.ts.map +0 -1
  89. package/dist/hash.browser.js.map +0 -1
  90. package/dist/hash.node.d.ts +0 -31
  91. package/dist/hash.node.d.ts.map +0 -1
  92. package/dist/hash.node.js +0 -53
  93. package/dist/hash.node.js.map +0 -1
  94. package/dist/hash.test.d.ts +0 -2
  95. package/dist/hash.test.d.ts.map +0 -1
  96. package/dist/hash.test.js +0 -183
  97. package/dist/hash.test.js.map +0 -1
  98. package/dist/index.test.d.ts +0 -2
  99. package/dist/index.test.d.ts.map +0 -1
  100. package/dist/index.test.js +0 -295
  101. package/dist/index.test.js.map +0 -1
  102. package/dist/v3.d.ts +0 -5
  103. package/dist/v3.d.ts.map +0 -1
  104. package/dist/v3.js +0 -64
  105. package/dist/v3.js.map +0 -1
  106. package/src/hash.browser.ts +0 -65
  107. package/src/hash.node.ts +0 -47
  108. package/src/index.test.ts +0 -378
  109. package/src/v3.ts +0 -62
package/README.md CHANGED
@@ -11,18 +11,19 @@ npm install stated-protocol-parser
11
11
  ## Features
12
12
 
13
13
  - **Statement Parsing & Formatting**: Parse and build statements with domain verification
14
+ - **Cryptographic Signatures**: Sign and verify statements using Ed25519 (Version 5)
14
15
  - **Multiple Statement Types**: Support for various statement types including:
15
16
  - Basic statements
16
- - Quotations
17
17
  - Polls and votes
18
18
  - Organisation and person verifications
19
19
  - Disputes (authenticity and content)
20
- - Ratings, bounties, observations, and boycotts
20
+ - Ratings
21
21
  - PDF signing
22
22
  - Responses
23
23
  - **Type Safety**: Full TypeScript support with comprehensive type definitions
24
- - **Version Support**: Handles multiple format versions (v3 and v4)
24
+ - **Version Support**: Supports version 5 format
25
25
  - **Validation**: Built-in validation for all statement formats
26
+ - **Cross-Platform**: Works in both Node.js and browser environments
26
27
 
27
28
  ## Usage
28
29
 
@@ -46,6 +47,91 @@ console.log(parsed.domain); // 'example.com'
46
47
  console.log(parsed.author); // 'Example Organization'
47
48
  ```
48
49
 
50
+ ### Cryptographic Signatures (Version 5)
51
+
52
+ Version 5 introduces cryptographic signatures for statements, providing non-repudiation and tamper detection.
53
+
54
+ #### Node.js Example
55
+
56
+ ```typescript
57
+ import {
58
+ buildStatement,
59
+ generateKeyPair,
60
+ buildSignedStatement,
61
+ verifySignedStatement,
62
+ parseSignedStatement
63
+ } from 'stated-protocol-parser/node';
64
+
65
+ // Generate a key pair
66
+ const { publicKey, privateKey } = generateKeyPair();
67
+
68
+ // Build a statement
69
+ const statement = buildStatement({
70
+ domain: 'example.com',
71
+ author: 'Example Organization',
72
+ time: new Date(),
73
+ content: 'This is our official signed statement.',
74
+ });
75
+
76
+ // Sign the statement
77
+ const signedStatement = buildSignedStatement(statement, privateKey, publicKey);
78
+
79
+ // Verify the signed statement
80
+ const isValid = verifySignedStatement(signedStatement);
81
+ console.log('Signature valid:', isValid); // true
82
+
83
+ // Parse the signed statement
84
+ const parsed = parseSignedStatement(signedStatement);
85
+ console.log('Original statement:', parsed?.statement);
86
+ console.log('Public key:', parsed?.publicKey);
87
+ console.log('Signature:', parsed?.signature);
88
+ ```
89
+
90
+ #### Browser Example
91
+
92
+ ```typescript
93
+ import {
94
+ buildStatement,
95
+ generateKeyPair,
96
+ buildSignedStatement,
97
+ verifySignedStatement
98
+ } from 'stated-protocol-parser';
99
+
100
+ // Generate a key pair (async in browser)
101
+ const { publicKey, privateKey } = await generateKeyPair();
102
+
103
+ // Build and sign a statement
104
+ const statement = buildStatement({
105
+ domain: 'example.com',
106
+ author: 'Example Organization',
107
+ time: new Date(),
108
+ content: 'This is our official signed statement.',
109
+ });
110
+
111
+ const signedStatement = await buildSignedStatement(statement, privateKey, publicKey);
112
+
113
+ // Verify the signed statement
114
+ const isValid = await verifySignedStatement(signedStatement);
115
+ console.log('Signature valid:', isValid);
116
+ ```
117
+
118
+ #### Signed Statement Format
119
+
120
+ ```
121
+ Stated protocol version: 5
122
+ Publishing domain: example.com
123
+ Author: Example Organization
124
+ Time: Thu, 15 Jun 2023 20:01:26 GMT
125
+ Statement content:
126
+ This is our official signed statement.
127
+ ---
128
+ Statement hash: <url-safe-base64-sha256-hash>
129
+ Public key: <url-safe-base64-encoded-public-key>
130
+ Signature: <url-safe-base64-encoded-signature>
131
+ Algorithm: Ed25519
132
+ ```
133
+
134
+
49
135
  ### Poll
50
136
 
51
137
  ```typescript
@@ -56,10 +142,6 @@ const pollContent = buildPollContent({
56
142
  options: ['Yes', 'No', 'Need more information'],
57
143
  deadline: new Date('2024-12-31'),
58
144
  scopeDescription: 'All registered users',
59
- country: undefined,
60
- city: undefined,
61
- legalEntity: undefined,
62
- domainScope: undefined,
63
145
  });
64
146
 
65
147
  const parsed = parsePoll(pollContent);
@@ -100,13 +182,12 @@ const verification = buildPersonVerificationContent({
100
182
  ### Statement Functions
101
183
 
102
184
  - `buildStatement(params)` - Build a statement string
103
- - `parseStatement({ statement, allowNoVersion? })` - Parse a statement string
185
+ - `parseStatement({ statement })` - Parse a statement string
104
186
 
105
187
  ### Content Type Functions
106
188
 
107
189
  Each content type has corresponding build and parse functions:
108
190
 
109
- - **Quotation**: `buildQuotationContent()`, `parseQuotation()`
110
191
  - **Poll**: `buildPollContent()`, `parsePoll()`
111
192
  - **Vote**: `buildVoteContent()`, `parseVote()`
112
193
  - **Organisation Verification**: `buildOrganisationVerificationContent()`, `parseOrganisationVerification()`
@@ -116,9 +197,6 @@ Each content type has corresponding build and parse functions:
116
197
  - **Response**: `buildResponseContent()`, `parseResponseContent()`
117
198
  - **PDF Signing**: `buildPDFSigningContent()`, `parsePDFSigning()`
118
199
  - **Rating**: `buildRating()`, `parseRating()`
119
- - **Bounty**: `buildBounty()`, `parseBounty()`
120
- - **Observation**: `buildObservation()`, `parseObservation()`
121
- - **Boycott**: `buildBoycott()`, `parseBoycott()`
122
200
 
123
201
  ### Constants
124
202
 
@@ -138,7 +216,6 @@ All TypeScript types are exported:
138
216
  ```typescript
139
217
  import type {
140
218
  Statement,
141
- Quotation,
142
219
  Poll,
143
220
  OrganisationVerification,
144
221
  PersonVerification,
@@ -147,10 +224,7 @@ import type {
147
224
  DisputeContent,
148
225
  ResponseContent,
149
226
  PDFSigning,
150
- Rating,
151
- Bounty,
152
- Observation,
153
- Boycott
227
+ Rating
154
228
  } from 'stated-protocol-parser';
155
229
  ```
156
230
 
@@ -169,6 +243,8 @@ Optional fields:
169
243
  - Authorized signing representative
170
244
  - Tags
171
245
  - Superseded statement
246
+ - Translations (multi-language support)
247
+ - Attachments (up to 5 file references)
172
248
 
173
249
  ### Validation Rules
174
250
 
@@ -179,11 +255,7 @@ Optional fields:
179
255
 
180
256
  ## Version Support
181
257
 
182
- The library supports multiple format versions:
183
- - **Version 3**: Legacy format with different poll structure
184
- - **Version 4**: Current format (default)
185
-
186
- Use `parsePoll(content, '3')` to parse version 3 polls.
258
+ The library supports version 5 format with cryptographic signature support using Ed25519.
187
259
 
188
260
  ## Error Handling
189
261
 
@@ -196,3 +268,140 @@ try {
196
268
  console.error('Invalid statement format:', error.message);
197
269
  }
198
270
  ```
271
+
272
+ ## Static File Publication Standard
273
+
274
+ Organizations can publish statements as static files on their domain following this standardized structure. This enables automated verification and aggregation of statements.
275
+
276
+ ### Directory Structure
277
+
278
+ All statement files should be published under the `/.well-known/` directory:
279
+
280
+ ```
281
+ /.well-known/
282
+ ├── statements.txt # All statements concatenated
283
+ ├── statements/
284
+ │ ├── index.txt # List of all statement files
285
+ │ ├── <urlsafe_b64_statement_hash>.txt # Individual statement files
286
+ │ └── attachments/
287
+ │ ├── index.txt # List of all attachment files
288
+ │ └── <urlsafe_b64_contents_hash>.<ext> # Attachment files
289
+ ```
290
+
291
+ ### Peer Replication Structure
292
+
293
+ For peer-to-peer replication of statements from other domains, use the following directory structure under `/.well-known/statements/peers/`:
294
+
295
+ ```
296
+ /.well-known/statements/
297
+ ├── peers/
298
+ │ ├── index.txt # List of all peer domains
299
+ │ └── <peer_domain>/
300
+ │ ├── metadata.json # Sync metadata for this peer
301
+ │ ├── statements.txt # All statements from peer
302
+ │ ├── statements/
303
+ │ │ ├── index.txt # List of statement files
304
+ │ │ ├── <urlsafe_b64_statement_hash>.txt # Individual statements
305
+ │ │ └── attachments/
306
+ │ │ ├── index.txt # List of attachments
307
+ │ │ └── <urlsafe_b64_contents_hash>.<ext> # Attachment files
308
+ ```
309
+
310
+
311
+ ### File Specifications
312
+
313
+ #### `/.well-known/statements.txt`
314
+
315
+ Contains all statements concatenated with 2 newline characters (`\n\n`) between each statement.
316
+
317
+ **Example:**
318
+ ```
319
+ Stated protocol version: 5
320
+ Publishing domain: example.com
321
+ Author: Example Organization
322
+ Time: Thu, 15 Jun 2023 20:01:26 GMT
323
+ Statement content:
324
+ First statement content
325
+
326
+
327
+ Stated protocol version: 5
328
+ Publishing domain: example.com
329
+ Author: Example Organization
330
+ Time: Fri, 16 Jun 2023 10:30:00 GMT
331
+ Statement content:
332
+ Second statement content
333
+ ```
334
+
335
+ #### `/.well-known/statements/<urlsafe_b64_signed_statement_hash>.txt`
336
+
337
+ Individual statement files named using the URL-safe base64-encoded SHA-256 hash of the complete file content.
338
+
339
+ **Important Hash Terminology:**
340
+
341
+ For signed statements, there are three distinct hash values:
342
+
343
+ 1. **Statement content hash**: Hash of only the content field (the actual message text)
344
+ 2. **Statement hash**: Hash of the complete unsigned statement (all fields: domain, author, time, content, etc., but excluding the signature block)
345
+ 3. **Signed statement hash**: Hash of the complete signed statement (unsigned statement + signature block)
346
+
347
+ **Usage:**
348
+ - **Filename**: Uses the **signed statement hash** (hash of entire file content)
349
+ - **Signature block "Statement hash" field**: Contains the **statement hash** (hash of unsigned statement, used for cryptographic verification)
350
+ - **Response references**: Use the **signed statement hash** to reference which statement is being responded to
351
+
352
+ **Naming Convention:**
353
+ - Hash the complete statement text using SHA-256
354
+ - Encode the hash using URL-safe base64 (replacing `+` with `-` and `/` with `_`, removing padding `=`)
355
+ - Use `.txt` extension
356
+
357
+ **Example:**
358
+ ```
359
+ /.well-known/statements/qg51IiW3RKIXSxiaF_hVQdZdtHzKsU4YePxFuZ2YVtQ.txt
360
+ ```
361
+
362
+ **File Content:**
363
+ ```
364
+ Stated protocol version: 5
365
+ Publishing domain: example.com
366
+ Author: Example Organization
367
+ Time: Thu, 15 Jun 2023 20:01:26 GMT
368
+ Statement content:
369
+ This is the statement content
370
+ ```
371
+
372
+ #### `/.well-known/statements/index.txt`
373
+
374
+ Newline-delimited list of all statement file paths relative to `/.well-known/statements/`.
375
+
376
+ **Example:**
377
+ ```
378
+ qg51IiW3RKIXSxiaF_hVQdZdtHzKsU4YePxFuZ2YVtQ.txt
379
+ YTIhylbTsXvJZN8og3LvusdfjjjnnVudocw1mki11Vs.txt
380
+ NF6irhgDU0F_HEgTRKnhnDlA2R8c9YnjihhiCyNGsQA.txt
381
+ ```
382
+
383
+ #### `/.well-known/statements/attachments/<urlsafe_b64_contents_hash>.<file_extension>`
384
+
385
+ Attachment files referenced in statements, named using the URL-safe base64-encoded SHA-256 hash of the file contents with the appropriate file extension.
386
+
387
+ **Naming Convention:**
388
+ - Hash the complete file contents using SHA-256
389
+ - Encode the hash using URL-safe base64
390
+ - Append the original file extension (e.g., `.pdf`, `.jpg`, `.png`, `.json`)
391
+
392
+ **Example:**
393
+ ```
394
+ /.well-known/statements/attachments/8kF3mN9pQ2rT5vW7xY1zA3bC4dE6fG8hI0jK2lM4nO6.pdf
395
+ /.well-known/statements/attachments/pQ9rS1tU3vW5xY7zA9bC1dE3fG5hI7jK9lM1nO3pQ5.jpg
396
+ ```
397
+
398
+ #### `/.well-known/statements/attachments/index.txt`
399
+
400
+ Newline-delimited list of all attachment file paths relative to `/.well-known/statements/attachments/`.
401
+
402
+ **Example:**
403
+ ```
404
+ 8kF3mN9pQ2rT5vW7xY1zA3bC4dE6fG8hI0jK2lM4nO6.pdf
405
+ pQ9rS1tU3vW5xY7zA9bC1dE3fG5hI7jK9lM1nO3pQ5.jpg
406
+ xY1zA3bC4dE6fG8hI0jK2lM4nO6pQ9rS1tU3vW5xY7z.json
407
+ ```
@@ -6,7 +6,6 @@ export declare const legalForms: {
6
6
  };
7
7
  export declare const statementTypes: {
8
8
  statement: string;
9
- quotation: string;
10
9
  organisationVerification: string;
11
10
  personVerification: string;
12
11
  poll: string;
@@ -14,23 +13,205 @@ export declare const statementTypes: {
14
13
  response: string;
15
14
  disputeContent: string;
16
15
  disputeAuthenticity: string;
17
- boycott: string;
18
- observation: string;
19
16
  rating: string;
20
17
  signPdf: string;
21
- bounty: string;
22
18
  unsupported: string;
23
19
  };
24
20
  export declare const peopleCountBuckets: {
25
- "0": string;
26
- "10": string;
27
- "100": string;
28
- "1000": string;
29
- "10000": string;
30
- "100000": string;
31
- "1000000": string;
32
- "10000000": string;
21
+ '0': string;
22
+ '10': string;
23
+ '100': string;
24
+ '1000': string;
25
+ '10000': string;
26
+ '100000': string;
27
+ '1000000': string;
28
+ '10000000': string;
33
29
  };
30
+ export declare const supportedLanguages: {
31
+ readonly aa: "aa";
32
+ readonly ab: "ab";
33
+ readonly af: "af";
34
+ readonly ak: "ak";
35
+ readonly am: "am";
36
+ readonly ar: "ar";
37
+ readonly an: "an";
38
+ readonly as: "as";
39
+ readonly av: "av";
40
+ readonly ay: "ay";
41
+ readonly az: "az";
42
+ readonly ba: "ba";
43
+ readonly bm: "bm";
44
+ readonly be: "be";
45
+ readonly bn: "bn";
46
+ readonly bi: "bi";
47
+ readonly bo: "bo";
48
+ readonly bs: "bs";
49
+ readonly br: "br";
50
+ readonly bg: "bg";
51
+ readonly ca: "ca";
52
+ readonly cs: "cs";
53
+ readonly ch: "ch";
54
+ readonly ce: "ce";
55
+ readonly cv: "cv";
56
+ readonly kw: "kw";
57
+ readonly co: "co";
58
+ readonly cr: "cr";
59
+ readonly cy: "cy";
60
+ readonly da: "da";
61
+ readonly de: "de";
62
+ readonly dv: "dv";
63
+ readonly dz: "dz";
64
+ readonly el: "el";
65
+ readonly en: "en";
66
+ readonly eo: "eo";
67
+ readonly et: "et";
68
+ readonly eu: "eu";
69
+ readonly ee: "ee";
70
+ readonly fo: "fo";
71
+ readonly fa: "fa";
72
+ readonly fj: "fj";
73
+ readonly fi: "fi";
74
+ readonly fr: "fr";
75
+ readonly fy: "fy";
76
+ readonly ff: "ff";
77
+ readonly gd: "gd";
78
+ readonly ga: "ga";
79
+ readonly gl: "gl";
80
+ readonly gv: "gv";
81
+ readonly gn: "gn";
82
+ readonly gu: "gu";
83
+ readonly ht: "ht";
84
+ readonly ha: "ha";
85
+ readonly sh: "sh";
86
+ readonly he: "he";
87
+ readonly hz: "hz";
88
+ readonly hi: "hi";
89
+ readonly ho: "ho";
90
+ readonly hr: "hr";
91
+ readonly hu: "hu";
92
+ readonly hy: "hy";
93
+ readonly ig: "ig";
94
+ readonly io: "io";
95
+ readonly ii: "ii";
96
+ readonly iu: "iu";
97
+ readonly ie: "ie";
98
+ readonly ia: "ia";
99
+ readonly id: "id";
100
+ readonly ik: "ik";
101
+ readonly is: "is";
102
+ readonly it: "it";
103
+ readonly jv: "jv";
104
+ readonly ja: "ja";
105
+ readonly kl: "kl";
106
+ readonly kn: "kn";
107
+ readonly ks: "ks";
108
+ readonly ka: "ka";
109
+ readonly kr: "kr";
110
+ readonly kk: "kk";
111
+ readonly km: "km";
112
+ readonly ki: "ki";
113
+ readonly rw: "rw";
114
+ readonly ky: "ky";
115
+ readonly kv: "kv";
116
+ readonly kg: "kg";
117
+ readonly ko: "ko";
118
+ readonly kj: "kj";
119
+ readonly ku: "ku";
120
+ readonly lo: "lo";
121
+ readonly la: "la";
122
+ readonly lv: "lv";
123
+ readonly li: "li";
124
+ readonly ln: "ln";
125
+ readonly lt: "lt";
126
+ readonly lb: "lb";
127
+ readonly lu: "lu";
128
+ readonly lg: "lg";
129
+ readonly mh: "mh";
130
+ readonly ml: "ml";
131
+ readonly mr: "mr";
132
+ readonly mk: "mk";
133
+ readonly mg: "mg";
134
+ readonly mt: "mt";
135
+ readonly mn: "mn";
136
+ readonly mi: "mi";
137
+ readonly ms: "ms";
138
+ readonly my: "my";
139
+ readonly na: "na";
140
+ readonly nv: "nv";
141
+ readonly nr: "nr";
142
+ readonly nd: "nd";
143
+ readonly ng: "ng";
144
+ readonly ne: "ne";
145
+ readonly nl: "nl";
146
+ readonly nn: "nn";
147
+ readonly nb: "nb";
148
+ readonly no: "no";
149
+ readonly ny: "ny";
150
+ readonly oc: "oc";
151
+ readonly oj: "oj";
152
+ readonly or: "or";
153
+ readonly om: "om";
154
+ readonly os: "os";
155
+ readonly pa: "pa";
156
+ readonly pi: "pi";
157
+ readonly pl: "pl";
158
+ readonly pt: "pt";
159
+ readonly ps: "ps";
160
+ readonly qu: "qu";
161
+ readonly rm: "rm";
162
+ readonly ro: "ro";
163
+ readonly rn: "rn";
164
+ readonly ru: "ru";
165
+ readonly sg: "sg";
166
+ readonly sa: "sa";
167
+ readonly si: "si";
168
+ readonly sk: "sk";
169
+ readonly sl: "sl";
170
+ readonly se: "se";
171
+ readonly sm: "sm";
172
+ readonly sn: "sn";
173
+ readonly sd: "sd";
174
+ readonly so: "so";
175
+ readonly st: "st";
176
+ readonly es: "es";
177
+ readonly sq: "sq";
178
+ readonly sc: "sc";
179
+ readonly sr: "sr";
180
+ readonly ss: "ss";
181
+ readonly su: "su";
182
+ readonly sw: "sw";
183
+ readonly sv: "sv";
184
+ readonly ty: "ty";
185
+ readonly ta: "ta";
186
+ readonly tt: "tt";
187
+ readonly te: "te";
188
+ readonly tg: "tg";
189
+ readonly tl: "tl";
190
+ readonly th: "th";
191
+ readonly ti: "ti";
192
+ readonly to: "to";
193
+ readonly tn: "tn";
194
+ readonly ts: "ts";
195
+ readonly tk: "tk";
196
+ readonly tr: "tr";
197
+ readonly tw: "tw";
198
+ readonly ug: "ug";
199
+ readonly uk: "uk";
200
+ readonly ur: "ur";
201
+ readonly uz: "uz";
202
+ readonly ve: "ve";
203
+ readonly vi: "vi";
204
+ readonly vo: "vo";
205
+ readonly wa: "wa";
206
+ readonly wo: "wo";
207
+ readonly xh: "xh";
208
+ readonly yi: "yi";
209
+ readonly yo: "yo";
210
+ readonly za: "za";
211
+ readonly zh: "zh";
212
+ readonly zu: "zu";
213
+ };
214
+ export type SupportedLanguage = (typeof supportedLanguages)[keyof typeof supportedLanguages];
34
215
  export declare const UTCFormat: RegExp;
35
216
  export declare const pollKeys: RegExp;
36
217
  export declare const organisationVerificationKeys: RegExp;
@@ -41,7 +222,4 @@ export declare const disputeContentKeys: RegExp;
41
222
  export declare const responseKeys: RegExp;
42
223
  export declare const PDFSigningKeys: RegExp;
43
224
  export declare const ratingKeys: RegExp;
44
- export declare const BountyKeys: RegExp;
45
- export declare const ObservationKeys: RegExp;
46
- export declare const BoycottKeys: RegExp;
47
225
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;CAKtB,CAAA;AAED,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;CAgB1B,CAAA;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;CAS9B,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,MAAkI,CAAA;AAE1J,eAAO,MAAM,QAAQ,QAAmX,CAAA;AAExY,eAAO,MAAM,4BAA4B,QAAgV,CAAA;AAEzX,eAAO,MAAM,sBAAsB,QAAqP,CAAA;AAExR,eAAO,MAAM,QAAQ,QAAwC,CAAA;AAE7D,eAAO,MAAM,uBAAuB,QAA6F,CAAA;AAEjI,eAAO,MAAM,kBAAkB,QAA6F,CAAA;AAE5H,eAAO,MAAM,YAAY,QAAuD,CAAA;AAEhF,eAAO,MAAM,cAAc,QAA2C,CAAA;AAEtE,eAAO,MAAM,UAAU,QAAyI,CAAA;AAEhK,eAAO,MAAM,UAAU,QAA8L,CAAA;AAErN,eAAO,MAAM,eAAe,QAA8J,CAAA;AAE1L,eAAO,MAAM,WAAW,QAAkE,CAAA"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,UAAU;;;;;CAKtB,CAAC;AAEF,eAAO,MAAM,cAAc;;;;;;;;;;;;CAY1B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;CAS9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuLrB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,OAAO,kBAAkB,CAAC,CAAC;AAE7F,eAAO,MAAM,SAAS,EAAE,MACmG,CAAC;AAE5H,eAAO,MAAM,QAAQ,QAC6V,CAAC;AAEnX,eAAO,MAAM,4BAA4B,QACmT,CAAC;AAE7V,eAAO,MAAM,sBAAsB,QACiN,CAAC;AAErP,eAAO,MAAM,QAAQ,QAAwC,CAAC;AAE9D,eAAO,MAAM,uBAAuB,QACwD,CAAC;AAE7F,eAAO,MAAM,kBAAkB,QAC6D,CAAC;AAE7F,eAAO,MAAM,YAAY,QAAuD,CAAC;AAEjF,eAAO,MAAM,cAAc,QAA4C,CAAC;AAExE,eAAO,MAAM,UAAU,QACiH,CAAC"}