@carrot-foundation/schemas 0.1.37 → 0.1.39

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/shared/definitions.schema.ts","../src/shared/helpers.schema.ts","../src/shared/entities/participant.schema.ts","../src/shared/entities/location.schema.ts","../src/shared/references/audit-reference.schema.ts","../src/shared/references/gas-id-reference.schema.ts","../src/shared/references/mass-id-reference.schema.ts","../src/shared/references/methodology-reference.schema.ts","../src/shared/certificate/certificate.schema.ts","../src/shared/base.schema.ts","../src/shared/nft.schema.ts","../src/shared/schema-version.ts","../src/shared/attributes.schema.ts","../src/shared/audit.schema.ts","../src/mass-id/mass-id.attributes.ts","../src/mass-id/mass-id.data.schema.ts","../src/mass-id/mass-id.schema.ts","../src/gas-id/gas-id.attributes.ts","../src/gas-id/gas-id.data.schema.ts","../src/gas-id/gas-id.schema.ts","../src/recycled-id/recycled-id.attributes.ts","../src/recycled-id/recycled-id.data.schema.ts","../src/recycled-id/recycled-id.schema.ts","../src/credit-purchase-receipt/credit-purchase-receipt.attributes.ts","../src/credit-purchase-receipt/credit-purchase-receipt.data.schema.ts","../src/credit-purchase-receipt/credit-purchase-receipt.schema.ts","../src/collection/collection.schema.ts","../src/credit/credit.schema.ts","../src/methodology/methodology.data.schema.ts","../src/methodology/methodology.schema.ts","../src/mass-id-audit/mass-id-audit.data.schema.ts","../src/mass-id-audit/mass-id-audit.schema.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\nexport const UuidSchema = z.uuidv4('Must be a valid UUID v4 string').meta({\n title: 'UUID',\n description: 'A universally unique identifier version 4',\n examples: [\n 'ad44dd3f-f176-4b98-bf78-5ee6e77d0530',\n '6f520d88-864d-432d-bf9f-5c3166c4818f',\n 'f77afa89-1c58-40fd-9bf5-8a86703a8af4',\n ],\n});\n\nexport type Uuid = z.infer<typeof UuidSchema>;\n\nexport const EthereumAddressSchema = z\n .string()\n .regex(\n /^0x[a-f0-9]{40}$/,\n 'Must be a valid Ethereum address in lowercase hexadecimal format',\n )\n .meta({\n title: 'Ethereum Address',\n description: 'A valid Ethereum address in hexadecimal format',\n examples: [\n '0x1234567890abcdef1234567890abcdef12345678',\n '0xabcdef1234567890abcdef1234567890abcdef12',\n ],\n });\n\nexport type EthereumAddress = z.infer<typeof EthereumAddressSchema>;\n\nexport const IsoTimestampSchema = z.iso\n .datetime({\n message: 'Must be a valid ISO 8601 timestamp with timezone',\n })\n .meta({\n title: 'ISO Timestamp',\n description: 'ISO 8601 formatted timestamp with timezone information',\n examples: ['2024-12-05T11:02:47.000Z', '2025-02-22T10:35:12.000Z'],\n });\n\nexport type IsoTimestamp = z.infer<typeof IsoTimestampSchema>;\n\nexport const IsoDateSchema = z.iso\n .date('Must be a valid ISO 8601 date (YYYY-MM-DD)')\n .meta({\n title: 'ISO Date',\n description: 'ISO 8601 formatted date in YYYY-MM-DD format',\n examples: ['2024-12-05', '2025-02-22', '2024-02-10'],\n });\n\nexport type IsoDate = z.infer<typeof IsoDateSchema>;\n\nexport const UnixTimestampSchema = z\n .number()\n .int()\n .positive()\n .meta({\n title: 'Unix Timestamp',\n description:\n 'Unix timestamp in milliseconds since epoch (January 1, 1970 00:00:00 UTC)',\n examples: [1704067200000, 1735689600000, 1762371245149],\n });\n\nexport type UnixTimestamp = z.infer<typeof UnixTimestampSchema>;\n\nexport const IsoCountryCodeSchema = z\n .string()\n .regex(/^[A-Z]{2}$/, 'Must be a valid ISO 3166-1 alpha-2 country code')\n .meta({\n title: 'ISO Country Code',\n description:\n 'Two-letter country code following ISO 3166-1 alpha-2 standard',\n examples: ['BR', 'US', 'DE'],\n });\n\nexport type IsoCountryCode = z.infer<typeof IsoCountryCodeSchema>;\n\nexport const IsoAdministrativeDivisionCodeSchema = z\n .string()\n .regex(\n /^[A-Z]{2}-[A-Z0-9]{1,3}$/,\n 'Must be a valid ISO 3166-2 administrative division code',\n )\n .meta({\n title: 'ISO Administrative Division Code',\n description: 'Administrative division code following ISO 3166-2 standard',\n examples: ['BR-AP', 'BR-ES', 'US-CA'],\n });\n\nexport type IsoAdministrativeDivisionCode = z.infer<\n typeof IsoAdministrativeDivisionCodeSchema\n>;\n\nexport const LatitudeSchema = z\n .number()\n .min(-90)\n .max(90)\n .multipleOf(0.001)\n .meta({\n title: 'Latitude',\n description:\n 'Geographic latitude coordinate in decimal degrees with maximum 3 decimal places precision (~100m-1km accuracy for city-level, non-PII compliance)',\n examples: [-0.02, -20.38, 40.713],\n });\n\nexport type Latitude = z.infer<typeof LatitudeSchema>;\n\nexport const LongitudeSchema = z\n .number()\n .min(-180)\n .max(180)\n .multipleOf(0.001)\n .meta({\n title: 'Longitude',\n description:\n 'Geographic longitude coordinate in decimal degrees with maximum 3 decimal places precision (~100m-1km accuracy for city-level, non-PII compliance)',\n examples: [-51.06, -40.34, -74.006],\n });\n\nexport type Longitude = z.infer<typeof LongitudeSchema>;\n\nexport const WeightKgSchema = z\n .number()\n .min(0)\n .meta({\n title: 'Weight (kg)',\n description: 'Weight measurement in kilograms',\n examples: [3000, 1500, 500],\n });\n\nexport type WeightKg = z.infer<typeof WeightKgSchema>;\n\nexport const NonEmptyStringSchema = z\n .string()\n .min(1, 'Cannot be empty')\n .meta({\n title: 'Non-Empty String',\n description: 'A string that contains at least one character',\n examples: ['Example text', 'Sample value', 'Test string'],\n });\n\nexport type NonEmptyString = z.infer<typeof NonEmptyStringSchema>;\n\nexport const MunicipalitySchema = NonEmptyStringSchema.max(50).meta({\n title: 'Municipality',\n description: 'Municipality or city name',\n examples: ['Macapá', 'São Paulo', 'New York', 'Berlin', 'Tokyo'],\n});\n\nexport type Municipality = z.infer<typeof MunicipalitySchema>;\n\nexport const AdministrativeDivisionSchema = NonEmptyStringSchema.max(50).meta({\n title: 'Administrative Division',\n description: 'State, province, or administrative region name',\n examples: ['Amapá', 'California', 'Bavaria'],\n});\n\nexport type AdministrativeDivision = z.infer<\n typeof AdministrativeDivisionSchema\n>;\n\nexport const CountryNameSchema = NonEmptyStringSchema.max(50).meta({\n title: 'Country',\n description: 'Full country name in English',\n examples: ['Brazil', 'United States', 'Germany', 'Japan'],\n});\n\nexport type CountryName = z.infer<typeof CountryNameSchema>;\n\nexport const CollectionNameSchema = NonEmptyStringSchema.max(150).meta({\n title: 'Collection Name',\n description: 'Display name of the collection',\n examples: ['BOLD Cold Start - Carazinho', 'BOLD Brazil'],\n});\n\nexport type CollectionName = z.infer<typeof CollectionNameSchema>;\n\nexport const MethodologyNameSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Methodology Name',\n description: 'Name of the methodology used for certification',\n examples: ['BOLD Recycling', 'BOLD Carbon (CH₄)'],\n});\n\nexport type MethodologyName = z.infer<typeof MethodologyNameSchema>;\n\nexport const StringifiedTokenIdSchema = NonEmptyStringSchema.regex(\n /^#\\d+$/,\n 'Must match pattern #<token_id>',\n).meta({\n title: 'Token ID',\n description: 'Token ID represented as #<token_id>',\n example: '#123',\n});\n\nexport type StringifiedTokenId = z.infer<typeof StringifiedTokenIdSchema>;\n\nexport const SlugSchema = NonEmptyStringSchema.regex(\n /^[a-z0-9-]+$/,\n 'Must contain only lowercase letters, numbers, and hyphens',\n)\n .max(100)\n .meta({\n title: 'Slug',\n description:\n 'URL-friendly identifier with lowercase letters, numbers, and hyphens',\n examples: ['mass-id-123', 'recycled-plastic', 'organic-waste'],\n });\nexport type Slug = z.infer<typeof SlugSchema>;\n\nexport const CollectionSlugSchema = SlugSchema.meta({\n title: 'Collection Slug',\n description: 'URL-friendly identifier for a collection',\n examples: ['bold-cold-start-carazinho', 'bold-brazil'],\n});\n\nexport type CollectionSlug = z.infer<typeof CollectionSlugSchema>;\n\nexport const WasteTypeSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Waste Type',\n description: 'Category or type of waste material',\n examples: ['Organic', 'Plastic', 'Metal'],\n});\nexport type WasteType = z.infer<typeof WasteTypeSchema>;\n\nexport const WasteSubtypeSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Waste Subtype',\n description: 'Specific subcategory of waste within a waste type',\n examples: ['Food, Food Waste and Beverages', 'PET Bottles', 'Aluminum Cans'],\n});\nexport type WasteSubtype = z.infer<typeof WasteSubtypeSchema>;\n\nexport const ParticipantRoleSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Participant Role',\n description:\n 'Role that a participant plays in the waste management supply chain',\n examples: ['Waste Generator', 'Hauler', 'Recycler'],\n});\nexport type ParticipantRole = z.infer<typeof ParticipantRoleSchema>;\n\nexport const ParticipantNameSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Participant Name',\n description: 'Name of a participant in the waste management system',\n examples: ['Enlatados Produção', 'Eco Reciclagem', 'Green Tech Corp'],\n});\nexport type ParticipantName = z.infer<typeof ParticipantNameSchema>;\n\nexport const FacilityTypeSchema = z\n .enum([\n 'Collection Point',\n 'Recycling Facility',\n 'Administrative Office',\n 'Other',\n ])\n .meta({\n title: 'Facility Type',\n description: 'Type of facility in the waste management chain',\n examples: [\n 'Collection Point',\n 'Recycling Facility',\n 'Administrative Office',\n ],\n });\nexport type FacilityType = z.infer<typeof FacilityTypeSchema>;\n\nexport const BlockchainChainIdSchema = z\n .number()\n .int()\n .min(1)\n .meta({\n title: 'Chain ID',\n description: 'Blockchain network identifier',\n examples: [1, 137, 11155111],\n });\nexport type BlockchainChainId = z.infer<typeof BlockchainChainIdSchema>;\n\nexport const BlockchainNetworkNameSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Blockchain Network Name',\n description: 'Name of the blockchain network',\n examples: ['Polygon', 'Ethereum mainnet', 'Sepolia'],\n});\n\nexport type BlockchainNetworkName = z.infer<typeof BlockchainNetworkNameSchema>;\n\nexport const SmartContractAddressSchema = EthereumAddressSchema.meta({\n title: 'Smart Contract Address',\n description: 'Address of the smart contract',\n});\n\nexport type SmartContractAddress = z.infer<typeof SmartContractAddressSchema>;\n\nexport const SmartContractSchema = z\n .strictObject({\n address: SmartContractAddressSchema,\n chain_id: BlockchainChainIdSchema,\n network_name: BlockchainNetworkNameSchema,\n })\n .meta({\n title: 'Smart Contract',\n description: 'Smart contract details for on-chain references',\n });\n\nexport type SmartContract = z.infer<typeof SmartContractSchema>;\n\nexport const PercentageSchema = z\n .number()\n .min(0)\n .max(100)\n .meta({\n title: 'Percentage',\n description: 'Percentage value between 0 and 100',\n examples: [50, 75.5, 100],\n });\n\nexport type Percentage = z.infer<typeof PercentageSchema>;\n\nexport const NonNegativeIntegerSchema = z\n .number()\n .int()\n .min(0)\n .meta({\n title: 'Non-Negative Integer',\n description: 'Integer value that is zero or positive',\n examples: [0, 123, 4126],\n });\n\nexport type NonNegativeInteger = z.infer<typeof NonNegativeIntegerSchema>;\n\nexport const PositiveIntegerSchema = z\n .number()\n .int()\n .min(1)\n .meta({\n title: 'Positive Integer',\n description: 'Integer value that is greater than zero',\n examples: [1, 123, 456],\n });\n\nexport type PositiveInteger = z.infer<typeof PositiveIntegerSchema>;\n\nexport const NonNegativeFloatSchema = z\n .number()\n .min(0)\n .meta({\n title: 'Non-Negative Float',\n description: 'Floating-point number that is zero or positive',\n examples: [0, 45.2, 72.5],\n });\n\nexport type NonNegativeFloat = z.infer<typeof NonNegativeFloatSchema>;\n\nexport const CreditTypeSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Credit Type',\n description: 'Type of credit issued',\n examples: ['Organic', 'Carbon (CH₄)'],\n});\n\nexport type CreditType = z.infer<typeof CreditTypeSchema>;\n\nexport const CreditAmountSchema = NonNegativeFloatSchema.meta({\n title: 'Credit Amount',\n description: 'Amount of credits issued',\n});\n\nexport type CreditAmount = z.infer<typeof CreditAmountSchema>;\n\nexport const HoursSchema = z\n .number()\n .min(0)\n .multipleOf(0.1)\n .meta({\n title: 'Hours',\n description: 'Time duration in hours with 0.1 hour precision',\n examples: [72.5, 24, 168.5],\n });\n\nexport type Hours = z.infer<typeof HoursSchema>;\n\nexport const MinutesSchema = z\n .number()\n .int()\n .min(0)\n .meta({\n title: 'Minutes',\n description: 'Time duration in minutes',\n examples: [4350, 1440, 10110],\n });\n\nexport type Minutes = z.infer<typeof MinutesSchema>;\n\nexport const IpfsUriSchema = NonEmptyStringSchema.regex(\n /^ipfs:\\/\\/[a-zA-Z0-9]+(\\/.*)?$/,\n 'Must be a valid IPFS URI with CID',\n).meta({\n title: 'IPFS URI',\n description: 'InterPlanetary File System URI pointing to distributed content',\n examples: [\n 'ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb/mass-id-organic.png',\n 'ipfs://QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o',\n ],\n});\n\nexport type IpfsUri = z.infer<typeof IpfsUriSchema>;\n\nexport const SemanticVersionSchema = NonEmptyStringSchema.regex(\n /^v?\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/,\n 'Must be a valid semantic version string',\n).meta({\n title: 'Semantic Version',\n description: 'Version string following semantic versioning specification',\n examples: ['0.1.0', '1.0.0', '2.1.3'],\n});\n\nexport type SemanticVersion = z.infer<typeof SemanticVersionSchema>;\n\nexport const TokenIdSchema = NonEmptyStringSchema.regex(\n /^\\d+$/,\n 'Must be a numeric string (supports uint256)',\n).meta({\n title: 'Token ID',\n description: 'Numeric identifier for blockchain tokens as string',\n examples: ['123', '456789', '1000000'],\n});\n\nexport type TokenId = z.infer<typeof TokenIdSchema>;\n\nexport const HexColorSchema = NonEmptyStringSchema.regex(\n /^#[0-9A-F]{6}$/,\n 'Must be a hex color code with # prefix and uppercase',\n).meta({\n title: 'Hex Color',\n description: 'Hexadecimal color code with hash prefix',\n examples: ['#2D5A27', '#FF5733', '#1E90FF'],\n});\n\nexport type HexColor = z.infer<typeof HexColorSchema>;\n\nexport const Sha256HashSchema = z\n .hash('sha256', {\n error: 'Must be a SHA256 hash as 32-byte hex string',\n })\n .meta({\n format: undefined,\n title: 'SHA256 Hash',\n description: 'SHA-256 cryptographic hash as hexadecimal string',\n examples: [\n '87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489',\n '6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6',\n ],\n });\n\nexport type Sha256Hash = z.infer<typeof Sha256HashSchema>;\n\nexport const Keccak256HashSchema = Sha256HashSchema.meta({\n title: 'Keccak256 Hash',\n description: 'Keccak256 cryptographic hash as hexadecimal string',\n examples: [\n 'ac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f',\n 'b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2',\n ],\n});\n\nexport type Keccak256Hash = z.infer<typeof Keccak256HashSchema>;\n\nexport const ExternalIdSchema = UuidSchema.meta({\n title: 'External ID',\n description: 'UUID identifier for external system references',\n examples: [\n 'ad44dd3f-f176-4b98-bf78-5ee6e77d0530',\n 'b2c4e6f8-a1b3-4c5d-9e8f-123456789abc',\n ],\n});\n\nexport type ExternalId = z.infer<typeof ExternalIdSchema>;\n\nexport const ExternalUrlSchema = z.url('Must be a valid URL').meta({\n title: 'External URL',\n description: 'Valid URL pointing to external resources',\n examples: [\n 'https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530',\n 'https://carrot.eco/whitepaper.pdf',\n ],\n});\n\nexport type ExternalUrl = z.infer<typeof ExternalUrlSchema>;\n\nexport const RecordSchemaTypeSchema = z\n .enum([\n 'MassID',\n 'MassID Audit',\n 'RecycledID',\n 'GasID',\n 'CreditPurchaseReceipt',\n 'Methodology',\n 'Credit',\n 'Collection',\n ])\n .meta({\n title: 'Schema Type',\n description: 'Type of schema in the Carrot ecosystem',\n examples: ['MassID', 'RecycledID', 'GasID'],\n });\n\nexport type RecordSchemaType = z.infer<typeof RecordSchemaTypeSchema>;\n\nexport const TokenSymbolSchema = NonEmptyStringSchema.max(10)\n .regex(\n /^[A-Z0-9-]+$/,\n 'Must contain only uppercase letters, numbers, and hyphens',\n )\n .meta({\n title: 'Token Symbol',\n description: 'Symbol representing a token or cryptocurrency',\n examples: ['MASS', 'REC', 'GAS'],\n });\n\nexport type TokenSymbol = z.infer<typeof TokenSymbolSchema>;\n\nexport const RecordRelationshipTypeSchema = z\n .enum([\n 'collection',\n 'credit',\n 'gas-id',\n 'mass-id',\n 'mass-id-audit',\n 'methodology',\n 'credit-purchase-receipt',\n 'recycled-id',\n ])\n .meta({\n title: 'Relationship Type',\n description:\n 'Type of relationship between different entities in the system',\n examples: ['mass-id', 'collection', 'credit-purchase-receipt'],\n });\n\nexport type RecordRelationshipType = z.infer<\n typeof RecordRelationshipTypeSchema\n>;\n","import { z } from 'zod';\n\nexport function uniqueArrayItems<T extends z.ZodTypeAny>(\n schema: T,\n errorMessage: string = 'Array items must be unique',\n) {\n return z\n .array(schema)\n .refine((items) => new Set(items).size === items.length, {\n message: errorMessage,\n });\n}\n\nexport function uniqueBy<T extends z.ZodTypeAny, K>(\n schema: T,\n selector: (item: z.infer<T>) => K,\n errorMessage: string = 'Items must be unique',\n) {\n return z.array(schema).refine(\n (items) => {\n const values = items.map(selector);\n return new Set(values).size === values.length;\n },\n {\n message: errorMessage,\n },\n );\n}\n","import { z } from 'zod';\nimport {\n Sha256HashSchema,\n ParticipantNameSchema,\n ParticipantRoleSchema,\n} from '../definitions.schema';\nimport { uniqueArrayItems } from '../helpers.schema';\n\nexport const ParticipantSchema = z\n .strictObject({\n id_hash: Sha256HashSchema.meta({\n title: 'Participant ID Hash',\n description: 'Anonymized identifier for the participant',\n }),\n name: ParticipantNameSchema.meta({\n title: 'Participant Name',\n description: 'Name of the participant',\n }),\n roles: uniqueArrayItems(\n ParticipantRoleSchema,\n 'Participant roles must be unique',\n )\n .min(1)\n .meta({\n title: 'Participant Roles',\n description:\n 'Roles of the participant in the waste management supply chain',\n }),\n })\n .meta({\n title: 'Participant',\n description: 'A participant in the waste management supply chain',\n });\n\nexport type Participant = z.infer<typeof ParticipantSchema>;\n","import { z } from 'zod';\nimport {\n Sha256HashSchema,\n LatitudeSchema,\n LongitudeSchema,\n IsoCountryCodeSchema,\n IsoAdministrativeDivisionCodeSchema,\n FacilityTypeSchema,\n MunicipalitySchema,\n AdministrativeDivisionSchema,\n CountryNameSchema,\n} from '../definitions.schema';\n\nconst PrecisionLevelSchema = z\n .enum(['exact', 'neighborhood', 'city', 'region', 'country'])\n .meta({\n title: 'Coordinate Precision Level',\n description: 'Level of coordinate precision',\n examples: ['city', 'exact', 'neighborhood'],\n });\n\nexport type PrecisionLevel = z.infer<typeof PrecisionLevelSchema>;\n\nexport const CoordinatesSchema = z\n .strictObject({\n latitude: LatitudeSchema,\n longitude: LongitudeSchema,\n precision_level: PrecisionLevelSchema,\n })\n .meta({\n title: 'Coordinates',\n description: 'GPS coordinates of the location',\n });\nexport type Coordinates = z.infer<typeof CoordinatesSchema>;\n\nexport const LocationSchema = z\n .strictObject({\n id_hash: Sha256HashSchema.meta({\n title: 'Location ID Hash',\n description: 'Anonymized identifier for the location',\n }),\n municipality: MunicipalitySchema,\n administrative_division: AdministrativeDivisionSchema,\n administrative_division_code:\n IsoAdministrativeDivisionCodeSchema.optional(),\n country: CountryNameSchema,\n country_code: IsoCountryCodeSchema,\n responsible_participant_id_hash: Sha256HashSchema.meta({\n title: 'Responsible Participant ID Hash',\n description:\n 'Anonymized ID of the participant responsible for this location',\n }),\n coordinates: CoordinatesSchema,\n facility_type: FacilityTypeSchema.optional(),\n })\n .meta({\n title: 'Location',\n description: 'Geographic location with address and coordinate information',\n });\n\nexport type Location = z.infer<typeof LocationSchema>;\n","import { z } from 'zod';\nimport {\n ExternalIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n IsoDateSchema,\n NonNegativeIntegerSchema,\n} from '../definitions.schema';\n\nexport const MethodologyComplianceSchema = z.enum(['PASSED', 'FAILED']).meta({\n title: 'Methodology Compliance',\n description: 'Result of methodology compliance check',\n examples: ['PASSED', 'FAILED'],\n});\n\nexport type MethodologyCompliance = z.infer<typeof MethodologyComplianceSchema>;\n\nexport const AuditReferenceSchema = z\n .strictObject({\n date: IsoDateSchema.meta({\n title: 'Audit Date',\n description: 'Date when the audit was completed',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Audit External ID',\n description: 'Unique identifier for the audit',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Audit External URL',\n description: 'URL to view the audit on Carrot Explorer',\n }),\n methodology_compliance: MethodologyComplianceSchema.meta({\n title: 'Methodology Compliance',\n description: 'Result of methodology compliance check',\n }),\n rules_executed: NonNegativeIntegerSchema.meta({\n title: 'Rules Executed',\n description: 'Number of rules executed during the audit',\n }),\n report: IpfsUriSchema.meta({\n title: 'Audit Report',\n description: 'IPFS URI of the audit report',\n }),\n })\n .meta({\n title: 'Audit Reference',\n description: 'Reference to an audit record',\n });\n\nexport type AuditReference = z.infer<typeof AuditReferenceSchema>;\n","import { z } from 'zod';\nimport {\n ExternalIdSchema,\n TokenIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n} from '../definitions.schema';\n\nexport const GasIDReferenceSchema = z\n .strictObject({\n external_id: ExternalIdSchema.meta({\n title: 'GasID External ID',\n description: 'Unique identifier for the GasID',\n }),\n token_id: TokenIdSchema.meta({\n title: 'GasID Token ID',\n description: 'NFT token ID of the GasID',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'GasID External URL',\n description: 'URL to view the GasID on Carrot Explorer',\n }),\n uri: IpfsUriSchema.meta({\n title: 'GasID IPFS URI',\n description: 'IPFS URI of the GasID record',\n }),\n })\n .meta({\n title: 'GasID Reference',\n description: 'Reference to a GasID record',\n });\n\nexport type GasIDReference = z.infer<typeof GasIDReferenceSchema>;\n","import { z } from 'zod';\nimport {\n ExternalIdSchema,\n TokenIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n} from '../definitions.schema';\n\nexport const MassIDReferenceSchema = z\n .strictObject({\n external_id: ExternalIdSchema.meta({\n title: 'MassID External ID',\n description: 'Unique identifier for the MassID',\n }),\n token_id: TokenIdSchema.meta({\n title: 'MassID Token ID',\n description: 'NFT token ID of the MassID',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'MassID External URL',\n description: 'URL to view the MassID on Carrot Explorer',\n }),\n uri: IpfsUriSchema.meta({\n title: 'MassID IPFS URI',\n description: 'IPFS URI of the MassID record',\n }),\n })\n .meta({\n title: 'MassID Reference',\n description: 'Reference to a MassID record',\n });\n\nexport type MassIDReference = z.infer<typeof MassIDReferenceSchema>;\n","import { z } from 'zod';\nimport {\n ExternalIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n SemanticVersionSchema,\n NonEmptyStringSchema,\n} from '../definitions.schema';\n\nexport const MethodologyReferenceSchema = z\n .strictObject({\n external_id: ExternalIdSchema.meta({\n title: 'Methodology External ID',\n description: 'Unique identifier for the methodology',\n }),\n name: NonEmptyStringSchema.min(5)\n .max(150)\n .meta({\n title: 'Methodology Name',\n description: 'Human-readable name of the methodology',\n examples: ['BOLD Carbon (CH₄)', 'BOLD Recycling'],\n }),\n version: SemanticVersionSchema.meta({\n title: 'Methodology Version',\n description: 'Version of the methodology',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Methodology External URL',\n description: 'URL to view the methodology on Carrot Explorer',\n }),\n uri: IpfsUriSchema.optional().meta({\n title: 'Methodology IPFS URI',\n description: 'IPFS URI to the methodology record',\n }),\n })\n .meta({\n title: 'Methodology Reference',\n description: 'Reference to a methodology record',\n });\n\nexport type MethodologyReference = z.infer<typeof MethodologyReferenceSchema>;\n","import { z } from 'zod';\nimport {\n WasteTypeSchema,\n WasteSubtypeSchema,\n WeightKgSchema,\n UuidSchema,\n ParticipantNameSchema,\n ParticipantRoleSchema,\n ExternalUrlSchema,\n NonEmptyStringSchema,\n PercentageSchema,\n} from '../definitions.schema';\n\nexport const WasteClassificationSchema = z\n .strictObject({\n primary_type: WasteTypeSchema.meta({\n title: 'Source Waste Primary Type',\n description: 'Primary type of the source waste',\n }),\n subtype: WasteSubtypeSchema.meta({\n title: 'Source Waste Subtype',\n description: 'Subtype of the source waste',\n }),\n net_weight_kg: WeightKgSchema.meta({\n title: 'Source Waste Net Weight',\n description: 'Net weight of the source waste',\n }),\n })\n .meta({\n title: 'Waste Classification',\n description: 'Classification of the source waste (MassID)',\n });\n\nexport type WasteClassification = z.infer<typeof WasteClassificationSchema>;\n\nexport const AccreditedParticipantSchema = z\n .strictObject({\n participant_id: UuidSchema.meta({\n title: 'Participant ID',\n description: 'Unique identifier for the participant',\n }),\n name: ParticipantNameSchema.meta({\n title: 'Participant Name',\n description: 'Name of the participant',\n }),\n role: ParticipantRoleSchema.meta({\n title: 'Participant Role',\n description: 'Role of the participant in the supply chain',\n }),\n accreditation_id: UuidSchema.meta({\n title: 'Accreditation ID',\n description: 'Unique identifier for the participant accreditation',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Participant Accreditation External URL',\n description:\n 'URL to view the participant accreditation on Carrot Explorer',\n }),\n })\n .meta({\n title: 'Accredited Participant',\n description: 'Participant with valid accreditation in the supply chain',\n });\n\nexport type AccreditedParticipant = z.infer<typeof AccreditedParticipantSchema>;\n\nexport const AccreditedParticipantsSchema = z\n .array(AccreditedParticipantSchema)\n .min(1)\n .meta({\n title: 'Accredited Participants',\n description: 'List of participants with valid accreditations',\n });\n\nexport type AccreditedParticipants = z.infer<\n typeof AccreditedParticipantsSchema\n>;\n\nexport const RewardAllocationSchema = z\n .strictObject({\n participant_id: UuidSchema.meta({\n title: 'Participant ID',\n description: 'Unique identifier for the participant receiving the reward',\n }),\n participant_name: ParticipantNameSchema.meta({\n title: 'Participant Name',\n description: 'Name of the participant receiving the reward',\n }),\n role: ParticipantRoleSchema.meta({\n title: 'Participant Role',\n description: 'Role of the participant in the supply chain',\n }),\n reward_percentage: PercentageSchema.meta({\n title: 'Reward Percentage',\n description: 'Reward percentage allocated to the participant',\n }),\n large_business_discount_applied: z.boolean().optional().meta({\n title: 'Large Business Discount Applied',\n description: 'Whether the large business discount was applied',\n }),\n effective_percentage: PercentageSchema.meta({\n title: 'Effective Percentage',\n description: 'Effective percentage of the reward after discounts',\n }),\n })\n .meta({\n title: 'Reward Allocation',\n description: 'Reward allocation for a specific participant',\n });\n\nexport type RewardAllocation = z.infer<typeof RewardAllocationSchema>;\n\nexport const DistributionNotesSchema = z\n .strictObject({\n large_business_discount_applied: NonEmptyStringSchema.optional().meta({\n title: 'Large Business Discount Applied',\n description: 'Description of the large business discount applied',\n examples: [\n '50% reduction applied to participants with >$4M annual revenue',\n ],\n }),\n redirected_rewards: NonEmptyStringSchema.optional().meta({\n title: 'Redirected Rewards',\n description: 'Description of the redirected rewards',\n examples: [\n 'Discounted rewards from large businesses redirected to accredited NGOs',\n ],\n }),\n })\n .meta({\n title: 'Distribution Notes',\n description: 'Additional notes about the reward distribution',\n });\n\nexport type DistributionNotes = z.infer<typeof DistributionNotesSchema>;\n\nexport const ParticipantRewardsSchema = z\n .strictObject({\n distribution_basis: NonEmptyStringSchema.max(200).meta({\n title: 'Distribution Basis',\n description: 'Basis for the rewards distribution',\n }),\n reward_allocations: z.array(RewardAllocationSchema).min(1).meta({\n title: 'Reward Allocations',\n description: 'Rewards percentage allocated to each participant',\n }),\n distribution_notes: DistributionNotesSchema.optional().meta({\n title: 'Distribution Notes',\n description: 'Additional notes about the reward distribution',\n }),\n })\n .meta({\n title: 'Participant Rewards',\n description: 'Rewards distribution to participants',\n });\n\nexport type ParticipantRewards = z.infer<typeof ParticipantRewardsSchema>;\n","import { z } from 'zod';\nimport {\n Keccak256HashSchema,\n SemanticVersionSchema,\n Sha256HashSchema,\n IsoTimestampSchema,\n ExternalIdSchema,\n ExternalUrlSchema,\n UuidSchema,\n RecordSchemaTypeSchema,\n IpfsUriSchema,\n RecordRelationshipTypeSchema,\n} from './definitions.schema';\n\nconst SchemaHashSchema = z\n .union([\n Keccak256HashSchema,\n z\n .string()\n .regex(\n /^0x[a-fA-F0-9]{64}$/,\n 'Must be a Keccak256 hash as 0x-prefixed hex string',\n ),\n ])\n .meta({\n title: 'Schema Hash',\n description:\n 'Keccak256 hash of the JSON Schema this record was validated against',\n examples: [\n 'ac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f',\n '0xac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f',\n ],\n });\n\nconst SchemaInfoSchema = z\n .strictObject({\n hash: SchemaHashSchema,\n type: RecordSchemaTypeSchema.meta({\n title: 'Schema Type',\n description: 'Type/category of this schema',\n }),\n version: SemanticVersionSchema.meta({\n title: 'Schema Version',\n description: 'Version of the schema, using semantic versioning',\n }),\n })\n .meta({\n title: 'Schema Information',\n });\n\nexport type SchemaInfo = z.infer<typeof SchemaInfoSchema>;\n\nconst RecordCreatorSchema = z\n .strictObject({\n name: z.string().meta({\n title: 'Creator Name',\n description: 'Company or individual name that created this record',\n examples: ['Carrot Foundation'],\n }),\n id: UuidSchema.meta({\n title: 'Creator ID',\n description: 'Unique identifier for the creator',\n }),\n })\n .meta({\n title: 'Creator',\n description: 'Entity that created this record',\n });\n\nexport type RecordCreator = z.infer<typeof RecordCreatorSchema>;\n\nconst RecordRelationshipSchema = z\n .strictObject({\n target_uri: IpfsUriSchema.meta({\n title: 'Target IPFS URI',\n description: 'Target IPFS URI of the referenced record',\n }),\n type: RecordRelationshipTypeSchema.meta({\n title: 'Relationship Type',\n description: 'Type of relationship to the referenced record',\n }),\n description: z\n .string()\n .optional()\n .meta({\n title: 'Relationship Description',\n description: 'Human-readable description of the relationship',\n examples: [\n 'This record supersedes the previous version',\n 'Related carbon credit batch',\n 'Source document for this verification',\n 'Child record derived from this parent',\n 'Updated version of original record',\n ],\n }),\n })\n .meta({\n title: 'Relationship',\n description: 'Relationship to another IPFS record',\n });\n\nexport type RecordRelationship = z.infer<typeof RecordRelationshipSchema>;\n\nexport const RecordEnvironmentSchema = z\n .strictObject({\n blockchain_network: z.enum(['mainnet', 'testnet']).meta({\n title: 'Blockchain Network',\n description: 'Blockchain Network Environment',\n }),\n deployment: z.enum(['production', 'development', 'testing']).meta({\n title: 'Deployment Environment',\n description: 'System environment where this record was generated',\n }),\n data_set_name: z.enum(['TEST', 'PROD']).meta({\n title: 'Data Set Name',\n description: 'Name of the data set for this record',\n }),\n })\n .meta({\n title: 'Environment',\n description: 'Environment information',\n });\n\nexport type RecordEnvironment = z.infer<typeof RecordEnvironmentSchema>;\n\nexport const BaseIpfsSchema = z\n .strictObject({\n $schema: z.url('Must be a valid URI').meta({\n title: 'JSON Schema URI',\n description: 'URI of the JSON Schema used to validate this record',\n example:\n 'https://raw.githubusercontent.com/carrot-foundation/schemas/refs/heads/main/schemas/ipfs/shared/base/base.schema.json',\n }),\n schema: SchemaInfoSchema,\n created_at: IsoTimestampSchema.meta({\n title: 'Created At',\n description: 'ISO 8601 creation timestamp for this record',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'External ID',\n description: 'Off-chain reference ID (UUID from Carrot backend)',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'External URL',\n description: 'External URL of the content',\n }),\n original_content_hash: Sha256HashSchema.meta({\n title: 'Original Content Hash',\n description:\n 'SHA-256 hash of the original JSON content including private data before schema validation',\n }),\n content_hash: Sha256HashSchema.meta({\n title: 'Content Hash',\n description:\n 'SHA-256 hash of RFC 8785 canonicalized JSON after schema validation',\n }),\n creator: RecordCreatorSchema.optional(),\n relationships: z.array(RecordRelationshipSchema).optional().meta({\n title: 'Relationships',\n description: 'References to other IPFS records this record relates to',\n }),\n environment: RecordEnvironmentSchema.optional(),\n data: z.record(z.string(), z.unknown()).optional().meta({\n title: 'Custom Data',\n description: \"Custom data block that includes the record's data\",\n }),\n })\n .meta({\n title: 'Base IPFS Record',\n description:\n 'Base fields for all Carrot IPFS records, providing common structure for any JSON content stored in IPFS',\n });\n\nexport type BaseIpfs = z.infer<typeof BaseIpfsSchema>;\n","import { z } from 'zod';\nimport { BaseIpfsSchema } from './base.schema';\nimport {\n EthereumAddressSchema,\n BlockchainChainIdSchema,\n TokenIdSchema,\n IpfsUriSchema,\n HexColorSchema,\n NonNegativeFloatSchema,\n RecordSchemaTypeSchema,\n} from './definitions.schema';\nimport { uniqueBy } from './helpers.schema';\n\nconst NftSchemaTypeSchema = RecordSchemaTypeSchema.extract([\n 'MassID',\n 'RecycledID',\n 'GasID',\n 'CreditPurchaseReceipt',\n]).meta({\n title: 'NFT Schema Type',\n description: 'Type of schema for NFT records',\n});\n\nexport type NftSchemaType = z.infer<typeof NftSchemaTypeSchema>;\n\nconst BlockchainReferenceSchema = z\n .strictObject({\n smart_contract_address: EthereumAddressSchema.meta({\n title: 'Smart Contract Address',\n }),\n chain_id: BlockchainChainIdSchema.meta({\n title: 'Chain ID',\n description: 'Blockchain chain ID',\n }),\n network_name: z.string().min(5).max(100).meta({\n title: 'Network Name',\n description: 'Name of the blockchain network',\n }),\n token_id: TokenIdSchema.meta({\n title: 'Token ID',\n description: 'NFT token ID',\n }),\n })\n .meta({\n title: 'Blockchain Information',\n description: 'Blockchain-specific information for the NFT',\n });\n\nexport type BlockchainReference = z.infer<typeof BlockchainReferenceSchema>;\n\nconst ExternalLinkSchema = z\n .strictObject({\n label: z.string().min(1).max(50).meta({\n title: 'Link Label',\n description: 'Display name for the external link',\n }),\n url: z.url('Must be a valid URI').meta({\n title: 'Link URL',\n description: 'Direct URI to the linked resource',\n }),\n description: z.string().min(10).max(100).optional().meta({\n title: 'Link Description',\n description: 'Optional context about what the link provides',\n }),\n })\n .meta({\n title: 'External Link',\n description: 'External link with label and description',\n });\n\nexport type ExternalLink = z.infer<typeof ExternalLinkSchema>;\n\nexport const NftAttributeSchema = z\n .strictObject({\n trait_type: z.string().max(50).meta({\n title: 'Trait Type',\n description: 'Name of the trait or attribute',\n }),\n value: z.union([z.string(), z.number(), z.boolean()]).meta({\n title: 'Trait Value',\n description: 'Value of the trait - can be string, number, or boolean',\n }),\n display_type: z\n .enum(['number', 'date', 'boost_number', 'boost_percentage'])\n .optional()\n .meta({\n title: 'Display Type',\n description: 'How the trait should be displayed in marketplace UIs',\n }),\n max_value: NonNegativeFloatSchema.optional().meta({\n title: 'Max Value',\n description: 'Maximum possible value for numeric traits',\n }),\n })\n .meta({\n title: 'NFT Attribute',\n description: 'NFT attribute or trait with type and value',\n });\n\nexport type NftAttribute = z.infer<typeof NftAttributeSchema>;\n\nexport const NftIpfsSchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: NftSchemaTypeSchema.meta({\n title: 'NFT Schema Type',\n description: 'Type/category of this NFT schema',\n }),\n }),\n blockchain: BlockchainReferenceSchema,\n name: z\n .string()\n .min(1)\n .max(100)\n .meta({\n title: 'NFT Name',\n description: 'Full display name for this NFT, including extra context',\n examples: [\n 'MassID #123 • Organic • 3.0t',\n 'RecycledID #456 • Plastic • 2.5t',\n 'GasID #789 • Methane • 1000 m³',\n ],\n }),\n short_name: z\n .string()\n .min(1)\n .max(50)\n .meta({\n title: 'Short Name',\n description: 'Compact name for UI summaries, tables, or tooltips',\n examples: ['MassID #123', 'RecycledID #456', 'GasID #789'],\n }),\n description: z\n .string()\n .min(10)\n .max(500)\n .meta({\n title: 'Description',\n description:\n \"Human-readable summary of the NFT's role and context. Ideally, maximum 300 characters.\",\n examples: [\n 'This MassID represents 3 metric tons of organic food waste from Enlatados Produção, tracked through complete chain of custody from generation to composting.',\n 'This RecycledID represents 2.5 metric tons of recycled plastic bottles processed by Green Solutions Ltd.',\n ],\n }),\n image: IpfsUriSchema.meta({\n title: 'Image URI',\n description: 'IPFS URI pointing to the preview image',\n }),\n background_color: HexColorSchema.optional().meta({\n title: 'Background Color',\n description: 'Hex color code for marketplace background display',\n }),\n animation_url: IpfsUriSchema.optional().meta({\n title: 'Animation URL',\n description: 'IPFS URI pointing to an animated or interactive media file',\n examples: [\n 'ipfs://QmAnimation123/mass-id-animation.mp4',\n 'ipfs://QmInteractive456/recycled-visualization.webm',\n ],\n }),\n external_links: uniqueBy(\n ExternalLinkSchema,\n (link) => link.url,\n 'External link URLs must be unique',\n )\n .max(10)\n .optional()\n .meta({\n title: 'External Links',\n description: 'Optional list of public resource links with labels',\n examples: [\n [\n {\n label: 'Carrot Explorer',\n url: 'https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530',\n description: 'Complete chain of custody and audit trail',\n },\n {\n label: 'Carrot White Paper',\n url: 'https://carrot.eco/whitepaper.pdf',\n description: 'Carrot Foundation technical and impact white paper',\n },\n ],\n ],\n }),\n attributes: uniqueBy(\n NftAttributeSchema,\n (attr) => attr.trait_type,\n 'Attribute trait_type values must be unique',\n ).meta({\n title: 'NFT Attributes',\n description:\n 'List of visual traits and filterable attributes compatible with NFT marketplaces',\n examples: [\n [\n {\n trait_type: 'Waste Type',\n value: 'Organic',\n },\n {\n trait_type: 'Waste Subtype',\n value: 'Food, Food Waste and Beverages',\n },\n {\n trait_type: 'Weight (kg)',\n value: 3000,\n display_type: 'number',\n },\n {\n trait_type: 'Origin Country',\n value: 'Brazil',\n },\n {\n trait_type: 'Pick-up Date',\n value: '2024-12-05',\n display_type: 'date',\n },\n ],\n ],\n }),\n}).meta({\n title: 'NFT IPFS Record',\n description: 'NFT-specific fields for Carrot IPFS records',\n});\n\nexport type NftIpfs = z.infer<typeof NftIpfsSchema>;\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nfunction getPackageJsonVersion(): string {\n try {\n const packageJsonPath = resolve(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));\n return packageJson.version || '0.0.0-dev';\n } catch {\n return '0.0.0-dev';\n }\n}\n\nexport function getSchemaBaseUrl(): string {\n return `https://raw.githubusercontent.com/carrot-foundation/schemas/refs/tags/${getSchemaVersionOrDefault()}/schemas/ipfs`;\n}\n\nexport function buildSchemaUrl(schemaPath: string): string {\n const cleanPath = schemaPath.startsWith('/')\n ? schemaPath.slice(1)\n : schemaPath;\n return `${getSchemaBaseUrl()}/${cleanPath}`;\n}\n\nexport function getSchemaVersionOrDefault(): string {\n return process.env['SCHEMA_VERSION'] || getPackageJsonVersion();\n}\n","import { z } from 'zod';\nimport { NftAttributeSchema } from './nft.schema';\nimport {\n NonEmptyStringSchema,\n WeightKgSchema,\n UnixTimestampSchema,\n WasteTypeSchema,\n MethodologyNameSchema,\n StringifiedTokenIdSchema,\n CountryNameSchema,\n MunicipalitySchema,\n CreditAmountSchema,\n CreditTypeSchema,\n} from './definitions.schema';\n\nexport const MethodologyAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Methodology'),\n value: MethodologyNameSchema,\n}).meta({\n title: 'Methodology Attribute',\n description: 'Methodology used for certification',\n});\nexport type MethodologyAttribute = z.infer<typeof MethodologyAttributeSchema>;\n\nexport const CreditAmountAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Credit Amount'),\n value: CreditAmountSchema,\n display_type: z.literal('number'),\n}).meta({\n title: 'Credit Amount Attribute',\n description: 'Credit amount attribute with numeric display',\n});\nexport type CreditAmountAttribute = z.infer<typeof CreditAmountAttributeSchema>;\n\nexport const CreditTypeAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Credit Type'),\n value: CreditTypeSchema,\n}).meta({\n title: 'Credit Type Attribute',\n description: 'Credit type attribute',\n});\nexport type CreditTypeAttribute = z.infer<typeof CreditTypeAttributeSchema>;\n\nexport const SourceWasteTypeAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Source Waste Type'),\n value: WasteTypeSchema,\n}).meta({\n title: 'Source Waste Type Attribute',\n description: 'Source waste type attribute',\n});\nexport type SourceWasteTypeAttribute = z.infer<\n typeof SourceWasteTypeAttributeSchema\n>;\n\nexport const SourceWeightAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Source Weight (kg)'),\n value: WeightKgSchema.meta({\n title: 'Source Weight',\n description: 'Weight of the source waste in kilograms',\n }),\n display_type: z.literal('number'),\n}).meta({\n title: 'Source Weight Attribute',\n description: 'Source weight attribute with numeric display',\n});\nexport type SourceWeightAttribute = z.infer<typeof SourceWeightAttributeSchema>;\n\nexport const OriginCountryAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Origin Country'),\n value: CountryNameSchema,\n}).meta({\n title: 'Origin Country Attribute',\n description: 'Origin country attribute',\n});\nexport type OriginCountryAttribute = z.infer<\n typeof OriginCountryAttributeSchema\n>;\n\nexport const OriginMunicipalityAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Origin Municipality'),\n value: MunicipalitySchema,\n}).meta({\n title: 'Origin Municipality Attribute',\n description: 'Origin municipality attribute',\n});\nexport type OriginMunicipalityAttribute = z.infer<\n typeof OriginMunicipalityAttributeSchema\n>;\n\nexport const RecyclerAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycler'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Recycler',\n description: 'Organization that processed the waste',\n example: 'Eco Reciclagem',\n }),\n}).meta({\n title: 'Recycler Attribute',\n description: 'Recycler attribute',\n});\nexport type RecyclerAttribute = z.infer<typeof RecyclerAttributeSchema>;\n\nexport const MassIDTokenIdAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('MassID'),\n value: StringifiedTokenIdSchema.meta({\n title: 'MassID Token ID',\n description: 'Token ID of the source MassID NFT as #<token_id>',\n }),\n}).meta({\n title: 'MassID Token ID Attribute',\n description: 'MassID token ID attribute',\n});\nexport type MassIDTokenIdAttribute = z.infer<\n typeof MassIDTokenIdAttributeSchema\n>;\n\nexport const MassIDRecyclingDateAttributeSchema = NftAttributeSchema.omit({\n max_value: true,\n})\n .safeExtend({\n trait_type: z.literal('MassID Recycling Date'),\n value: UnixTimestampSchema.meta({\n title: 'MassID Recycling Date',\n description:\n 'Unix timestamp in milliseconds when the source waste was recycled',\n }),\n display_type: z.literal('date'),\n })\n .meta({\n title: 'MassID Recycling Date Attribute',\n description:\n 'MassID recycling date attribute using Unix timestamp in milliseconds',\n });\nexport type MassIDRecyclingDateAttribute = z.infer<\n typeof MassIDRecyclingDateAttributeSchema\n>;\n","import { z } from 'zod';\nimport {\n NonEmptyStringSchema,\n PositiveIntegerSchema,\n SlugSchema,\n UuidSchema,\n} from './definitions.schema';\nimport { MethodologyComplianceSchema } from './references/audit-reference.schema';\n\nexport const AuditRuleDefinitionSchema = z\n .strictObject({\n rule_id: UuidSchema.meta({\n title: 'Rule ID',\n description: 'Unique identifier for the audit rule',\n }),\n rule_slug: SlugSchema.meta({\n title: 'Rule Slug',\n description: 'URL-friendly identifier for the rule',\n }),\n rule_name: NonEmptyStringSchema.max(100).meta({\n title: 'Rule Name',\n description: 'Human-readable name of the rule',\n examples: ['Waste Mass is Unique', 'No Conflicting GasID or Credit'],\n }),\n description: z\n .string()\n .min(10)\n .max(500)\n .meta({\n title: 'Rule Description',\n description:\n 'Detailed description of what the rule validates and why it is necessary',\n examples: [\n 'Validates that each MassID is unique within the system to prevent duplicate entries',\n ],\n }),\n source_code_url: z\n .url()\n .regex(/^https:\\/\\/github\\.com\\/.*$/, 'Must be a GitHub URL')\n .meta({\n title: 'Rule Source Code URL',\n description:\n 'GitHub URL pointing to the implementation source code for this rule',\n examples: [\n 'https://github.com/carrot-foundation/methodologies/blob/main/bold-carbon/rules/waste-mass-unique.js',\n ],\n }),\n mandatory: z.boolean().meta({\n title: 'Mandatory',\n description: 'Whether this rule is mandatory for methodology compliance',\n }),\n execution_order: PositiveIntegerSchema.meta({\n title: 'Rule Execution Order',\n description: 'Sequential order in which this rule must be executed',\n }),\n })\n .meta({\n title: 'Audit Rule Definition',\n description:\n 'Definition of an audit rule that must be executed for methodology compliance',\n });\n\nexport type AuditRuleDefinition = z.infer<typeof AuditRuleDefinitionSchema>;\n\nexport const AuditRuleDefinitionsSchema = z\n .array(AuditRuleDefinitionSchema)\n .min(1)\n .meta({\n title: 'Audit Rule Definitions',\n description:\n 'List of audit rules that must be executed to check methodology compliance',\n });\n\nexport type AuditRuleDefinitions = z.infer<typeof AuditRuleDefinitionsSchema>;\n\nexport const AuditRuleExecutionResultSchema = z\n .strictObject({\n rule_name: NonEmptyStringSchema.meta({\n title: 'Rule Name',\n description: 'Human-readable name of the audit rule',\n }),\n rule_id: UuidSchema.meta({\n title: 'Rule ID',\n description: 'Unique identifier for the rule',\n }),\n rule_slug: SlugSchema.meta({\n title: 'Rule Slug',\n description: 'URL-friendly identifier for the rule',\n }),\n execution_order: PositiveIntegerSchema.meta({\n title: 'Rule Execution Order',\n description: 'Sequential order in which this rule was executed',\n }),\n result: MethodologyComplianceSchema.meta({\n title: 'Rule Execution Result',\n description: 'Result of the rule execution',\n }),\n description: z.string().min(1).max(2000).meta({\n title: 'Rule Description',\n description: 'Detailed description of what this rule validates',\n }),\n rule_processor_checksum: NonEmptyStringSchema.max(200).meta({\n title: 'Rule Processor Checksum',\n description: 'Checksum for rule processor integrity verification',\n }),\n rule_source_code_version: NonEmptyStringSchema.max(200).meta({\n title: 'Rule Source Code Version',\n description: 'Version identifier for the rule source code',\n }),\n })\n .meta({\n title: 'Audit Rule Execution Result',\n description: 'Detailed result of an audit rule execution',\n });\n\nexport type AuditRuleExecutionResult = z.infer<\n typeof AuditRuleExecutionResultSchema\n>;\n\nexport const AuditRuleExecutionResultsSchema = z\n .array(AuditRuleExecutionResultSchema)\n .meta({\n title: 'Audit Rule Execution Results',\n description: 'Detailed results of each audit rule execution',\n });\n\nexport type AuditRuleExecutionResults = z.infer<\n typeof AuditRuleExecutionResultsSchema\n>;\n","import { z } from 'zod';\nimport {\n WasteTypeSchema,\n WasteSubtypeSchema,\n WeightKgSchema,\n UnixTimestampSchema,\n HoursSchema,\n NonEmptyStringSchema,\n CountryNameSchema,\n MunicipalitySchema,\n AdministrativeDivisionSchema,\n uniqueBy,\n OriginCountryAttributeSchema,\n OriginMunicipalityAttributeSchema,\n NftAttributeSchema,\n} from '../shared';\n\nconst MassIDAttributeWasteTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Waste Type'),\n value: WasteTypeSchema,\n}).meta({\n title: 'Waste Type Attribute',\n description: 'Waste type attribute',\n});\n\nexport type MassIDAttributeWasteType = z.infer<\n typeof MassIDAttributeWasteTypeSchema\n>;\n\nconst MassIDAttributeWasteSubtypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Waste Subtype'),\n value: WasteSubtypeSchema,\n}).meta({\n title: 'Waste Subtype Attribute',\n description: 'Waste subtype attribute',\n});\n\nexport type MassIDAttributeWasteSubtype = z.infer<\n typeof MassIDAttributeWasteSubtypeSchema\n>;\n\nconst MassIDAttributeWeightSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Weight (kg)'),\n value: WeightKgSchema,\n display_type: z.literal('number'),\n}).meta({\n title: 'Weight Attribute',\n description: 'Weight attribute with numeric display',\n});\n\nexport type MassIDAttributeWeight = z.infer<typeof MassIDAttributeWeightSchema>;\n\nconst MassIDAttributeOriginCountrySchema =\n OriginCountryAttributeSchema.safeExtend({\n value: CountryNameSchema,\n });\n\nexport type MassIDAttributeOriginCountry = z.infer<\n typeof MassIDAttributeOriginCountrySchema\n>;\n\nconst MassIDAttributeOriginMunicipalitySchema =\n OriginMunicipalityAttributeSchema.safeExtend({\n value: MunicipalitySchema,\n });\n\nexport type MassIDAttributeOriginMunicipality = z.infer<\n typeof MassIDAttributeOriginMunicipalitySchema\n>;\n\nconst MassIDAttributeOriginDivisionSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Origin Administrative Division'),\n value: AdministrativeDivisionSchema,\n}).meta({\n title: 'Origin Administrative Division Attribute',\n description: 'Origin administrative division attribute',\n});\n\nexport type MassIDAttributeOriginDivision = z.infer<\n typeof MassIDAttributeOriginDivisionSchema\n>;\n\nconst MassIDAttributeVehicleTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Vehicle Type'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Vehicle Type',\n description: 'Type of vehicle used for waste transportation',\n examples: ['Garbage Truck', 'Box Truck', 'Flatbed Truck', 'Roll-off Truck'],\n }),\n}).meta({\n title: 'Vehicle Type Attribute',\n description: 'Vehicle type attribute',\n});\n\nexport type MassIDAttributeVehicleType = z.infer<\n typeof MassIDAttributeVehicleTypeSchema\n>;\n\nconst MassIDAttributeRecyclingMethodSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycling Method'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Recycling Method',\n description: 'Method used for recycling or processing the waste',\n examples: [\n 'Composting',\n 'Mechanical Recycling',\n 'Incineration with Energy Recovery',\n ],\n }),\n}).meta({\n title: 'Recycling Method Attribute',\n description: 'Recycling method attribute',\n});\n\nexport type MassIDAttributeRecyclingMethod = z.infer<\n typeof MassIDAttributeRecyclingMethodSchema\n>;\n\nconst MassIDAttributeProcessingTimeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Processing Time (hours)'),\n value: HoursSchema,\n trait_description: NonEmptyStringSchema.max(200).optional().meta({\n title: 'Processing Time Description',\n description: 'Custom description for the processing time',\n }),\n}).meta({\n title: 'Processing Time Attribute',\n description: 'Processing time attribute with optional trait description',\n});\n\nexport type MassIDAttributeProcessingTime = z.infer<\n typeof MassIDAttributeProcessingTimeSchema\n>;\n\nconst MassIDAttributeLocalWasteClassificationIdSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Local Waste Classification ID'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Local Waste Classification ID',\n description: 'Local or regional waste classification identifier',\n examples: ['04 02 20', 'IBAMA-A001', 'EWC-150101'],\n }),\n }).meta({\n title: 'Local Waste Classification ID Attribute',\n description: 'Local waste classification ID attribute',\n });\n\nexport type MassIDAttributeLocalWasteClassificationId = z.infer<\n typeof MassIDAttributeLocalWasteClassificationIdSchema\n>;\n\nconst MassIDAttributeRecyclingManifestCodeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycling Manifest Code'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Recycling Manifest Code',\n description:\n 'Concatenated recycling manifest code (Document Type + Document Number)',\n examples: ['CDF-2353', 'RC-12345', 'REC-MANIFEST-789'],\n }),\n }).meta({\n title: 'Recycling Manifest Code Attribute',\n description: 'Recycling manifest code attribute (optional)',\n });\n\nexport type MassIDAttributeRecyclingManifestCode = z.infer<\n typeof MassIDAttributeRecyclingManifestCodeSchema\n>;\n\nconst MassIDAttributeTransportManifestCodeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Transport Manifest Code'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Transport Manifest Code',\n description:\n 'Concatenated transport manifest code (Document Type + Document Number)',\n examples: ['MTR-4126', 'TRN-67890', 'TRANS-MANIFEST-456'],\n }),\n }).meta({\n title: 'Transport Manifest Code Attribute',\n description: 'Transport manifest code attribute (optional)',\n });\n\nexport type MassIDAttributeTransportManifestCode = z.infer<\n typeof MassIDAttributeTransportManifestCodeSchema\n>;\n\nconst MassIDAttributeWeighingCaptureMethodSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Weighing Capture Method'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Weighing Capture Method',\n description: 'Method used to capture weight data',\n examples: ['Digital', 'Manual', 'Automated', 'Electronic Scale'],\n }),\n }).meta({\n title: 'Weighing Capture Method Attribute',\n description: 'Weighing capture method attribute (optional)',\n });\n\nexport type MassIDAttributeWeighingCaptureMethod = z.infer<\n typeof MassIDAttributeWeighingCaptureMethodSchema\n>;\n\nconst MassIDAttributeScaleTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Scale Type'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Scale Type',\n description: 'Type of scale used for weighing',\n examples: [\n 'Weighbridge (Truck Scale)',\n 'Floor Scale',\n 'Bench Scale',\n 'Crane Scale',\n ],\n }),\n}).meta({\n title: 'Scale Type Attribute',\n description: 'Scale type attribute (optional)',\n});\n\nexport type MassIDAttributeScaleType = z.infer<\n typeof MassIDAttributeScaleTypeSchema\n>;\n\nconst MassIDAttributeContainerTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Container Type'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Container Type',\n description: 'Type of container used for waste storage or transport',\n examples: ['Truck', 'Dumpster', 'Roll-off Container', 'Compactor', 'Bin'],\n }),\n}).meta({\n title: 'Container Type Attribute',\n description: 'Container type attribute (optional)',\n});\n\nexport type MassIDAttributeContainerType = z.infer<\n typeof MassIDAttributeContainerTypeSchema\n>;\n\nconst MassIDAttributePickUpDateSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Pick-up Date'),\n value: UnixTimestampSchema.meta({\n title: 'Pick-up Date',\n description:\n 'Unix timestamp in milliseconds when the waste was picked up from the source',\n examples: [1710518400000, 1704067200000, 1715270400000],\n }),\n display_type: z.literal('date'),\n}).meta({\n title: 'Pick-up Date Attribute',\n description: 'Pick-up date attribute with Unix timestamp',\n});\n\nexport type MassIDAttributePickUpDate = z.infer<\n typeof MassIDAttributePickUpDateSchema\n>;\n\nconst MassIDAttributeRecyclingDateSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycling Date'),\n value: UnixTimestampSchema.meta({\n title: 'Recycling Date',\n description:\n 'Unix timestamp in milliseconds when the waste was recycled/processed',\n examples: [1710604800000, 1704153600000, 1715356800000],\n }),\n display_type: z.literal('date'),\n}).meta({\n title: 'Recycling Date Attribute',\n description: 'Recycling date attribute with Unix timestamp',\n});\n\nexport type MassIDAttributeRecyclingDate = z.infer<\n typeof MassIDAttributeRecyclingDateSchema\n>;\n\nexport const MassIDAttributesSchema = uniqueBy(\n z.union([\n MassIDAttributeWasteTypeSchema,\n MassIDAttributeWasteSubtypeSchema,\n MassIDAttributeWeightSchema,\n MassIDAttributeOriginCountrySchema,\n MassIDAttributeOriginMunicipalitySchema,\n MassIDAttributeOriginDivisionSchema,\n MassIDAttributeVehicleTypeSchema,\n MassIDAttributeRecyclingMethodSchema,\n MassIDAttributeProcessingTimeSchema,\n MassIDAttributeLocalWasteClassificationIdSchema,\n MassIDAttributeRecyclingManifestCodeSchema,\n MassIDAttributeTransportManifestCodeSchema,\n MassIDAttributeWeighingCaptureMethodSchema,\n MassIDAttributeScaleTypeSchema,\n MassIDAttributeContainerTypeSchema,\n MassIDAttributePickUpDateSchema,\n MassIDAttributeRecyclingDateSchema,\n ]),\n (attr) => attr.trait_type,\n)\n .min(12)\n .max(17)\n .meta({\n title: 'MassID Attributes',\n description:\n 'MassID NFT attributes array containing attributes selected from the available attribute types. The schema validates array length but does not enforce which specific attributes must be present.',\n });\n\nexport type MassIDAttributes = z.infer<typeof MassIDAttributesSchema>;\n","import { z } from 'zod';\nimport {\n UuidSchema,\n Sha256HashSchema,\n WasteTypeSchema,\n WasteSubtypeSchema,\n NonEmptyStringSchema,\n NonNegativeFloatSchema,\n UnixTimestampSchema,\n MinutesSchema,\n LocationSchema,\n ParticipantSchema,\n uniqueBy,\n} from '../shared';\n\nconst MassIDLocalClassificationSchema = z\n .strictObject({\n code: NonEmptyStringSchema.max(20).meta({\n title: 'Classification Code',\n description: 'Local waste classification code',\n examples: ['20 01 01', 'D001', 'EWC-150101', 'IBAMA-A001'],\n }),\n description: NonEmptyStringSchema.max(200).meta({\n title: 'Classification Description',\n description: 'Local waste classification description',\n examples: [\n 'Paper and cardboard packaging',\n 'Ignitable waste',\n 'Paper and cardboard packaging waste',\n 'Municipal solid waste - organic fraction',\n ],\n }),\n system: z.enum(['IBAMA']).meta({\n title: 'Classification System',\n description:\n 'Classification system name - currently supports IBAMA (Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais Renováveis)',\n examples: ['IBAMA'],\n }),\n })\n .meta({\n title: 'Local Classification',\n description:\n 'Local or regional waste classification codes and descriptions',\n });\n\nexport type MassIDLocalClassification = z.infer<\n typeof MassIDLocalClassificationSchema\n>;\n\nconst MassIDMeasurementUnitSchema = z.enum(['kg', 'ton']).meta({\n title: 'Measurement Unit',\n description: 'Unit of measurement for the waste quantity',\n examples: ['kg', 'ton'],\n});\n\nexport type MassIDMeasurementUnit = z.infer<typeof MassIDMeasurementUnitSchema>;\n\nconst MassIDWastePropertiesSchema = z\n .strictObject({\n type: WasteTypeSchema.meta({\n title: 'Waste Type',\n description: 'Waste material category',\n }),\n subtype: WasteSubtypeSchema.meta({\n title: 'Waste Subtype',\n description: 'Specific subcategory of waste material',\n }),\n local_classification: MassIDLocalClassificationSchema.optional(),\n measurement_unit: MassIDMeasurementUnitSchema,\n net_weight: NonNegativeFloatSchema.meta({\n title: 'Net Weight',\n description:\n 'Net weight of the waste batch in the specified measurement unit',\n }),\n })\n .meta({\n title: 'Waste Properties',\n description:\n 'Standardized waste material properties and regulatory information',\n });\n\nexport type MassIDWasteProperties = z.infer<typeof MassIDWastePropertiesSchema>;\n\nconst EventAttributeFormatSchema = z\n .enum(['KILOGRAM', 'DATE', 'CURRENCY', 'PERCENTAGE', 'COORDINATE'])\n .meta({\n title: 'Event Attribute Format',\n description: 'Data format hint for proper display',\n examples: ['KILOGRAM', 'DATE', 'PERCENTAGE'],\n });\n\nexport type EventAttributeFormat = z.infer<typeof EventAttributeFormatSchema>;\n\nconst EventAttributeSchema = z\n .strictObject({\n name: NonEmptyStringSchema.max(100).meta({\n title: 'Attribute Name',\n description: 'Event attribute name',\n examples: [\n 'temperature',\n 'humidity',\n 'contamination_percentage',\n 'quality_grade',\n 'batch_number',\n 'operator_id',\n 'equipment_used',\n 'processing_cost',\n ],\n }),\n value: z\n .union([z.string(), z.number(), z.boolean()])\n .optional()\n .meta({\n title: 'Attribute Value',\n description: 'Event attribute value',\n examples: [\n 25.5,\n 'Grade A',\n true,\n 'BATCH-2024-001',\n 12.75,\n 'Shredder-X200',\n false,\n 'OP-456',\n ],\n }),\n preserved_sensitivity: z.boolean().optional().meta({\n title: 'Preserved Sensitivity',\n description:\n 'Indicates if the attribute contains sensitive information that was preserved',\n }),\n format: EventAttributeFormatSchema.optional(),\n })\n .meta({\n title: 'Event Attribute',\n description: 'Additional attribute specific to an event',\n });\nexport type EventAttribute = z.infer<typeof EventAttributeSchema>;\n\nconst EventAttachmentSchema = z\n .strictObject({\n type: NonEmptyStringSchema.max(50).meta({\n title: 'Attachment Type',\n description: 'Type of supporting attachment',\n examples: [\n 'Waste Transfer Note',\n 'Certificate of Disposal',\n 'Certificate of Final Destination',\n 'Quality Assessment Report',\n 'Transport Manifest',\n 'Processing Receipt',\n 'Environmental Permit',\n 'Invoice',\n ],\n }),\n document_number: NonEmptyStringSchema.max(50)\n .optional()\n .meta({\n title: 'Document Number',\n description: 'Official document number if applicable',\n examples: [\n 'WTN-2024-001234',\n 'CD-ENV-456789',\n 'INV-2024-QTR1-789',\n 'PERMIT-EPA-2024-001',\n 'MANIFEST-DOT-567890',\n ],\n }),\n reference: NonEmptyStringSchema.meta({\n title: 'Attachment Reference',\n description:\n 'Reference to attachment (IPFS hash, file name, or external URL)',\n examples: [\n 'QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o',\n 'waste_transfer_note_2024_001.pdf',\n 'https://docs.example.com/certificates/disposal_cert_456.pdf',\n 'bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi',\n 'processing_receipt_20240315.jpg',\n ],\n }),\n issue_timestamp: UnixTimestampSchema.optional().meta({\n title: 'Issue Timestamp',\n description:\n 'Unix timestamp in milliseconds when the attachment was issued',\n examples: [1710518400000, 1704067200000, 1715270400000],\n }),\n issuer: NonEmptyStringSchema.max(100)\n .optional()\n .meta({\n title: 'Attachment Issuer',\n description: 'Entity that issued the attachment',\n examples: [\n 'Environmental Protection Agency',\n 'Waste Management Solutions Ltd',\n 'Green Recycling Corp',\n 'City Waste Authority',\n 'EcoProcess Industries',\n 'Regional Environmental Office',\n ],\n }),\n })\n .meta({\n title: 'Event Attachment',\n description: 'Supporting event attachment',\n });\nexport type EventAttachment = z.infer<typeof EventAttachmentSchema>;\n\nconst MassIDChainOfCustodyEventSchema = z\n .strictObject({\n event_id: UuidSchema.meta({\n title: 'Event ID',\n description: 'Unique event identifier',\n }),\n event_name: NonEmptyStringSchema.max(50).meta({\n title: 'Event Name',\n description: 'Name of custody or processing event',\n examples: ['Sorting', 'Processing', 'Recycling', 'Weighing'],\n }),\n description: NonEmptyStringSchema.max(200)\n .optional()\n .meta({\n title: 'Event Description',\n description: 'Detailed description of what happened during this event',\n examples: [\n 'Waste collected from residential area using collection truck',\n 'Material sorted into recyclable and non-recyclable fractions',\n 'Plastic waste processed through shredding and washing',\n 'Waste transferred to authorized recycling facility',\n 'Final disposal at licensed landfill site',\n 'Quality inspection and contamination assessment completed',\n ],\n }),\n timestamp: UnixTimestampSchema.meta({\n title: 'Event Timestamp',\n description: 'Unix timestamp in milliseconds when the event occurred',\n examples: [1710518400000, 1704067200000, 1715270400000],\n }),\n participant_id_hash: Sha256HashSchema.meta({\n title: 'Participant ID Hash',\n description: 'Reference to participant in the participants array',\n }),\n location_id_hash: Sha256HashSchema.meta({\n title: 'Location ID Hash',\n description: 'Reference to location in the locations array',\n }),\n weight: NonNegativeFloatSchema.optional().meta({\n title: 'Event Weight',\n description: 'Mass weight after this event',\n }),\n attributes: z.array(EventAttributeSchema).optional().meta({\n title: 'Event Attributes',\n description: 'Additional attributes specific to this event',\n }),\n attachments: z.array(EventAttachmentSchema).optional().meta({\n title: 'Event Attachments',\n description: 'Associated attachments for this event',\n }),\n })\n .meta({\n title: 'Chain of Custody Event',\n description: 'Chain of custody event',\n });\n\nexport type MassIDChainOfCustodyEvent = z.infer<\n typeof MassIDChainOfCustodyEventSchema\n>;\n\nconst MassIDChainOfCustodySchema = z\n .strictObject({\n events: z.array(MassIDChainOfCustodyEventSchema).min(1).meta({\n title: 'Custody Events',\n description:\n 'Chronological sequence of custody transfer and processing events',\n }),\n total_duration_minutes: MinutesSchema.meta({\n title: 'Total Duration (minutes)',\n description: 'Total time from first to last event in minutes',\n }),\n })\n .meta({\n title: 'Chain of Custody',\n description:\n 'Complete chain of custody tracking from waste generation to final processing',\n });\n\nexport type MassIDChainOfCustody = z.infer<typeof MassIDChainOfCustodySchema>;\n\nconst MassIDGeographicDataSchema = z\n .strictObject({\n from_location_id_hash: Sha256HashSchema.meta({\n title: 'From Location ID Hash',\n description:\n 'Reference hash of the location where the waste started movement',\n }),\n to_location_id_hash: Sha256HashSchema.meta({\n title: 'To Location ID Hash',\n description:\n 'Reference hash of the location where the waste ended movement',\n }),\n first_reported_timestamp: UnixTimestampSchema.meta({\n title: 'First Reported Timestamp',\n description:\n 'Unix timestamp in milliseconds when the waste was first reported/collected at the origin location',\n examples: [1710518400000, 1704067200000, 1715270400000],\n }),\n last_reported_timestamp: UnixTimestampSchema.meta({\n title: 'Last Reported Timestamp',\n description:\n 'Unix timestamp in milliseconds when the waste was last reported/processed at the destination location',\n examples: [1710604800000, 1704153600000, 1715356800000],\n }),\n })\n .refine((data) => {\n return data.first_reported_timestamp <= data.last_reported_timestamp;\n }, 'first_reported_timestamp must be before or equal to last_reported_timestamp')\n .meta({\n title: 'Geographic Data',\n description:\n 'Simplified geographic information tracking waste movement from origin to destination with temporal bounds',\n });\n\nexport type MassIDGeographicData = z.infer<typeof MassIDGeographicDataSchema>;\n\nexport const MassIDDataSchema = z\n .strictObject({\n waste_properties: MassIDWastePropertiesSchema,\n locations: uniqueBy(\n LocationSchema,\n (loc) => loc.id_hash,\n 'Location ID hashes must be unique',\n )\n .min(1)\n .meta({\n title: 'Locations',\n description: 'All locations referenced in this MassID, indexed by ID',\n }),\n participants: uniqueBy(\n ParticipantSchema,\n (p) => p.id_hash,\n 'Participant ID hashes must be unique',\n )\n .min(1)\n .meta({\n title: 'Participants',\n description:\n 'All participants referenced in this MassID, indexed by ID',\n }),\n chain_of_custody: MassIDChainOfCustodySchema,\n geographic_data: MassIDGeographicDataSchema,\n })\n .refine((data) => {\n const participantIdSet = new Set(\n data.participants.map((participant) => participant.id_hash),\n );\n\n const eventParticipantIds = data.chain_of_custody.events.map(\n (event) => event.participant_id_hash,\n );\n\n const allEventParticipantsExist = eventParticipantIds.every(\n (participantId) => participantIdSet.has(participantId),\n );\n\n return allEventParticipantsExist;\n }, 'All participant ID hashes in chain of custody events must exist in participants array')\n\n .refine((data) => {\n const locationIdSet = new Set(\n data.locations.map((location) => location.id_hash),\n );\n\n const eventLocationIds = data.chain_of_custody.events.map(\n (event) => event.location_id_hash,\n );\n\n const allEventLocationsExist = eventLocationIds.every((locationId) =>\n locationIdSet.has(locationId),\n );\n\n return allEventLocationsExist;\n }, 'All location ID hashes in chain of custody events must exist in locations array')\n .meta({\n title: 'MassID Data',\n description:\n 'MassID data containing waste tracking and chain of custody information',\n });\n\nexport type MassIDData = z.infer<typeof MassIDDataSchema>;\n","import { z } from 'zod';\nimport { MassIDDataSchema } from './mass-id.data.schema';\nimport {\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n NftIpfsSchema,\n} from '../shared';\nimport { MassIDAttributesSchema } from './mass-id.attributes';\n\nexport const MassIDIpfsSchemaMeta = {\n title: 'MassID NFT IPFS Record',\n description:\n 'Complete MassID NFT IPFS record including fixed attributes and detailed waste tracking data',\n $id: buildSchemaUrl('mass-id/mass-id.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const MassIDIpfsSchema = NftIpfsSchema.safeExtend({\n schema: NftIpfsSchema.shape.schema.safeExtend({\n type: z.literal('MassID').meta({\n title: 'MassID Schema Type',\n description: 'MassID NFT schema type',\n }),\n }),\n attributes: MassIDAttributesSchema,\n data: MassIDDataSchema,\n}).meta(MassIDIpfsSchemaMeta);\n\nexport type MassIDIpfs = z.infer<typeof MassIDIpfsSchema>;\n","import { z } from 'zod';\nimport {\n NonEmptyStringSchema,\n NonNegativeFloatSchema,\n MethodologyAttributeSchema,\n CreditAmountAttributeSchema,\n CreditTypeAttributeSchema,\n SourceWasteTypeAttributeSchema,\n SourceWeightAttributeSchema,\n OriginCountryAttributeSchema,\n OriginMunicipalityAttributeSchema,\n RecyclerAttributeSchema,\n MassIDTokenIdAttributeSchema,\n MassIDRecyclingDateAttributeSchema,\n} from '../shared';\nimport { NftAttributeSchema } from '../shared/nft.schema';\n\nconst GasIDAttributeMethodologySchema = MethodologyAttributeSchema;\n\nexport type GasIDAttributeMethodology = z.infer<\n typeof GasIDAttributeMethodologySchema\n>;\n\nconst GasIDAttributeGasTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Gas Type'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Gas Type',\n description: 'Type of gas prevented',\n examples: ['Methane (CH₄)', 'Carbon Dioxide (CO₂)'],\n }),\n}).meta({\n title: 'Gas Type Attribute',\n description: 'Gas type attribute',\n});\n\nexport type GasIDAttributeGasType = z.infer<typeof GasIDAttributeGasTypeSchema>;\n\nconst GasIDAttributeCo2ePreventedSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('CO₂e Prevented (kg)'),\n value: NonNegativeFloatSchema.meta({\n title: 'CO₂e Prevented',\n description: 'Total CO₂ equivalent emissions prevented in kilograms',\n }),\n display_type: z.literal('number'),\n}).meta({\n title: 'CO₂e Prevented Attribute',\n description: 'CO₂e prevented attribute with numeric display',\n});\n\nexport type GasIDAttributeCo2ePrevented = z.infer<\n typeof GasIDAttributeCo2ePreventedSchema\n>;\n\nconst GasIDAttributeCreditAmountSchema = CreditAmountAttributeSchema;\n\nexport type GasIDAttributeCreditAmount = z.infer<\n typeof GasIDAttributeCreditAmountSchema\n>;\n\nconst GasIDAttributeCreditTypeSchema = CreditTypeAttributeSchema;\n\nexport type GasIDAttributeCreditType = z.infer<\n typeof GasIDAttributeCreditTypeSchema\n>;\n\nconst GasIDAttributeSourceWasteTypeSchema = SourceWasteTypeAttributeSchema;\n\nexport type GasIDAttributeSourceWasteType = z.infer<\n typeof GasIDAttributeSourceWasteTypeSchema\n>;\n\nconst GasIDAttributeSourceWeightSchema = SourceWeightAttributeSchema;\n\nexport type GasIDAttributeSourceWeight = z.infer<\n typeof GasIDAttributeSourceWeightSchema\n>;\n\nconst GasIDAttributeOriginCountrySchema = OriginCountryAttributeSchema;\n\nexport type GasIDAttributeOriginCountry = z.infer<\n typeof GasIDAttributeOriginCountrySchema\n>;\n\nconst GasIDAttributeOriginMunicipalitySchema =\n OriginMunicipalityAttributeSchema;\n\nexport type GasIDAttributeOriginMunicipality = z.infer<\n typeof GasIDAttributeOriginMunicipalitySchema\n>;\n\nconst GasIDAttributeRecyclerSchema = RecyclerAttributeSchema;\n\nexport type GasIDAttributeRecycler = z.infer<\n typeof GasIDAttributeRecyclerSchema\n>;\n\nconst GasIDAttributeMassIDTokenIdSchema = MassIDTokenIdAttributeSchema;\n\nexport type GasIDAttributeMassIDTokenId = z.infer<\n typeof GasIDAttributeMassIDTokenIdSchema\n>;\n\nconst GasIDAttributeMassIDRecyclingDateSchema =\n MassIDRecyclingDateAttributeSchema;\n\nexport type GasIDAttributeMassIDRecyclingDate = z.infer<\n typeof GasIDAttributeMassIDRecyclingDateSchema\n>;\n\nexport const GasIDAttributesSchema = z\n .tuple([\n GasIDAttributeMethodologySchema,\n GasIDAttributeGasTypeSchema,\n GasIDAttributeCo2ePreventedSchema,\n GasIDAttributeCreditAmountSchema,\n GasIDAttributeCreditTypeSchema,\n GasIDAttributeSourceWasteTypeSchema,\n GasIDAttributeSourceWeightSchema,\n GasIDAttributeOriginCountrySchema,\n GasIDAttributeOriginMunicipalitySchema,\n GasIDAttributeRecyclerSchema,\n GasIDAttributeMassIDTokenIdSchema,\n GasIDAttributeMassIDRecyclingDateSchema,\n ])\n .meta({\n title: 'GasID NFT Attribute Array',\n description:\n 'Schema for the fixed set of GasID NFT attributes, enforcing order and type for each trait',\n });\n\nexport type GasIDAttributes = z.infer<typeof GasIDAttributesSchema>;\n","import { z } from 'zod';\nimport {\n NonEmptyStringSchema,\n NonNegativeFloatSchema,\n WeightKgSchema,\n IsoDateSchema,\n LocationSchema,\n WasteClassificationSchema,\n AccreditedParticipantsSchema,\n ParticipantRewardsSchema,\n MethodologyReferenceSchema,\n AuditReferenceSchema,\n MassIDReferenceSchema,\n CreditTypeSchema,\n CreditAmountSchema,\n} from '../shared';\n\nconst GasIDSummarySchema = z\n .strictObject({\n gas_type: NonEmptyStringSchema.meta({\n title: 'Gas Type',\n description: 'Type of gas prevented',\n examples: ['Methane (CH₄)', 'Carbon Dioxide (CO₂)'],\n }),\n credit_type: CreditTypeSchema,\n credit_amount: CreditAmountSchema,\n prevented_co2e_kg: WeightKgSchema.meta({\n title: 'Prevented Emissions (CO₂e kg)',\n description: 'CO₂e weight of the prevented emissions',\n }),\n })\n .meta({\n title: 'GasID Summary',\n description: 'Summary information for the GasID certificate',\n });\n\nexport type GasIDSummary = z.infer<typeof GasIDSummarySchema>;\n\nconst CalculationValueSchema = z\n .strictObject({\n reference: NonEmptyStringSchema.max(3).meta({\n title: 'Calculation Reference',\n description: 'Reference symbol used in the calculation formula',\n examples: ['E', 'B', 'W', 'R'],\n }),\n value: NonNegativeFloatSchema.meta({\n title: 'Calculation Value',\n description: 'Numeric value for this calculation parameter',\n }),\n label: NonEmptyStringSchema.max(100).meta({\n title: 'Calculation Label',\n description: 'Human-readable label for this calculation value',\n examples: [\n 'Exceeding Emission Coefficient',\n 'Prevented Emissions by Waste Subtype and Baseline Per Ton',\n 'Waste Weight',\n 'Prevented Emissions (CO₂e kg)',\n ],\n }),\n })\n .meta({\n title: 'Calculation Value',\n description: 'Single value used in the emissions calculation',\n });\n\nexport type CalculationValue = z.infer<typeof CalculationValueSchema>;\n\nconst PreventedEmissionsCalculationSchema = z\n .strictObject({\n formula: NonEmptyStringSchema.max(100).meta({\n title: 'Calculation Formula',\n description: 'Formula used to calculate the prevented emissions',\n examples: ['(1 - B) * W * E = R'],\n }),\n method: NonEmptyStringSchema.max(100).meta({\n title: 'Calculation Method',\n description: 'Method used to calculate the prevented emissions',\n examples: ['UNFCCC AMS-III.F'],\n }),\n date: IsoDateSchema.meta({\n title: 'Calculation Date',\n description: 'Date when the calculation was performed',\n }),\n values: z.array(CalculationValueSchema).min(1).meta({\n title: 'Calculation Values',\n description: 'Values used to calculate the prevented emissions',\n }),\n })\n .meta({\n title: 'Prevented Emissions Calculation',\n description: 'Details of the prevented emissions calculation',\n });\n\nexport type PreventedEmissionsCalculation = z.infer<\n typeof PreventedEmissionsCalculationSchema\n>;\n\nexport const GasIDDataSchema = z\n .strictObject({\n summary: GasIDSummarySchema,\n methodology: MethodologyReferenceSchema,\n audit: AuditReferenceSchema,\n mass_id: MassIDReferenceSchema,\n waste_classification: WasteClassificationSchema,\n origin_location: LocationSchema.meta({\n title: 'Source Waste Origin Location',\n description: 'Location of the waste origin',\n }),\n prevented_emissions_calculation: PreventedEmissionsCalculationSchema,\n accredited_participants: AccreditedParticipantsSchema,\n participant_rewards: ParticipantRewardsSchema.optional(),\n })\n .meta({\n title: 'GasID Data',\n description: 'Complete data structure for GasID certificate',\n });\n\nexport type GasIDData = z.infer<typeof GasIDDataSchema>;\n","import { z } from 'zod';\nimport {\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n NftIpfsSchema,\n} from '../shared';\nimport { GasIDDataSchema } from './gas-id.data.schema';\nimport { GasIDAttributesSchema } from './gas-id.attributes';\n\nexport const GasIDIpfsSchemaMeta = {\n title: 'GasID NFT IPFS Record',\n description:\n 'Complete GasID NFT IPFS record including fixed attributes and detailed carbon emissions prevention data',\n $id: buildSchemaUrl('gas-id/gas-id.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const GasIDIpfsSchema = NftIpfsSchema.safeExtend({\n schema: NftIpfsSchema.shape.schema.safeExtend({\n type: z.literal('GasID').meta({\n title: 'GasID Schema Type',\n description: 'GasID NFT schema type',\n }),\n }),\n attributes: GasIDAttributesSchema,\n data: GasIDDataSchema,\n}).meta(GasIDIpfsSchemaMeta);\n\nexport type GasIDIpfs = z.infer<typeof GasIDIpfsSchema>;\n","import { z } from 'zod';\nimport {\n WeightKgSchema,\n NftAttributeSchema,\n MethodologyAttributeSchema,\n CreditAmountAttributeSchema,\n CreditTypeAttributeSchema,\n SourceWasteTypeAttributeSchema,\n SourceWeightAttributeSchema,\n OriginCountryAttributeSchema,\n OriginMunicipalityAttributeSchema,\n RecyclerAttributeSchema,\n MassIDTokenIdAttributeSchema,\n MassIDRecyclingDateAttributeSchema,\n} from '../shared';\n\nconst RecycledIDAttributeMethodologySchema = MethodologyAttributeSchema;\n\nexport type RecycledIDAttributeMethodology = z.infer<\n typeof RecycledIDAttributeMethodologySchema\n>;\n\nconst RecycledIDAttributeRecycledMassWeightSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycled Mass Weight (kg)'),\n value: WeightKgSchema.meta({\n title: 'Recycled Mass Weight',\n description: 'Total weight of recycled materials in kilograms',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Recycled Mass Weight Attribute',\n description: 'Recycled mass weight attribute with numeric display',\n });\n\nexport type RecycledIDAttributeRecycledMassWeight = z.infer<\n typeof RecycledIDAttributeRecycledMassWeightSchema\n>;\n\nconst RecycledIDAttributeCreditAmountSchema = CreditAmountAttributeSchema;\n\nexport type RecycledIDAttributeCreditAmount = z.infer<\n typeof RecycledIDAttributeCreditAmountSchema\n>;\n\nconst RecycledIDAttributeCreditTypeSchema = CreditTypeAttributeSchema;\n\nexport type RecycledIDAttributeCreditType = z.infer<\n typeof RecycledIDAttributeCreditTypeSchema\n>;\n\nconst RecycledIDAttributeSourceWasteTypeSchema = SourceWasteTypeAttributeSchema;\n\nexport type RecycledIDAttributeSourceWasteType = z.infer<\n typeof RecycledIDAttributeSourceWasteTypeSchema\n>;\n\nconst RecycledIDAttributeSourceWeightSchema = SourceWeightAttributeSchema;\n\nexport type RecycledIDAttributeSourceWeight = z.infer<\n typeof RecycledIDAttributeSourceWeightSchema\n>;\n\nconst RecycledIDAttributeOriginCountrySchema = OriginCountryAttributeSchema;\n\nexport type RecycledIDAttributeOriginCountry = z.infer<\n typeof RecycledIDAttributeOriginCountrySchema\n>;\n\nconst RecycledIDAttributeOriginMunicipalitySchema =\n OriginMunicipalityAttributeSchema;\n\nexport type RecycledIDAttributeOriginMunicipality = z.infer<\n typeof RecycledIDAttributeOriginMunicipalitySchema\n>;\n\nconst RecycledIDAttributeRecyclerSchema = RecyclerAttributeSchema;\n\nexport type RecycledIDAttributeRecycler = z.infer<\n typeof RecycledIDAttributeRecyclerSchema\n>;\n\nconst RecycledIDAttributeMassIDTokenIdSchema = MassIDTokenIdAttributeSchema;\n\nexport type RecycledIDAttributeMassIDTokenId = z.infer<\n typeof RecycledIDAttributeMassIDTokenIdSchema\n>;\n\nconst RecycledIDAttributeMassIDRecyclingDateSchema =\n MassIDRecyclingDateAttributeSchema;\n\nexport type RecycledIDAttributeMassIDRecyclingDate = z.infer<\n typeof RecycledIDAttributeMassIDRecyclingDateSchema\n>;\n\nexport const RecycledIDAttributesSchema = z\n .tuple([\n RecycledIDAttributeMethodologySchema,\n RecycledIDAttributeRecycledMassWeightSchema,\n RecycledIDAttributeCreditAmountSchema,\n RecycledIDAttributeCreditTypeSchema,\n RecycledIDAttributeSourceWasteTypeSchema,\n RecycledIDAttributeSourceWeightSchema,\n RecycledIDAttributeOriginCountrySchema,\n RecycledIDAttributeOriginMunicipalitySchema,\n RecycledIDAttributeRecyclerSchema,\n RecycledIDAttributeMassIDTokenIdSchema,\n RecycledIDAttributeMassIDRecyclingDateSchema,\n ])\n .meta({\n title: 'RecycledID NFT Attribute Array',\n description:\n 'Schema for the fixed set of RecycledID NFT attributes, enforcing order and type for each trait',\n });\n\nexport type RecycledIDAttributes = z.infer<typeof RecycledIDAttributesSchema>;\n","import { z } from 'zod';\nimport {\n AccreditedParticipantsSchema,\n ParticipantRewardsSchema,\n WasteClassificationSchema,\n MethodologyReferenceSchema,\n AuditReferenceSchema,\n MassIDReferenceSchema,\n LocationSchema,\n WeightKgSchema,\n CreditTypeSchema,\n CreditAmountSchema,\n} from '../shared';\n\nconst RecycledIDSummarySchema = z\n .strictObject({\n recycled_mass_kg: WeightKgSchema.meta({\n title: 'Recycled Mass Weight',\n description: 'Total weight of materials successfully recycled',\n }),\n credit_type: CreditTypeSchema,\n credit_amount: CreditAmountSchema,\n })\n .meta({\n title: 'RecycledID Summary',\n description: 'Summary information for the RecycledID certificate',\n });\n\nexport type RecycledIDSummary = z.infer<typeof RecycledIDSummarySchema>;\n\nexport const RecycledIDDataSchema = z\n .strictObject({\n summary: RecycledIDSummarySchema,\n methodology: MethodologyReferenceSchema,\n audit: AuditReferenceSchema,\n mass_id: MassIDReferenceSchema,\n waste_classification: WasteClassificationSchema,\n origin_location: LocationSchema.meta({\n title: 'RecycledID Origin Location',\n description: 'Source waste origin location details',\n }),\n accredited_participants: AccreditedParticipantsSchema,\n participant_rewards: ParticipantRewardsSchema.optional(),\n })\n .meta({\n title: 'RecycledID Data',\n description: 'Complete data structure for RecycledID certificate',\n });\n\nexport type RecycledIDData = z.infer<typeof RecycledIDDataSchema>;\n","import { z } from 'zod';\nimport {\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n NftIpfsSchema,\n} from '../shared';\nimport { RecycledIDDataSchema } from './recycled-id.data.schema';\nimport { RecycledIDAttributesSchema } from './recycled-id.attributes';\n\nexport const RecycledIDIpfsSchemaMeta = {\n title: 'RecycledID NFT IPFS Record',\n description:\n 'Complete RecycledID NFT IPFS record including fixed attributes and recycling outcome data',\n $id: buildSchemaUrl('recycled-id/recycled-id.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const RecycledIDIpfsSchema = NftIpfsSchema.safeExtend({\n schema: NftIpfsSchema.shape.schema.safeExtend({\n type: z.literal('RecycledID').meta({\n title: 'RecycledID Schema Type',\n description: 'RecycledID NFT schema type',\n }),\n }),\n attributes: RecycledIDAttributesSchema,\n data: RecycledIDDataSchema,\n}).meta(RecycledIDIpfsSchemaMeta);\n\nexport type RecycledIDIpfs = z.infer<typeof RecycledIDIpfsSchema>;\n","import { z } from 'zod';\nimport {\n CollectionNameSchema,\n CreditAmountSchema,\n NftAttributeSchema,\n ParticipantNameSchema,\n PositiveIntegerSchema,\n TokenSymbolSchema,\n UnixTimestampSchema,\n uniqueBy,\n} from '../shared';\n\nconst CreditPurchaseReceiptCreditAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: TokenSymbolSchema.meta({\n title: 'Credit Token Symbol',\n description: 'Symbol of the credit token (e.g., C-CARB, C-BIOW)',\n examples: ['C-CARB', 'C-BIOW'],\n }),\n value: CreditAmountSchema.meta({\n title: 'Credit Amount',\n description: 'Amount of credits purchased for the token symbol',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Credit Attribute',\n description:\n 'Attribute representing purchased amount per credit token symbol',\n });\n\nconst CreditPurchaseReceiptTotalCreditsAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Total Credits Purchased'),\n value: CreditAmountSchema.meta({\n title: 'Total Credits Purchased',\n description: 'Total number of credits purchased across all tokens',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Total Credits Purchased Attribute',\n description: 'Aggregate credits purchased attribute',\n });\n\nconst CreditPurchaseReceiptTotalUsdcAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Total USDC Amount'),\n value: CreditAmountSchema.meta({\n title: 'Total USDC Amount',\n description: 'Total USDC amount paid for the purchase',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Total USDC Amount Attribute',\n description: 'Aggregate USDC amount attribute',\n });\n\nconst CreditPurchaseReceiptPurchaseDateAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Purchase Date'),\n value: UnixTimestampSchema.meta({\n title: 'Purchase Date',\n description:\n 'Unix timestamp in milliseconds when the purchase was completed',\n }),\n display_type: z.literal('date'),\n }).meta({\n title: 'Purchase Date Attribute',\n description: 'Purchase date attribute using Unix timestamp in milliseconds',\n });\n\nconst CreditPurchaseReceiptCertificatesAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Certificates Purchased'),\n value: PositiveIntegerSchema.meta({\n title: 'Certificates Purchased',\n description: 'Total number of certificates purchased',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Certificates Purchased Attribute',\n description: 'Attribute representing how many certificates were purchased',\n });\n\nconst CreditPurchaseReceiptReceiverAttributeSchema = NftAttributeSchema.omit({\n display_type: true,\n max_value: true,\n})\n .safeExtend({\n trait_type: z.literal('Receiver'),\n value: ParticipantNameSchema.meta({\n title: 'Receiver',\n description:\n 'Organization or individual receiving the credits from the purchase',\n examples: ['EcoTech Solutions Inc.'],\n }),\n })\n .meta({\n title: 'Receiver Attribute',\n description: 'Attribute containing the receiver display name',\n });\n\nconst CreditPurchaseReceiptCollectionAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: CollectionNameSchema,\n value: CreditAmountSchema.meta({\n title: 'Credits from Collection',\n description: 'Amount of credits purchased from the collection',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Collection Attribute',\n description:\n 'Attribute representing the amount of credits purchased from a collection',\n });\n\nexport const CreditPurchaseReceiptAttributesSchema = uniqueBy(\n z.union([\n CreditPurchaseReceiptCreditAttributeSchema,\n CreditPurchaseReceiptTotalCreditsAttributeSchema,\n CreditPurchaseReceiptTotalUsdcAttributeSchema,\n CreditPurchaseReceiptPurchaseDateAttributeSchema,\n CreditPurchaseReceiptCertificatesAttributeSchema,\n CreditPurchaseReceiptReceiverAttributeSchema,\n CreditPurchaseReceiptCollectionAttributeSchema,\n ]),\n (attribute) => attribute.trait_type,\n 'Attribute trait_type values must be unique',\n)\n .min(5)\n .meta({\n title: 'Credit Purchase Receipt NFT Attribute Array',\n description:\n 'Attributes for credit purchase receipts including per-credit breakdowns, totals, receiver, purchase date, and per-collection amounts. Attributes must have unique trait types.',\n });\n\nexport type CreditPurchaseReceiptAttributes = z.infer<\n typeof CreditPurchaseReceiptAttributesSchema\n>;\n","import { z } from 'zod';\nimport {\n CollectionNameSchema,\n CollectionSlugSchema,\n CreditAmountSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n IsoDateSchema,\n NonNegativeFloatSchema,\n ParticipantNameSchema,\n ParticipantRoleSchema,\n PositiveIntegerSchema,\n RecordSchemaTypeSchema,\n Sha256HashSchema,\n SlugSchema,\n SmartContractSchema,\n TokenIdSchema,\n TokenSymbolSchema,\n EthereumAddressSchema,\n uniqueArrayItems,\n uniqueBy,\n ExternalIdSchema,\n} from '../shared';\nimport { MassIDReferenceSchema } from '../shared/references/mass-id-reference.schema';\n\nconst CreditPurchaseReceiptSummarySchema = z\n .strictObject({\n total_usdc_amount: NonNegativeFloatSchema.meta({\n title: 'Total USDC Amount',\n description: 'Total amount paid in USDC for the purchase',\n }),\n total_credits: CreditAmountSchema.meta({\n title: 'Total Credits',\n description: 'Total amount of credits purchased',\n }),\n total_certificates: PositiveIntegerSchema.meta({\n title: 'Total Certificates',\n description: 'Total number of certificates purchased',\n }),\n purchase_date: IsoDateSchema.meta({\n title: 'Purchase Date',\n description: 'Date when the purchase was made (YYYY-MM-DD)',\n }),\n credit_symbols: uniqueArrayItems(\n TokenSymbolSchema,\n 'Credit symbols must be unique',\n )\n .min(1)\n .meta({\n title: 'Credit Symbols',\n description: 'Array of credit token symbols included in the purchase',\n }),\n certificate_types: uniqueArrayItems(\n RecordSchemaTypeSchema.extract(['GasID', 'RecycledID']),\n 'Certificate types must be unique',\n )\n .min(1)\n .meta({\n title: 'Certificate Types',\n description: 'Array of certificate types included in the purchase',\n }),\n collection_slugs: uniqueArrayItems(\n CollectionSlugSchema,\n 'Collection slugs must be unique',\n )\n .min(1)\n .meta({\n title: 'Collection Slugs',\n description: 'Array of collection slugs represented in the purchase',\n }),\n })\n .meta({\n title: 'Credit Purchase Receipt Summary',\n description:\n 'Summary totals for the credit purchase including amounts and collections represented',\n });\n\nexport type CreditPurchaseReceiptSummary = z.infer<\n typeof CreditPurchaseReceiptSummarySchema\n>;\n\nconst CreditPurchaseReceiptIdentitySchema = z\n .strictObject({\n name: ParticipantNameSchema.meta({\n title: 'Identity Name',\n description: 'Display name for the participant',\n examples: ['EcoTech Solutions Inc.'],\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Identity External ID',\n description: 'External identifier for the participant',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Identity External URL',\n description: 'External URL for the participant profile',\n }),\n })\n .meta({\n title: 'Identity',\n description: 'Participant identity information',\n });\n\nexport type CreditPurchaseReceiptIdentity = z.infer<\n typeof CreditPurchaseReceiptIdentitySchema\n>;\n\nconst CreditPurchaseReceiptReceiverSchema = z\n .strictObject({\n wallet_address: EthereumAddressSchema.meta({\n title: 'Receiver Wallet Address',\n description: 'Ethereum address of the receiver',\n }),\n identity: CreditPurchaseReceiptIdentitySchema.optional(),\n })\n .meta({\n title: 'Receiver',\n description: 'Receiver wallet and optional identity information',\n });\n\nexport type CreditPurchaseReceiptReceiver = z.infer<\n typeof CreditPurchaseReceiptReceiverSchema\n>;\n\nconst CreditPurchaseReceiptBuyerSchema = z\n .strictObject({\n buyer_id: ExternalIdSchema.meta({\n title: 'Buyer ID',\n description: 'Unique identifier for the buyer',\n }),\n identity: CreditPurchaseReceiptIdentitySchema.optional(),\n })\n .meta({\n title: 'Buyer',\n description: 'Buyer identifier and optional identity information',\n });\n\nexport type CreditPurchaseReceiptBuyer = z.infer<\n typeof CreditPurchaseReceiptBuyerSchema\n>;\n\nconst CreditPurchaseReceiptPartiesSchema = z\n .strictObject({\n payer: EthereumAddressSchema.meta({\n title: 'Payer Wallet Address',\n description: 'Ethereum address paying for the purchase',\n }),\n receiver: CreditPurchaseReceiptReceiverSchema,\n buyer: CreditPurchaseReceiptBuyerSchema.optional(),\n })\n .meta({\n title: 'Parties',\n description:\n 'Parties involved in the purchase including payer, receiver, and optional buyer',\n });\n\nexport type CreditPurchaseReceiptParties = z.infer<\n typeof CreditPurchaseReceiptPartiesSchema\n>;\n\nconst CreditPurchaseReceiptCollectionSchema = z\n .strictObject({\n slug: CollectionSlugSchema,\n external_id: ExternalIdSchema.meta({\n title: 'Collection External ID',\n description: 'External identifier for the collection',\n }),\n name: CollectionNameSchema,\n external_url: ExternalUrlSchema.meta({\n title: 'Collection External URL',\n description: 'External URL for the collection',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Collection URI',\n description: 'IPFS URI for the collection metadata',\n }),\n credit_amount: CreditAmountSchema.meta({\n title: 'Collection Credit Amount',\n description: 'Total credits purchased from this collection',\n }),\n })\n .meta({\n title: 'Collection',\n description: 'Collection included in the purchase',\n });\n\nexport type CreditPurchaseReceiptCollection = z.infer<\n typeof CreditPurchaseReceiptCollectionSchema\n>;\n\nconst CreditPurchaseReceiptCreditSchema = z\n .strictObject({\n slug: SlugSchema.meta({\n title: 'Credit Slug',\n description: 'URL-friendly identifier for the credit',\n }),\n symbol: TokenSymbolSchema.meta({\n title: 'Credit Token Symbol',\n description: 'Symbol of the credit token',\n examples: ['C-CARB', 'C-BIOW'],\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Credit External ID',\n description: 'External identifier for the credit',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Credit External URL',\n description: 'External URL for the credit',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Credit URI',\n description: 'IPFS URI for the credit details',\n }),\n smart_contract: SmartContractSchema,\n purchase_amount: CreditAmountSchema.meta({\n title: 'Credit Purchase Amount',\n description: 'Total credits purchased for this credit type',\n }),\n retirement_amount: CreditAmountSchema.optional().meta({\n title: 'Credit Retirement Amount',\n description:\n 'Credits retired immediately for this credit type during purchase',\n }),\n })\n .meta({\n title: 'Credit',\n description: 'Credit token included in the purchase',\n });\n\nexport type CreditPurchaseReceiptCredit = z.infer<\n typeof CreditPurchaseReceiptCreditSchema\n>;\n\nconst MassIDReferenceWithContractSchema = MassIDReferenceSchema.omit({\n external_id: true,\n})\n .safeExtend({\n external_id: ExternalIdSchema.meta({\n title: 'MassID External ID',\n description: 'Unique identifier for the referenced MassID',\n }),\n smart_contract: SmartContractSchema,\n })\n .meta({\n title: 'MassID Reference with Smart Contract',\n description:\n 'Reference to a MassID record including smart contract details',\n });\n\nexport type MassIDReferenceWithContract = z.infer<\n typeof MassIDReferenceWithContractSchema\n>;\n\nconst CreditPurchaseReceiptCertificateSchema = z\n .strictObject({\n token_id: TokenIdSchema.meta({\n title: 'Certificate Token ID',\n description: 'Token ID of the certificate',\n }),\n type: RecordSchemaTypeSchema.extract(['GasID', 'RecycledID']).meta({\n title: 'Certificate Type',\n description: 'Type of certificate (e.g., GasID, RecycledID)',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Certificate External ID',\n description: 'External identifier for the certificate',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Certificate External URL',\n description: 'External URL for the certificate',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Certificate URI',\n description: 'IPFS URI for the certificate metadata',\n }),\n smart_contract: SmartContractSchema,\n collection_slug: CollectionSlugSchema.meta({\n title: 'Collection Slug',\n description: 'Slug of the collection this certificate belongs to',\n }),\n total_amount: CreditAmountSchema.meta({\n title: 'Certificate Total Amount',\n description: 'Total credits available in this certificate',\n }),\n purchased_amount: CreditAmountSchema.meta({\n title: 'Certificate Purchased Amount',\n description: 'Credits purchased from this certificate',\n }),\n retired_amount: CreditAmountSchema.meta({\n title: 'Certificate Retired Amount',\n description:\n 'Credits retired from this certificate during the purchase (0 if none)',\n }),\n credit_slug: SlugSchema.meta({\n title: 'Credit Slug',\n description: 'Slug of the credit type for this certificate',\n examples: ['carbon', 'organic'],\n }),\n mass_id: MassIDReferenceWithContractSchema,\n })\n .meta({\n title: 'Certificate',\n description: 'Certificate associated with the purchase',\n });\n\nexport type CreditPurchaseReceiptCertificate = z.infer<\n typeof CreditPurchaseReceiptCertificateSchema\n>;\n\nconst CreditPurchaseReceiptParticipantRewardSchema = z\n .strictObject({\n id_hash: Sha256HashSchema.meta({\n title: 'Participant ID Hash',\n description:\n 'Hash representing the participant identifier (SHA-256 hex string)',\n }),\n participant_name: ParticipantNameSchema.meta({\n title: 'Participant Name',\n description: 'Legal name of the participant receiving the reward',\n }),\n roles: uniqueArrayItems(\n ParticipantRoleSchema,\n 'Participant roles must be unique',\n )\n .min(1)\n .meta({\n title: 'Participant Roles',\n description: 'Roles the participant has in the supply chain',\n }),\n usdc_amount: NonNegativeFloatSchema.meta({\n title: 'USDC Reward Amount',\n description: 'USDC amount allocated to this participant',\n }),\n })\n .meta({\n title: 'Participant Reward',\n description: 'Reward distribution for a participant',\n });\n\nexport type CreditPurchaseReceiptParticipantReward = z.infer<\n typeof CreditPurchaseReceiptParticipantRewardSchema\n>;\n\nconst CreditPurchaseReceiptRetirementReceiptSchema = z\n .strictObject({\n token_id: TokenIdSchema.meta({\n title: 'Retirement Receipt Token ID',\n description: 'Token ID of the retirement receipt NFT',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Retirement Receipt External ID',\n description: 'External identifier for the retirement receipt',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Retirement Receipt External URL',\n description: 'External URL for the retirement receipt',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Retirement Receipt URI',\n description: 'IPFS URI for the retirement receipt metadata',\n }),\n smart_contract: SmartContractSchema,\n })\n .meta({\n title: 'Retirement Receipt Reference',\n description: 'Reference to the retirement receipt NFT',\n });\n\nexport type CreditPurchaseReceiptRetirementReceipt = z.infer<\n typeof CreditPurchaseReceiptRetirementReceiptSchema\n>;\n\nconst CreditPurchaseReceiptRetirementSchema = z\n .strictObject({\n beneficiary_id: ExternalIdSchema.meta({\n title: 'Retirement Beneficiary ID',\n description:\n 'UUID identifying the beneficiary of the retirement (bytes16 normalized to UUID)',\n }),\n retirement_receipt: CreditPurchaseReceiptRetirementReceiptSchema.optional(),\n })\n .meta({\n title: 'Retirement',\n description: 'Immediate retirement details performed as part of purchase',\n });\n\nexport type CreditPurchaseReceiptRetirement = z.infer<\n typeof CreditPurchaseReceiptRetirementSchema\n>;\n\nconst EPSILON = 1e-9;\n\nfunction nearlyEqual(a: number, b: number) {\n return Math.abs(a - b) <= EPSILON;\n}\n\nexport const CreditPurchaseReceiptDataSchema = z\n .strictObject({\n summary: CreditPurchaseReceiptSummarySchema,\n parties: CreditPurchaseReceiptPartiesSchema,\n collections: uniqueBy(\n CreditPurchaseReceiptCollectionSchema,\n (collection) => collection.slug,\n 'Collection slugs must be unique',\n )\n .min(1)\n .meta({\n title: 'Collections',\n description: 'Collections included in the purchase',\n }),\n credits: uniqueBy(\n CreditPurchaseReceiptCreditSchema,\n (credit) => credit.slug,\n 'Credit slugs must be unique',\n )\n .min(1)\n .meta({\n title: 'Credits',\n description: 'Credits included in the purchase',\n }),\n certificates: uniqueBy(\n CreditPurchaseReceiptCertificateSchema,\n (certificate) => certificate.token_id,\n 'Certificate token_ids must be unique',\n )\n .min(1)\n .meta({\n title: 'Certificates',\n description: 'Certificates involved in the purchase',\n }),\n participant_rewards: uniqueBy(\n CreditPurchaseReceiptParticipantRewardSchema,\n (reward) => reward.id_hash,\n 'Participant id_hash must be unique',\n )\n .min(1)\n .meta({\n title: 'Participant Rewards',\n description:\n 'Rewards distributed to participants in the supply chain for this purchase',\n }),\n retirement: CreditPurchaseReceiptRetirementSchema.optional(),\n })\n .superRefine((data, ctx) => {\n const retirementProvided = Boolean(data.retirement);\n const creditsWithRetirement = data.credits.reduce<number[]>(\n (indices, credit, index) => {\n if ((credit.retirement_amount ?? 0) > 0) {\n indices.push(index);\n }\n return indices;\n },\n [],\n );\n\n if (retirementProvided && creditsWithRetirement.length === 0) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'retirement is present but no credit has retirement_amount greater than 0',\n path: ['retirement'],\n });\n }\n\n if (!retirementProvided && creditsWithRetirement.length > 0) {\n creditsWithRetirement.forEach((index) => {\n ctx.addIssue({\n code: 'custom',\n message:\n 'credit retirement_amount greater than 0 requires retirement details',\n path: ['credits', index, 'retirement_amount'],\n });\n });\n }\n\n const collectionSlugs = new Set(\n data.collections.map((collection) => collection.slug),\n );\n const creditSlugs = new Set(data.credits.map((credit) => credit.slug));\n const creditSymbols = new Set(data.credits.map((credit) => credit.symbol));\n const summaryCreditSymbols = new Set(data.summary.credit_symbols);\n const summaryCollectionSlugs = new Set(data.summary.collection_slugs);\n const summaryCertificateTypes = new Set(data.summary.certificate_types);\n\n if (data.summary.total_certificates !== data.certificates.length) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'summary.total_certificates must equal the number of certificates',\n path: ['summary', 'total_certificates'],\n });\n }\n\n data.summary.credit_symbols.forEach((symbol) => {\n if (!creditSymbols.has(symbol)) {\n ctx.addIssue({\n code: 'custom',\n message: 'summary.credit_symbols must reference symbols from credits',\n path: ['summary', 'credit_symbols'],\n });\n }\n });\n\n creditSymbols.forEach((symbol) => {\n if (!summaryCreditSymbols.has(symbol)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'All credit symbols must be listed in summary.credit_symbols',\n path: ['summary', 'credit_symbols'],\n });\n }\n });\n\n data.summary.collection_slugs.forEach((slug) => {\n if (!collectionSlugs.has(slug)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'summary.collection_slugs must reference slugs from collections',\n path: ['summary', 'collection_slugs'],\n });\n }\n });\n\n collectionSlugs.forEach((slug) => {\n if (!summaryCollectionSlugs.has(slug)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'All collection slugs must be listed in summary.collection_slugs',\n path: ['summary', 'collection_slugs'],\n });\n }\n });\n\n const certificateTypes = new Set(\n data.certificates.map((certificate) => certificate.type),\n );\n data.summary.certificate_types.forEach((type) => {\n if (!certificateTypes.has(type)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'summary.certificate_types must reference types present in certificates',\n path: ['summary', 'certificate_types'],\n });\n }\n });\n\n certificateTypes.forEach((type) => {\n if (!summaryCertificateTypes.has(type)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'All certificate types must be listed in summary.certificate_types',\n path: ['summary', 'certificate_types'],\n });\n }\n });\n\n const creditPurchaseTotalsBySlug = new Map<string, number>();\n const creditRetiredTotalsBySlug = new Map<string, number>();\n const collectionTotalsBySlug = new Map<string, number>();\n let totalCreditsFromCertificates = 0;\n\n data.certificates.forEach((certificate, index) => {\n if (!collectionSlugs.has(certificate.collection_slug)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'collection_slug must match a collection slug in collections',\n path: ['certificates', index, 'collection_slug'],\n });\n }\n\n if (!creditSlugs.has(certificate.credit_slug)) {\n ctx.addIssue({\n code: 'custom',\n message: 'credit_slug must match a credit slug in credits',\n path: ['certificates', index, 'credit_slug'],\n });\n }\n\n if (certificate.retired_amount > certificate.purchased_amount) {\n ctx.addIssue({\n code: 'custom',\n message: 'retired_amount cannot exceed purchased_amount',\n path: ['certificates', index, 'retired_amount'],\n });\n }\n\n if (certificate.purchased_amount > certificate.total_amount) {\n ctx.addIssue({\n code: 'custom',\n message: 'purchased_amount cannot exceed total_amount',\n path: ['certificates', index, 'purchased_amount'],\n });\n }\n\n totalCreditsFromCertificates += certificate.purchased_amount;\n\n creditPurchaseTotalsBySlug.set(\n certificate.credit_slug,\n (creditPurchaseTotalsBySlug.get(certificate.credit_slug) ?? 0) +\n certificate.purchased_amount,\n );\n creditRetiredTotalsBySlug.set(\n certificate.credit_slug,\n (creditRetiredTotalsBySlug.get(certificate.credit_slug) ?? 0) +\n certificate.retired_amount,\n );\n collectionTotalsBySlug.set(\n certificate.collection_slug,\n (collectionTotalsBySlug.get(certificate.collection_slug) ?? 0) +\n certificate.purchased_amount,\n );\n });\n\n const totalCreditsFromCollections = data.collections.reduce(\n (sum, collection) => sum + collection.credit_amount,\n 0,\n );\n\n const totalCreditsFromCredits = data.credits.reduce(\n (sum, credit) => sum + credit.purchase_amount,\n 0,\n );\n\n if (\n !nearlyEqual(totalCreditsFromCertificates, data.summary.total_credits)\n ) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'summary.total_credits must equal sum of certificates.purchased_amount',\n path: ['summary', 'total_credits'],\n });\n }\n\n if (!nearlyEqual(totalCreditsFromCredits, data.summary.total_credits)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'summary.total_credits must equal sum of credits.purchase_amount',\n path: ['summary', 'total_credits'],\n });\n }\n\n if (!nearlyEqual(totalCreditsFromCollections, data.summary.total_credits)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'summary.total_credits must equal sum of collections.credit_amount',\n path: ['summary', 'total_credits'],\n });\n }\n\n data.credits.forEach((credit, index) => {\n const purchasedTotal = creditPurchaseTotalsBySlug.get(credit.slug) ?? 0;\n if (!nearlyEqual(credit.purchase_amount, purchasedTotal)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'credit.purchase_amount must equal sum of certificate purchased_amount for the credit slug',\n path: ['credits', index, 'purchase_amount'],\n });\n }\n\n const retiredTotal = creditRetiredTotalsBySlug.get(credit.slug) ?? 0;\n const retirementAmount = credit.retirement_amount ?? 0;\n if (!nearlyEqual(retirementAmount, retiredTotal)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'credit.retirement_amount must equal sum of certificate retired_amount for the credit slug',\n path: ['credits', index, 'retirement_amount'],\n });\n }\n });\n\n data.collections.forEach((collection, index) => {\n const purchasedTotal = collectionTotalsBySlug.get(collection.slug) ?? 0;\n if (!nearlyEqual(collection.credit_amount, purchasedTotal)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'collection.credit_amount must equal sum of certificate purchased_amount for the collection slug',\n path: ['collections', index, 'credit_amount'],\n });\n }\n });\n\n const participantRewardTotal = data.participant_rewards.reduce(\n (sum, reward) => sum + reward.usdc_amount,\n 0,\n );\n\n if (!nearlyEqual(participantRewardTotal, data.summary.total_usdc_amount)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'summary.total_usdc_amount must equal sum of participant_rewards.usdc_amount',\n path: ['summary', 'total_usdc_amount'],\n });\n }\n })\n .meta({\n title: 'Credit Purchase Receipt Data',\n description: 'Complete data structure for a credit purchase receipt',\n });\n\nexport type CreditPurchaseReceiptData = z.infer<\n typeof CreditPurchaseReceiptDataSchema\n>;\n","import { z } from 'zod';\nimport {\n NftIpfsSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\nimport { CreditPurchaseReceiptDataSchema } from './credit-purchase-receipt.data.schema';\nimport { CreditPurchaseReceiptAttributesSchema } from './credit-purchase-receipt.attributes';\n\nexport const CreditPurchaseReceiptIpfsSchemaMeta = {\n title: 'CreditPurchaseReceipt NFT IPFS Record',\n description:\n 'Complete CreditPurchaseReceipt NFT IPFS record including attributes and credit purchase data',\n $id: buildSchemaUrl(\n 'credit-purchase-receipt/credit-purchase-receipt.schema.json',\n ),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const CreditPurchaseReceiptIpfsSchema = NftIpfsSchema.safeExtend({\n schema: NftIpfsSchema.shape.schema.safeExtend({\n type: z.literal('CreditPurchaseReceipt').meta({\n title: 'CreditPurchaseReceipt Schema Type',\n description: 'CreditPurchaseReceipt NFT schema type',\n }),\n }),\n attributes: CreditPurchaseReceiptAttributesSchema,\n data: CreditPurchaseReceiptDataSchema,\n})\n .superRefine((value, ctx) => {\n const attributes = value.attributes;\n const data = value.data;\n\n const attributeByTraitType = new Map(\n attributes.map((attribute) => [attribute.trait_type, attribute]),\n );\n\n const totalCreditsAttribute = attributeByTraitType.get(\n 'Total Credits Purchased',\n );\n const totalCreditsAttr = totalCreditsAttribute;\n if (!totalCreditsAttr) {\n ctx.addIssue({\n code: 'custom',\n message: 'Attribute \"Total Credits Purchased\" is required',\n path: ['attributes'],\n });\n } else if (totalCreditsAttr.value !== data.summary.total_credits) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'Attribute \"Total Credits Purchased\" must match data.summary.total_credits',\n path: ['attributes'],\n });\n }\n\n const totalUsdcAttribute = attributeByTraitType.get('Total USDC Amount');\n if (!totalUsdcAttribute) {\n ctx.addIssue({\n code: 'custom',\n message: 'Attribute \"Total USDC Amount\" is required',\n path: ['attributes'],\n });\n } else if (totalUsdcAttribute.value !== data.summary.total_usdc_amount) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'Attribute \"Total USDC Amount\" must match data.summary.total_usdc_amount',\n path: ['attributes'],\n });\n }\n\n const certificatesAttribute = attributeByTraitType.get(\n 'Certificates Purchased',\n );\n if (!certificatesAttribute) {\n ctx.addIssue({\n code: 'custom',\n message: 'Attribute \"Certificates Purchased\" is required',\n path: ['attributes'],\n });\n } else if (\n certificatesAttribute.value !== data.summary.total_certificates\n ) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'Attribute \"Certificates Purchased\" must match data.summary.total_certificates',\n path: ['attributes'],\n });\n }\n\n const receiverAttribute = attributeByTraitType.get('Receiver');\n if (data.parties.receiver.identity?.name && !receiverAttribute) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'Attribute \"Receiver\" is required when receiver.identity.name is provided',\n path: ['attributes'],\n });\n } else if (\n receiverAttribute &&\n data.parties.receiver.identity?.name &&\n receiverAttribute.value !== data.parties.receiver.identity.name\n ) {\n ctx.addIssue({\n code: 'custom',\n message: 'Attribute \"Receiver\" must match receiver.identity.name',\n path: ['attributes'],\n });\n }\n\n const purchaseDateAttribute = attributeByTraitType.get('Purchase Date');\n const purchaseDateAttr = purchaseDateAttribute;\n if (!purchaseDateAttr) {\n ctx.addIssue({\n code: 'custom',\n message: 'Attribute \"Purchase Date\" is required',\n path: ['attributes'],\n });\n } else {\n const purchaseDateMs = Date.parse(\n `${data.summary.purchase_date}T00:00:00.000Z`,\n );\n if (Number.isNaN(purchaseDateMs)) {\n ctx.addIssue({\n code: 'custom',\n message: 'data.summary.purchase_date must be a valid date string',\n path: ['data', 'summary', 'purchase_date'],\n });\n } else if (purchaseDateAttr.value !== purchaseDateMs) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'Attribute \"Purchase Date\" must match data.summary.purchase_date as a Unix timestamp in milliseconds',\n path: ['attributes'],\n });\n }\n }\n\n data.credits.forEach((credit) => {\n const creditAttribute = attributeByTraitType.get(credit.symbol);\n if (!creditAttribute) {\n ctx.addIssue({\n code: 'custom',\n message: `Attribute for credit symbol ${credit.symbol} is required`,\n path: ['attributes'],\n });\n return;\n }\n\n if (creditAttribute.value !== credit.purchase_amount) {\n ctx.addIssue({\n code: 'custom',\n message: `Attribute for credit symbol ${credit.symbol} must match credit.purchase_amount`,\n path: ['attributes'],\n });\n }\n });\n\n data.collections.forEach((collection) => {\n const collectionAttribute = attributeByTraitType.get(collection.name);\n if (!collectionAttribute) {\n ctx.addIssue({\n code: 'custom',\n message: `Attribute for collection ${collection.name} is required`,\n path: ['attributes'],\n });\n return;\n }\n\n if (collectionAttribute.value !== collection.credit_amount) {\n ctx.addIssue({\n code: 'custom',\n message: `Attribute for collection ${collection.name} must match collection.credit_amount`,\n path: ['attributes'],\n });\n }\n });\n })\n .meta(CreditPurchaseReceiptIpfsSchemaMeta);\n\nexport type CreditPurchaseReceiptIpfs = z.infer<\n typeof CreditPurchaseReceiptIpfsSchema\n>;\n","import { z } from 'zod';\nimport {\n BaseIpfsSchema,\n CollectionNameSchema,\n CollectionSlugSchema,\n IpfsUriSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\n\nexport const CollectionSchemaMeta = {\n title: 'Collection IPFS Record',\n description:\n \"Collection metadata stored in IPFS, extending the base schema with collection-specific fields required for NFT collection definitions in Carrot's ecosystem\",\n $id: buildSchemaUrl('collection/collection.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const CollectionSchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: z.literal('Collection').meta({\n title: 'Collection Schema Type',\n description: 'Collection schema type',\n }),\n }),\n name: CollectionNameSchema,\n slug: CollectionSlugSchema.optional(),\n image: IpfsUriSchema.meta({\n title: 'Collection Image',\n description: \"IPFS URI pointing to the collection's visual representation\",\n examples: ['ipfs://QmCollectionImageHash/collection-icon.png'],\n }),\n description: z\n .string()\n .min(50)\n .max(1000)\n .meta({\n title: 'Collection Description',\n description:\n 'Comprehensive description of the collection, its purpose, and context',\n examples: [\n 'Cold Start is a limited-edition collection created for early supporters of BOLD - Breakthrough in Organic Landfill Diversion. This purchase contributes to reducing global waste and promoting circularity, with funds distributed via smart contract to local recycling operations and communities.',\n ],\n }),\n}).meta(CollectionSchemaMeta);\n\nexport type Collection = z.infer<typeof CollectionSchema>;\n","import { z } from 'zod';\nimport {\n BaseIpfsSchema,\n IpfsUriSchema,\n NonEmptyStringSchema,\n SlugSchema,\n TokenSymbolSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\n\nexport const CreditSchemaMeta = {\n title: 'Credit IPFS Record',\n description:\n 'Credit token metadata stored in IPFS, extending the base schema with ERC20-specific details',\n $id: buildSchemaUrl('credit/credit.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const CreditSchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: z.literal('Credit').meta({\n title: 'Credit Schema Type',\n description: 'Credit schema type',\n }),\n }),\n symbol: TokenSymbolSchema,\n slug: SlugSchema.meta({\n title: 'Token Slug',\n description: 'URL-friendly identifier for the token',\n examples: ['carbon'],\n }).optional(),\n name: NonEmptyStringSchema.meta({\n title: 'Token Name',\n description: 'Full human-readable name of the ERC20 token',\n examples: ['Carrot Carbon'],\n }),\n decimals: z\n .number()\n .int()\n .min(0)\n .max(18)\n .meta({\n title: 'Token Decimals',\n description: 'Number of decimal places for the ERC20 token',\n examples: [18],\n }),\n image: IpfsUriSchema.meta({\n title: 'Token Image',\n description: \"IPFS URI pointing to the token's visual representation image\",\n examples: ['ipfs://QmTokenImageHash/credit-icon.png'],\n }),\n description: z\n .string()\n .min(50)\n .max(1000)\n .meta({\n title: 'Token Description',\n description:\n 'Comprehensive description of the credit token, its purpose, and impact',\n examples: [\n 'Carrot Carbon (C-CARB) represents verified carbon emissions reductions from organic waste composting projects. Each token equals one metric ton of CO2 equivalent prevented from entering the atmosphere through sustainable waste management practices.',\n ],\n }),\n}).meta(CreditSchemaMeta);\n\nexport type Credit = z.infer<typeof CreditSchema>;\n","import { z } from 'zod';\nimport {\n AuditRuleDefinitionsSchema,\n IpfsUriSchema,\n IsoDateSchema,\n MethodologyNameSchema,\n NonEmptyStringSchema,\n SemanticVersionSchema,\n SlugSchema,\n} from '../shared';\n\nexport const MethodologyDataSchema = z\n .strictObject({\n name: MethodologyNameSchema.meta({\n title: 'Methodology Name',\n description: 'Full official name of the methodology',\n }),\n short_name: NonEmptyStringSchema.max(50).meta({\n title: 'Methodology Short Name',\n description: 'Abbreviated name for UI display and references',\n examples: ['BOLD Carbon', 'BOLD Recycling'],\n }),\n slug: SlugSchema.meta({\n title: 'Methodology Slug',\n description: 'URL-friendly identifier for the methodology',\n examples: ['bold-carbon-ch4', 'bold-recycling'],\n }),\n version: SemanticVersionSchema.meta({\n title: 'Methodology Version',\n description: 'Version of the methodology',\n }),\n description: z.string().min(50).max(2000).meta({\n title: 'Methodology Description',\n description:\n 'Comprehensive methodology description including purpose, scope, and implementation approach',\n }),\n revision_date: IsoDateSchema.meta({\n title: 'Revision Date',\n description: 'ISO 8601 date of the last revision to this methodology',\n }),\n publication_date: IsoDateSchema.meta({\n title: 'Publication Date',\n description:\n 'ISO 8601 date of the original publication of this methodology',\n }),\n methodology_pdf: IpfsUriSchema.meta({\n title: 'Methodology PDF',\n description: 'IPFS URI pointing to the complete methodology PDF document',\n }),\n mass_id_audit_rules: AuditRuleDefinitionsSchema.meta({\n title: 'MassID Audit Rules',\n description:\n 'Audit rules that must be executed to check MassID compliance with the methodology',\n }),\n })\n .meta({\n title: 'Methodology Data',\n description: 'Methodology-specific data including audit rules',\n });\n\nexport type MethodologyData = z.infer<typeof MethodologyDataSchema>;\n","import { z } from 'zod';\nimport {\n BaseIpfsSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\nimport { MethodologyDataSchema } from './methodology.data.schema';\n\nexport const MethodologySchemaMeta = {\n title: 'Methodology IPFS Record',\n description:\n 'Methodology metadata stored in IPFS, extending the base schema with methodology data and audit rules',\n $id: buildSchemaUrl('methodology/methodology.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const MethodologySchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: z.literal('Methodology').meta({\n title: 'Methodology Schema Type',\n description: 'Methodology schema type',\n }),\n }),\n data: MethodologyDataSchema,\n}).meta(MethodologySchemaMeta);\n\nexport type Methodology = z.infer<typeof MethodologySchema>;\n","import { z } from 'zod';\nimport {\n AuditRuleExecutionResultsSchema,\n GasIDReferenceSchema,\n IsoDateSchema,\n MassIDReferenceSchema,\n MethodologyComplianceSchema,\n MethodologyReferenceSchema,\n NonNegativeIntegerSchema,\n} from '../shared';\n\nconst MassIDAuditSummarySchema = z\n .strictObject({\n audit_date: IsoDateSchema.meta({\n title: 'Audit Date',\n description: 'Date when the audit was completed',\n }),\n methodology_compliance: MethodologyComplianceSchema.meta({\n title: 'Methodology Compliance',\n description: 'Overall outcome of the audit process',\n }),\n total_rules_executed: NonNegativeIntegerSchema.meta({\n title: 'Total Rules Executed',\n description: 'Total number of audit rules executed',\n }),\n passed_rules: NonNegativeIntegerSchema.meta({\n title: 'Passed Rules Count',\n description: 'Number of rules that passed verification',\n }),\n failed_rules: NonNegativeIntegerSchema.meta({\n title: 'Failed Rules Count',\n description: 'Number of rules that failed verification',\n }),\n })\n .meta({\n title: 'Audit Summary',\n description: 'Summary of audit execution results',\n });\n\nexport type MassIDAuditSummary = z.infer<typeof MassIDAuditSummarySchema>;\n\nexport const MassIDAuditDataSchema = z\n .strictObject({\n methodology: MethodologyReferenceSchema,\n mass_id: MassIDReferenceSchema,\n gas_id: GasIDReferenceSchema,\n audit_summary: MassIDAuditSummarySchema,\n rules_execution_results: AuditRuleExecutionResultsSchema,\n })\n .meta({\n title: 'MassID Audit Data',\n description: 'Complete data structure for MassID Audit records',\n });\n\nexport type MassIDAuditData = z.infer<typeof MassIDAuditDataSchema>;\n","import { z } from 'zod';\nimport {\n BaseIpfsSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\nimport { MassIDAuditDataSchema } from './mass-id-audit.data.schema';\n\nexport const MassIDAuditSchemaMeta = {\n title: 'MassID Audit IPFS Record',\n description:\n 'MassID audit metadata stored in IPFS, extending the base schema with audit results and references',\n $id: buildSchemaUrl('mass-id-audit/mass-id-audit.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const MassIDAuditSchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: z.literal('MassID Audit').meta({\n title: 'MassID Audit Schema Type',\n description: 'MassID Audit schema type',\n }),\n }),\n data: MassIDAuditDataSchema,\n}).meta(MassIDAuditSchemaMeta);\n\nexport type MassIDAudit = z.infer<typeof MassIDAuditSchema>;\n"]}
1
+ {"version":3,"sources":["../src/shared/definitions.schema.ts","../src/shared/helpers.schema.ts","../src/shared/entities/participant.schema.ts","../src/shared/entities/location.schema.ts","../src/shared/references/audit-reference.schema.ts","../src/shared/references/gas-id-reference.schema.ts","../src/shared/references/mass-id-reference.schema.ts","../src/shared/references/methodology-reference.schema.ts","../src/shared/certificate/certificate.schema.ts","../src/shared/base.schema.ts","../src/shared/nft.schema.ts","../src/shared/schema-version.ts","../src/shared/attributes.schema.ts","../src/shared/audit.schema.ts","../src/shared/receipt/receipt.schemas.ts","../src/shared/receipt/receipt.validation.ts","../src/mass-id/mass-id.attributes.ts","../src/mass-id/mass-id.data.schema.ts","../src/mass-id/mass-id.schema.ts","../src/gas-id/gas-id.attributes.ts","../src/gas-id/gas-id.data.schema.ts","../src/gas-id/gas-id.schema.ts","../src/recycled-id/recycled-id.attributes.ts","../src/recycled-id/recycled-id.data.schema.ts","../src/recycled-id/recycled-id.schema.ts","../src/credit-purchase-receipt/credit-purchase-receipt.attributes.ts","../src/credit-purchase-receipt/credit-purchase-receipt.data.schema.ts","../src/credit-purchase-receipt/credit-purchase-receipt.schema.ts","../src/credit-retirement-receipt/credit-retirement-receipt.attributes.ts","../src/credit-retirement-receipt/credit-retirement-receipt.data.schema.ts","../src/credit-retirement-receipt/credit-retirement-receipt.schema.ts","../src/collection/collection.schema.ts","../src/credit/credit.schema.ts","../src/methodology/methodology.data.schema.ts","../src/methodology/methodology.schema.ts","../src/mass-id-audit/mass-id-audit.data.schema.ts","../src/mass-id-audit/mass-id-audit.schema.ts"],"names":["z"],"mappings":"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","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\nexport const UuidSchema = z.uuidv4('Must be a valid UUID v4 string').meta({\n title: 'UUID',\n description: 'A universally unique identifier version 4',\n examples: [\n 'ad44dd3f-f176-4b98-bf78-5ee6e77d0530',\n '6f520d88-864d-432d-bf9f-5c3166c4818f',\n 'f77afa89-1c58-40fd-9bf5-8a86703a8af4',\n ],\n});\n\nexport type Uuid = z.infer<typeof UuidSchema>;\n\nexport const EthereumAddressSchema = z\n .string()\n .regex(\n /^0x[a-f0-9]{40}$/,\n 'Must be a valid Ethereum address in lowercase hexadecimal format',\n )\n .meta({\n title: 'Ethereum Address',\n description: 'A valid Ethereum address in hexadecimal format',\n examples: [\n '0x1234567890abcdef1234567890abcdef12345678',\n '0xabcdef1234567890abcdef1234567890abcdef12',\n ],\n });\n\nexport type EthereumAddress = z.infer<typeof EthereumAddressSchema>;\n\nexport const IsoTimestampSchema = z.iso\n .datetime({\n message: 'Must be a valid ISO 8601 timestamp with timezone',\n })\n .meta({\n title: 'ISO Timestamp',\n description: 'ISO 8601 formatted timestamp with timezone information',\n examples: ['2024-12-05T11:02:47.000Z', '2025-02-22T10:35:12.000Z'],\n });\n\nexport type IsoTimestamp = z.infer<typeof IsoTimestampSchema>;\n\nexport const IsoDateSchema = z.iso\n .date('Must be a valid ISO 8601 date (YYYY-MM-DD)')\n .meta({\n title: 'ISO Date',\n description: 'ISO 8601 formatted date in YYYY-MM-DD format',\n examples: ['2024-12-05', '2025-02-22', '2024-02-10'],\n });\n\nexport type IsoDate = z.infer<typeof IsoDateSchema>;\n\nexport const UnixTimestampSchema = z\n .number()\n .int()\n .positive()\n .meta({\n title: 'Unix Timestamp',\n description:\n 'Unix timestamp in milliseconds since epoch (January 1, 1970 00:00:00 UTC)',\n examples: [1704067200000, 1735689600000, 1762371245149],\n });\n\nexport type UnixTimestamp = z.infer<typeof UnixTimestampSchema>;\n\nexport const IsoCountryCodeSchema = z\n .string()\n .regex(/^[A-Z]{2}$/, 'Must be a valid ISO 3166-1 alpha-2 country code')\n .meta({\n title: 'ISO Country Code',\n description:\n 'Two-letter country code following ISO 3166-1 alpha-2 standard',\n examples: ['BR', 'US', 'DE'],\n });\n\nexport type IsoCountryCode = z.infer<typeof IsoCountryCodeSchema>;\n\nexport const IsoAdministrativeDivisionCodeSchema = z\n .string()\n .regex(\n /^[A-Z]{2}-[A-Z0-9]{1,3}$/,\n 'Must be a valid ISO 3166-2 administrative division code',\n )\n .meta({\n title: 'ISO Administrative Division Code',\n description: 'Administrative division code following ISO 3166-2 standard',\n examples: ['BR-AP', 'BR-ES', 'US-CA'],\n });\n\nexport type IsoAdministrativeDivisionCode = z.infer<\n typeof IsoAdministrativeDivisionCodeSchema\n>;\n\nexport const LatitudeSchema = z\n .number()\n .min(-90)\n .max(90)\n .multipleOf(0.001)\n .meta({\n title: 'Latitude',\n description:\n 'Geographic latitude coordinate in decimal degrees with maximum 3 decimal places precision (~100m-1km accuracy for city-level, non-PII compliance)',\n examples: [-0.02, -20.38, 40.713],\n });\n\nexport type Latitude = z.infer<typeof LatitudeSchema>;\n\nexport const LongitudeSchema = z\n .number()\n .min(-180)\n .max(180)\n .multipleOf(0.001)\n .meta({\n title: 'Longitude',\n description:\n 'Geographic longitude coordinate in decimal degrees with maximum 3 decimal places precision (~100m-1km accuracy for city-level, non-PII compliance)',\n examples: [-51.06, -40.34, -74.006],\n });\n\nexport type Longitude = z.infer<typeof LongitudeSchema>;\n\nexport const WeightKgSchema = z\n .number()\n .min(0)\n .meta({\n title: 'Weight (kg)',\n description: 'Weight measurement in kilograms',\n examples: [3000, 1500, 500],\n });\n\nexport type WeightKg = z.infer<typeof WeightKgSchema>;\n\nexport const NonEmptyStringSchema = z\n .string()\n .min(1, 'Cannot be empty')\n .meta({\n title: 'Non-Empty String',\n description: 'A string that contains at least one character',\n examples: ['Example text', 'Sample value', 'Test string'],\n });\n\nexport type NonEmptyString = z.infer<typeof NonEmptyStringSchema>;\n\nexport const MunicipalitySchema = NonEmptyStringSchema.max(50).meta({\n title: 'Municipality',\n description: 'Municipality or city name',\n examples: ['Macapá', 'São Paulo', 'New York', 'Berlin', 'Tokyo'],\n});\n\nexport type Municipality = z.infer<typeof MunicipalitySchema>;\n\nexport const AdministrativeDivisionSchema = NonEmptyStringSchema.max(50).meta({\n title: 'Administrative Division',\n description: 'State, province, or administrative region name',\n examples: ['Amapá', 'California', 'Bavaria'],\n});\n\nexport type AdministrativeDivision = z.infer<\n typeof AdministrativeDivisionSchema\n>;\n\nexport const CountryNameSchema = NonEmptyStringSchema.max(50).meta({\n title: 'Country',\n description: 'Full country name in English',\n examples: ['Brazil', 'United States', 'Germany', 'Japan'],\n});\n\nexport type CountryName = z.infer<typeof CountryNameSchema>;\n\nexport const CollectionNameSchema = NonEmptyStringSchema.max(150).meta({\n title: 'Collection Name',\n description: 'Display name of the collection',\n examples: ['BOLD Cold Start - Carazinho', 'BOLD Brazil'],\n});\n\nexport type CollectionName = z.infer<typeof CollectionNameSchema>;\n\nexport const MethodologyNameSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Methodology Name',\n description: 'Name of the methodology used for certification',\n examples: ['BOLD Recycling', 'BOLD Carbon (CH₄)'],\n});\n\nexport type MethodologyName = z.infer<typeof MethodologyNameSchema>;\n\nexport const StringifiedTokenIdSchema = NonEmptyStringSchema.regex(\n /^#\\d+$/,\n 'Must match pattern #<token_id>',\n).meta({\n title: 'Token ID',\n description: 'Token ID represented as #<token_id>',\n example: '#123',\n});\n\nexport type StringifiedTokenId = z.infer<typeof StringifiedTokenIdSchema>;\n\nexport const SlugSchema = NonEmptyStringSchema.regex(\n /^[a-z0-9-]+$/,\n 'Must contain only lowercase letters, numbers, and hyphens',\n)\n .max(100)\n .meta({\n title: 'Slug',\n description:\n 'URL-friendly identifier with lowercase letters, numbers, and hyphens',\n examples: ['mass-id-123', 'recycled-plastic', 'organic-waste'],\n });\nexport type Slug = z.infer<typeof SlugSchema>;\n\nexport const CollectionSlugSchema = SlugSchema.meta({\n title: 'Collection Slug',\n description: 'URL-friendly identifier for a collection',\n examples: ['bold-cold-start-carazinho', 'bold-brazil'],\n});\n\nexport type CollectionSlug = z.infer<typeof CollectionSlugSchema>;\n\nexport const WasteTypeSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Waste Type',\n description: 'Category or type of waste material',\n examples: ['Organic', 'Plastic', 'Metal'],\n});\nexport type WasteType = z.infer<typeof WasteTypeSchema>;\n\nexport const WasteSubtypeSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Waste Subtype',\n description: 'Specific subcategory of waste within a waste type',\n examples: ['Food, Food Waste and Beverages', 'PET Bottles', 'Aluminum Cans'],\n});\nexport type WasteSubtype = z.infer<typeof WasteSubtypeSchema>;\n\nexport const ParticipantRoleSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Participant Role',\n description:\n 'Role that a participant plays in the waste management supply chain',\n examples: ['Waste Generator', 'Hauler', 'Recycler'],\n});\nexport type ParticipantRole = z.infer<typeof ParticipantRoleSchema>;\n\nexport const ParticipantNameSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Participant Name',\n description: 'Name of a participant in the waste management system',\n examples: ['Enlatados Produção', 'Eco Reciclagem', 'Green Tech Corp'],\n});\nexport type ParticipantName = z.infer<typeof ParticipantNameSchema>;\n\nexport const FacilityTypeSchema = z\n .enum([\n 'Collection Point',\n 'Recycling Facility',\n 'Administrative Office',\n 'Other',\n ])\n .meta({\n title: 'Facility Type',\n description: 'Type of facility in the waste management chain',\n examples: [\n 'Collection Point',\n 'Recycling Facility',\n 'Administrative Office',\n ],\n });\nexport type FacilityType = z.infer<typeof FacilityTypeSchema>;\n\nexport const BlockchainChainIdSchema = z\n .number()\n .int()\n .min(1)\n .meta({\n title: 'Chain ID',\n description: 'Blockchain network identifier',\n examples: [1, 137, 11155111],\n });\nexport type BlockchainChainId = z.infer<typeof BlockchainChainIdSchema>;\n\nexport const BlockchainNetworkNameSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Blockchain Network Name',\n description: 'Name of the blockchain network',\n examples: ['Polygon', 'Ethereum mainnet', 'Sepolia'],\n});\n\nexport type BlockchainNetworkName = z.infer<typeof BlockchainNetworkNameSchema>;\n\nexport const SmartContractAddressSchema = EthereumAddressSchema.meta({\n title: 'Smart Contract Address',\n description: 'Address of the smart contract',\n});\n\nexport type SmartContractAddress = z.infer<typeof SmartContractAddressSchema>;\n\nexport const SmartContractSchema = z\n .strictObject({\n address: SmartContractAddressSchema,\n chain_id: BlockchainChainIdSchema,\n network_name: BlockchainNetworkNameSchema,\n })\n .meta({\n title: 'Smart Contract',\n description: 'Smart contract details for on-chain references',\n });\n\nexport type SmartContract = z.infer<typeof SmartContractSchema>;\n\nexport const PercentageSchema = z\n .number()\n .min(0)\n .max(100)\n .meta({\n title: 'Percentage',\n description: 'Percentage value between 0 and 100',\n examples: [50, 75.5, 100],\n });\n\nexport type Percentage = z.infer<typeof PercentageSchema>;\n\nexport const NonNegativeIntegerSchema = z\n .number()\n .int()\n .min(0)\n .meta({\n title: 'Non-Negative Integer',\n description: 'Integer value that is zero or positive',\n examples: [0, 123, 4126],\n });\n\nexport type NonNegativeInteger = z.infer<typeof NonNegativeIntegerSchema>;\n\nexport const PositiveIntegerSchema = z\n .number()\n .int()\n .min(1)\n .meta({\n title: 'Positive Integer',\n description: 'Integer value that is greater than zero',\n examples: [1, 123, 456],\n });\n\nexport type PositiveInteger = z.infer<typeof PositiveIntegerSchema>;\n\nexport const NonNegativeFloatSchema = z\n .number()\n .min(0)\n .meta({\n title: 'Non-Negative Float',\n description: 'Floating-point number that is zero or positive',\n examples: [0, 45.2, 72.5],\n });\n\nexport type NonNegativeFloat = z.infer<typeof NonNegativeFloatSchema>;\n\nexport const CreditTypeSchema = NonEmptyStringSchema.max(100).meta({\n title: 'Credit Type',\n description: 'Type of credit issued',\n examples: ['Organic', 'Carbon (CH₄)'],\n});\n\nexport type CreditType = z.infer<typeof CreditTypeSchema>;\n\nexport const CreditAmountSchema = NonNegativeFloatSchema.meta({\n title: 'Credit Amount',\n description: 'Amount of credits issued',\n});\n\nexport type CreditAmount = z.infer<typeof CreditAmountSchema>;\n\nexport const HoursSchema = z\n .number()\n .min(0)\n .multipleOf(0.1)\n .meta({\n title: 'Hours',\n description: 'Time duration in hours with 0.1 hour precision',\n examples: [72.5, 24, 168.5],\n });\n\nexport type Hours = z.infer<typeof HoursSchema>;\n\nexport const MinutesSchema = z\n .number()\n .int()\n .min(0)\n .meta({\n title: 'Minutes',\n description: 'Time duration in minutes',\n examples: [4350, 1440, 10110],\n });\n\nexport type Minutes = z.infer<typeof MinutesSchema>;\n\nexport const IpfsUriSchema = NonEmptyStringSchema.regex(\n /^ipfs:\\/\\/[a-zA-Z0-9]+(\\/.*)?$/,\n 'Must be a valid IPFS URI with CID',\n).meta({\n title: 'IPFS URI',\n description: 'InterPlanetary File System URI pointing to distributed content',\n examples: [\n 'ipfs://QmTy8w65yBXgyfG2ZBg5TrfB2hPjrDQH3RCQFJGkARStJb/mass-id-organic.png',\n 'ipfs://QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o',\n ],\n});\n\nexport type IpfsUri = z.infer<typeof IpfsUriSchema>;\n\nexport const SemanticVersionSchema = NonEmptyStringSchema.regex(\n /^v?\\d+\\.\\d+\\.\\d+(-[a-zA-Z0-9.-]+)?(\\+[a-zA-Z0-9.-]+)?$/,\n 'Must be a valid semantic version string',\n).meta({\n title: 'Semantic Version',\n description: 'Version string following semantic versioning specification',\n examples: ['0.1.0', '1.0.0', '2.1.3'],\n});\n\nexport type SemanticVersion = z.infer<typeof SemanticVersionSchema>;\n\nexport const TokenIdSchema = NonEmptyStringSchema.regex(\n /^\\d+$/,\n 'Must be a numeric string (supports uint256)',\n).meta({\n title: 'Token ID',\n description: 'Numeric identifier for blockchain tokens as string',\n examples: ['123', '456789', '1000000'],\n});\n\nexport type TokenId = z.infer<typeof TokenIdSchema>;\n\nexport const HexColorSchema = NonEmptyStringSchema.regex(\n /^#[0-9A-F]{6}$/,\n 'Must be a hex color code with # prefix and uppercase',\n).meta({\n title: 'Hex Color',\n description: 'Hexadecimal color code with hash prefix',\n examples: ['#2D5A27', '#FF5733', '#1E90FF'],\n});\n\nexport type HexColor = z.infer<typeof HexColorSchema>;\n\nexport const Sha256HashSchema = z\n .hash('sha256', {\n error: 'Must be a SHA256 hash as 32-byte hex string',\n })\n .meta({\n format: undefined,\n title: 'SHA256 Hash',\n description: 'SHA-256 cryptographic hash as hexadecimal string',\n examples: [\n '87f633634cc4b02f628685651f0a29b7bfa22a0bd841f725c6772dd00a58d489',\n '6e83b8e6373847bbdc056549bedda38dc88854ce41ba4fca11e0fc6ce3e07ef6',\n ],\n });\n\nexport type Sha256Hash = z.infer<typeof Sha256HashSchema>;\n\nexport const Keccak256HashSchema = Sha256HashSchema.meta({\n title: 'Keccak256 Hash',\n description: 'Keccak256 cryptographic hash as hexadecimal string',\n examples: [\n 'ac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f',\n 'b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2',\n ],\n});\n\nexport type Keccak256Hash = z.infer<typeof Keccak256HashSchema>;\n\nexport const ExternalIdSchema = UuidSchema.meta({\n title: 'External ID',\n description: 'UUID identifier for external system references',\n examples: [\n 'ad44dd3f-f176-4b98-bf78-5ee6e77d0530',\n 'b2c4e6f8-a1b3-4c5d-9e8f-123456789abc',\n ],\n});\n\nexport type ExternalId = z.infer<typeof ExternalIdSchema>;\n\nexport const ExternalUrlSchema = z.url('Must be a valid URL').meta({\n title: 'External URL',\n description: 'Valid URL pointing to external resources',\n examples: [\n 'https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530',\n 'https://carrot.eco/whitepaper.pdf',\n ],\n});\n\nexport type ExternalUrl = z.infer<typeof ExternalUrlSchema>;\n\nexport const RecordSchemaTypeSchema = z\n .enum([\n 'MassID',\n 'MassID Audit',\n 'RecycledID',\n 'GasID',\n 'CreditPurchaseReceipt',\n 'CreditRetirementReceipt',\n 'Methodology',\n 'Credit',\n 'Collection',\n ])\n .meta({\n title: 'Schema Type',\n description: 'Type of schema in the Carrot ecosystem',\n examples: ['MassID', 'RecycledID', 'GasID'],\n });\n\nexport type RecordSchemaType = z.infer<typeof RecordSchemaTypeSchema>;\n\nexport const TokenSymbolSchema = NonEmptyStringSchema.max(10)\n .regex(\n /^[A-Z0-9-]+$/,\n 'Must contain only uppercase letters, numbers, and hyphens',\n )\n .meta({\n title: 'Token Symbol',\n description: 'Symbol representing a token or cryptocurrency',\n examples: ['MASS', 'REC', 'GAS'],\n });\n\nexport type TokenSymbol = z.infer<typeof TokenSymbolSchema>;\n\nexport const CreditTokenSymbolSchema = TokenSymbolSchema.meta({\n title: 'Credit Token Symbol',\n description: 'Symbol of the credit token (e.g., C-CARB, C-BIOW)',\n examples: ['C-CARB', 'C-BIOW'],\n});\n\nexport type CreditTokenSymbol = z.infer<typeof CreditTokenSymbolSchema>;\n\nexport const RecordRelationshipTypeSchema = z\n .enum([\n 'collection',\n 'credit',\n 'gas-id',\n 'mass-id',\n 'mass-id-audit',\n 'methodology',\n 'credit-purchase-receipt',\n 'credit-retirement-receipt',\n 'recycled-id',\n ])\n .meta({\n title: 'Relationship Type',\n description:\n 'Type of relationship between different entities in the system',\n examples: ['mass-id', 'collection', 'credit-purchase-receipt'],\n });\n\nexport type RecordRelationshipType = z.infer<\n typeof RecordRelationshipTypeSchema\n>;\n","import { z } from 'zod';\n\nexport function uniqueArrayItems<T extends z.ZodTypeAny>(\n schema: T,\n errorMessage: string = 'Array items must be unique',\n) {\n return z\n .array(schema)\n .refine((items) => new Set(items).size === items.length, {\n message: errorMessage,\n });\n}\n\nexport function uniqueBy<T extends z.ZodTypeAny, K>(\n schema: T,\n selector: (item: z.infer<T>) => K,\n errorMessage: string = 'Items must be unique',\n) {\n return z.array(schema).refine(\n (items) => {\n const values = items.map(selector);\n return new Set(values).size === values.length;\n },\n {\n message: errorMessage,\n },\n );\n}\n","import { z } from 'zod';\nimport {\n Sha256HashSchema,\n ParticipantNameSchema,\n ParticipantRoleSchema,\n} from '../definitions.schema';\nimport { uniqueArrayItems } from '../helpers.schema';\n\nexport const ParticipantSchema = z\n .strictObject({\n id_hash: Sha256HashSchema.meta({\n title: 'Participant ID Hash',\n description: 'Anonymized identifier for the participant',\n }),\n name: ParticipantNameSchema.meta({\n title: 'Participant Name',\n description: 'Name of the participant',\n }),\n roles: uniqueArrayItems(\n ParticipantRoleSchema,\n 'Participant roles must be unique',\n )\n .min(1)\n .meta({\n title: 'Participant Roles',\n description:\n 'Roles of the participant in the waste management supply chain',\n }),\n })\n .meta({\n title: 'Participant',\n description: 'A participant in the waste management supply chain',\n });\n\nexport type Participant = z.infer<typeof ParticipantSchema>;\n","import { z } from 'zod';\nimport {\n Sha256HashSchema,\n LatitudeSchema,\n LongitudeSchema,\n IsoCountryCodeSchema,\n IsoAdministrativeDivisionCodeSchema,\n FacilityTypeSchema,\n MunicipalitySchema,\n AdministrativeDivisionSchema,\n CountryNameSchema,\n} from '../definitions.schema';\n\nconst PrecisionLevelSchema = z\n .enum(['exact', 'neighborhood', 'city', 'region', 'country'])\n .meta({\n title: 'Coordinate Precision Level',\n description: 'Level of coordinate precision',\n examples: ['city', 'exact', 'neighborhood'],\n });\n\nexport type PrecisionLevel = z.infer<typeof PrecisionLevelSchema>;\n\nexport const CoordinatesSchema = z\n .strictObject({\n latitude: LatitudeSchema,\n longitude: LongitudeSchema,\n precision_level: PrecisionLevelSchema,\n })\n .meta({\n title: 'Coordinates',\n description: 'GPS coordinates of the location',\n });\nexport type Coordinates = z.infer<typeof CoordinatesSchema>;\n\nexport const LocationSchema = z\n .strictObject({\n id_hash: Sha256HashSchema.meta({\n title: 'Location ID Hash',\n description: 'Anonymized identifier for the location',\n }),\n municipality: MunicipalitySchema,\n administrative_division: AdministrativeDivisionSchema,\n administrative_division_code:\n IsoAdministrativeDivisionCodeSchema.optional(),\n country: CountryNameSchema,\n country_code: IsoCountryCodeSchema,\n responsible_participant_id_hash: Sha256HashSchema.meta({\n title: 'Responsible Participant ID Hash',\n description:\n 'Anonymized ID of the participant responsible for this location',\n }),\n coordinates: CoordinatesSchema,\n facility_type: FacilityTypeSchema.optional(),\n })\n .meta({\n title: 'Location',\n description: 'Geographic location with address and coordinate information',\n });\n\nexport type Location = z.infer<typeof LocationSchema>;\n","import { z } from 'zod';\nimport {\n ExternalIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n IsoDateSchema,\n NonNegativeIntegerSchema,\n} from '../definitions.schema';\n\nexport const MethodologyComplianceSchema = z.enum(['PASSED', 'FAILED']).meta({\n title: 'Methodology Compliance',\n description: 'Result of methodology compliance check',\n examples: ['PASSED', 'FAILED'],\n});\n\nexport type MethodologyCompliance = z.infer<typeof MethodologyComplianceSchema>;\n\nexport const AuditReferenceSchema = z\n .strictObject({\n date: IsoDateSchema.meta({\n title: 'Audit Date',\n description: 'Date when the audit was completed',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Audit External ID',\n description: 'Unique identifier for the audit',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Audit External URL',\n description: 'URL to view the audit on Carrot Explorer',\n }),\n methodology_compliance: MethodologyComplianceSchema.meta({\n title: 'Methodology Compliance',\n description: 'Result of methodology compliance check',\n }),\n rules_executed: NonNegativeIntegerSchema.meta({\n title: 'Rules Executed',\n description: 'Number of rules executed during the audit',\n }),\n report: IpfsUriSchema.meta({\n title: 'Audit Report',\n description: 'IPFS URI of the audit report',\n }),\n })\n .meta({\n title: 'Audit Reference',\n description: 'Reference to an audit record',\n });\n\nexport type AuditReference = z.infer<typeof AuditReferenceSchema>;\n","import { z } from 'zod';\nimport {\n ExternalIdSchema,\n TokenIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n} from '../definitions.schema';\n\nexport const GasIDReferenceSchema = z\n .strictObject({\n external_id: ExternalIdSchema.meta({\n title: 'GasID External ID',\n description: 'Unique identifier for the GasID',\n }),\n token_id: TokenIdSchema.meta({\n title: 'GasID Token ID',\n description: 'NFT token ID of the GasID',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'GasID External URL',\n description: 'URL to view the GasID on Carrot Explorer',\n }),\n uri: IpfsUriSchema.meta({\n title: 'GasID IPFS URI',\n description: 'IPFS URI of the GasID record',\n }),\n })\n .meta({\n title: 'GasID Reference',\n description: 'Reference to a GasID record',\n });\n\nexport type GasIDReference = z.infer<typeof GasIDReferenceSchema>;\n","import { z } from 'zod';\nimport {\n ExternalIdSchema,\n TokenIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n} from '../definitions.schema';\n\nexport const MassIDReferenceSchema = z\n .strictObject({\n external_id: ExternalIdSchema.meta({\n title: 'MassID External ID',\n description: 'Unique identifier for the MassID',\n }),\n token_id: TokenIdSchema.meta({\n title: 'MassID Token ID',\n description: 'NFT token ID of the MassID',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'MassID External URL',\n description: 'URL to view the MassID on Carrot Explorer',\n }),\n uri: IpfsUriSchema.meta({\n title: 'MassID IPFS URI',\n description: 'IPFS URI of the MassID record',\n }),\n })\n .meta({\n title: 'MassID Reference',\n description: 'Reference to a MassID record',\n });\n\nexport type MassIDReference = z.infer<typeof MassIDReferenceSchema>;\n","import { z } from 'zod';\nimport {\n ExternalIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n SemanticVersionSchema,\n NonEmptyStringSchema,\n} from '../definitions.schema';\n\nexport const MethodologyReferenceSchema = z\n .strictObject({\n external_id: ExternalIdSchema.meta({\n title: 'Methodology External ID',\n description: 'Unique identifier for the methodology',\n }),\n name: NonEmptyStringSchema.min(5)\n .max(150)\n .meta({\n title: 'Methodology Name',\n description: 'Human-readable name of the methodology',\n examples: ['BOLD Carbon (CH₄)', 'BOLD Recycling'],\n }),\n version: SemanticVersionSchema.meta({\n title: 'Methodology Version',\n description: 'Version of the methodology',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Methodology External URL',\n description: 'URL to view the methodology on Carrot Explorer',\n }),\n uri: IpfsUriSchema.optional().meta({\n title: 'Methodology IPFS URI',\n description: 'IPFS URI to the methodology record',\n }),\n })\n .meta({\n title: 'Methodology Reference',\n description: 'Reference to a methodology record',\n });\n\nexport type MethodologyReference = z.infer<typeof MethodologyReferenceSchema>;\n","import { z } from 'zod';\nimport {\n WasteTypeSchema,\n WasteSubtypeSchema,\n WeightKgSchema,\n UuidSchema,\n ParticipantNameSchema,\n ParticipantRoleSchema,\n ExternalUrlSchema,\n NonEmptyStringSchema,\n PercentageSchema,\n} from '../definitions.schema';\n\nexport const WasteClassificationSchema = z\n .strictObject({\n primary_type: WasteTypeSchema.meta({\n title: 'Source Waste Primary Type',\n description: 'Primary type of the source waste',\n }),\n subtype: WasteSubtypeSchema.meta({\n title: 'Source Waste Subtype',\n description: 'Subtype of the source waste',\n }),\n net_weight_kg: WeightKgSchema.meta({\n title: 'Source Waste Net Weight',\n description: 'Net weight of the source waste',\n }),\n })\n .meta({\n title: 'Waste Classification',\n description: 'Classification of the source waste (MassID)',\n });\n\nexport type WasteClassification = z.infer<typeof WasteClassificationSchema>;\n\nexport const AccreditedParticipantSchema = z\n .strictObject({\n participant_id: UuidSchema.meta({\n title: 'Participant ID',\n description: 'Unique identifier for the participant',\n }),\n name: ParticipantNameSchema.meta({\n title: 'Participant Name',\n description: 'Name of the participant',\n }),\n role: ParticipantRoleSchema.meta({\n title: 'Participant Role',\n description: 'Role of the participant in the supply chain',\n }),\n accreditation_id: UuidSchema.meta({\n title: 'Accreditation ID',\n description: 'Unique identifier for the participant accreditation',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Participant Accreditation External URL',\n description:\n 'URL to view the participant accreditation on Carrot Explorer',\n }),\n })\n .meta({\n title: 'Accredited Participant',\n description: 'Participant with valid accreditation in the supply chain',\n });\n\nexport type AccreditedParticipant = z.infer<typeof AccreditedParticipantSchema>;\n\nexport const AccreditedParticipantsSchema = z\n .array(AccreditedParticipantSchema)\n .min(1)\n .meta({\n title: 'Accredited Participants',\n description: 'List of participants with valid accreditations',\n });\n\nexport type AccreditedParticipants = z.infer<\n typeof AccreditedParticipantsSchema\n>;\n\nexport const RewardAllocationSchema = z\n .strictObject({\n participant_id: UuidSchema.meta({\n title: 'Participant ID',\n description: 'Unique identifier for the participant receiving the reward',\n }),\n participant_name: ParticipantNameSchema.meta({\n title: 'Participant Name',\n description: 'Name of the participant receiving the reward',\n }),\n role: ParticipantRoleSchema.meta({\n title: 'Participant Role',\n description: 'Role of the participant in the supply chain',\n }),\n reward_percentage: PercentageSchema.meta({\n title: 'Reward Percentage',\n description: 'Reward percentage allocated to the participant',\n }),\n large_business_discount_applied: z.boolean().optional().meta({\n title: 'Large Business Discount Applied',\n description: 'Whether the large business discount was applied',\n }),\n effective_percentage: PercentageSchema.meta({\n title: 'Effective Percentage',\n description: 'Effective percentage of the reward after discounts',\n }),\n })\n .meta({\n title: 'Reward Allocation',\n description: 'Reward allocation for a specific participant',\n });\n\nexport type RewardAllocation = z.infer<typeof RewardAllocationSchema>;\n\nexport const DistributionNotesSchema = z\n .strictObject({\n large_business_discount_applied: NonEmptyStringSchema.optional().meta({\n title: 'Large Business Discount Applied',\n description: 'Description of the large business discount applied',\n examples: [\n '50% reduction applied to participants with >$4M annual revenue',\n ],\n }),\n redirected_rewards: NonEmptyStringSchema.optional().meta({\n title: 'Redirected Rewards',\n description: 'Description of the redirected rewards',\n examples: [\n 'Discounted rewards from large businesses redirected to accredited NGOs',\n ],\n }),\n })\n .meta({\n title: 'Distribution Notes',\n description: 'Additional notes about the reward distribution',\n });\n\nexport type DistributionNotes = z.infer<typeof DistributionNotesSchema>;\n\nexport const ParticipantRewardsSchema = z\n .strictObject({\n distribution_basis: NonEmptyStringSchema.max(200).meta({\n title: 'Distribution Basis',\n description: 'Basis for the rewards distribution',\n }),\n reward_allocations: z.array(RewardAllocationSchema).min(1).meta({\n title: 'Reward Allocations',\n description: 'Rewards percentage allocated to each participant',\n }),\n distribution_notes: DistributionNotesSchema.optional().meta({\n title: 'Distribution Notes',\n description: 'Additional notes about the reward distribution',\n }),\n })\n .meta({\n title: 'Participant Rewards',\n description: 'Rewards distribution to participants',\n });\n\nexport type ParticipantRewards = z.infer<typeof ParticipantRewardsSchema>;\n","import { z } from 'zod';\nimport {\n Keccak256HashSchema,\n SemanticVersionSchema,\n Sha256HashSchema,\n IsoTimestampSchema,\n ExternalIdSchema,\n ExternalUrlSchema,\n UuidSchema,\n RecordSchemaTypeSchema,\n IpfsUriSchema,\n RecordRelationshipTypeSchema,\n} from './definitions.schema';\n\nconst SchemaHashSchema = z\n .union([\n Keccak256HashSchema,\n z\n .string()\n .regex(\n /^0x[a-fA-F0-9]{64}$/,\n 'Must be a Keccak256 hash as 0x-prefixed hex string',\n ),\n ])\n .meta({\n title: 'Schema Hash',\n description:\n 'Keccak256 hash of the JSON Schema this record was validated against',\n examples: [\n 'ac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f',\n '0xac08c3cf2e175e55961d6affdb38bc24591b84ceef7f3707c69ae3d52c148b2f',\n ],\n });\n\nconst SchemaInfoSchema = z\n .strictObject({\n hash: SchemaHashSchema,\n type: RecordSchemaTypeSchema.meta({\n title: 'Schema Type',\n description: 'Type/category of this schema',\n }),\n version: SemanticVersionSchema.meta({\n title: 'Schema Version',\n description: 'Version of the schema, using semantic versioning',\n }),\n })\n .meta({\n title: 'Schema Information',\n });\n\nexport type SchemaInfo = z.infer<typeof SchemaInfoSchema>;\n\nconst RecordCreatorSchema = z\n .strictObject({\n name: z.string().meta({\n title: 'Creator Name',\n description: 'Company or individual name that created this record',\n examples: ['Carrot Foundation'],\n }),\n id: UuidSchema.meta({\n title: 'Creator ID',\n description: 'Unique identifier for the creator',\n }),\n })\n .meta({\n title: 'Creator',\n description: 'Entity that created this record',\n });\n\nexport type RecordCreator = z.infer<typeof RecordCreatorSchema>;\n\nconst RecordRelationshipSchema = z\n .strictObject({\n target_uri: IpfsUriSchema.meta({\n title: 'Target IPFS URI',\n description: 'Target IPFS URI of the referenced record',\n }),\n type: RecordRelationshipTypeSchema.meta({\n title: 'Relationship Type',\n description: 'Type of relationship to the referenced record',\n }),\n description: z\n .string()\n .optional()\n .meta({\n title: 'Relationship Description',\n description: 'Human-readable description of the relationship',\n examples: [\n 'This record supersedes the previous version',\n 'Related carbon credit batch',\n 'Source document for this verification',\n 'Child record derived from this parent',\n 'Updated version of original record',\n ],\n }),\n })\n .meta({\n title: 'Relationship',\n description: 'Relationship to another IPFS record',\n });\n\nexport type RecordRelationship = z.infer<typeof RecordRelationshipSchema>;\n\nexport const RecordEnvironmentSchema = z\n .strictObject({\n blockchain_network: z.enum(['mainnet', 'testnet']).meta({\n title: 'Blockchain Network',\n description: 'Blockchain Network Environment',\n }),\n deployment: z.enum(['production', 'development', 'testing']).meta({\n title: 'Deployment Environment',\n description: 'System environment where this record was generated',\n }),\n data_set_name: z.enum(['TEST', 'PROD']).meta({\n title: 'Data Set Name',\n description: 'Name of the data set for this record',\n }),\n })\n .meta({\n title: 'Environment',\n description: 'Environment information',\n });\n\nexport type RecordEnvironment = z.infer<typeof RecordEnvironmentSchema>;\n\nexport const BaseIpfsSchema = z\n .strictObject({\n $schema: z.url('Must be a valid URI').meta({\n title: 'JSON Schema URI',\n description: 'URI of the JSON Schema used to validate this record',\n example:\n 'https://raw.githubusercontent.com/carrot-foundation/schemas/refs/heads/main/schemas/ipfs/shared/base/base.schema.json',\n }),\n schema: SchemaInfoSchema,\n created_at: IsoTimestampSchema.meta({\n title: 'Created At',\n description: 'ISO 8601 creation timestamp for this record',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'External ID',\n description: 'Off-chain reference ID (UUID from Carrot backend)',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'External URL',\n description: 'External URL of the content',\n }),\n original_content_hash: Sha256HashSchema.meta({\n title: 'Original Content Hash',\n description:\n 'SHA-256 hash of the original JSON content including private data before schema validation',\n }),\n content_hash: Sha256HashSchema.meta({\n title: 'Content Hash',\n description:\n 'SHA-256 hash of RFC 8785 canonicalized JSON after schema validation',\n }),\n creator: RecordCreatorSchema.optional(),\n relationships: z.array(RecordRelationshipSchema).optional().meta({\n title: 'Relationships',\n description: 'References to other IPFS records this record relates to',\n }),\n environment: RecordEnvironmentSchema.optional(),\n data: z.record(z.string(), z.unknown()).optional().meta({\n title: 'Custom Data',\n description: \"Custom data block that includes the record's data\",\n }),\n })\n .meta({\n title: 'Base IPFS Record',\n description:\n 'Base fields for all Carrot IPFS records, providing common structure for any JSON content stored in IPFS',\n });\n\nexport type BaseIpfs = z.infer<typeof BaseIpfsSchema>;\n","import { z } from 'zod';\nimport { BaseIpfsSchema } from './base.schema';\nimport {\n EthereumAddressSchema,\n BlockchainChainIdSchema,\n TokenIdSchema,\n IpfsUriSchema,\n HexColorSchema,\n NonNegativeFloatSchema,\n RecordSchemaTypeSchema,\n} from './definitions.schema';\nimport { uniqueBy } from './helpers.schema';\n\nconst NftSchemaTypeSchema = RecordSchemaTypeSchema.extract([\n 'MassID',\n 'RecycledID',\n 'GasID',\n 'CreditPurchaseReceipt',\n 'CreditRetirementReceipt',\n]).meta({\n title: 'NFT Schema Type',\n description: 'Type of schema for NFT records',\n});\n\nexport type NftSchemaType = z.infer<typeof NftSchemaTypeSchema>;\n\nconst BlockchainReferenceSchema = z\n .strictObject({\n smart_contract_address: EthereumAddressSchema.meta({\n title: 'Smart Contract Address',\n }),\n chain_id: BlockchainChainIdSchema.meta({\n title: 'Chain ID',\n description: 'Blockchain chain ID',\n }),\n network_name: z.string().min(5).max(100).meta({\n title: 'Network Name',\n description: 'Name of the blockchain network',\n }),\n token_id: TokenIdSchema.meta({\n title: 'Token ID',\n description: 'NFT token ID',\n }),\n })\n .meta({\n title: 'Blockchain Information',\n description: 'Blockchain-specific information for the NFT',\n });\n\nexport type BlockchainReference = z.infer<typeof BlockchainReferenceSchema>;\n\nconst ExternalLinkSchema = z\n .strictObject({\n label: z.string().min(1).max(50).meta({\n title: 'Link Label',\n description: 'Display name for the external link',\n }),\n url: z.url('Must be a valid URI').meta({\n title: 'Link URL',\n description: 'Direct URI to the linked resource',\n }),\n description: z.string().min(10).max(100).optional().meta({\n title: 'Link Description',\n description: 'Optional context about what the link provides',\n }),\n })\n .meta({\n title: 'External Link',\n description: 'External link with label and description',\n });\n\nexport type ExternalLink = z.infer<typeof ExternalLinkSchema>;\n\nexport const NftAttributeSchema = z\n .strictObject({\n trait_type: z.string().max(50).meta({\n title: 'Trait Type',\n description: 'Name of the trait or attribute',\n }),\n value: z.union([z.string(), z.number(), z.boolean()]).meta({\n title: 'Trait Value',\n description: 'Value of the trait - can be string, number, or boolean',\n }),\n display_type: z\n .enum(['number', 'date', 'boost_number', 'boost_percentage'])\n .optional()\n .meta({\n title: 'Display Type',\n description: 'How the trait should be displayed in marketplace UIs',\n }),\n max_value: NonNegativeFloatSchema.optional().meta({\n title: 'Max Value',\n description: 'Maximum possible value for numeric traits',\n }),\n })\n .meta({\n title: 'NFT Attribute',\n description: 'NFT attribute or trait with type and value',\n });\n\nexport type NftAttribute = z.infer<typeof NftAttributeSchema>;\n\nexport const NftIpfsSchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: NftSchemaTypeSchema.meta({\n title: 'NFT Schema Type',\n description: 'Type/category of this NFT schema',\n }),\n }),\n blockchain: BlockchainReferenceSchema,\n name: z\n .string()\n .min(1)\n .max(100)\n .meta({\n title: 'NFT Name',\n description: 'Full display name for this NFT, including extra context',\n examples: [\n 'MassID #123 • Organic • 3.0t',\n 'RecycledID #456 • Plastic • 2.5t',\n 'GasID #789 • Methane • 1000 m³',\n ],\n }),\n short_name: z\n .string()\n .min(1)\n .max(50)\n .meta({\n title: 'Short Name',\n description: 'Compact name for UI summaries, tables, or tooltips',\n examples: ['MassID #123', 'RecycledID #456', 'GasID #789'],\n }),\n description: z\n .string()\n .min(10)\n .max(500)\n .meta({\n title: 'Description',\n description:\n \"Human-readable summary of the NFT's role and context. Ideally, maximum 300 characters.\",\n examples: [\n 'This MassID represents 3 metric tons of organic food waste from Enlatados Produção, tracked through complete chain of custody from generation to composting.',\n 'This RecycledID represents 2.5 metric tons of recycled plastic bottles processed by Green Solutions Ltd.',\n ],\n }),\n image: IpfsUriSchema.meta({\n title: 'Image URI',\n description: 'IPFS URI pointing to the preview image',\n }),\n background_color: HexColorSchema.optional().meta({\n title: 'Background Color',\n description: 'Hex color code for marketplace background display',\n }),\n animation_url: IpfsUriSchema.optional().meta({\n title: 'Animation URL',\n description: 'IPFS URI pointing to an animated or interactive media file',\n examples: [\n 'ipfs://QmAnimation123/mass-id-animation.mp4',\n 'ipfs://QmInteractive456/recycled-visualization.webm',\n ],\n }),\n external_links: uniqueBy(\n ExternalLinkSchema,\n (link) => link.url,\n 'External link URLs must be unique',\n )\n .max(10)\n .optional()\n .meta({\n title: 'External Links',\n description: 'Optional list of public resource links with labels',\n examples: [\n [\n {\n label: 'Carrot Explorer',\n url: 'https://explore.carrot.eco/document/ad44dd3f-f176-4b98-bf78-5ee6e77d0530',\n description: 'Complete chain of custody and audit trail',\n },\n {\n label: 'Carrot White Paper',\n url: 'https://carrot.eco/whitepaper.pdf',\n description: 'Carrot Foundation technical and impact white paper',\n },\n ],\n ],\n }),\n attributes: uniqueBy(\n NftAttributeSchema,\n (attr) => attr.trait_type,\n 'Attribute trait_type values must be unique',\n ).meta({\n title: 'NFT Attributes',\n description:\n 'List of visual traits and filterable attributes compatible with NFT marketplaces',\n examples: [\n [\n {\n trait_type: 'Waste Type',\n value: 'Organic',\n },\n {\n trait_type: 'Waste Subtype',\n value: 'Food, Food Waste and Beverages',\n },\n {\n trait_type: 'Weight (kg)',\n value: 3000,\n display_type: 'number',\n },\n {\n trait_type: 'Origin Country',\n value: 'Brazil',\n },\n {\n trait_type: 'Pick-up Date',\n value: '2024-12-05',\n display_type: 'date',\n },\n ],\n ],\n }),\n}).meta({\n title: 'NFT IPFS Record',\n description: 'NFT-specific fields for Carrot IPFS records',\n});\n\nexport type NftIpfs = z.infer<typeof NftIpfsSchema>;\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\n\nfunction getPackageJsonVersion(): string {\n try {\n const packageJsonPath = resolve(process.cwd(), 'package.json');\n const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf8'));\n return packageJson.version || '0.0.0-dev';\n } catch {\n return '0.0.0-dev';\n }\n}\n\nexport function getSchemaBaseUrl(): string {\n return `https://raw.githubusercontent.com/carrot-foundation/schemas/refs/tags/${getSchemaVersionOrDefault()}/schemas/ipfs`;\n}\n\nexport function buildSchemaUrl(schemaPath: string): string {\n const cleanPath = schemaPath.startsWith('/')\n ? schemaPath.slice(1)\n : schemaPath;\n return `${getSchemaBaseUrl()}/${cleanPath}`;\n}\n\nexport function getSchemaVersionOrDefault(): string {\n return process.env['SCHEMA_VERSION'] || getPackageJsonVersion();\n}\n","import { z } from 'zod';\nimport { NftAttributeSchema } from './nft.schema';\nimport {\n NonEmptyStringSchema,\n WeightKgSchema,\n UnixTimestampSchema,\n WasteTypeSchema,\n MethodologyNameSchema,\n StringifiedTokenIdSchema,\n CountryNameSchema,\n MunicipalitySchema,\n CreditAmountSchema,\n CreditTypeSchema,\n} from './definitions.schema';\n\nexport const MethodologyAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Methodology'),\n value: MethodologyNameSchema,\n}).meta({\n title: 'Methodology Attribute',\n description: 'Methodology used for certification',\n});\nexport type MethodologyAttribute = z.infer<typeof MethodologyAttributeSchema>;\n\nexport const CreditAmountAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Credit Amount'),\n value: CreditAmountSchema,\n display_type: z.literal('number'),\n}).meta({\n title: 'Credit Amount Attribute',\n description: 'Credit amount attribute with numeric display',\n});\nexport type CreditAmountAttribute = z.infer<typeof CreditAmountAttributeSchema>;\n\nexport const CreditTypeAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Credit Type'),\n value: CreditTypeSchema,\n}).meta({\n title: 'Credit Type Attribute',\n description: 'Credit type attribute',\n});\nexport type CreditTypeAttribute = z.infer<typeof CreditTypeAttributeSchema>;\n\nexport const SourceWasteTypeAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Source Waste Type'),\n value: WasteTypeSchema,\n}).meta({\n title: 'Source Waste Type Attribute',\n description: 'Source waste type attribute',\n});\nexport type SourceWasteTypeAttribute = z.infer<\n typeof SourceWasteTypeAttributeSchema\n>;\n\nexport const SourceWeightAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Source Weight (kg)'),\n value: WeightKgSchema.meta({\n title: 'Source Weight',\n description: 'Weight of the source waste in kilograms',\n }),\n display_type: z.literal('number'),\n}).meta({\n title: 'Source Weight Attribute',\n description: 'Source weight attribute with numeric display',\n});\nexport type SourceWeightAttribute = z.infer<typeof SourceWeightAttributeSchema>;\n\nexport const OriginCountryAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Origin Country'),\n value: CountryNameSchema,\n}).meta({\n title: 'Origin Country Attribute',\n description: 'Origin country attribute',\n});\nexport type OriginCountryAttribute = z.infer<\n typeof OriginCountryAttributeSchema\n>;\n\nexport const OriginMunicipalityAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Origin Municipality'),\n value: MunicipalitySchema,\n}).meta({\n title: 'Origin Municipality Attribute',\n description: 'Origin municipality attribute',\n});\nexport type OriginMunicipalityAttribute = z.infer<\n typeof OriginMunicipalityAttributeSchema\n>;\n\nexport const RecyclerAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycler'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Recycler',\n description: 'Organization that processed the waste',\n example: 'Eco Reciclagem',\n }),\n}).meta({\n title: 'Recycler Attribute',\n description: 'Recycler attribute',\n});\nexport type RecyclerAttribute = z.infer<typeof RecyclerAttributeSchema>;\n\nexport const MassIDTokenIdAttributeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('MassID'),\n value: StringifiedTokenIdSchema.meta({\n title: 'MassID Token ID',\n description: 'Token ID of the source MassID NFT as #<token_id>',\n }),\n}).meta({\n title: 'MassID Token ID Attribute',\n description: 'MassID token ID attribute',\n});\nexport type MassIDTokenIdAttribute = z.infer<\n typeof MassIDTokenIdAttributeSchema\n>;\n\nexport const MassIDRecyclingDateAttributeSchema = NftAttributeSchema.omit({\n max_value: true,\n})\n .safeExtend({\n trait_type: z.literal('MassID Recycling Date'),\n value: UnixTimestampSchema.meta({\n title: 'MassID Recycling Date',\n description:\n 'Unix timestamp in milliseconds when the source waste was recycled',\n }),\n display_type: z.literal('date'),\n })\n .meta({\n title: 'MassID Recycling Date Attribute',\n description:\n 'MassID recycling date attribute using Unix timestamp in milliseconds',\n });\nexport type MassIDRecyclingDateAttribute = z.infer<\n typeof MassIDRecyclingDateAttributeSchema\n>;\n","import { z } from 'zod';\nimport {\n NonEmptyStringSchema,\n PositiveIntegerSchema,\n SlugSchema,\n UuidSchema,\n} from './definitions.schema';\nimport { MethodologyComplianceSchema } from './references/audit-reference.schema';\n\nexport const AuditRuleDefinitionSchema = z\n .strictObject({\n rule_id: UuidSchema.meta({\n title: 'Rule ID',\n description: 'Unique identifier for the audit rule',\n }),\n rule_slug: SlugSchema.meta({\n title: 'Rule Slug',\n description: 'URL-friendly identifier for the rule',\n }),\n rule_name: NonEmptyStringSchema.max(100).meta({\n title: 'Rule Name',\n description: 'Human-readable name of the rule',\n examples: ['Waste Mass is Unique', 'No Conflicting GasID or Credit'],\n }),\n description: z\n .string()\n .min(10)\n .max(500)\n .meta({\n title: 'Rule Description',\n description:\n 'Detailed description of what the rule validates and why it is necessary',\n examples: [\n 'Validates that each MassID is unique within the system to prevent duplicate entries',\n ],\n }),\n source_code_url: z\n .url()\n .regex(/^https:\\/\\/github\\.com\\/.*$/, 'Must be a GitHub URL')\n .meta({\n title: 'Rule Source Code URL',\n description:\n 'GitHub URL pointing to the implementation source code for this rule',\n examples: [\n 'https://github.com/carrot-foundation/methodologies/blob/main/bold-carbon/rules/waste-mass-unique.js',\n ],\n }),\n mandatory: z.boolean().meta({\n title: 'Mandatory',\n description: 'Whether this rule is mandatory for methodology compliance',\n }),\n execution_order: PositiveIntegerSchema.meta({\n title: 'Rule Execution Order',\n description: 'Sequential order in which this rule must be executed',\n }),\n })\n .meta({\n title: 'Audit Rule Definition',\n description:\n 'Definition of an audit rule that must be executed for methodology compliance',\n });\n\nexport type AuditRuleDefinition = z.infer<typeof AuditRuleDefinitionSchema>;\n\nexport const AuditRuleDefinitionsSchema = z\n .array(AuditRuleDefinitionSchema)\n .min(1)\n .meta({\n title: 'Audit Rule Definitions',\n description:\n 'List of audit rules that must be executed to check methodology compliance',\n });\n\nexport type AuditRuleDefinitions = z.infer<typeof AuditRuleDefinitionsSchema>;\n\nexport const AuditRuleExecutionResultSchema = z\n .strictObject({\n rule_name: NonEmptyStringSchema.meta({\n title: 'Rule Name',\n description: 'Human-readable name of the audit rule',\n }),\n rule_id: UuidSchema.meta({\n title: 'Rule ID',\n description: 'Unique identifier for the rule',\n }),\n rule_slug: SlugSchema.meta({\n title: 'Rule Slug',\n description: 'URL-friendly identifier for the rule',\n }),\n execution_order: PositiveIntegerSchema.meta({\n title: 'Rule Execution Order',\n description: 'Sequential order in which this rule was executed',\n }),\n result: MethodologyComplianceSchema.meta({\n title: 'Rule Execution Result',\n description: 'Result of the rule execution',\n }),\n description: z.string().min(1).max(2000).meta({\n title: 'Rule Description',\n description: 'Detailed description of what this rule validates',\n }),\n rule_processor_checksum: NonEmptyStringSchema.max(200).meta({\n title: 'Rule Processor Checksum',\n description: 'Checksum for rule processor integrity verification',\n }),\n rule_source_code_version: NonEmptyStringSchema.max(200).meta({\n title: 'Rule Source Code Version',\n description: 'Version identifier for the rule source code',\n }),\n })\n .meta({\n title: 'Audit Rule Execution Result',\n description: 'Detailed result of an audit rule execution',\n });\n\nexport type AuditRuleExecutionResult = z.infer<\n typeof AuditRuleExecutionResultSchema\n>;\n\nexport const AuditRuleExecutionResultsSchema = z\n .array(AuditRuleExecutionResultSchema)\n .meta({\n title: 'Audit Rule Execution Results',\n description: 'Detailed results of each audit rule execution',\n });\n\nexport type AuditRuleExecutionResults = z.infer<\n typeof AuditRuleExecutionResultsSchema\n>;\n","import { z, type ZodRawShape } from 'zod';\n\nimport {\n CollectionNameSchema,\n CollectionSlugSchema,\n CreditAmountSchema,\n CreditTokenSymbolSchema,\n ExternalIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n IsoDateSchema,\n NonNegativeFloatSchema,\n ParticipantNameSchema,\n PositiveIntegerSchema,\n RecordSchemaTypeSchema,\n SlugSchema,\n SmartContractSchema,\n TokenIdSchema,\n uniqueArrayItems,\n MassIDReferenceSchema,\n} from '..';\n\ntype Meta = {\n title: string;\n description: string;\n};\n\nexport const EPSILON = 1e-9;\n\nexport function nearlyEqual(a: number, b: number, epsilon: number = EPSILON) {\n return Math.abs(a - b) <= epsilon;\n}\n\nconst SummaryBaseSchema = z.strictObject({\n total_certificates: PositiveIntegerSchema.meta({\n title: 'Total Certificates',\n description: 'Total number of certificates represented in the receipt',\n }),\n credit_symbols: uniqueArrayItems(\n CreditTokenSymbolSchema,\n 'Credit symbols must be unique',\n )\n .min(1)\n .meta({\n title: 'Credit Symbols',\n description: 'Array of credit token symbols represented in the receipt',\n }),\n certificate_types: uniqueArrayItems(\n RecordSchemaTypeSchema.extract(['GasID', 'RecycledID']),\n 'Certificate types must be unique',\n )\n .min(1)\n .meta({\n title: 'Certificate Types',\n description: 'Array of certificate types represented in the receipt',\n }),\n collection_slugs: uniqueArrayItems(\n CollectionSlugSchema,\n 'Collection slugs must be unique',\n )\n .min(1)\n .meta({\n title: 'Collection Slugs',\n description: 'Array of collection slugs represented in the receipt',\n }),\n});\n\nexport const CreditPurchaseReceiptSummarySchema = SummaryBaseSchema.extend({\n total_usdc_amount: NonNegativeFloatSchema.meta({\n title: 'Total USDC Amount',\n description: 'Total amount paid in USDC for the purchase',\n }),\n total_credits: CreditAmountSchema.meta({\n title: 'Total Credits',\n description: 'Total amount of credits purchased',\n }),\n purchase_date: IsoDateSchema.meta({\n title: 'Purchase Date',\n description: 'Date when the purchase was made (YYYY-MM-DD)',\n }),\n}).meta({\n title: 'Credit Purchase Receipt Summary',\n description:\n 'Summary totals for the credit purchase including amounts and collections represented',\n});\n\nexport const CreditRetirementReceiptSummarySchema = SummaryBaseSchema.extend({\n total_retirement_amount: CreditAmountSchema.meta({\n title: 'Total Retirement Amount',\n description: 'Total amount of credits retired',\n }),\n retirement_date: IsoDateSchema.meta({\n title: 'Retirement Date',\n description: 'Date when the retirement occurred (YYYY-MM-DD)',\n }),\n}).meta({\n title: 'Credit Retirement Receipt Summary',\n description:\n 'Summary totals for the credit retirement including amounts and collections represented',\n});\n\nexport const ReceiptIdentitySchema = z\n .strictObject({\n name: ParticipantNameSchema.meta({\n title: 'Identity Name',\n description: 'Display name for the participant',\n examples: ['EcoTech Solutions Inc.', 'Climate Action Corp'],\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Identity External ID',\n description: 'External identifier for the participant',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Identity External URL',\n description: 'External URL for the participant profile',\n }),\n })\n .meta({\n title: 'Identity',\n description: 'Participant identity information',\n });\n\nexport type ReceiptIdentity = z.infer<typeof ReceiptIdentitySchema>;\n\nexport const MassIdReferenceWithContractSchema =\n MassIDReferenceSchema.safeExtend({\n smart_contract: SmartContractSchema,\n }).meta({\n title: 'MassID Reference with Smart Contract',\n description:\n 'Reference to a MassID record including smart contract details',\n });\n\nexport type MassIdReferenceWithContract = z.infer<\n typeof MassIdReferenceWithContractSchema\n>;\n\nexport function createReceiptCollectionSchema(params: {\n amountKey: 'credit_amount' | 'amount';\n amountMeta: Meta;\n meta: Meta;\n}) {\n const { amountKey, amountMeta, meta } = params;\n\n return z\n .strictObject({\n slug: CollectionSlugSchema,\n external_id: ExternalIdSchema.meta({\n title: 'Collection External ID',\n description: 'External identifier for the collection',\n }),\n name: CollectionNameSchema,\n external_url: ExternalUrlSchema.meta({\n title: 'Collection External URL',\n description: 'External URL for the collection',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Collection URI',\n description: 'IPFS URI for the collection metadata',\n }),\n [amountKey]: CreditAmountSchema.meta(amountMeta),\n })\n .meta(meta);\n}\n\nexport function createReceiptCreditSchema(params: {\n amountKey: 'purchase_amount' | 'amount';\n amountMeta: Meta;\n meta: Meta;\n retirementAmountMeta?: Meta;\n}) {\n const { amountKey, amountMeta, meta, retirementAmountMeta } = params;\n const creditShape: Record<string, z.ZodTypeAny> = {\n slug: SlugSchema.meta({\n title: 'Credit Slug',\n description: 'URL-friendly identifier for the credit',\n }),\n symbol: CreditTokenSymbolSchema.meta({\n title: 'Credit Token Symbol',\n description: 'Symbol of the credit token',\n examples: ['CARBON', 'ORGANIC', 'C-CARB', 'C-BIOW'],\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Credit External ID',\n description: 'External identifier for the credit',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Credit External URL',\n description: 'External URL for the credit',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Credit URI',\n description: 'IPFS URI for the credit details',\n }),\n smart_contract: SmartContractSchema,\n [amountKey]: CreditAmountSchema.meta(amountMeta),\n };\n\n if (retirementAmountMeta) {\n creditShape.retirement_amount =\n CreditAmountSchema.optional().meta(retirementAmountMeta);\n }\n\n return z.strictObject(creditShape).meta(meta);\n}\n\nconst certificateBaseShape = {\n token_id: TokenIdSchema.meta({\n title: 'Certificate Token ID',\n description: 'Token ID of the certificate',\n }),\n type: RecordSchemaTypeSchema.extract(['GasID', 'RecycledID']).meta({\n title: 'Certificate Type',\n description: 'Type of certificate (e.g., GasID, RecycledID)',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Certificate External ID',\n description: 'External identifier for the certificate',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Certificate External URL',\n description: 'External URL for the certificate',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Certificate URI',\n description: 'IPFS URI for the certificate metadata',\n }),\n smart_contract: SmartContractSchema,\n collection_slug: CollectionSlugSchema.meta({\n title: 'Collection Slug',\n description: 'Slug of the collection this certificate belongs to',\n }),\n total_amount: CreditAmountSchema.meta({\n title: 'Certificate Total Amount',\n description: 'Total credits available in this certificate',\n }),\n mass_id: MassIdReferenceWithContractSchema,\n} satisfies ZodRawShape;\n\nexport function createReceiptCertificateSchema<T extends ZodRawShape>(params: {\n additionalShape: T;\n meta: Meta;\n}) {\n return z\n .strictObject({\n ...certificateBaseShape,\n ...params.additionalShape,\n } as typeof certificateBaseShape & T)\n .meta(params.meta);\n}\n","import { z } from 'zod';\n\nimport { nearlyEqual } from './receipt.schemas';\n\ntype Attribute = {\n trait_type: string;\n value: unknown;\n};\n\ntype Message = string | ((value: string) => string);\n\nfunction buildMessage(message: Message, value: string) {\n return typeof message === 'function' ? message(value) : message;\n}\n\nexport function createAttributeMap(attributes: Attribute[]) {\n return new Map(\n attributes.map((attribute) => [attribute.trait_type, attribute]),\n );\n}\n\nexport function validateSummaryListMatchesData(params: {\n ctx: z.RefinementCtx;\n summaryValues: Iterable<string>;\n dataValues: Iterable<string>;\n summaryPath: (string | number)[];\n missingFromDataMessage: Message;\n missingFromSummaryMessage: Message;\n}) {\n const { ctx, summaryValues, dataValues, summaryPath } = params;\n const summarySet = new Set(summaryValues);\n const dataSet = new Set(dataValues);\n\n summarySet.forEach((value) => {\n if (!dataSet.has(value)) {\n ctx.addIssue({\n code: 'custom',\n message: buildMessage(params.missingFromDataMessage, value),\n path: summaryPath,\n });\n }\n });\n\n dataSet.forEach((value) => {\n if (!summarySet.has(value)) {\n ctx.addIssue({\n code: 'custom',\n message: buildMessage(params.missingFromSummaryMessage, value),\n path: summaryPath,\n });\n }\n });\n}\n\nexport function validateTotalMatches(params: {\n ctx: z.RefinementCtx;\n actualTotal: number;\n expectedTotal: number;\n path: (string | number)[];\n message: string;\n}) {\n const { ctx, actualTotal, expectedTotal, path, message } = params;\n if (!nearlyEqual(actualTotal, expectedTotal)) {\n ctx.addIssue({\n code: 'custom',\n message,\n path,\n });\n }\n}\n\nexport function validateCountMatches(params: {\n ctx: z.RefinementCtx;\n actualCount: number;\n expectedCount: number;\n path: (string | number)[];\n message: string;\n}) {\n const { ctx, actualCount, expectedCount, path, message } = params;\n if (actualCount !== expectedCount) {\n ctx.addIssue({\n code: 'custom',\n message,\n path,\n });\n }\n}\n\nexport function validateAttributeValue(params: {\n ctx: z.RefinementCtx;\n attributeByTraitType: Map<string, Attribute>;\n traitType: string;\n expectedValue: unknown;\n missingMessage: string;\n mismatchMessage: string;\n path?: (string | number)[];\n}) {\n const {\n ctx,\n attributeByTraitType,\n traitType,\n expectedValue,\n missingMessage,\n mismatchMessage,\n path = ['attributes'],\n } = params;\n\n const attribute = attributeByTraitType.get(traitType);\n if (!attribute) {\n ctx.addIssue({\n code: 'custom',\n message: missingMessage,\n path,\n });\n return;\n }\n\n if (attribute.value !== expectedValue) {\n ctx.addIssue({\n code: 'custom',\n message: mismatchMessage,\n path,\n });\n }\n}\n\nexport function validateDateAttribute(params: {\n ctx: z.RefinementCtx;\n attributeByTraitType: Map<string, Attribute>;\n traitType: string;\n dateValue: string;\n missingMessage: string;\n invalidDateMessage: string;\n mismatchMessage: string;\n attributePath?: (string | number)[];\n datePath?: (string | number)[];\n}) {\n const {\n ctx,\n attributeByTraitType,\n traitType,\n dateValue,\n missingMessage,\n invalidDateMessage,\n mismatchMessage,\n attributePath = ['attributes'],\n datePath,\n } = params;\n\n const attribute = attributeByTraitType.get(traitType);\n if (!attribute) {\n ctx.addIssue({\n code: 'custom',\n message: missingMessage,\n path: attributePath,\n });\n return;\n }\n\n const dateMs = Date.parse(`${dateValue}T00:00:00.000Z`);\n if (Number.isNaN(dateMs)) {\n ctx.addIssue({\n code: 'custom',\n message: invalidDateMessage,\n path: datePath ?? attributePath,\n });\n return;\n }\n\n if (attribute.value !== dateMs) {\n ctx.addIssue({\n code: 'custom',\n message: mismatchMessage,\n path: attributePath,\n });\n }\n}\n\nexport function validateAttributesForItems<T>(params: {\n ctx: z.RefinementCtx;\n attributeByTraitType: Map<string, Attribute>;\n items: T[];\n traitSelector: (item: T) => string;\n valueSelector: (item: T) => unknown;\n missingMessage: (trait: string) => string;\n mismatchMessage: (trait: string) => string;\n path?: (string | number)[];\n}) {\n const {\n ctx,\n attributeByTraitType,\n items,\n traitSelector,\n valueSelector,\n missingMessage,\n mismatchMessage,\n path = ['attributes'],\n } = params;\n\n items.forEach((item) => {\n const traitType = traitSelector(item);\n const expectedValue = valueSelector(item);\n const attribute = attributeByTraitType.get(traitType);\n if (!attribute) {\n ctx.addIssue({\n code: 'custom',\n message: missingMessage(traitType),\n path,\n });\n return;\n }\n\n if (attribute.value !== expectedValue) {\n ctx.addIssue({\n code: 'custom',\n message: mismatchMessage(traitType),\n path,\n });\n }\n });\n}\n","import { z } from 'zod';\nimport {\n WasteTypeSchema,\n WasteSubtypeSchema,\n WeightKgSchema,\n UnixTimestampSchema,\n HoursSchema,\n NonEmptyStringSchema,\n CountryNameSchema,\n MunicipalitySchema,\n AdministrativeDivisionSchema,\n uniqueBy,\n OriginCountryAttributeSchema,\n OriginMunicipalityAttributeSchema,\n NftAttributeSchema,\n} from '../shared';\n\nconst MassIDAttributeWasteTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Waste Type'),\n value: WasteTypeSchema,\n}).meta({\n title: 'Waste Type Attribute',\n description: 'Waste type attribute',\n});\n\nexport type MassIDAttributeWasteType = z.infer<\n typeof MassIDAttributeWasteTypeSchema\n>;\n\nconst MassIDAttributeWasteSubtypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Waste Subtype'),\n value: WasteSubtypeSchema,\n}).meta({\n title: 'Waste Subtype Attribute',\n description: 'Waste subtype attribute',\n});\n\nexport type MassIDAttributeWasteSubtype = z.infer<\n typeof MassIDAttributeWasteSubtypeSchema\n>;\n\nconst MassIDAttributeWeightSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Weight (kg)'),\n value: WeightKgSchema,\n display_type: z.literal('number'),\n}).meta({\n title: 'Weight Attribute',\n description: 'Weight attribute with numeric display',\n});\n\nexport type MassIDAttributeWeight = z.infer<typeof MassIDAttributeWeightSchema>;\n\nconst MassIDAttributeOriginCountrySchema =\n OriginCountryAttributeSchema.safeExtend({\n value: CountryNameSchema,\n });\n\nexport type MassIDAttributeOriginCountry = z.infer<\n typeof MassIDAttributeOriginCountrySchema\n>;\n\nconst MassIDAttributeOriginMunicipalitySchema =\n OriginMunicipalityAttributeSchema.safeExtend({\n value: MunicipalitySchema,\n });\n\nexport type MassIDAttributeOriginMunicipality = z.infer<\n typeof MassIDAttributeOriginMunicipalitySchema\n>;\n\nconst MassIDAttributeOriginDivisionSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Origin Administrative Division'),\n value: AdministrativeDivisionSchema,\n}).meta({\n title: 'Origin Administrative Division Attribute',\n description: 'Origin administrative division attribute',\n});\n\nexport type MassIDAttributeOriginDivision = z.infer<\n typeof MassIDAttributeOriginDivisionSchema\n>;\n\nconst MassIDAttributeVehicleTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Vehicle Type'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Vehicle Type',\n description: 'Type of vehicle used for waste transportation',\n examples: ['Garbage Truck', 'Box Truck', 'Flatbed Truck', 'Roll-off Truck'],\n }),\n}).meta({\n title: 'Vehicle Type Attribute',\n description: 'Vehicle type attribute',\n});\n\nexport type MassIDAttributeVehicleType = z.infer<\n typeof MassIDAttributeVehicleTypeSchema\n>;\n\nconst MassIDAttributeRecyclingMethodSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycling Method'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Recycling Method',\n description: 'Method used for recycling or processing the waste',\n examples: [\n 'Composting',\n 'Mechanical Recycling',\n 'Incineration with Energy Recovery',\n ],\n }),\n}).meta({\n title: 'Recycling Method Attribute',\n description: 'Recycling method attribute',\n});\n\nexport type MassIDAttributeRecyclingMethod = z.infer<\n typeof MassIDAttributeRecyclingMethodSchema\n>;\n\nconst MassIDAttributeProcessingTimeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Processing Time (hours)'),\n value: HoursSchema,\n trait_description: NonEmptyStringSchema.max(200).optional().meta({\n title: 'Processing Time Description',\n description: 'Custom description for the processing time',\n }),\n}).meta({\n title: 'Processing Time Attribute',\n description: 'Processing time attribute with optional trait description',\n});\n\nexport type MassIDAttributeProcessingTime = z.infer<\n typeof MassIDAttributeProcessingTimeSchema\n>;\n\nconst MassIDAttributeLocalWasteClassificationIdSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Local Waste Classification ID'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Local Waste Classification ID',\n description: 'Local or regional waste classification identifier',\n examples: ['04 02 20', 'IBAMA-A001', 'EWC-150101'],\n }),\n }).meta({\n title: 'Local Waste Classification ID Attribute',\n description: 'Local waste classification ID attribute',\n });\n\nexport type MassIDAttributeLocalWasteClassificationId = z.infer<\n typeof MassIDAttributeLocalWasteClassificationIdSchema\n>;\n\nconst MassIDAttributeRecyclingManifestCodeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycling Manifest Code'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Recycling Manifest Code',\n description:\n 'Concatenated recycling manifest code (Document Type + Document Number)',\n examples: ['CDF-2353', 'RC-12345', 'REC-MANIFEST-789'],\n }),\n }).meta({\n title: 'Recycling Manifest Code Attribute',\n description: 'Recycling manifest code attribute (optional)',\n });\n\nexport type MassIDAttributeRecyclingManifestCode = z.infer<\n typeof MassIDAttributeRecyclingManifestCodeSchema\n>;\n\nconst MassIDAttributeTransportManifestCodeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Transport Manifest Code'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Transport Manifest Code',\n description:\n 'Concatenated transport manifest code (Document Type + Document Number)',\n examples: ['MTR-4126', 'TRN-67890', 'TRANS-MANIFEST-456'],\n }),\n }).meta({\n title: 'Transport Manifest Code Attribute',\n description: 'Transport manifest code attribute (optional)',\n });\n\nexport type MassIDAttributeTransportManifestCode = z.infer<\n typeof MassIDAttributeTransportManifestCodeSchema\n>;\n\nconst MassIDAttributeWeighingCaptureMethodSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Weighing Capture Method'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Weighing Capture Method',\n description: 'Method used to capture weight data',\n examples: ['Digital', 'Manual', 'Automated', 'Electronic Scale'],\n }),\n }).meta({\n title: 'Weighing Capture Method Attribute',\n description: 'Weighing capture method attribute (optional)',\n });\n\nexport type MassIDAttributeWeighingCaptureMethod = z.infer<\n typeof MassIDAttributeWeighingCaptureMethodSchema\n>;\n\nconst MassIDAttributeScaleTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Scale Type'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Scale Type',\n description: 'Type of scale used for weighing',\n examples: [\n 'Weighbridge (Truck Scale)',\n 'Floor Scale',\n 'Bench Scale',\n 'Crane Scale',\n ],\n }),\n}).meta({\n title: 'Scale Type Attribute',\n description: 'Scale type attribute (optional)',\n});\n\nexport type MassIDAttributeScaleType = z.infer<\n typeof MassIDAttributeScaleTypeSchema\n>;\n\nconst MassIDAttributeContainerTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Container Type'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Container Type',\n description: 'Type of container used for waste storage or transport',\n examples: ['Truck', 'Dumpster', 'Roll-off Container', 'Compactor', 'Bin'],\n }),\n}).meta({\n title: 'Container Type Attribute',\n description: 'Container type attribute (optional)',\n});\n\nexport type MassIDAttributeContainerType = z.infer<\n typeof MassIDAttributeContainerTypeSchema\n>;\n\nconst MassIDAttributePickUpDateSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Pick-up Date'),\n value: UnixTimestampSchema.meta({\n title: 'Pick-up Date',\n description:\n 'Unix timestamp in milliseconds when the waste was picked up from the source',\n examples: [1710518400000, 1704067200000, 1715270400000],\n }),\n display_type: z.literal('date'),\n}).meta({\n title: 'Pick-up Date Attribute',\n description: 'Pick-up date attribute with Unix timestamp',\n});\n\nexport type MassIDAttributePickUpDate = z.infer<\n typeof MassIDAttributePickUpDateSchema\n>;\n\nconst MassIDAttributeRecyclingDateSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycling Date'),\n value: UnixTimestampSchema.meta({\n title: 'Recycling Date',\n description:\n 'Unix timestamp in milliseconds when the waste was recycled/processed',\n examples: [1710604800000, 1704153600000, 1715356800000],\n }),\n display_type: z.literal('date'),\n}).meta({\n title: 'Recycling Date Attribute',\n description: 'Recycling date attribute with Unix timestamp',\n});\n\nexport type MassIDAttributeRecyclingDate = z.infer<\n typeof MassIDAttributeRecyclingDateSchema\n>;\n\nexport const MassIDAttributesSchema = uniqueBy(\n z.union([\n MassIDAttributeWasteTypeSchema,\n MassIDAttributeWasteSubtypeSchema,\n MassIDAttributeWeightSchema,\n MassIDAttributeOriginCountrySchema,\n MassIDAttributeOriginMunicipalitySchema,\n MassIDAttributeOriginDivisionSchema,\n MassIDAttributeVehicleTypeSchema,\n MassIDAttributeRecyclingMethodSchema,\n MassIDAttributeProcessingTimeSchema,\n MassIDAttributeLocalWasteClassificationIdSchema,\n MassIDAttributeRecyclingManifestCodeSchema,\n MassIDAttributeTransportManifestCodeSchema,\n MassIDAttributeWeighingCaptureMethodSchema,\n MassIDAttributeScaleTypeSchema,\n MassIDAttributeContainerTypeSchema,\n MassIDAttributePickUpDateSchema,\n MassIDAttributeRecyclingDateSchema,\n ]),\n (attr) => attr.trait_type,\n)\n .min(12)\n .max(17)\n .meta({\n title: 'MassID Attributes',\n description:\n 'MassID NFT attributes array containing attributes selected from the available attribute types. The schema validates array length but does not enforce which specific attributes must be present.',\n });\n\nexport type MassIDAttributes = z.infer<typeof MassIDAttributesSchema>;\n","import { z } from 'zod';\nimport {\n UuidSchema,\n Sha256HashSchema,\n WasteTypeSchema,\n WasteSubtypeSchema,\n NonEmptyStringSchema,\n NonNegativeFloatSchema,\n UnixTimestampSchema,\n MinutesSchema,\n LocationSchema,\n ParticipantSchema,\n uniqueBy,\n} from '../shared';\n\nconst MassIDLocalClassificationSchema = z\n .strictObject({\n code: NonEmptyStringSchema.max(20).meta({\n title: 'Classification Code',\n description: 'Local waste classification code',\n examples: ['20 01 01', 'D001', 'EWC-150101', 'IBAMA-A001'],\n }),\n description: NonEmptyStringSchema.max(200).meta({\n title: 'Classification Description',\n description: 'Local waste classification description',\n examples: [\n 'Paper and cardboard packaging',\n 'Ignitable waste',\n 'Paper and cardboard packaging waste',\n 'Municipal solid waste - organic fraction',\n ],\n }),\n system: z.enum(['IBAMA']).meta({\n title: 'Classification System',\n description:\n 'Classification system name - currently supports IBAMA (Instituto Brasileiro do Meio Ambiente e dos Recursos Naturais Renováveis)',\n examples: ['IBAMA'],\n }),\n })\n .meta({\n title: 'Local Classification',\n description:\n 'Local or regional waste classification codes and descriptions',\n });\n\nexport type MassIDLocalClassification = z.infer<\n typeof MassIDLocalClassificationSchema\n>;\n\nconst MassIDMeasurementUnitSchema = z.enum(['kg', 'ton']).meta({\n title: 'Measurement Unit',\n description: 'Unit of measurement for the waste quantity',\n examples: ['kg', 'ton'],\n});\n\nexport type MassIDMeasurementUnit = z.infer<typeof MassIDMeasurementUnitSchema>;\n\nconst MassIDWastePropertiesSchema = z\n .strictObject({\n type: WasteTypeSchema.meta({\n title: 'Waste Type',\n description: 'Waste material category',\n }),\n subtype: WasteSubtypeSchema.meta({\n title: 'Waste Subtype',\n description: 'Specific subcategory of waste material',\n }),\n local_classification: MassIDLocalClassificationSchema.optional(),\n measurement_unit: MassIDMeasurementUnitSchema,\n net_weight: NonNegativeFloatSchema.meta({\n title: 'Net Weight',\n description:\n 'Net weight of the waste batch in the specified measurement unit',\n }),\n })\n .meta({\n title: 'Waste Properties',\n description:\n 'Standardized waste material properties and regulatory information',\n });\n\nexport type MassIDWasteProperties = z.infer<typeof MassIDWastePropertiesSchema>;\n\nconst EventAttributeFormatSchema = z\n .enum(['KILOGRAM', 'DATE', 'CURRENCY', 'PERCENTAGE', 'COORDINATE'])\n .meta({\n title: 'Event Attribute Format',\n description: 'Data format hint for proper display',\n examples: ['KILOGRAM', 'DATE', 'PERCENTAGE'],\n });\n\nexport type EventAttributeFormat = z.infer<typeof EventAttributeFormatSchema>;\n\nconst EventAttributeSchema = z\n .strictObject({\n name: NonEmptyStringSchema.max(100).meta({\n title: 'Attribute Name',\n description: 'Event attribute name',\n examples: [\n 'temperature',\n 'humidity',\n 'contamination_percentage',\n 'quality_grade',\n 'batch_number',\n 'operator_id',\n 'equipment_used',\n 'processing_cost',\n ],\n }),\n value: z\n .union([z.string(), z.number(), z.boolean()])\n .optional()\n .meta({\n title: 'Attribute Value',\n description: 'Event attribute value',\n examples: [\n 25.5,\n 'Grade A',\n true,\n 'BATCH-2024-001',\n 12.75,\n 'Shredder-X200',\n false,\n 'OP-456',\n ],\n }),\n preserved_sensitivity: z.boolean().optional().meta({\n title: 'Preserved Sensitivity',\n description:\n 'Indicates if the attribute contains sensitive information that was preserved',\n }),\n format: EventAttributeFormatSchema.optional(),\n })\n .meta({\n title: 'Event Attribute',\n description: 'Additional attribute specific to an event',\n });\nexport type EventAttribute = z.infer<typeof EventAttributeSchema>;\n\nconst EventAttachmentSchema = z\n .strictObject({\n type: NonEmptyStringSchema.max(50).meta({\n title: 'Attachment Type',\n description: 'Type of supporting attachment',\n examples: [\n 'Waste Transfer Note',\n 'Certificate of Disposal',\n 'Certificate of Final Destination',\n 'Quality Assessment Report',\n 'Transport Manifest',\n 'Processing Receipt',\n 'Environmental Permit',\n 'Invoice',\n ],\n }),\n document_number: NonEmptyStringSchema.max(50)\n .optional()\n .meta({\n title: 'Document Number',\n description: 'Official document number if applicable',\n examples: [\n 'WTN-2024-001234',\n 'CD-ENV-456789',\n 'INV-2024-QTR1-789',\n 'PERMIT-EPA-2024-001',\n 'MANIFEST-DOT-567890',\n ],\n }),\n reference: NonEmptyStringSchema.meta({\n title: 'Attachment Reference',\n description:\n 'Reference to attachment (IPFS hash, file name, or external URL)',\n examples: [\n 'QmYjtig7VJQ6XsnUjqqJvj7QaMcCAwtrgNdahSiFofrE7o',\n 'waste_transfer_note_2024_001.pdf',\n 'https://docs.example.com/certificates/disposal_cert_456.pdf',\n 'bafybeigdyrzt5sfp7udm7hu76uh7y26nf3efuylqabf3oclgtqy55fbzdi',\n 'processing_receipt_20240315.jpg',\n ],\n }),\n issue_timestamp: UnixTimestampSchema.optional().meta({\n title: 'Issue Timestamp',\n description:\n 'Unix timestamp in milliseconds when the attachment was issued',\n examples: [1710518400000, 1704067200000, 1715270400000],\n }),\n issuer: NonEmptyStringSchema.max(100)\n .optional()\n .meta({\n title: 'Attachment Issuer',\n description: 'Entity that issued the attachment',\n examples: [\n 'Environmental Protection Agency',\n 'Waste Management Solutions Ltd',\n 'Green Recycling Corp',\n 'City Waste Authority',\n 'EcoProcess Industries',\n 'Regional Environmental Office',\n ],\n }),\n })\n .meta({\n title: 'Event Attachment',\n description: 'Supporting event attachment',\n });\nexport type EventAttachment = z.infer<typeof EventAttachmentSchema>;\n\nconst MassIDChainOfCustodyEventSchema = z\n .strictObject({\n event_id: UuidSchema.meta({\n title: 'Event ID',\n description: 'Unique event identifier',\n }),\n event_name: NonEmptyStringSchema.max(50).meta({\n title: 'Event Name',\n description: 'Name of custody or processing event',\n examples: ['Sorting', 'Processing', 'Recycling', 'Weighing'],\n }),\n description: NonEmptyStringSchema.max(200)\n .optional()\n .meta({\n title: 'Event Description',\n description: 'Detailed description of what happened during this event',\n examples: [\n 'Waste collected from residential area using collection truck',\n 'Material sorted into recyclable and non-recyclable fractions',\n 'Plastic waste processed through shredding and washing',\n 'Waste transferred to authorized recycling facility',\n 'Final disposal at licensed landfill site',\n 'Quality inspection and contamination assessment completed',\n ],\n }),\n timestamp: UnixTimestampSchema.meta({\n title: 'Event Timestamp',\n description: 'Unix timestamp in milliseconds when the event occurred',\n examples: [1710518400000, 1704067200000, 1715270400000],\n }),\n participant_id_hash: Sha256HashSchema.meta({\n title: 'Participant ID Hash',\n description: 'Reference to participant in the participants array',\n }),\n location_id_hash: Sha256HashSchema.meta({\n title: 'Location ID Hash',\n description: 'Reference to location in the locations array',\n }),\n weight: NonNegativeFloatSchema.optional().meta({\n title: 'Event Weight',\n description: 'Mass weight after this event',\n }),\n attributes: z.array(EventAttributeSchema).optional().meta({\n title: 'Event Attributes',\n description: 'Additional attributes specific to this event',\n }),\n attachments: z.array(EventAttachmentSchema).optional().meta({\n title: 'Event Attachments',\n description: 'Associated attachments for this event',\n }),\n })\n .meta({\n title: 'Chain of Custody Event',\n description: 'Chain of custody event',\n });\n\nexport type MassIDChainOfCustodyEvent = z.infer<\n typeof MassIDChainOfCustodyEventSchema\n>;\n\nconst MassIDChainOfCustodySchema = z\n .strictObject({\n events: z.array(MassIDChainOfCustodyEventSchema).min(1).meta({\n title: 'Custody Events',\n description:\n 'Chronological sequence of custody transfer and processing events',\n }),\n total_duration_minutes: MinutesSchema.meta({\n title: 'Total Duration (minutes)',\n description: 'Total time from first to last event in minutes',\n }),\n })\n .meta({\n title: 'Chain of Custody',\n description:\n 'Complete chain of custody tracking from waste generation to final processing',\n });\n\nexport type MassIDChainOfCustody = z.infer<typeof MassIDChainOfCustodySchema>;\n\nconst MassIDGeographicDataSchema = z\n .strictObject({\n from_location_id_hash: Sha256HashSchema.meta({\n title: 'From Location ID Hash',\n description:\n 'Reference hash of the location where the waste started movement',\n }),\n to_location_id_hash: Sha256HashSchema.meta({\n title: 'To Location ID Hash',\n description:\n 'Reference hash of the location where the waste ended movement',\n }),\n first_reported_timestamp: UnixTimestampSchema.meta({\n title: 'First Reported Timestamp',\n description:\n 'Unix timestamp in milliseconds when the waste was first reported/collected at the origin location',\n examples: [1710518400000, 1704067200000, 1715270400000],\n }),\n last_reported_timestamp: UnixTimestampSchema.meta({\n title: 'Last Reported Timestamp',\n description:\n 'Unix timestamp in milliseconds when the waste was last reported/processed at the destination location',\n examples: [1710604800000, 1704153600000, 1715356800000],\n }),\n })\n .refine((data) => {\n return data.first_reported_timestamp <= data.last_reported_timestamp;\n }, 'first_reported_timestamp must be before or equal to last_reported_timestamp')\n .meta({\n title: 'Geographic Data',\n description:\n 'Simplified geographic information tracking waste movement from origin to destination with temporal bounds',\n });\n\nexport type MassIDGeographicData = z.infer<typeof MassIDGeographicDataSchema>;\n\nexport const MassIDDataSchema = z\n .strictObject({\n waste_properties: MassIDWastePropertiesSchema,\n locations: uniqueBy(\n LocationSchema,\n (loc) => loc.id_hash,\n 'Location ID hashes must be unique',\n )\n .min(1)\n .meta({\n title: 'Locations',\n description: 'All locations referenced in this MassID, indexed by ID',\n }),\n participants: uniqueBy(\n ParticipantSchema,\n (p) => p.id_hash,\n 'Participant ID hashes must be unique',\n )\n .min(1)\n .meta({\n title: 'Participants',\n description:\n 'All participants referenced in this MassID, indexed by ID',\n }),\n chain_of_custody: MassIDChainOfCustodySchema,\n geographic_data: MassIDGeographicDataSchema,\n })\n .refine((data) => {\n const participantIdSet = new Set(\n data.participants.map((participant) => participant.id_hash),\n );\n\n const eventParticipantIds = data.chain_of_custody.events.map(\n (event) => event.participant_id_hash,\n );\n\n const allEventParticipantsExist = eventParticipantIds.every(\n (participantId) => participantIdSet.has(participantId),\n );\n\n return allEventParticipantsExist;\n }, 'All participant ID hashes in chain of custody events must exist in participants array')\n\n .refine((data) => {\n const locationIdSet = new Set(\n data.locations.map((location) => location.id_hash),\n );\n\n const eventLocationIds = data.chain_of_custody.events.map(\n (event) => event.location_id_hash,\n );\n\n const allEventLocationsExist = eventLocationIds.every((locationId) =>\n locationIdSet.has(locationId),\n );\n\n return allEventLocationsExist;\n }, 'All location ID hashes in chain of custody events must exist in locations array')\n .meta({\n title: 'MassID Data',\n description:\n 'MassID data containing waste tracking and chain of custody information',\n });\n\nexport type MassIDData = z.infer<typeof MassIDDataSchema>;\n","import { z } from 'zod';\nimport { MassIDDataSchema } from './mass-id.data.schema';\nimport {\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n NftIpfsSchema,\n} from '../shared';\nimport { MassIDAttributesSchema } from './mass-id.attributes';\n\nexport const MassIDIpfsSchemaMeta = {\n title: 'MassID NFT IPFS Record',\n description:\n 'Complete MassID NFT IPFS record including fixed attributes and detailed waste tracking data',\n $id: buildSchemaUrl('mass-id/mass-id.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const MassIDIpfsSchema = NftIpfsSchema.safeExtend({\n schema: NftIpfsSchema.shape.schema.safeExtend({\n type: z.literal('MassID').meta({\n title: 'MassID Schema Type',\n description: 'MassID NFT schema type',\n }),\n }),\n attributes: MassIDAttributesSchema,\n data: MassIDDataSchema,\n}).meta(MassIDIpfsSchemaMeta);\n\nexport type MassIDIpfs = z.infer<typeof MassIDIpfsSchema>;\n","import { z } from 'zod';\nimport {\n NonEmptyStringSchema,\n NonNegativeFloatSchema,\n MethodologyAttributeSchema,\n CreditAmountAttributeSchema,\n CreditTypeAttributeSchema,\n SourceWasteTypeAttributeSchema,\n SourceWeightAttributeSchema,\n OriginCountryAttributeSchema,\n OriginMunicipalityAttributeSchema,\n RecyclerAttributeSchema,\n MassIDTokenIdAttributeSchema,\n MassIDRecyclingDateAttributeSchema,\n} from '../shared';\nimport { NftAttributeSchema } from '../shared/nft.schema';\n\nconst GasIDAttributeMethodologySchema = MethodologyAttributeSchema;\n\nexport type GasIDAttributeMethodology = z.infer<\n typeof GasIDAttributeMethodologySchema\n>;\n\nconst GasIDAttributeGasTypeSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('Gas Type'),\n value: NonEmptyStringSchema.max(100).meta({\n title: 'Gas Type',\n description: 'Type of gas prevented',\n examples: ['Methane (CH₄)', 'Carbon Dioxide (CO₂)'],\n }),\n}).meta({\n title: 'Gas Type Attribute',\n description: 'Gas type attribute',\n});\n\nexport type GasIDAttributeGasType = z.infer<typeof GasIDAttributeGasTypeSchema>;\n\nconst GasIDAttributeCo2ePreventedSchema = NftAttributeSchema.safeExtend({\n trait_type: z.literal('CO₂e Prevented (kg)'),\n value: NonNegativeFloatSchema.meta({\n title: 'CO₂e Prevented',\n description: 'Total CO₂ equivalent emissions prevented in kilograms',\n }),\n display_type: z.literal('number'),\n}).meta({\n title: 'CO₂e Prevented Attribute',\n description: 'CO₂e prevented attribute with numeric display',\n});\n\nexport type GasIDAttributeCo2ePrevented = z.infer<\n typeof GasIDAttributeCo2ePreventedSchema\n>;\n\nconst GasIDAttributeCreditAmountSchema = CreditAmountAttributeSchema;\n\nexport type GasIDAttributeCreditAmount = z.infer<\n typeof GasIDAttributeCreditAmountSchema\n>;\n\nconst GasIDAttributeCreditTypeSchema = CreditTypeAttributeSchema;\n\nexport type GasIDAttributeCreditType = z.infer<\n typeof GasIDAttributeCreditTypeSchema\n>;\n\nconst GasIDAttributeSourceWasteTypeSchema = SourceWasteTypeAttributeSchema;\n\nexport type GasIDAttributeSourceWasteType = z.infer<\n typeof GasIDAttributeSourceWasteTypeSchema\n>;\n\nconst GasIDAttributeSourceWeightSchema = SourceWeightAttributeSchema;\n\nexport type GasIDAttributeSourceWeight = z.infer<\n typeof GasIDAttributeSourceWeightSchema\n>;\n\nconst GasIDAttributeOriginCountrySchema = OriginCountryAttributeSchema;\n\nexport type GasIDAttributeOriginCountry = z.infer<\n typeof GasIDAttributeOriginCountrySchema\n>;\n\nconst GasIDAttributeOriginMunicipalitySchema =\n OriginMunicipalityAttributeSchema;\n\nexport type GasIDAttributeOriginMunicipality = z.infer<\n typeof GasIDAttributeOriginMunicipalitySchema\n>;\n\nconst GasIDAttributeRecyclerSchema = RecyclerAttributeSchema;\n\nexport type GasIDAttributeRecycler = z.infer<\n typeof GasIDAttributeRecyclerSchema\n>;\n\nconst GasIDAttributeMassIDTokenIdSchema = MassIDTokenIdAttributeSchema;\n\nexport type GasIDAttributeMassIDTokenId = z.infer<\n typeof GasIDAttributeMassIDTokenIdSchema\n>;\n\nconst GasIDAttributeMassIDRecyclingDateSchema =\n MassIDRecyclingDateAttributeSchema;\n\nexport type GasIDAttributeMassIDRecyclingDate = z.infer<\n typeof GasIDAttributeMassIDRecyclingDateSchema\n>;\n\nexport const GasIDAttributesSchema = z\n .tuple([\n GasIDAttributeMethodologySchema,\n GasIDAttributeGasTypeSchema,\n GasIDAttributeCo2ePreventedSchema,\n GasIDAttributeCreditAmountSchema,\n GasIDAttributeCreditTypeSchema,\n GasIDAttributeSourceWasteTypeSchema,\n GasIDAttributeSourceWeightSchema,\n GasIDAttributeOriginCountrySchema,\n GasIDAttributeOriginMunicipalitySchema,\n GasIDAttributeRecyclerSchema,\n GasIDAttributeMassIDTokenIdSchema,\n GasIDAttributeMassIDRecyclingDateSchema,\n ])\n .meta({\n title: 'GasID NFT Attribute Array',\n description:\n 'Schema for the fixed set of GasID NFT attributes, enforcing order and type for each trait',\n });\n\nexport type GasIDAttributes = z.infer<typeof GasIDAttributesSchema>;\n","import { z } from 'zod';\nimport {\n NonEmptyStringSchema,\n NonNegativeFloatSchema,\n WeightKgSchema,\n IsoDateSchema,\n LocationSchema,\n WasteClassificationSchema,\n AccreditedParticipantsSchema,\n ParticipantRewardsSchema,\n MethodologyReferenceSchema,\n AuditReferenceSchema,\n MassIDReferenceSchema,\n CreditTypeSchema,\n CreditAmountSchema,\n} from '../shared';\n\nconst GasIDSummarySchema = z\n .strictObject({\n gas_type: NonEmptyStringSchema.meta({\n title: 'Gas Type',\n description: 'Type of gas prevented',\n examples: ['Methane (CH₄)', 'Carbon Dioxide (CO₂)'],\n }),\n credit_type: CreditTypeSchema,\n credit_amount: CreditAmountSchema,\n prevented_co2e_kg: WeightKgSchema.meta({\n title: 'Prevented Emissions (CO₂e kg)',\n description: 'CO₂e weight of the prevented emissions',\n }),\n })\n .meta({\n title: 'GasID Summary',\n description: 'Summary information for the GasID certificate',\n });\n\nexport type GasIDSummary = z.infer<typeof GasIDSummarySchema>;\n\nconst CalculationValueSchema = z\n .strictObject({\n reference: NonEmptyStringSchema.max(3).meta({\n title: 'Calculation Reference',\n description: 'Reference symbol used in the calculation formula',\n examples: ['E', 'B', 'W', 'R'],\n }),\n value: NonNegativeFloatSchema.meta({\n title: 'Calculation Value',\n description: 'Numeric value for this calculation parameter',\n }),\n label: NonEmptyStringSchema.max(100).meta({\n title: 'Calculation Label',\n description: 'Human-readable label for this calculation value',\n examples: [\n 'Exceeding Emission Coefficient',\n 'Prevented Emissions by Waste Subtype and Baseline Per Ton',\n 'Waste Weight',\n 'Prevented Emissions (CO₂e kg)',\n ],\n }),\n })\n .meta({\n title: 'Calculation Value',\n description: 'Single value used in the emissions calculation',\n });\n\nexport type CalculationValue = z.infer<typeof CalculationValueSchema>;\n\nconst PreventedEmissionsCalculationSchema = z\n .strictObject({\n formula: NonEmptyStringSchema.max(100).meta({\n title: 'Calculation Formula',\n description: 'Formula used to calculate the prevented emissions',\n examples: ['(1 - B) * W * E = R'],\n }),\n method: NonEmptyStringSchema.max(100).meta({\n title: 'Calculation Method',\n description: 'Method used to calculate the prevented emissions',\n examples: ['UNFCCC AMS-III.F'],\n }),\n date: IsoDateSchema.meta({\n title: 'Calculation Date',\n description: 'Date when the calculation was performed',\n }),\n values: z.array(CalculationValueSchema).min(1).meta({\n title: 'Calculation Values',\n description: 'Values used to calculate the prevented emissions',\n }),\n })\n .meta({\n title: 'Prevented Emissions Calculation',\n description: 'Details of the prevented emissions calculation',\n });\n\nexport type PreventedEmissionsCalculation = z.infer<\n typeof PreventedEmissionsCalculationSchema\n>;\n\nexport const GasIDDataSchema = z\n .strictObject({\n summary: GasIDSummarySchema,\n methodology: MethodologyReferenceSchema,\n audit: AuditReferenceSchema,\n mass_id: MassIDReferenceSchema,\n waste_classification: WasteClassificationSchema,\n origin_location: LocationSchema.meta({\n title: 'Source Waste Origin Location',\n description: 'Location of the waste origin',\n }),\n prevented_emissions_calculation: PreventedEmissionsCalculationSchema,\n accredited_participants: AccreditedParticipantsSchema,\n participant_rewards: ParticipantRewardsSchema.optional(),\n })\n .meta({\n title: 'GasID Data',\n description: 'Complete data structure for GasID certificate',\n });\n\nexport type GasIDData = z.infer<typeof GasIDDataSchema>;\n","import { z } from 'zod';\nimport {\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n NftIpfsSchema,\n} from '../shared';\nimport { GasIDDataSchema } from './gas-id.data.schema';\nimport { GasIDAttributesSchema } from './gas-id.attributes';\n\nexport const GasIDIpfsSchemaMeta = {\n title: 'GasID NFT IPFS Record',\n description:\n 'Complete GasID NFT IPFS record including fixed attributes and detailed carbon emissions prevention data',\n $id: buildSchemaUrl('gas-id/gas-id.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const GasIDIpfsSchema = NftIpfsSchema.safeExtend({\n schema: NftIpfsSchema.shape.schema.safeExtend({\n type: z.literal('GasID').meta({\n title: 'GasID Schema Type',\n description: 'GasID NFT schema type',\n }),\n }),\n attributes: GasIDAttributesSchema,\n data: GasIDDataSchema,\n}).meta(GasIDIpfsSchemaMeta);\n\nexport type GasIDIpfs = z.infer<typeof GasIDIpfsSchema>;\n","import { z } from 'zod';\nimport {\n WeightKgSchema,\n NftAttributeSchema,\n MethodologyAttributeSchema,\n CreditAmountAttributeSchema,\n CreditTypeAttributeSchema,\n SourceWasteTypeAttributeSchema,\n SourceWeightAttributeSchema,\n OriginCountryAttributeSchema,\n OriginMunicipalityAttributeSchema,\n RecyclerAttributeSchema,\n MassIDTokenIdAttributeSchema,\n MassIDRecyclingDateAttributeSchema,\n} from '../shared';\n\nconst RecycledIDAttributeMethodologySchema = MethodologyAttributeSchema;\n\nexport type RecycledIDAttributeMethodology = z.infer<\n typeof RecycledIDAttributeMethodologySchema\n>;\n\nconst RecycledIDAttributeRecycledMassWeightSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Recycled Mass Weight (kg)'),\n value: WeightKgSchema.meta({\n title: 'Recycled Mass Weight',\n description: 'Total weight of recycled materials in kilograms',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Recycled Mass Weight Attribute',\n description: 'Recycled mass weight attribute with numeric display',\n });\n\nexport type RecycledIDAttributeRecycledMassWeight = z.infer<\n typeof RecycledIDAttributeRecycledMassWeightSchema\n>;\n\nconst RecycledIDAttributeCreditAmountSchema = CreditAmountAttributeSchema;\n\nexport type RecycledIDAttributeCreditAmount = z.infer<\n typeof RecycledIDAttributeCreditAmountSchema\n>;\n\nconst RecycledIDAttributeCreditTypeSchema = CreditTypeAttributeSchema;\n\nexport type RecycledIDAttributeCreditType = z.infer<\n typeof RecycledIDAttributeCreditTypeSchema\n>;\n\nconst RecycledIDAttributeSourceWasteTypeSchema = SourceWasteTypeAttributeSchema;\n\nexport type RecycledIDAttributeSourceWasteType = z.infer<\n typeof RecycledIDAttributeSourceWasteTypeSchema\n>;\n\nconst RecycledIDAttributeSourceWeightSchema = SourceWeightAttributeSchema;\n\nexport type RecycledIDAttributeSourceWeight = z.infer<\n typeof RecycledIDAttributeSourceWeightSchema\n>;\n\nconst RecycledIDAttributeOriginCountrySchema = OriginCountryAttributeSchema;\n\nexport type RecycledIDAttributeOriginCountry = z.infer<\n typeof RecycledIDAttributeOriginCountrySchema\n>;\n\nconst RecycledIDAttributeOriginMunicipalitySchema =\n OriginMunicipalityAttributeSchema;\n\nexport type RecycledIDAttributeOriginMunicipality = z.infer<\n typeof RecycledIDAttributeOriginMunicipalitySchema\n>;\n\nconst RecycledIDAttributeRecyclerSchema = RecyclerAttributeSchema;\n\nexport type RecycledIDAttributeRecycler = z.infer<\n typeof RecycledIDAttributeRecyclerSchema\n>;\n\nconst RecycledIDAttributeMassIDTokenIdSchema = MassIDTokenIdAttributeSchema;\n\nexport type RecycledIDAttributeMassIDTokenId = z.infer<\n typeof RecycledIDAttributeMassIDTokenIdSchema\n>;\n\nconst RecycledIDAttributeMassIDRecyclingDateSchema =\n MassIDRecyclingDateAttributeSchema;\n\nexport type RecycledIDAttributeMassIDRecyclingDate = z.infer<\n typeof RecycledIDAttributeMassIDRecyclingDateSchema\n>;\n\nexport const RecycledIDAttributesSchema = z\n .tuple([\n RecycledIDAttributeMethodologySchema,\n RecycledIDAttributeRecycledMassWeightSchema,\n RecycledIDAttributeCreditAmountSchema,\n RecycledIDAttributeCreditTypeSchema,\n RecycledIDAttributeSourceWasteTypeSchema,\n RecycledIDAttributeSourceWeightSchema,\n RecycledIDAttributeOriginCountrySchema,\n RecycledIDAttributeOriginMunicipalitySchema,\n RecycledIDAttributeRecyclerSchema,\n RecycledIDAttributeMassIDTokenIdSchema,\n RecycledIDAttributeMassIDRecyclingDateSchema,\n ])\n .meta({\n title: 'RecycledID NFT Attribute Array',\n description:\n 'Schema for the fixed set of RecycledID NFT attributes, enforcing order and type for each trait',\n });\n\nexport type RecycledIDAttributes = z.infer<typeof RecycledIDAttributesSchema>;\n","import { z } from 'zod';\nimport {\n AccreditedParticipantsSchema,\n ParticipantRewardsSchema,\n WasteClassificationSchema,\n MethodologyReferenceSchema,\n AuditReferenceSchema,\n MassIDReferenceSchema,\n LocationSchema,\n WeightKgSchema,\n CreditTypeSchema,\n CreditAmountSchema,\n} from '../shared';\n\nconst RecycledIDSummarySchema = z\n .strictObject({\n recycled_mass_kg: WeightKgSchema.meta({\n title: 'Recycled Mass Weight',\n description: 'Total weight of materials successfully recycled',\n }),\n credit_type: CreditTypeSchema,\n credit_amount: CreditAmountSchema,\n })\n .meta({\n title: 'RecycledID Summary',\n description: 'Summary information for the RecycledID certificate',\n });\n\nexport type RecycledIDSummary = z.infer<typeof RecycledIDSummarySchema>;\n\nexport const RecycledIDDataSchema = z\n .strictObject({\n summary: RecycledIDSummarySchema,\n methodology: MethodologyReferenceSchema,\n audit: AuditReferenceSchema,\n mass_id: MassIDReferenceSchema,\n waste_classification: WasteClassificationSchema,\n origin_location: LocationSchema.meta({\n title: 'RecycledID Origin Location',\n description: 'Source waste origin location details',\n }),\n accredited_participants: AccreditedParticipantsSchema,\n participant_rewards: ParticipantRewardsSchema.optional(),\n })\n .meta({\n title: 'RecycledID Data',\n description: 'Complete data structure for RecycledID certificate',\n });\n\nexport type RecycledIDData = z.infer<typeof RecycledIDDataSchema>;\n","import { z } from 'zod';\nimport {\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n NftIpfsSchema,\n} from '../shared';\nimport { RecycledIDDataSchema } from './recycled-id.data.schema';\nimport { RecycledIDAttributesSchema } from './recycled-id.attributes';\n\nexport const RecycledIDIpfsSchemaMeta = {\n title: 'RecycledID NFT IPFS Record',\n description:\n 'Complete RecycledID NFT IPFS record including fixed attributes and recycling outcome data',\n $id: buildSchemaUrl('recycled-id/recycled-id.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const RecycledIDIpfsSchema = NftIpfsSchema.safeExtend({\n schema: NftIpfsSchema.shape.schema.safeExtend({\n type: z.literal('RecycledID').meta({\n title: 'RecycledID Schema Type',\n description: 'RecycledID NFT schema type',\n }),\n }),\n attributes: RecycledIDAttributesSchema,\n data: RecycledIDDataSchema,\n}).meta(RecycledIDIpfsSchemaMeta);\n\nexport type RecycledIDIpfs = z.infer<typeof RecycledIDIpfsSchema>;\n","import { z } from 'zod';\nimport {\n CollectionNameSchema,\n CreditAmountSchema,\n NftAttributeSchema,\n ParticipantNameSchema,\n PositiveIntegerSchema,\n TokenSymbolSchema,\n UnixTimestampSchema,\n uniqueBy,\n} from '../shared';\n\nconst CreditPurchaseReceiptCreditAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: TokenSymbolSchema.meta({\n title: 'Credit Token Symbol',\n description: 'Symbol of the credit token (e.g., C-CARB, C-BIOW)',\n examples: ['C-CARB', 'C-BIOW'],\n }),\n value: CreditAmountSchema.meta({\n title: 'Credit Amount',\n description: 'Amount of credits purchased for the token symbol',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Credit Attribute',\n description:\n 'Attribute representing purchased amount per credit token symbol',\n });\n\nconst CreditPurchaseReceiptTotalCreditsAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Total Credits Purchased'),\n value: CreditAmountSchema.meta({\n title: 'Total Credits Purchased',\n description: 'Total number of credits purchased across all tokens',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Total Credits Purchased Attribute',\n description: 'Aggregate credits purchased attribute',\n });\n\nconst CreditPurchaseReceiptTotalUsdcAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Total USDC Amount'),\n value: CreditAmountSchema.meta({\n title: 'Total USDC Amount',\n description: 'Total USDC amount paid for the purchase',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Total USDC Amount Attribute',\n description: 'Aggregate USDC amount attribute',\n });\n\nconst CreditPurchaseReceiptPurchaseDateAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Purchase Date'),\n value: UnixTimestampSchema.meta({\n title: 'Purchase Date',\n description:\n 'Unix timestamp in milliseconds when the purchase was completed',\n }),\n display_type: z.literal('date'),\n }).meta({\n title: 'Purchase Date Attribute',\n description: 'Purchase date attribute using Unix timestamp in milliseconds',\n });\n\nconst CreditPurchaseReceiptCertificatesAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Certificates Purchased'),\n value: PositiveIntegerSchema.meta({\n title: 'Certificates Purchased',\n description: 'Total number of certificates purchased',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Certificates Purchased Attribute',\n description: 'Attribute representing how many certificates were purchased',\n });\n\nconst CreditPurchaseReceiptReceiverAttributeSchema = NftAttributeSchema.omit({\n display_type: true,\n max_value: true,\n})\n .safeExtend({\n trait_type: z.literal('Receiver'),\n value: ParticipantNameSchema.meta({\n title: 'Receiver',\n description:\n 'Organization or individual receiving the credits from the purchase',\n examples: ['EcoTech Solutions Inc.'],\n }),\n })\n .meta({\n title: 'Receiver Attribute',\n description: 'Attribute containing the receiver display name',\n });\n\nconst CreditPurchaseReceiptCollectionAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: CollectionNameSchema,\n value: CreditAmountSchema.meta({\n title: 'Credits from Collection',\n description: 'Amount of credits purchased from the collection',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Collection Attribute',\n description:\n 'Attribute representing the amount of credits purchased from a collection',\n });\n\nexport const CreditPurchaseReceiptAttributesSchema = uniqueBy(\n z.union([\n CreditPurchaseReceiptCreditAttributeSchema,\n CreditPurchaseReceiptTotalCreditsAttributeSchema,\n CreditPurchaseReceiptTotalUsdcAttributeSchema,\n CreditPurchaseReceiptPurchaseDateAttributeSchema,\n CreditPurchaseReceiptCertificatesAttributeSchema,\n CreditPurchaseReceiptReceiverAttributeSchema,\n CreditPurchaseReceiptCollectionAttributeSchema,\n ]),\n (attribute) => attribute.trait_type,\n 'Attribute trait_type values must be unique',\n)\n .min(5)\n .meta({\n title: 'Credit Purchase Receipt NFT Attribute Array',\n description:\n 'Attributes for credit purchase receipts including per-credit breakdowns, totals, receiver, purchase date, and per-collection amounts. Attributes must have unique trait types.',\n });\n\nexport type CreditPurchaseReceiptAttributes = z.infer<\n typeof CreditPurchaseReceiptAttributesSchema\n>;\n","import { z } from 'zod';\nimport {\n CreditAmountSchema,\n EthereumAddressSchema,\n ExternalIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n NonNegativeFloatSchema,\n ParticipantNameSchema,\n ParticipantRoleSchema,\n Sha256HashSchema,\n SlugSchema,\n SmartContractSchema,\n TokenIdSchema,\n uniqueArrayItems,\n uniqueBy,\n CreditPurchaseReceiptSummarySchema,\n MassIdReferenceWithContractSchema,\n ReceiptIdentitySchema,\n createReceiptCertificateSchema,\n createReceiptCollectionSchema,\n createReceiptCreditSchema,\n nearlyEqual,\n validateCountMatches,\n validateSummaryListMatchesData,\n validateTotalMatches,\n} from '../shared';\n\nexport type CreditPurchaseReceiptSummary = z.infer<\n typeof CreditPurchaseReceiptSummarySchema\n>;\n\nconst CreditPurchaseReceiptIdentitySchema = ReceiptIdentitySchema;\n\nexport type CreditPurchaseReceiptIdentity = z.infer<\n typeof CreditPurchaseReceiptIdentitySchema\n>;\n\nconst CreditPurchaseReceiptReceiverSchema = z\n .strictObject({\n wallet_address: EthereumAddressSchema.meta({\n title: 'Receiver Wallet Address',\n description: 'Ethereum address of the receiver',\n }),\n identity: CreditPurchaseReceiptIdentitySchema.optional(),\n })\n .meta({\n title: 'Receiver',\n description: 'Receiver wallet and optional identity information',\n });\n\nexport type CreditPurchaseReceiptReceiver = z.infer<\n typeof CreditPurchaseReceiptReceiverSchema\n>;\n\nconst CreditPurchaseReceiptBuyerSchema = z\n .strictObject({\n buyer_id: ExternalIdSchema.meta({\n title: 'Buyer ID',\n description: 'Unique identifier for the buyer',\n }),\n identity: CreditPurchaseReceiptIdentitySchema.optional(),\n })\n .meta({\n title: 'Buyer',\n description: 'Buyer identifier and optional identity information',\n });\n\nexport type CreditPurchaseReceiptBuyer = z.infer<\n typeof CreditPurchaseReceiptBuyerSchema\n>;\n\nconst CreditPurchaseReceiptPartiesSchema = z\n .strictObject({\n payer: EthereumAddressSchema.meta({\n title: 'Payer Wallet Address',\n description: 'Ethereum address paying for the purchase',\n }),\n receiver: CreditPurchaseReceiptReceiverSchema,\n buyer: CreditPurchaseReceiptBuyerSchema.optional(),\n })\n .meta({\n title: 'Parties',\n description:\n 'Parties involved in the purchase including payer, receiver, and optional buyer',\n });\n\nexport type CreditPurchaseReceiptParties = z.infer<\n typeof CreditPurchaseReceiptPartiesSchema\n>;\n\nconst CreditPurchaseReceiptCollectionSchema = createReceiptCollectionSchema({\n amountKey: 'credit_amount',\n amountMeta: {\n title: 'Collection Credit Amount',\n description: 'Total credits purchased from this collection',\n },\n meta: {\n title: 'Collection',\n description: 'Collection included in the purchase',\n },\n});\n\nexport type CreditPurchaseReceiptCollection = z.infer<\n typeof CreditPurchaseReceiptCollectionSchema\n>;\n\nconst CreditPurchaseReceiptCreditSchema = createReceiptCreditSchema({\n amountKey: 'purchase_amount',\n amountMeta: {\n title: 'Credit Purchase Amount',\n description: 'Total credits purchased for this credit type',\n },\n retirementAmountMeta: {\n title: 'Credit Retirement Amount',\n description:\n 'Credits retired immediately for this credit type during purchase',\n },\n meta: {\n title: 'Credit',\n description: 'Credit token included in the purchase',\n },\n});\n\nexport type CreditPurchaseReceiptCredit = z.infer<\n typeof CreditPurchaseReceiptCreditSchema\n>;\n\nexport type MassIDReferenceWithContract = z.infer<\n typeof MassIdReferenceWithContractSchema\n>;\n\nconst CreditPurchaseReceiptCertificateSchema = createReceiptCertificateSchema({\n additionalShape: {\n purchased_amount: CreditAmountSchema.meta({\n title: 'Certificate Purchased Amount',\n description: 'Credits purchased from this certificate',\n }),\n retired_amount: CreditAmountSchema.meta({\n title: 'Certificate Retired Amount',\n description:\n 'Credits retired from this certificate during the purchase (0 if none)',\n }),\n credit_slug: SlugSchema.meta({\n title: 'Credit Slug',\n description: 'Slug of the credit type for this certificate',\n examples: ['carbon', 'organic'],\n }),\n },\n meta: {\n title: 'Certificate',\n description: 'Certificate associated with the purchase',\n },\n});\n\nexport type CreditPurchaseReceiptCertificate = z.infer<\n typeof CreditPurchaseReceiptCertificateSchema\n>;\n\nconst CreditPurchaseReceiptParticipantRewardSchema = z\n .strictObject({\n id_hash: Sha256HashSchema.meta({\n title: 'Participant ID Hash',\n description:\n 'Hash representing the participant identifier (SHA-256 hex string)',\n }),\n participant_name: ParticipantNameSchema.meta({\n title: 'Participant Name',\n description: 'Legal name of the participant receiving the reward',\n }),\n roles: uniqueArrayItems(\n ParticipantRoleSchema,\n 'Participant roles must be unique',\n )\n .min(1)\n .meta({\n title: 'Participant Roles',\n description: 'Roles the participant has in the supply chain',\n }),\n usdc_amount: NonNegativeFloatSchema.meta({\n title: 'USDC Reward Amount',\n description: 'USDC amount allocated to this participant',\n }),\n })\n .meta({\n title: 'Participant Reward',\n description: 'Reward distribution for a participant',\n });\n\nexport type CreditPurchaseReceiptParticipantReward = z.infer<\n typeof CreditPurchaseReceiptParticipantRewardSchema\n>;\n\nconst CreditPurchaseReceiptRetirementReceiptSchema = z\n .strictObject({\n token_id: TokenIdSchema.meta({\n title: 'Retirement Receipt Token ID',\n description: 'Token ID of the retirement receipt NFT',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Retirement Receipt External ID',\n description: 'External identifier for the retirement receipt',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Retirement Receipt External URL',\n description: 'External URL for the retirement receipt',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Retirement Receipt URI',\n description: 'IPFS URI for the retirement receipt metadata',\n }),\n smart_contract: SmartContractSchema,\n })\n .meta({\n title: 'Retirement Receipt Reference',\n description: 'Reference to the retirement receipt NFT',\n });\n\nexport type CreditPurchaseReceiptRetirementReceipt = z.infer<\n typeof CreditPurchaseReceiptRetirementReceiptSchema\n>;\n\nconst CreditPurchaseReceiptRetirementSchema = z\n .strictObject({\n beneficiary_id: ExternalIdSchema.meta({\n title: 'Retirement Beneficiary ID',\n description:\n 'UUID identifying the beneficiary of the retirement (bytes16 normalized to UUID)',\n }),\n retirement_receipt: CreditPurchaseReceiptRetirementReceiptSchema.optional(),\n })\n .meta({\n title: 'Retirement',\n description: 'Immediate retirement details performed as part of purchase',\n });\n\nexport type CreditPurchaseReceiptRetirement = z.infer<\n typeof CreditPurchaseReceiptRetirementSchema\n>;\n\nexport const CreditPurchaseReceiptDataSchema = z\n .strictObject({\n summary: CreditPurchaseReceiptSummarySchema,\n parties: CreditPurchaseReceiptPartiesSchema,\n collections: uniqueBy(\n CreditPurchaseReceiptCollectionSchema,\n (collection) => collection.slug,\n 'Collection slugs must be unique',\n )\n .min(1)\n .meta({\n title: 'Collections',\n description: 'Collections included in the purchase',\n }),\n credits: uniqueBy(\n CreditPurchaseReceiptCreditSchema,\n (credit) => credit.slug,\n 'Credit slugs must be unique',\n )\n .min(1)\n .meta({\n title: 'Credits',\n description: 'Credits included in the purchase',\n }),\n certificates: uniqueBy(\n CreditPurchaseReceiptCertificateSchema,\n (certificate) => certificate.token_id,\n 'Certificate token_ids must be unique',\n )\n .min(1)\n .meta({\n title: 'Certificates',\n description: 'Certificates involved in the purchase',\n }),\n participant_rewards: uniqueBy(\n CreditPurchaseReceiptParticipantRewardSchema,\n (reward) => reward.id_hash,\n 'Participant id_hash must be unique',\n )\n .min(1)\n .meta({\n title: 'Participant Rewards',\n description:\n 'Rewards distributed to participants in the supply chain for this purchase',\n }),\n retirement: CreditPurchaseReceiptRetirementSchema.optional(),\n })\n .superRefine((data, ctx) => {\n const retirementProvided = Boolean(data.retirement);\n const creditsWithRetirement = data.credits.reduce<number[]>(\n (indices, credit, index) => {\n const retirementAmount = Number(credit.retirement_amount ?? 0);\n if (retirementAmount > 0) {\n indices.push(index);\n }\n return indices;\n },\n [],\n );\n\n if (retirementProvided && creditsWithRetirement.length === 0) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'retirement is present but no credit has retirement_amount greater than 0',\n path: ['retirement'],\n });\n }\n\n if (!retirementProvided && creditsWithRetirement.length > 0) {\n creditsWithRetirement.forEach((index) => {\n ctx.addIssue({\n code: 'custom',\n message:\n 'credit retirement_amount greater than 0 requires retirement details',\n path: ['credits', index, 'retirement_amount'],\n });\n });\n }\n\n validateCountMatches({\n ctx,\n actualCount: data.certificates.length,\n expectedCount: data.summary.total_certificates,\n path: ['summary', 'total_certificates'],\n message:\n 'summary.total_certificates must equal the number of certificates',\n });\n\n const collectionSlugs = new Set<string>(\n data.collections.map((collection) => String(collection.slug)),\n );\n const creditSlugs = new Set<string>(\n data.credits.map((credit) => String(credit.slug)),\n );\n const creditSymbols = new Set<string>(\n data.credits.map((credit) => String(credit.symbol)),\n );\n const certificateTypes = new Set<string>(\n data.certificates.map((certificate) => String(certificate.type)),\n );\n\n validateSummaryListMatchesData({\n ctx,\n summaryValues: data.summary.credit_symbols,\n dataValues: creditSymbols,\n summaryPath: ['summary', 'credit_symbols'],\n missingFromDataMessage:\n 'summary.credit_symbols must reference symbols from credits',\n missingFromSummaryMessage:\n 'All credit symbols must be listed in summary.credit_symbols',\n });\n\n validateSummaryListMatchesData({\n ctx,\n summaryValues: data.summary.collection_slugs,\n dataValues: collectionSlugs,\n summaryPath: ['summary', 'collection_slugs'],\n missingFromDataMessage:\n 'summary.collection_slugs must reference slugs from collections',\n missingFromSummaryMessage:\n 'All collection slugs must be listed in summary.collection_slugs',\n });\n\n validateSummaryListMatchesData({\n ctx,\n summaryValues: data.summary.certificate_types,\n dataValues: certificateTypes,\n summaryPath: ['summary', 'certificate_types'],\n missingFromDataMessage:\n 'summary.certificate_types must reference types present in certificates',\n missingFromSummaryMessage:\n 'All certificate types must be listed in summary.certificate_types',\n });\n\n const creditPurchaseTotalsBySlug = new Map<string, number>();\n const creditRetiredTotalsBySlug = new Map<string, number>();\n const collectionTotalsBySlug = new Map<string, number>();\n let totalCreditsFromCertificates = 0;\n\n data.certificates.forEach((certificate, index) => {\n if (!collectionSlugs.has(certificate.collection_slug)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'collection_slug must match a collection slug in collections',\n path: ['certificates', index, 'collection_slug'],\n });\n }\n\n if (!creditSlugs.has(certificate.credit_slug)) {\n ctx.addIssue({\n code: 'custom',\n message: 'credit_slug must match a credit slug in credits',\n path: ['certificates', index, 'credit_slug'],\n });\n }\n\n if (certificate.retired_amount > certificate.purchased_amount) {\n ctx.addIssue({\n code: 'custom',\n message: 'retired_amount cannot exceed purchased_amount',\n path: ['certificates', index, 'retired_amount'],\n });\n }\n\n if (certificate.purchased_amount > certificate.total_amount) {\n ctx.addIssue({\n code: 'custom',\n message: 'purchased_amount cannot exceed total_amount',\n path: ['certificates', index, 'purchased_amount'],\n });\n }\n\n totalCreditsFromCertificates += Number(certificate.purchased_amount);\n\n creditPurchaseTotalsBySlug.set(\n String(certificate.credit_slug),\n (creditPurchaseTotalsBySlug.get(certificate.credit_slug) ?? 0) +\n Number(certificate.purchased_amount),\n );\n creditRetiredTotalsBySlug.set(\n String(certificate.credit_slug),\n (creditRetiredTotalsBySlug.get(certificate.credit_slug) ?? 0) +\n Number(certificate.retired_amount),\n );\n collectionTotalsBySlug.set(\n String(certificate.collection_slug),\n (collectionTotalsBySlug.get(certificate.collection_slug) ?? 0) +\n Number(certificate.purchased_amount),\n );\n });\n\n const totalCreditsFromCollections = data.collections.reduce(\n (sum, collection) => sum + Number(collection.credit_amount),\n 0,\n );\n\n const totalCreditsFromCredits = data.credits.reduce(\n (sum, credit) => sum + Number(credit.purchase_amount),\n 0,\n );\n\n validateTotalMatches({\n ctx,\n actualTotal: totalCreditsFromCertificates,\n expectedTotal: data.summary.total_credits,\n path: ['summary', 'total_credits'],\n message:\n 'summary.total_credits must equal sum of certificates.purchased_amount',\n });\n\n validateTotalMatches({\n ctx,\n actualTotal: totalCreditsFromCredits,\n expectedTotal: data.summary.total_credits,\n path: ['summary', 'total_credits'],\n message:\n 'summary.total_credits must equal sum of credits.purchase_amount',\n });\n\n validateTotalMatches({\n ctx,\n actualTotal: totalCreditsFromCollections,\n expectedTotal: data.summary.total_credits,\n path: ['summary', 'total_credits'],\n message:\n 'summary.total_credits must equal sum of collections.credit_amount',\n });\n\n data.credits.forEach((credit, index) => {\n const purchasedTotal =\n creditPurchaseTotalsBySlug.get(String(credit.slug)) ?? 0;\n if (!nearlyEqual(Number(credit.purchase_amount), purchasedTotal)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'credit.purchase_amount must equal sum of certificate purchased_amount for the credit slug',\n path: ['credits', index, 'purchase_amount'],\n });\n }\n\n const retiredTotal =\n creditRetiredTotalsBySlug.get(String(credit.slug)) ?? 0;\n const retirementAmount = Number(credit.retirement_amount ?? 0);\n if (!nearlyEqual(retirementAmount, retiredTotal)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'credit.retirement_amount must equal sum of certificate retired_amount for the credit slug',\n path: ['credits', index, 'retirement_amount'],\n });\n }\n });\n\n data.collections.forEach((collection, index) => {\n const purchasedTotal =\n collectionTotalsBySlug.get(String(collection.slug)) ?? 0;\n if (!nearlyEqual(Number(collection.credit_amount), purchasedTotal)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'collection.credit_amount must equal sum of certificate purchased_amount for the collection slug',\n path: ['collections', index, 'credit_amount'],\n });\n }\n });\n\n const participantRewardTotal = data.participant_rewards.reduce(\n (sum, reward) => sum + Number(reward.usdc_amount),\n 0,\n );\n\n validateTotalMatches({\n ctx,\n actualTotal: participantRewardTotal,\n expectedTotal: data.summary.total_usdc_amount,\n path: ['summary', 'total_usdc_amount'],\n message:\n 'summary.total_usdc_amount must equal sum of participant_rewards.usdc_amount',\n });\n })\n .meta({\n title: 'Credit Purchase Receipt Data',\n description: 'Complete data structure for a credit purchase receipt',\n });\n\nexport type CreditPurchaseReceiptData = z.infer<\n typeof CreditPurchaseReceiptDataSchema\n>;\n","import { z } from 'zod';\nimport {\n NftIpfsSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n createAttributeMap,\n validateAttributeValue,\n validateAttributesForItems,\n validateDateAttribute,\n} from '../shared';\nimport { CreditPurchaseReceiptDataSchema } from './credit-purchase-receipt.data.schema';\nimport { CreditPurchaseReceiptAttributesSchema } from './credit-purchase-receipt.attributes';\n\nexport const CreditPurchaseReceiptIpfsSchemaMeta = {\n title: 'CreditPurchaseReceipt NFT IPFS Record',\n description:\n 'Complete CreditPurchaseReceipt NFT IPFS record including attributes and credit purchase data',\n $id: buildSchemaUrl(\n 'credit-purchase-receipt/credit-purchase-receipt.schema.json',\n ),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const CreditPurchaseReceiptIpfsSchema = NftIpfsSchema.safeExtend({\n schema: NftIpfsSchema.shape.schema.safeExtend({\n type: z.literal('CreditPurchaseReceipt').meta({\n title: 'CreditPurchaseReceipt Schema Type',\n description: 'CreditPurchaseReceipt NFT schema type',\n }),\n }),\n attributes: CreditPurchaseReceiptAttributesSchema,\n data: CreditPurchaseReceiptDataSchema,\n})\n .superRefine((value, ctx) => {\n const attributes = value.attributes;\n const data = value.data;\n\n const attributeByTraitType = createAttributeMap(attributes);\n\n validateAttributeValue({\n ctx,\n attributeByTraitType,\n traitType: 'Total Credits Purchased',\n expectedValue: data.summary.total_credits,\n missingMessage: 'Attribute \"Total Credits Purchased\" is required',\n mismatchMessage:\n 'Attribute \"Total Credits Purchased\" must match data.summary.total_credits',\n });\n\n validateAttributeValue({\n ctx,\n attributeByTraitType,\n traitType: 'Total USDC Amount',\n expectedValue: data.summary.total_usdc_amount,\n missingMessage: 'Attribute \"Total USDC Amount\" is required',\n mismatchMessage:\n 'Attribute \"Total USDC Amount\" must match data.summary.total_usdc_amount',\n });\n\n validateAttributeValue({\n ctx,\n attributeByTraitType,\n traitType: 'Certificates Purchased',\n expectedValue: data.summary.total_certificates,\n missingMessage: 'Attribute \"Certificates Purchased\" is required',\n mismatchMessage:\n 'Attribute \"Certificates Purchased\" must match data.summary.total_certificates',\n });\n\n const receiverName = data.parties.receiver.identity?.name;\n if (receiverName) {\n validateAttributeValue({\n ctx,\n attributeByTraitType,\n traitType: 'Receiver',\n expectedValue: String(receiverName),\n missingMessage:\n 'Attribute \"Receiver\" is required when receiver.identity.name is provided',\n mismatchMessage:\n 'Attribute \"Receiver\" must match receiver.identity.name',\n });\n }\n\n validateDateAttribute({\n ctx,\n attributeByTraitType,\n traitType: 'Purchase Date',\n dateValue: data.summary.purchase_date,\n missingMessage: 'Attribute \"Purchase Date\" is required',\n invalidDateMessage:\n 'data.summary.purchase_date must be a valid date string',\n mismatchMessage:\n 'Attribute \"Purchase Date\" must match data.summary.purchase_date as a Unix timestamp in milliseconds',\n datePath: ['data', 'summary', 'purchase_date'],\n });\n\n validateAttributesForItems({\n ctx,\n attributeByTraitType,\n items: data.credits,\n traitSelector: (credit) => String(credit.symbol),\n valueSelector: (credit) => Number(credit.purchase_amount),\n missingMessage: (symbol) =>\n `Attribute for credit symbol ${symbol} is required`,\n mismatchMessage: (symbol) =>\n `Attribute for credit symbol ${symbol} must match credit.purchase_amount`,\n });\n\n validateAttributesForItems({\n ctx,\n attributeByTraitType,\n items: data.collections,\n traitSelector: (collection) => String(collection.name),\n valueSelector: (collection) => Number(collection.credit_amount),\n missingMessage: (name) => `Attribute for collection ${name} is required`,\n mismatchMessage: (name) =>\n `Attribute for collection ${name} must match collection.credit_amount`,\n });\n })\n .meta(CreditPurchaseReceiptIpfsSchemaMeta);\n\nexport type CreditPurchaseReceiptIpfs = z.infer<\n typeof CreditPurchaseReceiptIpfsSchema\n>;\n","import { z } from 'zod';\nimport {\n CollectionNameSchema,\n CreditAmountSchema,\n NftAttributeSchema,\n ParticipantNameSchema,\n PositiveIntegerSchema,\n CreditTokenSymbolSchema,\n UnixTimestampSchema,\n uniqueBy,\n} from '../shared';\n\nconst CreditRetirementReceiptCreditAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: CreditTokenSymbolSchema,\n value: CreditAmountSchema.meta({\n title: 'Credit Retirement Amount',\n description: 'Amount of credits retired for the token symbol',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Credit Attribute',\n description:\n 'Attribute representing retired amount per credit token symbol',\n });\n\nconst CreditRetirementReceiptTotalCreditsAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Total Credits Retired'),\n value: CreditAmountSchema.meta({\n title: 'Total Credits Retired',\n description: 'Total number of credits retired across all tokens',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Total Credits Retired Attribute',\n description: 'Aggregate credits retired attribute',\n });\n\nconst CreditRetirementReceiptBeneficiaryAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Beneficiary'),\n value: ParticipantNameSchema.meta({\n title: 'Beneficiary',\n description: 'Beneficiary receiving the retirement benefit',\n examples: ['Climate Action Corp'],\n }),\n }).meta({\n title: 'Beneficiary Attribute',\n description: 'Attribute containing the beneficiary display name',\n });\n\nconst CreditRetirementReceiptCreditHolderAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Credit Holder'),\n value: ParticipantNameSchema.meta({\n title: 'Credit Holder',\n description: 'Entity that surrendered the credits',\n examples: ['EcoTech Solutions Inc.'],\n }),\n }).meta({\n title: 'Credit Holder Attribute',\n description: 'Attribute containing the credit holder display name',\n });\n\nconst CreditRetirementReceiptRetirementDateAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Retirement Date'),\n value: UnixTimestampSchema.meta({\n title: 'Retirement Date',\n description:\n 'Unix timestamp in milliseconds when the retirement was completed',\n }),\n display_type: z.literal('date'),\n }).meta({\n title: 'Retirement Date Attribute',\n description:\n 'Retirement date attribute using Unix timestamp in milliseconds',\n });\n\nconst CreditRetirementReceiptCertificatesAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: z.literal('Certificates Retired'),\n value: PositiveIntegerSchema.meta({\n title: 'Certificates Retired',\n description: 'Total number of certificates retired',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Certificates Retired Attribute',\n description:\n 'Attribute representing how many certificates were retired in total',\n });\n\nconst CreditRetirementReceiptCollectionAttributeSchema =\n NftAttributeSchema.safeExtend({\n trait_type: CollectionNameSchema,\n value: CreditAmountSchema.meta({\n title: 'Credits from Collection',\n description: 'Amount of credits retired from the collection',\n }),\n display_type: z.literal('number'),\n }).meta({\n title: 'Collection Attribute',\n description:\n 'Attribute representing the amount of credits retired from a collection',\n });\n\nexport const CreditRetirementReceiptAttributesSchema = uniqueBy(\n z.union([\n CreditRetirementReceiptCreditAttributeSchema,\n CreditRetirementReceiptTotalCreditsAttributeSchema,\n CreditRetirementReceiptBeneficiaryAttributeSchema,\n CreditRetirementReceiptCreditHolderAttributeSchema,\n CreditRetirementReceiptRetirementDateAttributeSchema,\n CreditRetirementReceiptCertificatesAttributeSchema,\n CreditRetirementReceiptCollectionAttributeSchema,\n ]),\n (attribute) => attribute.trait_type,\n 'Attribute trait_type values must be unique',\n)\n .min(6)\n .meta({\n title: 'Credit Retirement Receipt NFT Attribute Array',\n description:\n 'Attributes for credit retirement receipts including per-credit breakdowns, totals, beneficiary, credit holder, retirement date, certificate count, and per-collection amounts. Attributes must have unique trait types.',\n });\n\nexport type CreditRetirementReceiptAttributes = z.infer<\n typeof CreditRetirementReceiptAttributesSchema\n>;\n","import { z } from 'zod';\nimport {\n CreditAmountSchema,\n CreditTokenSymbolSchema,\n EthereumAddressSchema,\n ExternalIdSchema,\n ExternalUrlSchema,\n IpfsUriSchema,\n SlugSchema,\n SmartContractSchema,\n TokenIdSchema,\n uniqueBy,\n} from '../shared';\nimport {\n CreditRetirementReceiptSummarySchema,\n MassIdReferenceWithContractSchema,\n ReceiptIdentitySchema,\n createReceiptCertificateSchema,\n createReceiptCollectionSchema,\n createReceiptCreditSchema,\n nearlyEqual,\n} from '../shared/receipt';\nimport {\n validateCountMatches,\n validateSummaryListMatchesData,\n validateTotalMatches,\n} from '../shared/receipt/receipt.validation';\n\nexport type CreditRetirementReceiptSummary = z.infer<\n typeof CreditRetirementReceiptSummarySchema\n>;\n\nconst CreditRetirementReceiptIdentitySchema = ReceiptIdentitySchema;\n\nexport type CreditRetirementReceiptIdentity = z.infer<\n typeof CreditRetirementReceiptIdentitySchema\n>;\n\nconst CreditRetirementReceiptBeneficiarySchema = z\n .strictObject({\n beneficiary_id: ExternalIdSchema.meta({\n title: 'Retirement Beneficiary ID',\n description:\n 'UUID identifying the beneficiary of the retirement (bytes16 normalized to UUID)',\n }),\n identity: CreditRetirementReceiptIdentitySchema,\n })\n .meta({\n title: 'Beneficiary',\n description: 'Beneficiary receiving the retirement benefit',\n });\n\nexport type CreditRetirementReceiptBeneficiary = z.infer<\n typeof CreditRetirementReceiptBeneficiarySchema\n>;\n\nconst CreditRetirementReceiptCreditHolderSchema = z\n .strictObject({\n wallet_address: EthereumAddressSchema.meta({\n title: 'Credit Holder Wallet Address',\n description: 'Ethereum address of the credit holder surrendering credits',\n }),\n identity: CreditRetirementReceiptIdentitySchema.optional(),\n })\n .meta({\n title: 'Credit Holder',\n description: 'Credit holder wallet and optional identity information',\n });\n\nexport type CreditRetirementReceiptCreditHolder = z.infer<\n typeof CreditRetirementReceiptCreditHolderSchema\n>;\n\nconst CreditRetirementReceiptCollectionSchema = createReceiptCollectionSchema({\n amountKey: 'amount',\n amountMeta: {\n title: 'Collection Retirement Amount',\n description: 'Total credits retired from this collection',\n },\n meta: {\n title: 'Collection',\n description: 'Collection included in the retirement',\n },\n});\n\nexport type CreditRetirementReceiptCollection = z.infer<\n typeof CreditRetirementReceiptCollectionSchema\n>;\n\nconst CreditRetirementReceiptCreditSchema = createReceiptCreditSchema({\n amountKey: 'amount',\n amountMeta: {\n title: 'Credit Retirement Amount',\n description: 'Total credits retired for this credit type',\n },\n meta: {\n title: 'Credit',\n description: 'Credit token retired in this receipt',\n },\n});\n\nexport type CreditRetirementReceiptCredit = z.infer<\n typeof CreditRetirementReceiptCreditSchema\n>;\n\nconst CreditRetirementReceiptCertificateCreditSchema = z\n .strictObject({\n credit_symbol: CreditTokenSymbolSchema.meta({\n title: 'Credit Token Symbol',\n description: 'Symbol of the credit token retired from the certificate',\n }),\n credit_slug: SlugSchema.meta({\n title: 'Credit Slug',\n description: 'Slug of the credit type retired from the certificate',\n examples: ['carbon', 'organic'],\n }),\n amount: CreditAmountSchema.meta({\n title: 'Retired Credit Amount',\n description: 'Credits retired of this type from the certificate',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Retired Credit External ID',\n description: 'External identifier for the retired credit entry',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Retired Credit External URL',\n description: 'External URL for the retired credit entry',\n }),\n })\n .meta({\n title: 'Certificate Credit Retirement',\n description: 'Credit retirement breakdown for a certificate',\n });\n\nexport type CreditRetirementReceiptCertificateCredit = z.infer<\n typeof CreditRetirementReceiptCertificateCreditSchema\n>;\n\nexport type CreditRetirementMassIdReference = z.infer<\n typeof MassIdReferenceWithContractSchema\n>;\n\nconst CreditPurchaseReceiptReferenceSchema = z\n .strictObject({\n token_id: TokenIdSchema.meta({\n title: 'Purchase Receipt Token ID',\n description: 'Token ID of the credit purchase receipt',\n }),\n external_id: ExternalIdSchema.meta({\n title: 'Purchase Receipt External ID',\n description: 'External identifier for the purchase receipt',\n }),\n external_url: ExternalUrlSchema.meta({\n title: 'Purchase Receipt External URL',\n description: 'External URL for the purchase receipt',\n }),\n uri: IpfsUriSchema.meta({\n title: 'Purchase Receipt URI',\n description: 'IPFS URI for the purchase receipt metadata',\n }),\n smart_contract: SmartContractSchema,\n })\n .meta({\n title: 'Credit Purchase Receipt Reference',\n description:\n 'Reference to the credit purchase receipt when retirement occurs during purchase',\n });\n\nexport type CreditPurchaseReceiptReference = z.infer<\n typeof CreditPurchaseReceiptReferenceSchema\n>;\n\nconst CreditRetirementReceiptCertificateSchema = createReceiptCertificateSchema(\n {\n additionalShape: {\n retired_amount: CreditAmountSchema.meta({\n title: 'Certificate Retired Amount',\n description: 'Credits retired from this certificate',\n }),\n credits_retired: uniqueBy(\n CreditRetirementReceiptCertificateCreditSchema,\n (credit) => credit.credit_symbol,\n 'Credit symbols within credits_retired must be unique',\n )\n .min(1)\n .meta({\n title: 'Credits Retired',\n description:\n 'Breakdown of credits retired from this certificate by symbol',\n }),\n },\n meta: {\n title: 'Certificate',\n description: 'Certificate associated with the retirement',\n },\n },\n);\n\nexport type CreditRetirementReceiptCertificate = z.infer<\n typeof CreditRetirementReceiptCertificateSchema\n>;\n\nexport const CreditRetirementReceiptDataSchema = z\n .strictObject({\n summary: CreditRetirementReceiptSummarySchema,\n beneficiary: CreditRetirementReceiptBeneficiarySchema,\n credit_holder: CreditRetirementReceiptCreditHolderSchema,\n collections: uniqueBy(\n CreditRetirementReceiptCollectionSchema,\n (collection) => collection.slug,\n 'Collection slugs must be unique',\n )\n .min(1)\n .meta({\n title: 'Collections',\n description: 'Collections included in the retirement',\n }),\n credits: uniqueBy(\n CreditRetirementReceiptCreditSchema,\n (credit) => credit.slug,\n 'Credit slugs must be unique',\n )\n .min(1)\n .meta({\n title: 'Credits',\n description: 'Credits included in the retirement',\n }),\n certificates: uniqueBy(\n CreditRetirementReceiptCertificateSchema,\n (certificate) => certificate.token_id,\n 'Certificate token_ids must be unique',\n )\n .min(1)\n .meta({\n title: 'Certificates',\n description: 'Certificates retired in this receipt',\n }),\n purchase_receipt: CreditPurchaseReceiptReferenceSchema.optional(),\n })\n .superRefine((data, ctx) => {\n const creditSymbols = new Set<string>(\n data.credits.map((credit) => String(credit.symbol)),\n );\n const creditBySlug = new Map(\n data.credits.map((credit) => [credit.slug, credit]),\n );\n const collectionSlugs = new Set<string>(\n data.collections.map((collection) => String(collection.slug)),\n );\n const certificateTypes = new Set<string>(\n data.certificates.map((certificate) => String(certificate.type)),\n );\n\n validateCountMatches({\n ctx,\n actualCount: data.certificates.length,\n expectedCount: data.summary.total_certificates,\n path: ['summary', 'total_certificates'],\n message:\n 'summary.total_certificates must equal the number of certificates',\n });\n\n validateSummaryListMatchesData({\n ctx,\n summaryValues: data.summary.credit_symbols,\n dataValues: creditSymbols,\n summaryPath: ['summary', 'credit_symbols'],\n missingFromDataMessage:\n 'summary.credit_symbols must reference symbols from credits',\n missingFromSummaryMessage:\n 'All credit symbols must be listed in summary.credit_symbols',\n });\n\n validateSummaryListMatchesData({\n ctx,\n summaryValues: data.summary.collection_slugs,\n dataValues: collectionSlugs,\n summaryPath: ['summary', 'collection_slugs'],\n missingFromDataMessage:\n 'summary.collection_slugs must reference slugs from collections',\n missingFromSummaryMessage:\n 'All collection slugs must be listed in summary.collection_slugs',\n });\n\n validateSummaryListMatchesData({\n ctx,\n summaryValues: data.summary.certificate_types,\n dataValues: certificateTypes,\n summaryPath: ['summary', 'certificate_types'],\n missingFromDataMessage:\n 'summary.certificate_types must reference types present in certificates',\n missingFromSummaryMessage:\n 'All certificate types must be listed in summary.certificate_types',\n });\n\n const creditTotalsBySymbol = new Map<string, number>();\n const collectionTotalsBySlug = new Map<string, number>();\n let totalRetiredFromCertificates = 0;\n\n data.certificates.forEach((certificate, index) => {\n if (!collectionSlugs.has(certificate.collection_slug)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'collection_slug must match a collection slug in collections',\n path: ['certificates', index, 'collection_slug'],\n });\n }\n\n if (certificate.retired_amount > certificate.total_amount) {\n ctx.addIssue({\n code: 'custom',\n message: 'retired_amount cannot exceed total_amount',\n path: ['certificates', index, 'retired_amount'],\n });\n }\n\n const creditsRetiredTotal = certificate.credits_retired.reduce(\n (sum, credit) => sum + Number(credit.amount),\n 0,\n );\n\n if (!nearlyEqual(creditsRetiredTotal, certificate.retired_amount)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'certificates.credits_retired amounts must sum to certificates.retired_amount',\n path: ['certificates', index, 'credits_retired'],\n });\n }\n\n certificate.credits_retired.forEach((credit, creditIndex) => {\n const referencedCredit = creditBySlug.get(credit.credit_slug);\n if (!referencedCredit) {\n ctx.addIssue({\n code: 'custom',\n message: 'credit_slug must match a credit slug in credits',\n path: [\n 'certificates',\n index,\n 'credits_retired',\n creditIndex,\n 'credit_slug',\n ],\n });\n }\n\n if (!creditSymbols.has(credit.credit_symbol)) {\n ctx.addIssue({\n code: 'custom',\n message: 'credit_symbol must match a credit symbol in credits',\n path: [\n 'certificates',\n index,\n 'credits_retired',\n creditIndex,\n 'credit_symbol',\n ],\n });\n }\n\n if (\n referencedCredit &&\n referencedCredit.symbol !== credit.credit_symbol\n ) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'credit_symbol must match the symbol for the referenced credit_slug',\n path: [\n 'certificates',\n index,\n 'credits_retired',\n creditIndex,\n 'credit_symbol',\n ],\n });\n }\n\n creditTotalsBySymbol.set(\n credit.credit_symbol,\n (creditTotalsBySymbol.get(credit.credit_symbol) ?? 0) + credit.amount,\n );\n });\n\n collectionTotalsBySlug.set(\n String(certificate.collection_slug),\n (collectionTotalsBySlug.get(certificate.collection_slug) ?? 0) +\n Number(certificate.retired_amount),\n );\n\n totalRetiredFromCertificates += Number(certificate.retired_amount);\n });\n\n const totalRetiredFromCollections = data.collections.reduce(\n (sum, collection) => sum + Number(collection.amount),\n 0,\n );\n\n const totalRetiredFromCredits = data.credits.reduce(\n (sum, credit) => sum + Number(credit.amount),\n 0,\n );\n\n data.summary.credit_symbols.forEach((symbol) => {\n if ((creditTotalsBySymbol.get(symbol) ?? 0) === 0) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'Each summary credit symbol must appear in certificates.credits_retired with a retired amount',\n path: ['summary', 'credit_symbols'],\n });\n }\n });\n\n validateTotalMatches({\n ctx,\n actualTotal: totalRetiredFromCertificates,\n expectedTotal: data.summary.total_retirement_amount,\n path: ['summary', 'total_retirement_amount'],\n message:\n 'summary.total_retirement_amount must equal sum of certificates.retired_amount',\n });\n\n validateTotalMatches({\n ctx,\n actualTotal: totalRetiredFromCredits,\n expectedTotal: data.summary.total_retirement_amount,\n path: ['summary', 'total_retirement_amount'],\n message:\n 'summary.total_retirement_amount must equal sum of credits.amount',\n });\n\n validateTotalMatches({\n ctx,\n actualTotal: totalRetiredFromCollections,\n expectedTotal: data.summary.total_retirement_amount,\n path: ['summary', 'total_retirement_amount'],\n message:\n 'summary.total_retirement_amount must equal sum of collections.amount',\n });\n\n data.credits.forEach((credit, index) => {\n const retiredTotal = creditTotalsBySymbol.get(String(credit.symbol)) ?? 0;\n if (!nearlyEqual(Number(credit.amount), retiredTotal)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'credit.amount must equal sum of retired amounts for the credit symbol across certificates',\n path: ['credits', index, 'amount'],\n });\n }\n });\n\n data.collections.forEach((collection, index) => {\n const retiredTotal =\n collectionTotalsBySlug.get(String(collection.slug)) ?? 0;\n if (retiredTotal === 0) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'collection must be referenced by at least one certificate with retired_amount > 0',\n path: ['collections', index, 'slug'],\n });\n }\n if (Number(collection.amount) <= 0) {\n ctx.addIssue({\n code: 'custom',\n message: 'collection.amount must be greater than zero',\n path: ['collections', index, 'amount'],\n });\n }\n if (!nearlyEqual(Number(collection.amount), retiredTotal)) {\n ctx.addIssue({\n code: 'custom',\n message:\n 'collection.amount must equal sum of certificate retired_amount for the collection slug',\n path: ['collections', index, 'amount'],\n });\n }\n });\n })\n .meta({\n title: 'Credit Retirement Receipt Data',\n description: 'Complete data structure for a credit retirement receipt',\n });\n\nexport type CreditRetirementReceiptData = z.infer<\n typeof CreditRetirementReceiptDataSchema\n>;\n","import { z } from 'zod';\nimport {\n NftIpfsSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n createAttributeMap,\n validateAttributeValue,\n validateAttributesForItems,\n validateDateAttribute,\n} from '../shared';\nimport { CreditRetirementReceiptDataSchema } from './credit-retirement-receipt.data.schema';\nimport { CreditRetirementReceiptAttributesSchema } from './credit-retirement-receipt.attributes';\n\nconst CreditRetirementReceiptIpfsSchemaBase = NftIpfsSchema.omit({\n original_content_hash: true,\n});\n\nexport const CreditRetirementReceiptIpfsSchemaMeta = {\n title: 'CreditRetirementReceipt NFT IPFS Record',\n description:\n 'Complete CreditRetirementReceipt NFT IPFS record including attributes and credit retirement data',\n $id: buildSchemaUrl(\n 'credit-retirement-receipt/credit-retirement-receipt.schema.json',\n ),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const CreditRetirementReceiptIpfsSchema =\n CreditRetirementReceiptIpfsSchemaBase.safeExtend({\n schema: CreditRetirementReceiptIpfsSchemaBase.shape.schema.safeExtend({\n type: z.literal('CreditRetirementReceipt').meta({\n title: 'CreditRetirementReceipt Schema Type',\n description: 'CreditRetirementReceipt NFT schema type',\n }),\n }),\n attributes: CreditRetirementReceiptAttributesSchema,\n data: CreditRetirementReceiptDataSchema,\n })\n .superRefine((value, ctx) => {\n const attributes = value.attributes;\n const data = value.data;\n\n const attributeByTraitType = createAttributeMap(attributes);\n\n validateAttributeValue({\n ctx,\n attributeByTraitType,\n traitType: 'Total Credits Retired',\n expectedValue: data.summary.total_retirement_amount,\n missingMessage: 'Attribute \"Total Credits Retired\" is required',\n mismatchMessage:\n 'Attribute \"Total Credits Retired\" must match data.summary.total_retirement_amount',\n });\n\n validateAttributeValue({\n ctx,\n attributeByTraitType,\n traitType: 'Certificates Retired',\n expectedValue: data.summary.total_certificates,\n missingMessage: 'Attribute \"Certificates Retired\" is required',\n mismatchMessage:\n 'Attribute \"Certificates Retired\" must match data.summary.total_certificates',\n });\n\n validateAttributeValue({\n ctx,\n attributeByTraitType,\n traitType: 'Beneficiary',\n expectedValue: String(data.beneficiary.identity.name),\n missingMessage: 'Attribute \"Beneficiary\" is required',\n mismatchMessage:\n 'Attribute \"Beneficiary\" must match beneficiary.identity.name',\n });\n\n const creditHolderName = data.credit_holder.identity?.name;\n if (creditHolderName) {\n validateAttributeValue({\n ctx,\n attributeByTraitType,\n traitType: 'Credit Holder',\n expectedValue: String(creditHolderName),\n missingMessage:\n 'Attribute \"Credit Holder\" is required when credit_holder.identity.name is provided',\n mismatchMessage:\n 'Attribute \"Credit Holder\" must match credit_holder.identity.name',\n });\n }\n\n validateDateAttribute({\n ctx,\n attributeByTraitType,\n traitType: 'Retirement Date',\n dateValue: data.summary.retirement_date,\n missingMessage: 'Attribute \"Retirement Date\" is required',\n invalidDateMessage:\n 'data.summary.retirement_date must be a valid date string',\n mismatchMessage:\n 'Attribute \"Retirement Date\" must match data.summary.retirement_date as a Unix timestamp in milliseconds',\n datePath: ['data', 'summary', 'retirement_date'],\n });\n\n validateAttributesForItems({\n ctx,\n attributeByTraitType,\n items: data.credits,\n traitSelector: (credit) => String(credit.symbol),\n valueSelector: (credit) => Number(credit.amount),\n missingMessage: (symbol) =>\n `Attribute for credit symbol ${symbol} is required`,\n mismatchMessage: (symbol) =>\n `Attribute for credit symbol ${symbol} must match credit.amount`,\n });\n\n validateAttributesForItems({\n ctx,\n attributeByTraitType,\n items: data.collections,\n traitSelector: (collection) => String(collection.name),\n valueSelector: (collection) => Number(collection.amount),\n missingMessage: (name) =>\n `Attribute for collection ${name} is required`,\n mismatchMessage: (name) =>\n `Attribute for collection ${name} must match collection.amount`,\n });\n })\n .meta(CreditRetirementReceiptIpfsSchemaMeta);\n\nexport type CreditRetirementReceiptIpfs = z.infer<\n typeof CreditRetirementReceiptIpfsSchema\n>;\n","import { z } from 'zod';\nimport {\n BaseIpfsSchema,\n CollectionNameSchema,\n CollectionSlugSchema,\n IpfsUriSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\n\nexport const CollectionSchemaMeta = {\n title: 'Collection IPFS Record',\n description:\n \"Collection metadata stored in IPFS, extending the base schema with collection-specific fields required for NFT collection definitions in Carrot's ecosystem\",\n $id: buildSchemaUrl('collection/collection.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const CollectionSchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: z.literal('Collection').meta({\n title: 'Collection Schema Type',\n description: 'Collection schema type',\n }),\n }),\n name: CollectionNameSchema,\n slug: CollectionSlugSchema.optional(),\n image: IpfsUriSchema.meta({\n title: 'Collection Image',\n description: \"IPFS URI pointing to the collection's visual representation\",\n examples: ['ipfs://QmCollectionImageHash/collection-icon.png'],\n }),\n description: z\n .string()\n .min(50)\n .max(1000)\n .meta({\n title: 'Collection Description',\n description:\n 'Comprehensive description of the collection, its purpose, and context',\n examples: [\n 'Cold Start is a limited-edition collection created for early supporters of BOLD - Breakthrough in Organic Landfill Diversion. This purchase contributes to reducing global waste and promoting circularity, with funds distributed via smart contract to local recycling operations and communities.',\n ],\n }),\n}).meta(CollectionSchemaMeta);\n\nexport type Collection = z.infer<typeof CollectionSchema>;\n","import { z } from 'zod';\nimport {\n BaseIpfsSchema,\n IpfsUriSchema,\n NonEmptyStringSchema,\n SlugSchema,\n TokenSymbolSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\n\nexport const CreditSchemaMeta = {\n title: 'Credit IPFS Record',\n description:\n 'Credit token metadata stored in IPFS, extending the base schema with ERC20-specific details',\n $id: buildSchemaUrl('credit/credit.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const CreditSchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: z.literal('Credit').meta({\n title: 'Credit Schema Type',\n description: 'Credit schema type',\n }),\n }),\n symbol: TokenSymbolSchema,\n slug: SlugSchema.meta({\n title: 'Token Slug',\n description: 'URL-friendly identifier for the token',\n examples: ['carbon'],\n }).optional(),\n name: NonEmptyStringSchema.meta({\n title: 'Token Name',\n description: 'Full human-readable name of the ERC20 token',\n examples: ['Carrot Carbon'],\n }),\n decimals: z\n .number()\n .int()\n .min(0)\n .max(18)\n .meta({\n title: 'Token Decimals',\n description: 'Number of decimal places for the ERC20 token',\n examples: [18],\n }),\n image: IpfsUriSchema.meta({\n title: 'Token Image',\n description: \"IPFS URI pointing to the token's visual representation image\",\n examples: ['ipfs://QmTokenImageHash/credit-icon.png'],\n }),\n description: z\n .string()\n .min(50)\n .max(1000)\n .meta({\n title: 'Token Description',\n description:\n 'Comprehensive description of the credit token, its purpose, and impact',\n examples: [\n 'Carrot Carbon (C-CARB) represents verified carbon emissions reductions from organic waste composting projects. Each token equals one metric ton of CO2 equivalent prevented from entering the atmosphere through sustainable waste management practices.',\n ],\n }),\n}).meta(CreditSchemaMeta);\n\nexport type Credit = z.infer<typeof CreditSchema>;\n","import { z } from 'zod';\nimport {\n AuditRuleDefinitionsSchema,\n IpfsUriSchema,\n IsoDateSchema,\n MethodologyNameSchema,\n NonEmptyStringSchema,\n SemanticVersionSchema,\n SlugSchema,\n} from '../shared';\n\nexport const MethodologyDataSchema = z\n .strictObject({\n name: MethodologyNameSchema.meta({\n title: 'Methodology Name',\n description: 'Full official name of the methodology',\n }),\n short_name: NonEmptyStringSchema.max(50).meta({\n title: 'Methodology Short Name',\n description: 'Abbreviated name for UI display and references',\n examples: ['BOLD Carbon', 'BOLD Recycling'],\n }),\n slug: SlugSchema.meta({\n title: 'Methodology Slug',\n description: 'URL-friendly identifier for the methodology',\n examples: ['bold-carbon-ch4', 'bold-recycling'],\n }),\n version: SemanticVersionSchema.meta({\n title: 'Methodology Version',\n description: 'Version of the methodology',\n }),\n description: z.string().min(50).max(2000).meta({\n title: 'Methodology Description',\n description:\n 'Comprehensive methodology description including purpose, scope, and implementation approach',\n }),\n revision_date: IsoDateSchema.meta({\n title: 'Revision Date',\n description: 'ISO 8601 date of the last revision to this methodology',\n }),\n publication_date: IsoDateSchema.meta({\n title: 'Publication Date',\n description:\n 'ISO 8601 date of the original publication of this methodology',\n }),\n methodology_pdf: IpfsUriSchema.meta({\n title: 'Methodology PDF',\n description: 'IPFS URI pointing to the complete methodology PDF document',\n }),\n mass_id_audit_rules: AuditRuleDefinitionsSchema.meta({\n title: 'MassID Audit Rules',\n description:\n 'Audit rules that must be executed to check MassID compliance with the methodology',\n }),\n })\n .meta({\n title: 'Methodology Data',\n description: 'Methodology-specific data including audit rules',\n });\n\nexport type MethodologyData = z.infer<typeof MethodologyDataSchema>;\n","import { z } from 'zod';\nimport {\n BaseIpfsSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\nimport { MethodologyDataSchema } from './methodology.data.schema';\n\nexport const MethodologySchemaMeta = {\n title: 'Methodology IPFS Record',\n description:\n 'Methodology metadata stored in IPFS, extending the base schema with methodology data and audit rules',\n $id: buildSchemaUrl('methodology/methodology.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const MethodologySchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: z.literal('Methodology').meta({\n title: 'Methodology Schema Type',\n description: 'Methodology schema type',\n }),\n }),\n data: MethodologyDataSchema,\n}).meta(MethodologySchemaMeta);\n\nexport type Methodology = z.infer<typeof MethodologySchema>;\n","import { z } from 'zod';\nimport {\n AuditRuleExecutionResultsSchema,\n GasIDReferenceSchema,\n IsoDateSchema,\n MassIDReferenceSchema,\n MethodologyComplianceSchema,\n MethodologyReferenceSchema,\n NonNegativeIntegerSchema,\n} from '../shared';\n\nconst MassIDAuditSummarySchema = z\n .strictObject({\n audit_date: IsoDateSchema.meta({\n title: 'Audit Date',\n description: 'Date when the audit was completed',\n }),\n methodology_compliance: MethodologyComplianceSchema.meta({\n title: 'Methodology Compliance',\n description: 'Overall outcome of the audit process',\n }),\n total_rules_executed: NonNegativeIntegerSchema.meta({\n title: 'Total Rules Executed',\n description: 'Total number of audit rules executed',\n }),\n passed_rules: NonNegativeIntegerSchema.meta({\n title: 'Passed Rules Count',\n description: 'Number of rules that passed verification',\n }),\n failed_rules: NonNegativeIntegerSchema.meta({\n title: 'Failed Rules Count',\n description: 'Number of rules that failed verification',\n }),\n })\n .meta({\n title: 'Audit Summary',\n description: 'Summary of audit execution results',\n });\n\nexport type MassIDAuditSummary = z.infer<typeof MassIDAuditSummarySchema>;\n\nexport const MassIDAuditDataSchema = z\n .strictObject({\n methodology: MethodologyReferenceSchema,\n mass_id: MassIDReferenceSchema,\n gas_id: GasIDReferenceSchema,\n audit_summary: MassIDAuditSummarySchema,\n rules_execution_results: AuditRuleExecutionResultsSchema,\n })\n .meta({\n title: 'MassID Audit Data',\n description: 'Complete data structure for MassID Audit records',\n });\n\nexport type MassIDAuditData = z.infer<typeof MassIDAuditDataSchema>;\n","import { z } from 'zod';\nimport {\n BaseIpfsSchema,\n buildSchemaUrl,\n getSchemaVersionOrDefault,\n} from '../shared';\nimport { MassIDAuditDataSchema } from './mass-id-audit.data.schema';\n\nexport const MassIDAuditSchemaMeta = {\n title: 'MassID Audit IPFS Record',\n description:\n 'MassID audit metadata stored in IPFS, extending the base schema with audit results and references',\n $id: buildSchemaUrl('mass-id-audit/mass-id-audit.schema.json'),\n version: getSchemaVersionOrDefault(),\n} as const;\n\nexport const MassIDAuditSchema = BaseIpfsSchema.safeExtend({\n schema: BaseIpfsSchema.shape.schema.safeExtend({\n type: z.literal('MassID Audit').meta({\n title: 'MassID Audit Schema Type',\n description: 'MassID Audit schema type',\n }),\n }),\n data: MassIDAuditDataSchema,\n}).meta(MassIDAuditSchemaMeta);\n\nexport type MassIDAudit = z.infer<typeof MassIDAuditSchema>;\n"]}