@carrot-foundation/schemas 0.1.20 → 0.1.21

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 (36) hide show
  1. package/README.md +45 -0
  2. package/dist/index.cjs +1104 -0
  3. package/dist/index.cjs.map +1 -0
  4. package/dist/index.d.cts +552 -0
  5. package/dist/index.d.ts +552 -2
  6. package/dist/index.js +1100 -1
  7. package/dist/index.js.map +1 -0
  8. package/package.json +6 -4
  9. package/dist/index.d.ts.map +0 -1
  10. package/dist/mass-id/index.d.ts +0 -3
  11. package/dist/mass-id/index.d.ts.map +0 -1
  12. package/dist/mass-id/index.js +0 -2
  13. package/dist/mass-id/mass-id.data.schema.d.ts +0 -256
  14. package/dist/mass-id/mass-id.data.schema.d.ts.map +0 -1
  15. package/dist/mass-id/mass-id.data.schema.js +0 -348
  16. package/dist/mass-id/mass-id.schema.d.ts +0 -297
  17. package/dist/mass-id/mass-id.schema.d.ts.map +0 -1
  18. package/dist/mass-id/mass-id.schema.js +0 -163
  19. package/dist/shared/base.schema.d.ts +0 -111
  20. package/dist/shared/base.schema.d.ts.map +0 -1
  21. package/dist/shared/base.schema.js +0 -127
  22. package/dist/shared/definitions.schema.d.ts +0 -96
  23. package/dist/shared/definitions.schema.d.ts.map +0 -1
  24. package/dist/shared/definitions.schema.js +0 -283
  25. package/dist/shared/entities/location.schema.d.ts +0 -55
  26. package/dist/shared/entities/location.schema.d.ts.map +0 -1
  27. package/dist/shared/entities/location.schema.js +0 -68
  28. package/dist/shared/entities/participant.schema.d.ts +0 -8
  29. package/dist/shared/entities/participant.schema.d.ts.map +0 -1
  30. package/dist/shared/entities/participant.schema.js +0 -24
  31. package/dist/shared/helpers.schema.d.ts +0 -4
  32. package/dist/shared/helpers.schema.d.ts.map +0 -1
  33. package/dist/shared/helpers.schema.js +0 -16
  34. package/dist/shared/nft.schema.d.ts +0 -116
  35. package/dist/shared/nft.schema.d.ts.map +0 -1
  36. package/dist/shared/nft.schema.js +0 -193
package/dist/index.js CHANGED
@@ -1 +1,1100 @@
1
- export * from './mass-id';
1
+ import { z } from 'zod';
2
+
3
+ // src/mass-id/mass-id.data.schema.ts
4
+ var UuidSchema = z.uuidv4("Must be a valid UUID v4 string").meta({
5
+ title: "UUID",
6
+ description: "A universally unique identifier version 4",
7
+ examples: [
8
+ "ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
9
+ "6f520d88-864d-432d-bf9f-5c3166c4818f",
10
+ "f77afa89-1c58-40fd-9bf5-8a86703a8af4"
11
+ ]
12
+ });
13
+ var EthereumAddressSchema = z.string().regex(
14
+ /^0x[a-fA-F0-9]{40}$/,
15
+ "Must be a valid Ethereum address in lowercase hexadecimal format"
16
+ ).meta({
17
+ title: "Ethereum Address",
18
+ description: "A valid Ethereum address in hexadecimal format",
19
+ examples: [
20
+ "0x1234567890abcdef1234567890abcdef12345678",
21
+ "0xabcdef1234567890abcdef1234567890abcdef12"
22
+ ]
23
+ });
24
+ var IsoTimestampSchema = z.iso.datetime({
25
+ message: "Must be a valid ISO 8601 timestamp with timezone"
26
+ }).meta({
27
+ title: "ISO Timestamp",
28
+ description: "ISO 8601 formatted timestamp with timezone information",
29
+ examples: ["2024-12-05T11:02:47.000Z", "2025-02-22T10:35:12.000Z"]
30
+ });
31
+ var IsoDateSchema = z.iso.date("Must be a valid ISO 8601 date (YYYY-MM-DD)").meta({
32
+ title: "ISO Date",
33
+ description: "ISO 8601 formatted date in YYYY-MM-DD format",
34
+ examples: ["2024-12-05", "2025-02-22", "2024-02-10"]
35
+ });
36
+ var IsoCountryCodeSchema = z.string().regex(/^[A-Z]{2}$/, "Must be a valid ISO 3166-1 alpha-2 country code").meta({
37
+ title: "ISO Country Code",
38
+ description: "Two-letter country code following ISO 3166-1 alpha-2 standard",
39
+ examples: ["BR", "US", "DE"]
40
+ });
41
+ var IsoAdministrativeDivisionCodeSchema = z.string().regex(
42
+ /^[A-Z]{2}-[A-Z0-9]{1,3}$/,
43
+ "Must be a valid ISO 3166-2 administrative division code"
44
+ ).meta({
45
+ title: "ISO Administrative Division Code",
46
+ description: "Administrative division code following ISO 3166-2 standard",
47
+ examples: ["BR-AP", "BR-ES", "US-CA"]
48
+ });
49
+ var LatitudeSchema = z.number().min(-90).max(90).meta({
50
+ title: "Latitude",
51
+ description: "Geographic latitude coordinate in decimal degrees",
52
+ examples: [-0.02, -20.38, 40.7128]
53
+ });
54
+ var LongitudeSchema = z.number().min(-180).max(180).meta({
55
+ title: "Longitude",
56
+ description: "Geographic longitude coordinate in decimal degrees",
57
+ examples: [-51.06, -40.34, -74.006]
58
+ });
59
+ var WeightKgSchema = z.number().min(0).meta({
60
+ title: "Weight (kg)",
61
+ description: "Weight measurement in kilograms",
62
+ examples: [3e3, 1500, 500]
63
+ });
64
+ var NonEmptyStringSchema = z.string().min(1, "Cannot be empty").meta({
65
+ title: "Non-Empty String",
66
+ description: "A string that contains at least one character",
67
+ examples: ["Example text", "Sample value", "Test string"]
68
+ });
69
+ NonEmptyStringSchema.regex(
70
+ /^[a-z0-9-]+$/,
71
+ "Must contain only lowercase letters, numbers, and hyphens"
72
+ ).max(100).meta({
73
+ title: "Slug",
74
+ description: "URL-friendly identifier with lowercase letters, numbers, and hyphens",
75
+ examples: ["mass-id-123", "recycled-plastic", "organic-waste"]
76
+ });
77
+ var WasteTypeSchema = NonEmptyStringSchema.meta({
78
+ title: "Waste Type",
79
+ description: "Category or type of waste material",
80
+ examples: ["Organic", "Plastic", "Metal"]
81
+ });
82
+ var WasteSubtypeSchema = NonEmptyStringSchema.max(100).meta({
83
+ title: "Waste Subtype",
84
+ description: "Specific subcategory of waste within a waste type",
85
+ examples: ["Food, Food Waste and Beverages", "PET Bottles", "Aluminum Cans"]
86
+ });
87
+ var ParticipantRoleSchema = NonEmptyStringSchema.max(100).meta({
88
+ title: "Participant Role",
89
+ description: "Role that a participant plays in the waste management supply chain",
90
+ examples: ["Waste Generator", "Hauler", "Recycler"]
91
+ });
92
+ var ParticipantNameSchema = NonEmptyStringSchema.max(100).meta({
93
+ title: "Participant Name",
94
+ description: "Name of a participant in the waste management system",
95
+ examples: ["Enlatados Produ\xE7\xE3o", "Eco Reciclagem", "Green Tech Corp"]
96
+ });
97
+ var FacilityTypeSchema = z.enum([
98
+ "Waste Generation",
99
+ "Collection Point",
100
+ "Transfer Station",
101
+ "Sorting Facility",
102
+ "Composting Facility",
103
+ "Recycling Facility",
104
+ "Processing Facility",
105
+ "Disposal Facility",
106
+ "Administrative Office"
107
+ ]).meta({
108
+ title: "Facility Type",
109
+ description: "Type of facility in the waste management infrastructure",
110
+ examples: ["Waste Generation", "Recycling Facility", "Collection Point"]
111
+ });
112
+ var BlockchainChainIdSchema = z.number().int().min(1).meta({
113
+ title: "Chain ID",
114
+ description: "Blockchain network identifier",
115
+ examples: [1, 137, 11155111]
116
+ });
117
+ z.number().min(0).max(100).meta({
118
+ title: "Percentage",
119
+ description: "Percentage value between 0 and 100",
120
+ examples: [50, 75.5, 100]
121
+ });
122
+ z.number().int().min(0).meta({
123
+ title: "Non-Negative Integer",
124
+ description: "Integer value that is zero or positive",
125
+ examples: [0, 123, 4126]
126
+ });
127
+ z.number().int().min(1).meta({
128
+ title: "Positive Integer",
129
+ description: "Integer value that is greater than zero",
130
+ examples: [1, 123, 456]
131
+ });
132
+ var NonNegativeFloatSchema = z.number().min(0).meta({
133
+ title: "Non-Negative Float",
134
+ description: "Floating-point number that is zero or positive",
135
+ examples: [0, 45.2, 72.5]
136
+ });
137
+ var HoursSchema = z.number().min(0).multipleOf(0.1).meta({
138
+ title: "Hours",
139
+ description: "Time duration in hours with 0.1 hour precision",
140
+ examples: [72.5, 24, 168.5]
141
+ });
142
+ var IpfsUriSchema = NonEmptyStringSchema.regex(
143
+ /^ipfs:\/\/[a-zA-Z0-9]+(\/.*)?$/,
144
+ "Must be a valid IPFS URI with CID"
145
+ ).meta({
146
+ title: "IPFS URI",
147
+ description: "InterPlanetary File System URI pointing to distributed content",
148
+ examples: [
149
+ "ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb/mass-id-organic.png",
150
+ "ipfs://QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o"
151
+ ]
152
+ });
153
+ var SemanticVersionSchema = NonEmptyStringSchema.regex(
154
+ /^v?\d+\.\d+\.\d+(-[a-zA-Z0-9.-]+)?(\+[a-zA-Z0-9.-]+)?$/,
155
+ "Must be a valid semantic version string"
156
+ ).meta({
157
+ title: "Semantic Version",
158
+ description: "Version string following semantic versioning specification",
159
+ examples: ["0.1.0", "1.0.0", "2.1.3"]
160
+ });
161
+ var TokenIdSchema = NonEmptyStringSchema.regex(
162
+ /^\d+$/,
163
+ "Must be a numeric string (supports uint256)"
164
+ ).meta({
165
+ title: "Token ID",
166
+ description: "Numeric identifier for blockchain tokens as string",
167
+ examples: ["123", "456789", "1000000"]
168
+ });
169
+ var HexColorSchema = NonEmptyStringSchema.regex(
170
+ /^#[0-9A-F]{6}$/,
171
+ "Must be a hex color code with # prefix and uppercase"
172
+ ).meta({
173
+ title: "Hex Color",
174
+ description: "Hexadecimal color code with hash prefix",
175
+ examples: ["#2D5A27", "#FF5733", "#1E90FF"]
176
+ });
177
+ var Sha256HashSchema = z.hash("sha256", {
178
+ error: "Must be a SHA256 hash as 32-byte hex string"
179
+ }).meta({
180
+ format: void 0,
181
+ title: "SHA256 Hash",
182
+ description: "SHA-256 cryptographic hash as hexadecimal string",
183
+ examples: [
184
+ "87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489",
185
+ "6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6"
186
+ ]
187
+ });
188
+ var Keccak256HashSchema = Sha256HashSchema.meta({
189
+ title: "Keccak256 Hash",
190
+ description: "Keccak256 cryptographic hash as hexadecimal string",
191
+ examples: [
192
+ "ac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f",
193
+ "b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2"
194
+ ]
195
+ });
196
+ var ExternalIdSchema = UuidSchema.meta({
197
+ title: "External ID",
198
+ description: "UUID identifier for external system references",
199
+ examples: [
200
+ "ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
201
+ "b2c4e6f8-a1b3-4c5d-9e8f-123456789abc"
202
+ ]
203
+ });
204
+ var ExternalUrlSchema = z.url("Must be a valid URL").meta({
205
+ title: "External URL",
206
+ description: "Valid URL pointing to external resources",
207
+ examples: [
208
+ "https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
209
+ "https://carrot.eco/whitepaper.pdf"
210
+ ]
211
+ });
212
+ var RecordSchemaTypeSchema = z.enum([
213
+ "MassID",
214
+ "MassID Audit",
215
+ "RecycledID",
216
+ "GasID",
217
+ "PurchaseID",
218
+ "Methodology",
219
+ "Credit",
220
+ "Collection"
221
+ ]).meta({
222
+ title: "Schema Type",
223
+ description: "Type of schema in the Carrot ecosystem",
224
+ examples: ["MassID", "RecycledID", "GasID"]
225
+ });
226
+ NonEmptyStringSchema.max(10).regex(
227
+ /^[A-Z0-9-]+$/,
228
+ "Must contain only uppercase letters, numbers, and hyphens"
229
+ ).meta({
230
+ title: "Token Symbol",
231
+ description: "Symbol representing a token or cryptocurrency",
232
+ examples: ["MASS", "REC", "GAS"]
233
+ });
234
+ var RecordRelationshipTypeSchema = z.enum([
235
+ "collection",
236
+ "credit",
237
+ "gas-id",
238
+ "mass-id",
239
+ "mass-id-audit",
240
+ "methodology",
241
+ "purchase-id",
242
+ "recycled-id"
243
+ ]).meta({
244
+ title: "Relationship Type",
245
+ description: "Type of relationship between different entities in the system",
246
+ examples: ["mass-id", "audit", "collection"]
247
+ });
248
+ var PrecisionLevelSchema = z.enum(["exact", "neighborhood", "city", "region", "country"]).meta({
249
+ title: "Precision Level",
250
+ description: "Level of coordinate precision",
251
+ examples: ["city", "exact", "neighborhood"]
252
+ });
253
+ var CoordinatesSchema = z.strictObject({
254
+ latitude: LatitudeSchema.meta({
255
+ title: "Latitude",
256
+ description: "GPS latitude coordinate"
257
+ }),
258
+ longitude: LongitudeSchema.meta({
259
+ title: "Longitude",
260
+ description: "GPS longitude coordinate"
261
+ }),
262
+ precision_level: PrecisionLevelSchema
263
+ }).meta({
264
+ title: "Coordinates",
265
+ description: "GPS coordinates of the location"
266
+ });
267
+ var LocationSchema = z.strictObject({
268
+ id: UuidSchema.meta({
269
+ title: "Location ID",
270
+ description: "Unique identifier for the location"
271
+ }),
272
+ municipality: NonEmptyStringSchema.max(50).meta({
273
+ title: "Municipality",
274
+ description: "Municipality or city name",
275
+ examples: ["New York", "S\xE3o Paulo", "London", "Tokyo"]
276
+ }),
277
+ administrative_division: NonEmptyStringSchema.max(50).meta({
278
+ title: "Administrative Division",
279
+ description: "State, province, or administrative region",
280
+ examples: ["California", "Ontario", "Bavaria", "Queensland"]
281
+ }),
282
+ administrative_division_code: IsoAdministrativeDivisionCodeSchema.optional().meta({
283
+ title: "Administrative Division Code",
284
+ description: "ISO 3166-2 administrative division code"
285
+ }),
286
+ country: NonEmptyStringSchema.max(50).meta({
287
+ title: "Country",
288
+ description: "Full country name in English",
289
+ examples: ["United States", "Canada", "Germany", "Australia"]
290
+ }),
291
+ country_code: IsoCountryCodeSchema.meta({
292
+ title: "Country Code",
293
+ description: "ISO 3166-1 alpha-2 country code"
294
+ }),
295
+ responsible_participant_id: UuidSchema.meta({
296
+ title: "Responsible Participant ID",
297
+ description: "ID of the participant responsible for this location"
298
+ }),
299
+ coordinates: CoordinatesSchema,
300
+ facility_type: FacilityTypeSchema.optional().meta({
301
+ title: "Facility Type",
302
+ description: "Type of facility at this location"
303
+ })
304
+ }).meta({
305
+ title: "Location",
306
+ description: "Geographic location with address and coordinate information"
307
+ });
308
+ function uniqueArrayItems(schema, errorMessage = "Array items must be unique") {
309
+ return z.array(schema).refine((items) => new Set(items).size === items.length, {
310
+ message: errorMessage
311
+ });
312
+ }
313
+ function uniqueBy(schema, selector, errorMessage = "Items must be unique") {
314
+ return z.array(schema).refine(
315
+ (items) => {
316
+ const values = items.map(selector);
317
+ return new Set(values).size === values.length;
318
+ },
319
+ {
320
+ message: errorMessage
321
+ }
322
+ );
323
+ }
324
+
325
+ // src/shared/entities/participant.schema.ts
326
+ var ParticipantSchema = z.strictObject({
327
+ id: UuidSchema.meta({
328
+ title: "Participant ID",
329
+ description: "Unique identifier for the participant"
330
+ }),
331
+ name: ParticipantNameSchema.meta({
332
+ title: "Participant Name",
333
+ description: "Name of the participant"
334
+ }),
335
+ roles: uniqueArrayItems(
336
+ ParticipantRoleSchema,
337
+ "Participant roles must be unique"
338
+ ).min(1).meta({
339
+ title: "Participant Roles",
340
+ description: "Roles of the participant in the waste management supply chain"
341
+ })
342
+ }).meta({
343
+ title: "Participant",
344
+ description: "A participant in the waste management supply chain"
345
+ });
346
+
347
+ // src/mass-id/mass-id.data.schema.ts
348
+ var MassIDLocalClassificationSchema = z.strictObject({
349
+ code: NonEmptyStringSchema.max(20).meta({
350
+ title: "Classification Code",
351
+ description: "Local waste classification code",
352
+ examples: ["20 01 01", "D001", "EWC-150101", "IBAMA-A001"]
353
+ }),
354
+ description: NonEmptyStringSchema.max(200).meta({
355
+ title: "Classification Description",
356
+ description: "Local waste classification description",
357
+ examples: [
358
+ "Paper and cardboard packaging",
359
+ "Ignitable waste",
360
+ "Paper and cardboard packaging waste",
361
+ "Municipal solid waste - organic fraction"
362
+ ]
363
+ }),
364
+ system: NonEmptyStringSchema.max(50).meta({
365
+ title: "Classification System",
366
+ description: 'Classification system name (e.g., "Ibama Waste Code", "European Waste Catalogue", "US EPA Codes")',
367
+ examples: [
368
+ "European Waste Catalogue",
369
+ "US EPA Codes",
370
+ "Ibama Waste Code",
371
+ "Brazilian ABNT Classification"
372
+ ]
373
+ })
374
+ }).meta({
375
+ title: "Local Classification",
376
+ description: "Local or regional waste classification codes and descriptions"
377
+ });
378
+ var MassIDMeasurementUnitSchema = z.enum(["kg", "ton"]).meta({
379
+ title: "Measurement Unit",
380
+ description: "Unit of measurement for the waste quantity",
381
+ examples: ["kg", "ton"]
382
+ });
383
+ var ContaminationLevelSchema = z.enum(["None", "Low", "Medium", "High"]).meta({
384
+ title: "Contamination Level",
385
+ description: "Level of contamination in the waste batch",
386
+ examples: ["Low", "Medium", "None"]
387
+ });
388
+ var MassIDWasteClassificationSchema = z.strictObject({
389
+ primary_type: WasteTypeSchema.meta({
390
+ title: "Primary Waste Type",
391
+ description: "Primary waste material category"
392
+ }),
393
+ subtype: WasteSubtypeSchema.meta({
394
+ title: "Waste Subtype",
395
+ description: "Specific subcategory of waste material"
396
+ }),
397
+ local_classification: MassIDLocalClassificationSchema.optional(),
398
+ measurement_unit: MassIDMeasurementUnitSchema,
399
+ net_weight: NonNegativeFloatSchema.meta({
400
+ title: "Net Weight",
401
+ description: "Net weight of the waste batch in the specified measurement unit"
402
+ }),
403
+ contamination_level: ContaminationLevelSchema.optional()
404
+ }).meta({
405
+ title: "Waste Classification",
406
+ description: "Standardized waste material classification and regulatory information"
407
+ });
408
+ var EventAttributeFormatSchema = z.enum(["KILOGRAM", "DATE", "CURRENCY", "PERCENTAGE", "COORDINATE"]).meta({
409
+ title: "Event Attribute Format",
410
+ description: "Data format hint for proper display",
411
+ examples: ["KILOGRAM", "DATE", "PERCENTAGE"]
412
+ });
413
+ var EventAttributeSchema = z.strictObject({
414
+ name: NonEmptyStringSchema.max(100).meta({
415
+ title: "Attribute Name",
416
+ description: "Event attribute name",
417
+ examples: [
418
+ "temperature",
419
+ "humidity",
420
+ "contamination_percentage",
421
+ "quality_grade",
422
+ "batch_number",
423
+ "operator_id",
424
+ "equipment_used",
425
+ "processing_cost"
426
+ ]
427
+ }),
428
+ value: z.union([z.string(), z.number(), z.boolean()]).meta({
429
+ title: "Attribute Value",
430
+ description: "Event attribute value",
431
+ examples: [
432
+ 25.5,
433
+ "Grade A",
434
+ true,
435
+ "BATCH-2024-001",
436
+ 12.75,
437
+ "Shredder-X200",
438
+ false,
439
+ "OP-456"
440
+ ]
441
+ }),
442
+ format: EventAttributeFormatSchema.optional()
443
+ }).meta({
444
+ title: "Event Attribute",
445
+ description: "Additional attribute specific to an event"
446
+ });
447
+ var EventDocumentSchema = z.strictObject({
448
+ type: NonEmptyStringSchema.max(50).meta({
449
+ title: "Document Type",
450
+ description: "Type of supporting documentation",
451
+ examples: [
452
+ "Waste Transfer Note",
453
+ "Certificate of Disposal",
454
+ "Certificate of Final Destination",
455
+ "Quality Assessment Report",
456
+ "Transport Manifest",
457
+ "Processing Receipt",
458
+ "Environmental Permit",
459
+ "Invoice"
460
+ ]
461
+ }),
462
+ document_number: NonEmptyStringSchema.max(50).optional().meta({
463
+ title: "Document Number",
464
+ description: "Official document number if applicable",
465
+ examples: [
466
+ "WTN-2024-001234",
467
+ "CD-ENV-456789",
468
+ "INV-2024-QTR1-789",
469
+ "PERMIT-EPA-2024-001",
470
+ "MANIFEST-DOT-567890"
471
+ ]
472
+ }),
473
+ reference: NonEmptyStringSchema.meta({
474
+ title: "Document Reference",
475
+ description: "Reference to document (IPFS hash, file name, or external URL)",
476
+ examples: [
477
+ "QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o",
478
+ "waste_transfer_note_2024_001.pdf",
479
+ "https://docs.example.com/certificates/disposal_cert_456.pdf",
480
+ "bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi",
481
+ "processing_receipt_20240315.jpg"
482
+ ]
483
+ }),
484
+ issue_date: IsoDateSchema.optional().meta({
485
+ title: "Issue Date",
486
+ description: "Date the document was issued"
487
+ }),
488
+ issuer: NonEmptyStringSchema.max(100).optional().meta({
489
+ title: "Document Issuer",
490
+ description: "Entity that issued the document",
491
+ examples: [
492
+ "Environmental Protection Agency",
493
+ "Waste Management Solutions Ltd",
494
+ "Green Recycling Corp",
495
+ "City Waste Authority",
496
+ "EcoProcess Industries",
497
+ "Regional Environmental Office"
498
+ ]
499
+ })
500
+ }).meta({
501
+ title: "Event Document",
502
+ description: "Supporting event document"
503
+ });
504
+ var MassIDChainOfCustodyEventSchema = z.strictObject({
505
+ event_id: UuidSchema.meta({
506
+ title: "Event ID",
507
+ description: "Unique event identifier"
508
+ }),
509
+ event_name: NonEmptyStringSchema.max(50).meta({
510
+ title: "Event Name",
511
+ description: "Name of custody or processing event",
512
+ examples: ["Sorting", "Processing", "Recycling", "Weighing"]
513
+ }),
514
+ description: NonEmptyStringSchema.max(200).optional().meta({
515
+ title: "Event Description",
516
+ description: "Detailed description of what happened during this event",
517
+ examples: [
518
+ "Waste collected from residential area using collection truck",
519
+ "Material sorted into recyclable and non-recyclable fractions",
520
+ "Plastic waste processed through shredding and washing",
521
+ "Waste transferred to authorized recycling facility",
522
+ "Final disposal at licensed landfill site",
523
+ "Quality inspection and contamination assessment completed"
524
+ ]
525
+ }),
526
+ timestamp: IsoTimestampSchema.meta({
527
+ title: "Event Timestamp",
528
+ description: "ISO 8601 timestamp when the event occurred"
529
+ }),
530
+ participant_id: UuidSchema.meta({
531
+ title: "Participant ID",
532
+ description: "Reference to participant in the participants array"
533
+ }),
534
+ location_id: UuidSchema.meta({
535
+ title: "Location ID",
536
+ description: "Reference to location in the locations array"
537
+ }),
538
+ weight: NonNegativeFloatSchema.optional().meta({
539
+ title: "Event Weight",
540
+ description: "Mass weight after this event"
541
+ }),
542
+ attributes: z.array(EventAttributeSchema).optional().meta({
543
+ title: "Event Attributes",
544
+ description: "Additional attributes specific to this event"
545
+ }),
546
+ documentation: z.array(EventDocumentSchema).optional().meta({
547
+ title: "Event Documentation",
548
+ description: "Associated documentation for this event"
549
+ }),
550
+ notes: NonEmptyStringSchema.max(500).optional().meta({
551
+ title: "Event Notes",
552
+ description: "Additional notes or comments about this event"
553
+ })
554
+ }).meta({
555
+ title: "Chain of Custody Event",
556
+ description: "Chain of custody event"
557
+ });
558
+ var MassIDChainOfCustodySchema = z.strictObject({
559
+ events: z.array(MassIDChainOfCustodyEventSchema).min(1).meta({
560
+ title: "Custody Events",
561
+ description: "Chronological sequence of custody transfer and processing events"
562
+ }),
563
+ total_distance_km: NonNegativeFloatSchema.meta({
564
+ title: "Total Distance (km)",
565
+ description: "Total distance traveled across all transport events"
566
+ }),
567
+ total_duration_hours: HoursSchema.meta({
568
+ title: "Total Duration (hours)",
569
+ description: "Total time from first to last event in hours"
570
+ })
571
+ }).meta({
572
+ title: "Chain of Custody",
573
+ description: "Complete chain of custody tracking from waste generation to final processing"
574
+ });
575
+ var MassIDTransportRouteSchema = z.strictObject({
576
+ from_location_id: UuidSchema.meta({
577
+ title: "From Location ID",
578
+ description: "Reference to the origin location in the locations array"
579
+ }),
580
+ to_location_id: UuidSchema.meta({
581
+ title: "To Location ID",
582
+ description: "Reference to the destination location in the locations array"
583
+ }),
584
+ distance_km: NonNegativeFloatSchema.meta({
585
+ title: "Distance (km)",
586
+ description: "Distance for this route segment in kilometers"
587
+ }),
588
+ transport_method: NonEmptyStringSchema.max(50).meta({
589
+ title: "Transport Method",
590
+ description: "Method of transportation for this segment",
591
+ examples: [
592
+ "Truck",
593
+ "Rail",
594
+ "Barge",
595
+ "Container Ship",
596
+ "Conveyor Belt",
597
+ "Pipeline",
598
+ "Walking",
599
+ "Forklift"
600
+ ]
601
+ }),
602
+ duration_hours: HoursSchema.meta({
603
+ title: "Duration (hours)",
604
+ description: "Time taken for this route segment in hours"
605
+ })
606
+ }).meta({
607
+ title: "Transport Route",
608
+ description: "Transport route segment information"
609
+ });
610
+ var MassIDGeographicDataSchema = z.strictObject({
611
+ origin_location_id: UuidSchema.meta({
612
+ title: "Origin Location ID",
613
+ description: "Reference to origin location in the locations array"
614
+ }),
615
+ processing_location_ids: z.array(UuidSchema).optional().meta({
616
+ title: "Processing Location IDs",
617
+ description: "Locations where the waste was processed or handled"
618
+ }),
619
+ final_destination_id: UuidSchema.meta({
620
+ title: "Final Destination ID",
621
+ description: "Reference to final destination in the locations array"
622
+ }),
623
+ transport_routes: z.array(MassIDTransportRouteSchema).meta({
624
+ title: "Transport Routes",
625
+ description: "Detailed transport route information"
626
+ })
627
+ }).meta({
628
+ title: "Geographic Data",
629
+ description: "Geographic information about waste origin and processing locations"
630
+ });
631
+ var MassIDDataSchema = z.strictObject({
632
+ waste_classification: MassIDWasteClassificationSchema,
633
+ locations: uniqueBy(
634
+ LocationSchema,
635
+ (loc) => loc.id,
636
+ "Location IDs must be unique"
637
+ ).min(1).meta({
638
+ title: "Locations",
639
+ description: "All locations referenced in this MassID, indexed by ID"
640
+ }),
641
+ participants: uniqueBy(
642
+ ParticipantSchema,
643
+ (p) => p.id,
644
+ "Participant IDs must be unique"
645
+ ).min(1).meta({
646
+ title: "Participants",
647
+ description: "All participants referenced in this MassID, indexed by ID"
648
+ }),
649
+ chain_of_custody: MassIDChainOfCustodySchema,
650
+ geographic_data: MassIDGeographicDataSchema
651
+ }).refine((data) => {
652
+ const participantIdSet = new Set(
653
+ data.participants.map((participant) => participant.id)
654
+ );
655
+ const eventParticipantIds = data.chain_of_custody.events.map(
656
+ (event) => event.participant_id
657
+ );
658
+ const allEventParticipantsExist = eventParticipantIds.every(
659
+ (participantId) => participantIdSet.has(participantId)
660
+ );
661
+ return allEventParticipantsExist;
662
+ }, "All participant IDs in chain of custody events must exist in participants array").refine((data) => {
663
+ const locationIdSet = new Set(
664
+ data.locations.map((location) => location.id)
665
+ );
666
+ const eventLocationIds = data.chain_of_custody.events.map(
667
+ (event) => event.location_id
668
+ );
669
+ const allEventLocationsExist = eventLocationIds.every(
670
+ (locationId) => locationIdSet.has(locationId)
671
+ );
672
+ return allEventLocationsExist;
673
+ }, "All location IDs in chain of custody events must exist in locations array").meta({
674
+ title: "MassID Data",
675
+ description: "MassID data containing waste tracking and chain of custody information"
676
+ });
677
+ var SchemaInfoSchema = z.strictObject({
678
+ hash: Keccak256HashSchema.meta({
679
+ title: "Schema Hash",
680
+ description: "Keccak256 hash of the JSON Schema this record was validated against"
681
+ }),
682
+ type: RecordSchemaTypeSchema.meta({
683
+ title: "Schema Type",
684
+ description: "Type/category of this schema"
685
+ }),
686
+ version: SemanticVersionSchema.meta({
687
+ title: "Schema Version",
688
+ description: "Version of the schema, using semantic versioning"
689
+ })
690
+ }).meta({
691
+ title: "Schema Information"
692
+ });
693
+ var RecordCreatorSchema = z.strictObject({
694
+ name: z.string().meta({
695
+ title: "Creator Name",
696
+ description: "Company or individual name that created this record",
697
+ examples: ["Carrot Foundation", "Alice", "Bob"]
698
+ }),
699
+ id: UuidSchema.meta({
700
+ title: "Creator ID",
701
+ description: "Unique identifier for the creator"
702
+ })
703
+ }).meta({
704
+ title: "Creator",
705
+ description: "Entity that created this record"
706
+ });
707
+ var RecordRelationshipSchema = z.strictObject({
708
+ target_uri: IpfsUriSchema.meta({
709
+ title: "Target IPFS URI",
710
+ description: "Target IPFS URI of the referenced record"
711
+ }),
712
+ type: RecordRelationshipTypeSchema.meta({
713
+ title: "Relationship Type",
714
+ description: "Type of relationship to the referenced record"
715
+ }),
716
+ description: z.string().optional().meta({
717
+ title: "Relationship Description",
718
+ description: "Human-readable description of the relationship",
719
+ examples: [
720
+ "This record supersedes the previous version",
721
+ "Related carbon credit batch",
722
+ "Source document for this verification",
723
+ "Child record derived from this parent",
724
+ "Updated version of original record"
725
+ ]
726
+ })
727
+ }).meta({
728
+ title: "Relationship",
729
+ description: "Relationship to another IPFS record"
730
+ });
731
+ var RecordEnvironmentSchema = z.strictObject({
732
+ blockchain_network: z.enum(["mainnet", "testnet"]).meta({
733
+ title: "Blockchain Network",
734
+ description: "Blockchain Network Environment"
735
+ }),
736
+ deployment: z.enum(["production", "development", "testing"]).meta({
737
+ title: "Deployment Environment",
738
+ description: "System environment where this record was generated"
739
+ }),
740
+ data_set_name: z.enum(["TEST", "PROD"]).meta({
741
+ title: "Data Set Name",
742
+ description: "Name of the data set for this record"
743
+ })
744
+ }).meta({
745
+ title: "Environment",
746
+ description: "Environment information"
747
+ });
748
+ var BaseIpfsSchema = z.strictObject({
749
+ $schema: z.url("Must be a valid URI").meta({
750
+ title: "JSON Schema URI",
751
+ description: "URI of the JSON Schema used to validate this record",
752
+ example: "https://raw.githubusercontent.com/carrot-foundation/schemas/refs/heads/main/schemas/ipfs/shared/base/base.schema.json"
753
+ }),
754
+ schema: SchemaInfoSchema,
755
+ created_at: IsoTimestampSchema.meta({
756
+ title: "Created At",
757
+ description: "ISO 8601 creation timestamp for this record"
758
+ }),
759
+ external_id: ExternalIdSchema.meta({
760
+ title: "External ID",
761
+ description: "Off-chain reference ID (UUID from Carrot backend)"
762
+ }),
763
+ external_url: ExternalUrlSchema.meta({
764
+ title: "External URL",
765
+ description: "External URL of the content"
766
+ }),
767
+ original_content_hash: Sha256HashSchema.meta({
768
+ title: "Original Content Hash",
769
+ description: "SHA-256 hash of the original JSON content including private data before schema validation"
770
+ }),
771
+ content_hash: Sha256HashSchema.meta({
772
+ title: "Content Hash",
773
+ description: "SHA-256 hash of RFC 8785 canonicalized JSON after schema validation"
774
+ }),
775
+ creator: RecordCreatorSchema.optional(),
776
+ relationships: z.array(RecordRelationshipSchema).optional().meta({
777
+ title: "Relationships",
778
+ description: "References to other IPFS records this record relates to"
779
+ }),
780
+ environment: RecordEnvironmentSchema.optional(),
781
+ data: z.record(z.string(), z.unknown()).optional().meta({
782
+ title: "Custom Data",
783
+ description: "Custom data block that includes the record's data"
784
+ })
785
+ }).meta({
786
+ title: "Base IPFS Record",
787
+ description: "Base fields for all Carrot IPFS records, providing common structure for any JSON content stored in IPFS"
788
+ });
789
+
790
+ // src/shared/nft.schema.ts
791
+ var NftSchemaTypeSchema = RecordSchemaTypeSchema.extract([
792
+ "MassID",
793
+ "RecycledID",
794
+ "GasID",
795
+ "PurchaseID"
796
+ ]).meta({
797
+ title: "NFT Schema Type",
798
+ description: "Type of schema for NFT records"
799
+ });
800
+ var BlockchainReferenceSchema = z.strictObject({
801
+ smart_contract_address: EthereumAddressSchema.meta({
802
+ title: "Smart Contract Address"
803
+ }),
804
+ chain_id: BlockchainChainIdSchema.meta({
805
+ title: "Chain ID",
806
+ description: "Blockchain chain ID"
807
+ }),
808
+ network_name: z.string().min(5).max(100).meta({
809
+ title: "Network Name",
810
+ description: "Name of the blockchain network"
811
+ }),
812
+ token_id: TokenIdSchema.meta({
813
+ title: "Token ID",
814
+ description: "NFT token ID"
815
+ })
816
+ }).meta({
817
+ title: "Blockchain Information",
818
+ description: "Blockchain-specific information for the NFT"
819
+ });
820
+ var ExternalLinkSchema = z.strictObject({
821
+ label: z.string().min(1).max(50).meta({
822
+ title: "Link Label",
823
+ description: "Display name for the external link"
824
+ }),
825
+ url: z.url("Must be a valid URI").meta({
826
+ title: "Link URL",
827
+ description: "Direct URI to the linked resource"
828
+ }),
829
+ description: z.string().min(10).max(100).optional().meta({
830
+ title: "Link Description",
831
+ description: "Optional context about what the link provides"
832
+ })
833
+ }).meta({
834
+ title: "External Link",
835
+ description: "External link with label and description"
836
+ });
837
+ var NftAttributeSchema = z.strictObject({
838
+ trait_type: z.string().max(50).meta({
839
+ title: "Trait Type",
840
+ description: "Name of the trait or attribute"
841
+ }),
842
+ value: z.union([z.string(), z.number(), z.boolean()]).meta({
843
+ title: "Trait Value",
844
+ description: "Value of the trait - can be string, number, or boolean"
845
+ }),
846
+ display_type: z.enum(["number", "date", "boost_number", "boost_percentage"]).optional().meta({
847
+ title: "Display Type",
848
+ description: "How the trait should be displayed in marketplace UIs"
849
+ }),
850
+ max_value: NonNegativeFloatSchema.optional().meta({
851
+ title: "Max Value",
852
+ description: "Maximum possible value for numeric traits"
853
+ })
854
+ }).meta({
855
+ title: "NFT Attribute",
856
+ description: "NFT attribute or trait with type and value"
857
+ });
858
+ var NftIpfsSchema = BaseIpfsSchema.safeExtend({
859
+ schema: BaseIpfsSchema.shape.schema.safeExtend({
860
+ type: NftSchemaTypeSchema.meta({
861
+ title: "NFT Schema Type",
862
+ description: "Type/category of this NFT schema"
863
+ })
864
+ }),
865
+ blockchain: BlockchainReferenceSchema,
866
+ name: z.string().min(1).max(100).meta({
867
+ title: "NFT Name",
868
+ description: "Full display name for this NFT, including extra context",
869
+ examples: [
870
+ "MassID #123 \u2022 Organic \u2022 3.0t",
871
+ "RecycledID #456 \u2022 Plastic \u2022 2.5t",
872
+ "GasID #789 \u2022 Methane \u2022 1000 m\xB3"
873
+ ]
874
+ }),
875
+ short_name: z.string().min(1).max(50).meta({
876
+ title: "Short Name",
877
+ description: "Compact name for UI summaries, tables, or tooltips",
878
+ examples: ["MassID #123", "RecycledID #456", "GasID #789"]
879
+ }),
880
+ description: z.string().min(10).max(500).meta({
881
+ title: "Description",
882
+ description: "Human-readable summary of the NFT's role and context. Ideally, maximum 300 characters.",
883
+ examples: [
884
+ "This MassID represents 3 metric tons of organic food waste from Enlatados Produ\xE7\xE3o, tracked through complete chain of custody from generation to composting.",
885
+ "This RecycledID represents 2.5 metric tons of recycled plastic bottles processed by Green Solutions Ltd."
886
+ ]
887
+ }),
888
+ image: IpfsUriSchema.meta({
889
+ title: "Image URI",
890
+ description: "IPFS URI pointing to the preview image"
891
+ }),
892
+ background_color: HexColorSchema.optional().meta({
893
+ title: "Background Color",
894
+ description: "Hex color code for marketplace background display"
895
+ }),
896
+ animation_url: IpfsUriSchema.optional().meta({
897
+ title: "Animation URL",
898
+ description: "IPFS URI pointing to an animated or interactive media file",
899
+ examples: [
900
+ "ipfs://QmAnimation123/mass-id-animation.mp4",
901
+ "ipfs://QmInteractive456/recycled-visualization.webm"
902
+ ]
903
+ }),
904
+ external_links: uniqueBy(
905
+ ExternalLinkSchema,
906
+ (link) => link.url,
907
+ "External link URLs must be unique"
908
+ ).max(10).optional().meta({
909
+ title: "External Links",
910
+ description: "Optional list of public resource links with labels",
911
+ examples: [
912
+ [
913
+ {
914
+ label: "Carrot Explorer",
915
+ url: "https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530",
916
+ description: "Complete chain of custody and audit trail"
917
+ },
918
+ {
919
+ label: "Carrot White Paper",
920
+ url: "https://carrot.eco/whitepaper.pdf",
921
+ description: "Carrot Foundation technical and impact white paper"
922
+ }
923
+ ]
924
+ ]
925
+ }),
926
+ attributes: uniqueBy(
927
+ NftAttributeSchema,
928
+ (attr) => attr.trait_type,
929
+ "Attribute trait_type values must be unique"
930
+ ).meta({
931
+ title: "NFT Attributes",
932
+ description: "List of visual traits and filterable attributes compatible with NFT marketplaces",
933
+ examples: [
934
+ [
935
+ {
936
+ trait_type: "Waste Type",
937
+ value: "Organic"
938
+ },
939
+ {
940
+ trait_type: "Waste Subtype",
941
+ value: "Food, Food Waste and Beverages"
942
+ },
943
+ {
944
+ trait_type: "Weight (kg)",
945
+ value: 3e3,
946
+ display_type: "number"
947
+ },
948
+ {
949
+ trait_type: "Origin Country",
950
+ value: "Brazil"
951
+ },
952
+ {
953
+ trait_type: "Pick-up Date",
954
+ value: "2024-12-05",
955
+ display_type: "date"
956
+ }
957
+ ]
958
+ ]
959
+ })
960
+ }).meta({
961
+ title: "NFT IPFS Record",
962
+ description: "NFT-specific fields for Carrot IPFS records"
963
+ });
964
+
965
+ // src/mass-id/mass-id.schema.ts
966
+ var AttributeWasteTypeSchema = z.strictObject({
967
+ trait_type: z.literal("Waste Type"),
968
+ value: WasteTypeSchema
969
+ }).meta({
970
+ title: "Waste Type Attribute",
971
+ description: "Waste type attribute"
972
+ });
973
+ var AttributeWasteSubtypeSchema = z.strictObject({
974
+ trait_type: z.literal("Waste Subtype"),
975
+ value: WasteSubtypeSchema
976
+ }).meta({
977
+ title: "Waste Subtype Attribute",
978
+ description: "Waste subtype attribute"
979
+ });
980
+ var AttributeWeightSchema = z.strictObject({
981
+ trait_type: z.literal("Weight (kg)"),
982
+ value: WeightKgSchema,
983
+ display_type: z.literal("number")
984
+ }).meta({
985
+ title: "Weight Attribute",
986
+ description: "Weight attribute with numeric display"
987
+ });
988
+ var AttributeOriginCountrySchema = z.strictObject({
989
+ trait_type: z.literal("Origin Country"),
990
+ value: z.string().max(100).meta({
991
+ title: "Origin Country Value",
992
+ description: "Country where the waste was generated"
993
+ })
994
+ }).meta({
995
+ title: "Origin Country Attribute",
996
+ description: "Origin country attribute"
997
+ });
998
+ var AttributeOriginMunicipalitySchema = z.strictObject({
999
+ trait_type: z.literal("Origin Municipality"),
1000
+ value: z.string().max(100).meta({
1001
+ title: "Origin Municipality Value",
1002
+ description: "Municipality where the waste was generated"
1003
+ })
1004
+ }).meta({
1005
+ title: "Origin Municipality Attribute",
1006
+ description: "Origin municipality attribute"
1007
+ });
1008
+ var AttributeOriginDivisionSchema = z.strictObject({
1009
+ trait_type: z.literal("Origin Administrative Division"),
1010
+ value: z.string().max(100).meta({
1011
+ title: "Origin Division Value",
1012
+ description: "Administrative division (state/province) where the waste was generated"
1013
+ })
1014
+ }).meta({
1015
+ title: "Origin Administrative Division Attribute",
1016
+ description: "Origin administrative division attribute"
1017
+ });
1018
+ var AttributeRecyclerSchema = z.strictObject({
1019
+ trait_type: z.literal("Recycler"),
1020
+ value: z.string().max(100).meta({
1021
+ title: "Recycler Value",
1022
+ description: "Organization that processed the waste"
1023
+ })
1024
+ }).meta({
1025
+ title: "Recycler Attribute",
1026
+ description: "Recycler attribute"
1027
+ });
1028
+ var AttributeIntegratorSchema = z.strictObject({
1029
+ trait_type: z.literal("Integrator"),
1030
+ value: z.string().max(100).meta({
1031
+ title: "Integrator Value",
1032
+ description: "Organization that integrated the waste into the Carrot network"
1033
+ })
1034
+ }).meta({
1035
+ title: "Integrator Attribute",
1036
+ description: "Integrator attribute"
1037
+ });
1038
+ var AttributePickUpDateSchema = z.strictObject({
1039
+ trait_type: z.literal("Pick-up Date"),
1040
+ value: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Must be a valid date in YYYY-MM-DD format").meta({
1041
+ title: "Pick-up Date Value",
1042
+ description: "Date when the waste was picked up from the source"
1043
+ }),
1044
+ display_type: z.literal("date")
1045
+ }).meta({
1046
+ title: "Pick-up Date Attribute",
1047
+ description: "Pick-up date attribute"
1048
+ });
1049
+ var AttributeRecyclingDateSchema = z.strictObject({
1050
+ trait_type: z.literal("Recycling Date"),
1051
+ value: z.string().regex(/^\d{4}-\d{2}-\d{2}$/, "Must be a valid date in YYYY-MM-DD format").meta({
1052
+ title: "Recycling Date Value",
1053
+ description: "Date when the waste was recycled/processed"
1054
+ }),
1055
+ display_type: z.literal("date")
1056
+ }).meta({
1057
+ title: "Recycling Date Attribute",
1058
+ description: "Recycling date attribute"
1059
+ });
1060
+ var MassIDAttributesSchema = z.tuple([
1061
+ AttributeWasteTypeSchema,
1062
+ AttributeWasteSubtypeSchema,
1063
+ AttributeWeightSchema,
1064
+ AttributeOriginCountrySchema,
1065
+ AttributeOriginMunicipalitySchema,
1066
+ AttributeOriginDivisionSchema,
1067
+ AttributeRecyclerSchema,
1068
+ AttributeIntegratorSchema,
1069
+ AttributePickUpDateSchema,
1070
+ AttributeRecyclingDateSchema
1071
+ ]).meta({
1072
+ title: "MassID Attributes",
1073
+ description: "Fixed set of MassID NFT attributes in required order"
1074
+ });
1075
+ var MassIDIpfsSchemaMeta = {
1076
+ title: "MassID NFT IPFS Record",
1077
+ description: "Complete MassID NFT IPFS record including fixed attributes and detailed waste tracking data",
1078
+ $id: "https://raw.githubusercontent.com/carrot-foundation/schemas/refs/heads/main/schemas/ipfs/mass-id/mass-id.schema.json",
1079
+ version: "1.0.1"
1080
+ };
1081
+ var MassIDIpfsSchema = NftIpfsSchema.safeExtend({
1082
+ schema: NftIpfsSchema.shape.schema.safeExtend({
1083
+ type: z.literal("MassID").meta({
1084
+ title: "MassID Schema Type",
1085
+ description: "MassID NFT schema type"
1086
+ })
1087
+ }),
1088
+ attributes: MassIDAttributesSchema.meta({
1089
+ title: "MassID NFT Attributes",
1090
+ description: "Fixed set of MassID NFT attributes enforcing order and type for each trait"
1091
+ }).check(z.minLength(10), z.maxLength(10)),
1092
+ data: MassIDDataSchema.meta({
1093
+ title: "MassID Data",
1094
+ description: "MassID-specific data containing waste tracking and chain of custody information"
1095
+ })
1096
+ }).meta(MassIDIpfsSchemaMeta);
1097
+
1098
+ export { MassIDDataSchema, MassIDIpfsSchema, MassIDIpfsSchemaMeta };
1099
+ //# sourceMappingURL=index.js.map
1100
+ //# sourceMappingURL=index.js.map