@endevops/peppol-schema 0.1.0-beta.7 → 0.1.1-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +70 -19
- package/dist/index-CiW698HY.d.ts.map +1 -1
- package/dist/index.js +2 -6
- package/dist/index.js.map +1 -1
- package/dist/nodable-parser-CyDZtLCK.js +74 -0
- package/dist/nodable-parser-CyDZtLCK.js.map +1 -0
- package/dist/xml.d.ts +7 -0
- package/dist/xml.d.ts.map +1 -1
- package/dist/xml.js +7 -2
- package/dist/xml.js.map +1 -0
- package/package.json +22 -2
- package/src/schemas/peppol-document-schema.ts +2 -3
- package/src/xml/nodable-parser.ts +36 -0
- package/src/xml.ts +1 -0
- package/dist/parser-options-mbqEQPSY.js +0 -27
- package/dist/parser-options-mbqEQPSY.js.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["PeppolTaxSchemeId","PeppolPartyName","PeppolPartyLegalEntity","PeppolPartyIdentification","decodeTaxCategory","decodeTaxCategory","decodePartyLegalEntity","decodePartyLegalEntity","decodePartyName","decodeTaxCategory","decodePartyLegalEntity","decodeDocumentReference","decodeDocumentResponse","encodePartyLegalEntity","encodePartyName","encodePartyLegalEntity","encodePartyLegalEntity"],"sources":["../src/schemas/fields/default-customization-id.ts","../src/schemas/fields/default-profile-id.ts","../src/schemas/utils/peppol-base-64-schema.ts","../src/schemas/values/mime-codes-schema.ts","../src/schemas/fields/peppol-binary-object-schema.ts","../src/schemas/fields/peppol-identifier-schema.ts","../src/schemas/values/additional-document-reference-code-schema.ts","../src/schemas/fields/peppol-additional-document-reference-schema.ts","../src/schemas/values/currency-code-schema.ts","../src/schemas/fields/peppol-amount-schema.ts","../src/schemas/fields/peppol-line-price-allowance-charge-schema.ts","../src/schemas/values/allowance-charge-reason-code-schema.ts","../src/schemas/values/charge-reason-code-schema.ts","../src/schemas/fields/peppol-line-allowance-charge-schema.ts","../src/schemas/values/duty-tax-fee-category-schema.ts","../src/schemas/fields/peppol-tax-category-schema.ts","../src/schemas/fields/peppol-allowance-charge-schema.ts","../src/schemas/fields/peppol-billing-reference-schema.ts","../src/schemas/values/icd-codes-schema.ts","../src/schemas/values/peppol-country-code-schema.ts","../src/schemas/fields/peppol-address-schema.ts","../src/schemas/fields/peppol-delivery-schema.ts","../src/schemas/fields/peppol-invoice-line-period-schema.ts","../src/schemas/values/vat-date-code-schema.ts","../src/schemas/fields/peppol-invoice-period-schema.ts","../src/schemas/fields/peppol-legal-monetary-total-schema.ts","../src/schemas/fields/peppol-order-reference-schema.ts","../src/schemas/fields/peppol-contact-schema.ts","../src/schemas/fields/peppol-party-legal-entity-schema.ts","../src/schemas/fields/peppol-party-tax-scheme-schema.ts","../src/schemas/values/electronic-codes-schema.ts","../src/schemas/fields/peppol-party-base-schema.ts","../src/schemas/fields/peppol-payee-party-schema.ts","../src/schemas/values/payment-means-code-schema.ts","../src/schemas/fields/peppol-payment-means-schema.ts","../src/schemas/fields/peppol-payment-terms-schema.ts","../src/schemas/fields/peppol-tax-representative-schema.ts","../src/schemas/fields/peppol-tax-subtotal-category-schema.ts","../src/schemas/fields/peppol-tax-subtotal-schema.ts","../src/schemas/fields/peppol-tax-totals-base-schema.ts","../src/schemas/peppol-billing-base-schema.ts","../src/schemas/values/item-classification-codes-schema.ts","../src/schemas/fields/peppol-item-classification-schema.ts","../src/schemas/fields/peppol-line-item-schema.ts","../src/schemas/values/quantity-unit-codes-schema.ts","../src/schemas/fields/peppol-quantity-schema.ts","../src/schemas/fields/peppol-line-price-schema.ts","../src/schemas/fields/peppol-base-line-schema.ts","../src/schemas/fields/peppol-invoice-line-schema.ts","../src/schemas/values/invoice-type-code-schema.ts","../src/schemas/peppol-invoice-schema.ts","../src/schemas/fields/peppol-credit-note-line-schema.ts","../src/schemas/values/credit-note-type-code-schema.ts","../src/schemas/peppol-credit-note-schema.ts","../src/schemas/peppol-message-level-response-party-schema.ts","../src/schemas/values/peppol-document-type-code-schema.ts","../src/schemas/peppol-document-response-document-reference-schema.ts","../src/schemas/values/application-response-type-code-schema.ts","../src/schemas/peppol-document-response-document-schema.ts","../src/schemas/peppol-document-response-line-response-content-schema.ts","../src/schemas/peppol-document-response-line-response-schema.ts","../src/schemas/peppol-message-level-response-document-response-schema.ts","../src/schemas/utils/format-xsd-time.ts","../src/schemas/utils/peppol-xsd-time-schema.ts","../src/schemas/peppol-message-level-response-schema.ts","../src/schemas/values/op-status-action-schema.ts","../src/schemas/values/op-status-reason-schema.ts","../src/schemas/peppol-invoice-response-status-reason-code-schema.ts","../src/schemas/peppol-invoice-response-document-actual-response-status-schema.ts","../src/schemas/peppol-invoice-response-document-actual-response-schema.ts","../src/schemas/peppol-invoice-response-schema.ts","../src/helpers/get-prop.ts","../src/helpers/str-or-und.ts","../src/decoders/fields/decode-identifier.ts","../src/helpers/get-array.ts","../src/decoders/fields/decode-additional-document-references.ts","../src/decoders/fields/decode-amount.ts","../src/helpers/bool.ts","../src/helpers/num-or-und.ts","../src/decoders/fields/decode-base-allowance-charge.ts","../src/decoders/fields/decode-node-list.ts","../src/decoders/fields/decode-simple-identifier.ts","../src/decoders/fields/decode-tax-category.ts","../src/decoders/fields/decode-allowance-charges.ts","../src/decoders/fields/decode-billing-references.ts","../src/decoders/fields/decode-address.ts","../src/decoders/fields/decode-delivery.ts","../src/decoders/fields/decode-invoice-period.ts","../src/decoders/fields/decode-legal-monetary-total.ts","../src/decoders/fields/decode-order-reference.ts","../src/decoders/fields/decode-contact.ts","../src/decoders/fields/decode-electronic-address.ts","../src/decoders/fields/decode-party-tax-scheme.ts","../src/decoders/fields/decode-parties-tax-scheme.ts","../src/decoders/fields/decode-party-legal-entity.ts","../src/decoders/fields/decode-party.ts","../src/decoders/fields/decode-payee-party.ts","../src/decoders/fields/decode-payment-means.ts","../src/decoders/fields/decode-payment-terms.ts","../src/decoders/fields/decode-tax-representative-party.ts","../src/decoders/fields/decode-tax-totals.ts","../src/decoders/decode-billing.ts","../src/decoders/fields/decode-invoice-line-period.ts","../src/decoders/fields/decode-line-allowance-charges.ts","../src/decoders/fields/decode-price-allowance-charge.ts","../src/decoders/fields/decode-quantity.ts","../src/decoders/fields/decode-line-price.ts","../src/decoders/fields/decode-line-shared.ts","../src/decoders/fields/decode-credit-note-lines.ts","../src/decoders/decode-credit-note.ts","../src/decoders/fields/decode-application-response.ts","../src/decoders/fields/decode-invoice-message-document-party.ts","../src/decoders/fields/decode-invoice-message-party.ts","../src/decoders/decode-invoice-response.ts","../src/decoders/fields/decode-invoice-lines.ts","../src/decoders/decode-invoice.ts","../src/decoders/fields/decode-message-level-party.ts","../src/decoders/decode-message-level-response.ts","../src/decoders/fields/encode-identifier.ts","../src/decoders/fields/encode-additional-document-references.ts","../src/decoders/fields/encode-amount.ts","../src/decoders/fields/encode-simple-identifier.ts","../src/decoders/fields/encode-tax-category.ts","../src/decoders/fields/encode-allowance-charges.ts","../src/decoders/fields/encode-billing-references.ts","../src/decoders/fields/encode-invoice-line-period.ts","../src/decoders/fields/encode-line-allowance-charges.ts","../src/decoders/fields/encode-price-allowance-charges.ts","../src/decoders/fields/encode-quantity.ts","../src/decoders/fields/encode-line-price.ts","../src/decoders/fields/encode-line-shared.ts","../src/decoders/fields/encode-credit-note-lines.ts","../src/decoders/fields/encode-address.ts","../src/decoders/fields/encode-delivery.ts","../src/decoders/fields/encode-invoice-period.ts","../src/decoders/fields/encode-legal-monetary-total.ts","../src/decoders/fields/encode-order-reference.ts","../src/decoders/fields/encode-contact.ts","../src/decoders/fields/encode-party-tax-scheme.ts","../src/decoders/fields/encode-parties-tax-scheme.ts","../src/decoders/fields/encode-party-legal-entity.ts","../src/decoders/fields/encode-party.ts","../src/decoders/fields/encode-payee-party.ts","../src/decoders/fields/encode-payment-means.ts","../src/decoders/fields/encode-payment-terms.ts","../src/decoders/fields/encode-tax-representative-party.ts","../src/decoders/fields/encode-tax-totals.ts","../src/decoders/encode-credit-note.ts","../src/decoders/fields/encode-message-party.ts","../src/decoders/encode-invoice-response.ts","../src/decoders/fields/encode-invoice-lines.ts","../src/decoders/encode-invoice.ts","../src/decoders/encode-message-level-response.ts","../src/schemas/peppol-document-schema.ts","../src/schemas/fields/peppol-reference-schema.ts","../src/schemas/utils/quantity-unit-code-to-intl-unit.ts","../src/schemas/utils/format-quantity-with-unit.ts","../src/schemas/utils/get-credit-note-type-code-description.ts","../src/schemas/utils/get-invoice-type-code-description.ts","../src/schemas/utils/is-valid-credit-note-type-code.ts","../src/schemas/utils/is-valid-invoice-type-code.ts","../src/schemas/utils/is-valid-process.ts","../src/schemas/utils/peppol-vat-regex-schema.ts","../src/schemas/values/peppol-document-type-schema.ts","../src/schemas/values/document-type-schemes-schema.ts","../src/schemas/values/document-type-values-schema.ts","../src/schemas/values/invoice-status-code-schema.ts","../src/schemas/values/participant-identifier-code-schema.ts","../src/schemas/values/peppol-process-schema.ts","../src/schemas/values/process-from-document-type-schema.ts","../src/schemas/values/vatex-code-schema.ts"],"sourcesContent":["export const DEFAULT_CUSTOMIZATION_ID = 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0' as const;\n","export const DEFAULT_PROFILE_ID = 'urn:fdc:peppol.eu:2017:poacc:billing:01:1.0' as const;\n","import { Schema } from 'effect';\n\n// RFC 4648 §4 — Base 64 Encoding\n//\n// Alphabet: A-Z a-z 0-9 + / (pad: =)\n// Encoding quanta: 4 characters represent 3 bytes.\n// Padding rules (only at the very end):\n// • 0 pad chars → last quantum is xxxx (input length % 3 === 0)\n// • 1 pad char → last quantum is xxx= (input length % 3 === 2)\n// • 2 pad chars → last quantum is xx== (input length % 3 === 1)\n//\n// §3.1: CRLF / LF line endings are treated as non-alphabet characters\n// and stripped before validation (as in PEM / MIME / XML).\n// §3.3: Implementations MUST reject data with non-alphabet characters\n// (other than the allowed line endings stripped above).\n//\n// The regex below encodes all three quantum variants in a single pass:\n// ([A-Za-z0-9+/]{4})* — zero or more full quanta (no padding)\n// followed by one of:\n// [A-Za-z0-9+/]{2}== — 2-pad quantum (1 remaining input byte)\n// [A-Za-z0-9+/]{3}= — 1-pad quantum (2 remaining input bytes)\n// (empty) — no trailing partial quantum\nconst BASE64_RE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n/**\n * @description RFC 4648 base64 string (PEM / MIME / XML line endings tolerated). Effect port of `base64Schema` (`z.string().check(z.refine(...))`): strips CRLF /\n * LF line endings before testing the quantum regex.\n */\nexport const peppolBase64Schema = Schema.String.check(Schema.makeFilter((val: string) => BASE64_RE.test(val.replace(/\\r?\\n/g, '')))).annotate({\n message: 'Invalid base64',\n});\n\nexport type Base64 = typeof peppolBase64Schema.Type;\n","import { Schema } from 'effect';\n\nimport { mimeCodesKeys } from '#/values/mime-codes.generated';\n\n/**\n * @description A MIME media type code (e.g. `application/pdf`) as used for attached documents.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/MimeCode/\n */\nexport type PeppolMimeCode = typeof mimeCodesSchema.Type;\n\n/**\n * @description Validates a MIME media type against the PEPPOL MIME code list.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid MIME types.\n *\n * @validations\n * - PEPPOL-EN16931-CL001: Attachment (MIME) type MUST come from the allowed list.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/MimeCode/\n */\nexport const mimeCodesSchema = Schema.Literals(mimeCodesKeys)\n .pipe(Schema.brand('PeppolMimeCode'))\n .annotate({ documentation: 'PEPPOL-EN16931-CL001: Mime code must be according to subset of IANA code list.' });\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolBase64Schema } from '#/schemas/utils/peppol-base-64-schema.ts';\nimport { mimeCodesSchema } from '#/schemas/values/mime-codes-schema.ts';\n\n// RFC 4648 §5 — Base64url Encoding: URL/file-safe alphabet (A-Z a-z 0-9 - _), optional `=` padding.\n// Effect port of `z.base64url()`: keeps the value as a plain string and only validates the shape.\nconst base64UrlSchema = Schema.String.check(Schema.isPattern(/^[A-Za-z0-9\\-_]+={0,2}$/)).annotate({ message: 'Invalid base64url' });\n\n/**\n * @summary Binary object for attachments\n *\n * @name cbc:EmbeddedDocumentBinaryObject (+ @mimeCode, @filename)\n */\nexport class PeppolBinaryObject extends opaque<PeppolBinaryObject>()(\n Schema.Struct({\n /**\n * @description An attached document embedded as binary object (Base64) or sent together with the invoice.\n *\n * @example\n * aHR0cHM6Ly90ZXN0LXZlZmEuZGlmaS5uby9wZXBwb2xiaXMvcG9hY2MvYmlsbGluZy8zLjAvYmlzLw==\n *\n * @summary Attached document\n *\n * @name `#text` (Base64 content)\n */\n content: Schema.Union([peppolBase64Schema, base64UrlSchema]),\n /**\n * @description The mime code of the attached document.\n *\n * @example\n * text / csv;\n *\n * @summary Attached document Mime code\n *\n * @name `@mimeCode`\n */\n mimeCode: mimeCodesSchema,\n /**\n * @description The file name of the attached document.\n *\n * @example\n * Hours - spent.csv;\n *\n * @summary Attached document Filename\n *\n * @name `@filename`\n */\n filename: Schema.String,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary Identifier with optional scheme\n *\n * @name `cbc:ID (+ optional @schemeID)`\n */\nexport class PeppolIdentifier extends opaque<PeppolIdentifier>()(\n Schema.Struct({\n /**\n * @name cbc:ID\n */\n id: Schema.String,\n /**\n * @name `@schemeID`\n */\n schemeId: Schema.optional(Schema.String),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { additionalDocumentReferenceCodesKeys } from '#/values/additional-document-reference-codes.generated';\n\n/**\n * @description Additional document reference.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1153/\n * @see {@link additionalDocumentReferenceCodesKeys}\n */\nexport type PeppolAdditionalDocumentReferenceCode = typeof additionalDocumentReferenceCodeSchema.Type;\n\n/**\n * @description Validates an additional document reference code against the PEPPOL subset of UNCL 1153 (reference qualifiers).\n *\n * @param error - The custom error message to use when validation fails. Defaults to the generic message.\n *\n * @returns An Effect schema that accepts only valid additional document reference codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1153/\n * @see {@link additionalDocumentReferenceCodesKeys}\n */\nexport const additionalDocumentReferenceCodeSchema = Schema.Literals(additionalDocumentReferenceCodesKeys).pipe(\n Schema.brand('PeppolAdditionalDocumentReferenceCode')\n);\n","import { Schema } from 'effect';\n\nimport { PeppolBinaryObject } from '#/schemas/fields/peppol-binary-object-schema.ts';\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { additionalDocumentReferenceCodeSchema } from '#/schemas/values/additional-document-reference-code-schema.ts';\n\nclass PeppolAttachmentExternalReference extends opaque<PeppolAttachmentExternalReference>()(\n Schema.Struct({\n /**\n * @description The URL (Uniform Resource Locator) that identifies where the external document is located. A means of locating the resource, including its\n * primary access mechanism, e.g. http:// or ftp://.\n *\n * @example\n * `http://www.example.com/index.html`;\n *\n * @summary External document location\n *\n * @name `cbc:URI`\n */\n uri: Schema.String,\n })\n) {}\n\nclass PeppolAttachment extends opaque<PeppolAttachment>()(\n Schema.Struct({\n /**\n * @description An attached document embedded as binary object (Base64) or sent together with the invoice.\n *\n * @example\n * ```base64\n * aHR0cHM6Ly90ZXN0LXZlZmEuZGlmaS5uby9wZXBwb2xiaXMvcG9hY2MvYmlsbGluZy8zLjAvYmlzLw==\n * ```;\n *\n * @summary Attached document\n *\n * @name `cbc:EmbeddedDocumentBinaryObject`\n */\n embeddedDocumentBinaryObject: Schema.optional(PeppolBinaryObject),\n /**\n * @summary EXTERNAL REFERENCE\n *\n * @name `cac:ExternalReference`\n */\n externalReference: Schema.optional(PeppolAttachmentExternalReference),\n })\n) {}\n\nclass PeppolId extends opaque<PeppolId>()(\n Schema.Struct({\n /**\n * @description An identifier for an object on which the invoice is based (with DocumentTypeCode=130), given by the Seller, the identifier for the supporting\n * document or the project reference identifier (DocumentTypeCode=50).\n *\n * @summary Invoiced object identifier, Supporting document reference or project reference\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Invoiced object identifier.\n *\n * @summary Scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(additionalDocumentReferenceCodeSchema),\n })\n) {}\n\n/**\n * @description A group of business terms providing information about additional supporting documents substantiating the claims made in the Invoice. The additional\n * supporting documents can be used for both referencing a document number which is expected to be known by the receiver, an external document\n * (referenced by a URL) or as an embedded document, Base64 encoded (such as a time report).\n *\n * @summary ADDITIONAL SUPPORTING DOCUMENTS\n *\n * @name `cac:AdditionalDocumentReference`\n */\nexport class PeppolAdditionalDocumentReference extends opaque<PeppolAdditionalDocumentReference>()(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description An identifier for an object on which the invoice is based (with DocumentTypeCode=130), given by the Seller, the identifier for the supporting\n * document or the project reference identifier (DocumentTypeCode=50).\n *\n * @summary Invoiced object identifier, Supporting document reference or project reference\n *\n * @name `cbc:ID`\n */\n id: PeppolId,\n /**\n * @remarks\n * Code \"130\" MUST be used to indicate an invoice object reference and code \"50\" for project reference. Element is not used for other\n * additional documents.\n *\n * @default 130\n *\n * @summary Document type code\n *\n * @name `cbc:DocumentTypeCode`\n */\n documentTypeCode: Schema.optional(Schema.String),\n /**\n * @description A description of the supporting document, such as timesheet, usage report, etc.\n *\n * @example\n * Time list\n *\n * @summary Supporting document description\n *\n * @name `cbc:DocumentDescription`\n */\n documentDescription: Schema.optional(Schema.String),\n /**\n * @summary Attachment\n *\n * @name `cac:Attachment`\n */\n attachment: Schema.optional(PeppolAttachment),\n })\n )\n) {}\n","/**\n * @description Currency codes as defined by ISO 4217.\n *\n * @see https://www.iso.org/iso-4217-currency-codes.html\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/\n */\n\nimport { Schema } from 'effect';\n\nimport { currencyCodesKeys } from '#/values/currency-code.generated';\n\n/**\n * @description An ISO 4217 currency code as defined by the PEPPOL subset.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/\n */\nexport type PeppolCurrencyCode = Schema.Schema.Type<typeof currencyCodeSchema>;\n/**\n * @description An ISO 4217 currency code as defined by the PEPPOL subset.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/\n */\nexport type PeppolCurrencyCodeEncoded = Schema.Codec.Encoded<typeof currencyCodeSchema>;\n\n/**\n * @description Validates an ISO 4217 currency code against the PEPPOL codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid currency codes.\n *\n * @validations\n * - PEPPOL-EN16931-CL007: Currency codes MUST be valid ISO 4217 codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/\n */\nexport const currencyCodeSchema = Schema.Literals(currencyCodesKeys).pipe(Schema.brand('PeppolCurrencyCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { currencyCodeSchema } from '#/schemas/values/currency-code-schema.ts';\n\n/**\n * @summary Monetary amount with mandatory currency\n *\n * @name cbc:* (+ @currencyID)\n */\nexport class PeppolAmount extends opaque<PeppolAmount>()(\n Schema.Struct({\n /**\n * @name \\@currencyID\n */\n currencyId: currencyCodeSchema,\n /**\n * @name #text (value)\n */\n value: Schema.Finite,\n })\n) {}\nexport interface PeppolAmountEncoded extends Schema.Codec.Encoded<typeof PeppolAmount> {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PriceAllowanceCharge extends opaque<PriceAllowanceCharge>()(\n Schema.Struct({\n /**\n * @example\n * 200;\n *\n * @name cbc:Amount (+ @currencyID)\n */\n amount: PeppolAmount,\n /**\n * @example\n * 1000;\n *\n * @name cbc:BaseAmount (+ @currencyID)\n */\n baseAmount: Schema.optional(PeppolAmount),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value false\n */\n chargeIndicator: Schema.Boolean,\n })\n) {}\n\nexport class PeppolLinePriceAllowanceCharge extends opaque<PeppolLinePriceAllowanceCharge>()(\n PriceAllowanceCharge.pipe(\n Schema.fieldsAssign({\n chargeIndicator: Schema.Literal(false).annotate({\n message: \"PEPPOL-EN16931-R044: Charge on price level is NOT allowed. Only value 'false' allowed.\",\n }),\n })\n )\n) {}\n\nexport { PriceAllowanceCharge };\n","import { Schema } from 'effect';\n\nimport { allowanceChargeReasonCodesKeys } from '#/values/allowance-charge-reason-codes.generated';\n\n/**\n * @description An allowance or charge reason code as defined by the PEPPOL subset of UNCL 5189.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5189/\n */\nexport type PeppolAllowanceChargeReasonCode = typeof allowanceChargeReasonCodeSchema.Type;\n\n/**\n * @description Validates an allowance or charge reason code against the PEPPOL subset of UNCL 5189 (D.16B).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid allowance/charge reason codes.\n *\n * @validations\n * - PEPPOL-EN16931-CL002: Document allowance reason code MUST be according to the subset of UNCL 5189 D.16B.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5189/\n */\nexport const allowanceChargeReasonCodeSchema = Schema.Literals(allowanceChargeReasonCodesKeys)\n .pipe(Schema.brand('PeppolAllowanceChargeReasonCode'))\n .annotate({ documentation: 'PEPPOL-EN16931-CL002: Reason code MUST be according to subset of UNCL 5189 D.16B.' });\n","import { Schema } from 'effect';\n\nimport { chargeReasonCodesKeys } from '#/values/charge-reason-codes.generated';\n\n/**\n * @description A charge reason code as defined by the PEPPOL subset of UNCL 7161.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL7161/\n */\nexport type PeppolChargeReasonCode = typeof chargeReasonCodeSchema.Type;\n\n/**\n * @description Validates a charge reason code against the PEPPOL subset of UNCL 7161 (D.16B).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid charge reason codes.\n *\n * @validations\n * - PEPPOL-EN16931-CL003: Charge reason code MUST be according to UNCL 7161 D.16B.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL7161/\n */\nexport const chargeReasonCodeSchema = Schema.Literals(chargeReasonCodesKeys)\n .pipe(Schema.brand('PeppolChargeReasonCode'))\n .annotate({ documentation: 'PEPPOL-EN16931-CL003: Reason code MUST be according to UNCL 7161 D.16B.' });\n","import { Schema } from 'effect';\n\nimport { PriceAllowanceCharge } from '#/schemas/fields/peppol-line-price-allowance-charge-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { allowanceChargeReasonCodeSchema } from '#/schemas/values/allowance-charge-reason-code-schema.ts';\nimport { chargeReasonCodeSchema } from '#/schemas/values/charge-reason-code-schema.ts';\n\nexport class BaseLineAllowanceCharge extends opaque<BaseLineAllowanceCharge>()(\n Schema.Struct({\n ...PriceAllowanceCharge.fields /**\n * @example\n * Discount;\n *\n * @name cbc:AllowanceChargeReason\n */,\n allowanceChargeReason: Schema.optional(Schema.String),\n /**\n * @example\n * 20;\n *\n * @name cbc:MultiplierFactorNumeric\n */\n multiplierFactorNumeric: Schema.optional(Schema.Finite),\n })\n) {}\n\nexport class PeppolLineAllowance extends opaque<PeppolLineAllowance>()(\n Schema.Struct({\n ...BaseLineAllowanceCharge.fields,\n /**\n * @name cbc:AllowanceChargeReasonCode\n */\n allowanceChargeReasonCode: Schema.optional(allowanceChargeReasonCodeSchema),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value `false`\n */\n chargeIndicator: Schema.Literal(false).annotate({\n message: \"PEPPOL-EN16931-R043: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'\",\n }),\n })\n) {}\n\nexport class PeppolLineCharge extends opaque<PeppolLineCharge>()(\n Schema.Struct({\n ...BaseLineAllowanceCharge.fields,\n /**\n * @name cbc:AllowanceChargeReasonCode\n */\n allowanceChargeReasonCode: Schema.optional(chargeReasonCodeSchema),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value `true`\n */\n chargeIndicator: Schema.Literal(true).annotate({\n message: \"PEPPOL-EN16931-R043: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'\",\n }),\n })\n) {}\n\nexport const peppolLineAllowanceChargeSchema = Schema.Union([PeppolLineAllowance, PeppolLineCharge]).annotate({\n message: 'unable to decode line allowance charge',\n});\n\nexport type PeppolLineAllowanceCharge = typeof peppolLineAllowanceChargeSchema.Type;\nexport type PeppolLineAllowanceChargeEncoded = typeof peppolLineAllowanceChargeSchema.Encoded;\n","import { Schema } from 'effect';\n\nimport { dutyTaxFeeCategoriesKeys } from '#/values/duty-tax-fee-categories.generated';\n\n/**\n * @description A duty, tax or fee category code as defined by the PEPPOL subset of UNCL 5305 (VAT category code).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/\n */\nexport type PeppolDutyTaxFeeCategoryCode = typeof peppolDutyTaxFeeCategorySchema.Type;\nexport type PeppolDutyTaxFeeCategoryCodeEncoded = typeof peppolDutyTaxFeeCategorySchema.Encoded;\n\n/**\n * @description Validates a duty, tax or fee category code against the PEPPOL subset of UNCL 5305 (VAT category code).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid duty/tax/fee category codes.\n *\n * @validations\n * - BR-CL-17 / BR-CL-18: VAT category code MUST be a valid UNCL 5305 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/\n */\nexport const peppolDutyTaxFeeCategorySchema = Schema.Literals(dutyTaxFeeCategoriesKeys).pipe(Schema.brand('PeppolDutyTaxFeeCategoryCode'));\n","import { Effect, Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolDutyTaxFeeCategorySchema } from '#/schemas/values/duty-tax-fee-category-schema.ts';\n\nexport class PeppolTaxSchemeId extends opaque<PeppolTaxSchemeId>()(\n Schema.Struct({\n /**\n * @name `cbc:ID`\n */\n id: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed('VAT'))),\n })\n) {}\n\n/**\n * @description A group of business terms providing information about the VAT applicable for the goods and services invoiced on the Invoice line.\n *\n * @summary LINE VAT INFORMATION\n *\n * @name `cac:TaxCategory`\n */\nexport class PeppolTaxCategory extends opaque<PeppolTaxCategory>()(\n Schema.Struct({\n /**\n * @description The VAT category code for the invoiced item.\n *\n * @summary Invoiced item VAT category code\n *\n * @name `cbc:ID`\n */\n id: peppolDutyTaxFeeCategorySchema,\n /**\n * @description The VAT rate, represented as percentage that applies to the invoiced item.\n *\n * @summary Invoiced item VAT rate\n *\n * @name `cbc:Percent`\n */\n percent: Schema.optional(Schema.Finite),\n /**\n * @default VAT\n *\n * @name `cac:TaxScheme`\n */\n taxSchemeId: PeppolTaxSchemeId,\n })\n) {}\n","import { Effect, Schema } from 'effect';\n\nimport { BaseLineAllowanceCharge } from '#/schemas/fields/peppol-line-allowance-charge-schema.ts';\nimport { PeppolTaxCategory } from '#/schemas/fields/peppol-tax-category-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { allowanceChargeReasonCodeSchema } from '#/schemas/values/allowance-charge-reason-code-schema.ts';\nimport { chargeReasonCodeSchema } from '#/schemas/values/charge-reason-code-schema.ts';\nimport { peppolDutyTaxFeeCategorySchema } from '#/schemas/values/duty-tax-fee-category-schema.ts';\n\nexport class PeppolTaxCategoryTaxSchemeId extends opaque<PeppolTaxCategoryTaxSchemeId>()(\n Schema.Struct({\n /**\n * @description Mandatory element. Use \"VAT\"\n *\n * @name `cbc:ID`\n */\n id: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed('VAT'))),\n })\n) {}\n\nexport class BaseAllowanceCharge extends opaque<BaseAllowanceCharge>()(\n Schema.Struct({\n ...BaseLineAllowanceCharge.fields,\n /**\n * @summary TAX CATEGORY\n *\n * @name cac:TaxCategory\n */\n taxCategory: Schema.optional(\n PeppolTaxCategory.pipe(\n Schema.fieldsAssign({\n /**\n * @description A coded identification of what VAT category applies to the document level allowance or charge.\n *\n * @summary Document level allowance or charge VAT category code\n *\n * @name `cbc:ID`\n */\n id: peppolDutyTaxFeeCategorySchema,\n /**\n * @description The VAT rate, represented as percentage that applies to the document level allowance or charge.\n *\n * @summary Document level allowance or charge VAT rate\n *\n * @name `cbc:Percent`\n */\n percent: Schema.optional(Schema.Finite),\n /**\n * @default VAT\n *\n * @name `cac:TaxScheme`\n */\n taxSchemeId: PeppolTaxCategoryTaxSchemeId,\n })\n )\n ),\n })\n) {}\n\nexport class PeppolAllowance extends opaque<PeppolAllowance>()(\n Schema.Struct({\n ...BaseAllowanceCharge.fields,\n /**\n * @name cbc:AllowanceChargeReasonCode\n */\n allowanceChargeReasonCode: Schema.optional(allowanceChargeReasonCodeSchema),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value `false`\n */\n chargeIndicator: Schema.Literal(false).annotate({\n message: \"PEPPOL-EN16931-R043: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'\",\n }),\n })\n) {}\n\nexport class PeppolCharge extends opaque<PeppolCharge>()(\n Schema.Struct({\n ...BaseAllowanceCharge.fields,\n /**\n * @name cbc:AllowanceChargeReasonCode\n */\n allowanceChargeReasonCode: Schema.optional(chargeReasonCodeSchema),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value `true`\n */\n chargeIndicator: Schema.Literal(true).annotate({\n message: \"PEPPOL-EN16931-R043: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'\",\n }),\n })\n) {}\n\n/**\n * @summary Allowance/Charge\n *\n * @name cac:AllowanceCharge\n */\nexport const peppolAllowanceChargeSchema = Schema.Union([PeppolAllowance, PeppolCharge]).annotate({ message: 'unable to decode allowance charge' });\n\nexport type PeppolAllowanceCharge = Schema.Schema.Type<typeof peppolAllowanceChargeSchema>;\nexport type PeppolAllowanceChargeEncoded = Schema.Codec.Encoded<typeof peppolAllowanceChargeSchema>;\n","import { Schema } from 'effect';\n\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PeppolInvoiceDocumentReference extends opaque<PeppolInvoiceDocumentReference>()(\n Schema.Struct({\n /**\n * @description The identification of an Invoice that was previously sent by the seller.\n *\n * @example\n * `inv123`;\n *\n * @summary Preceding invoice number\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description The date when the preceding invoice was issued. Shall be provided in case the preceding invoice identifier is not unique.\n *\n * @example\n * `2017-09-15`;\n *\n * @summary Preceding invoice issue date\n *\n * @format `YYYY-MM-DD`\n *\n * @name `cbc:IssueDate`\n */\n issueDate: Schema.optional(PeppolIsoDateString),\n })\n) {}\n\n/**\n * @summary PRECEDING INVOICE REFERENCE (0..n)\n *\n * @name cac:BillingReference\n */\nexport class PeppolBillingReference extends opaque<PeppolBillingReference>()(\n Schema.Struct({\n /**\n * @example\n * inv123;\n *\n * @summary INVOICE DOCUMENT REFERENCE\n *\n * @name `cac:InvoiceDocumentReference`\n */\n invoiceDocumentReference: PeppolInvoiceDocumentReference,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { icdCodesKeys } from '#/values/icd-codes.generated';\n\n/**\n * @description An ISO 6523 ICD (International Code Designator) code identifying an identifier scheme.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ICD/\n */\nexport type PeppolIcdCode = typeof icdCodesSchema.Type;\n\n/**\n * @description Validates an ISO 6523 ICD code against the PEPPOL codelist.\n *\n * @param error - The custom error message to use when validation fails. Defaults to `'Invalid ICD code provided'`.\n *\n * @returns An Effect schema that accepts only valid ICD codes.\n *\n * @validations\n * - BR-CL-10 / BR-CL-11 / BR-CL-21: Identifier scheme MUST be a valid ISO 6523 ICD code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ICD/\n */\nexport const icdCodesSchema = Schema.Literals(icdCodesKeys).pipe(Schema.brand('PeppolIcdCode'));\n","/**\n * @description ISO 3166-1 alpha-2 country codes with additional entries These codes identify countries and territories worldwide.\n *\n * @module effect/values/country-code\n *\n * @see https://www.iso.org/iso-3166-country-codes.html\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO3166/\n */\n\nimport { Schema } from 'effect';\n\nimport { countryCodesKeys } from '#/values/country-code.generated';\n\n/**\n * @description An ISO 3166-1 alpha-2 country code as defined by the PEPPOL subset.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO3166/\n */\nexport type PeppolCountryCode = typeof peppolCountryCodeSchema.Type;\n\n/**\n * @description Validates a two character ISO 3166-1 alpha-2 country code against the PEPPOL codelist. All codes in the codelist are exactly 2 characters, so the\n * literals union implies the length check.\n *\n * @validations\n * - BR-CL-14 / BR-CL-15: Country code MUST be a valid ISO 3166-1 alpha-2 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO3166/\n */\nexport const peppolCountryCodeSchema = Schema.Literals(countryCodesKeys).pipe(Schema.brand('PeppolCountryCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolCountryCodeSchema } from '#/schemas/values/peppol-country-code-schema.ts';\n\nclass PeppolAddressLine extends opaque<PeppolAddressLine>()(\n Schema.Struct({\n /**\n * @description An additional address line in an address that can be used to give further details supplementing the main line.\n *\n * @summary Address line 3\n *\n * @name `cbc:Line`\n */\n line: Schema.String,\n })\n) {}\n\nclass PeppolCountryCode extends opaque<PeppolCountryCode>()(\n Schema.Struct({\n /**\n * @description A code that identifies the country.\n *\n * @example\n * GB;\n *\n * @summary Country code\n *\n * @name `cbc:IdentificationCode`\n */\n identificationCode: peppolCountryCodeSchema,\n })\n) {}\n\n/**\n * @summary Postal address\n *\n * @name `cac:PostalAddress`\n */\nexport class PeppolAddress extends opaque<PeppolAddress>()(\n Schema.Struct({\n /**\n * @description The main address line in an address.\n *\n * @example\n * Main Street 1\n *\n * @summary Address line 1\n *\n * @name `cbc:StreetName`\n */\n streetName: Schema.optional(Schema.String),\n /**\n * @description An additional address line in an address that can be used to give further details supplementing the main line.\n *\n * @example\n * Po Box 351\n *\n * @summary Address line 2\n *\n * @name `cbc:AdditionalStreetName`\n */\n additionalStreetName: Schema.optional(Schema.String),\n /**\n * @description The common name of the city, town or village, where the address is located.\n *\n * @example\n * London;\n *\n * @summary Seller city\n *\n * @name `cbc:CityName`\n */\n cityName: Schema.optional(Schema.String),\n /**\n * @description The identifier for an addressable group of properties according to the relevant postal service.\n *\n * @example\n * W1G 8LZ\n *\n * @summary post code\n *\n * @name `cbc:PostalZone`\n */\n postalZone: Schema.optional(Schema.String),\n /**\n * @description The subdivision of a country.\n *\n * @example\n * Region A\n *\n * @summary Seller country subdivision\n *\n * @name `cbc:CountrySubentity`\n */\n countrySubentity: Schema.optional(Schema.String),\n /**\n * @example\n * GB;\n *\n * @name `cac:Country`\n */\n countryCode: PeppolCountryCode,\n /**\n * @example\n * Building 23\n *\n * @name `cac:AddressLine`\n */\n addressLine: Schema.optional(PeppolAddressLine),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { icdCodesSchema } from '#/schemas/values/icd-codes-schema.ts';\n\nimport { PeppolAddress } from './peppol-address-schema.ts';\nimport { PeppolIdentifier } from './peppol-identifier-schema.ts';\n\nclass PeppolDeliveryPartyPartyName extends opaque<PeppolDeliveryPartyPartyName>()(\n Schema.Struct({\n /**\n * @description The name of the party to which the goods and services are delivered.\n *\n * @summary Deliver to party name\n *\n * @name `cbc:Name`\n */\n name: Schema.String,\n })\n) {}\n\nclass PeppolDeliveryParty extends opaque<PeppolDeliveryParty>()(\n Schema.Struct({\n /**\n * @summary PARTY NAME\n *\n * @name `cac:PartyName`\n */\n partyName: PeppolDeliveryPartyPartyName,\n })\n) {}\n\nclass PeppolDeliveryLocation extends opaque<PeppolDeliveryLocation>()(\n Schema.Struct({\n /**\n * @description An identifier for the location at which the goods and services are delivered.\n *\n * @example\n * `83745498753497`;\n *\n * @summary Deliver to location identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.optional(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description An identifier for the location at which the goods and services are delivered.\n *\n * @example\n * `83745498753497`;\n *\n * @summary Deliver to location identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Deliver to location identifier.\n *\n * @summary Deliver to location identifier identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(icdCodesSchema),\n })\n )\n ),\n /**\n * @description A groupd of business terms providing infomation about the address to which goods and services invoiced were or are delivered.\n *\n * @summary Deliver to address\n *\n * @name `cac:Address`\n */\n address: Schema.optional(PeppolAddress),\n })\n) {}\n\nexport class PeppolDelivery extends opaque<PeppolDelivery>()(\n Schema.Struct({\n /**\n * @description Th edate on which the supply of goods or services was made or completed.\n *\n * @example\n * 2017 - 12 - 01;\n *\n * @summary Actual delivery date\n *\n * @format `YYYY-MM-DD`\n *\n * @name cbc:ActualDeliveryDate\n */\n actualDeliveryDate: Schema.optional(PeppolIsoDateString),\n /**\n * @name `cac:DeliveryLocation`\n */\n deliveryLocation: Schema.optional(PeppolDeliveryLocation),\n\n /**\n * @summary Delivery party\n *\n * @name `cac:DeliveryParty`\n */\n deliveryParty: Schema.optional(PeppolDeliveryParty),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolInvoiceLinePeriod extends opaque<PeppolInvoiceLinePeriod>()(\n Schema.Struct({\n /**\n * @description The date when the Invoice period for this Invoice line ends. Format =\"YYYY-MM-DD\"\n *\n * @example\n * `2017-10-31`;\n *\n * @summary Invoice line period end date\n *\n * @format \"YYYY-MM-DD\"\n *\n * @name `cbc:EndDate`\n */\n endDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description The date when the Invoice period for this Invoice line starts.\n *\n * @example\n * `2017-10-01`;\n *\n * @summary Invoice line period start date\n *\n * @format \"YYYY-MM-DD\"\n *\n * @name `cbc:StartDate`\n */\n startDate: Schema.optional(PeppolIsoDateString),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport type { VatDateCodesKeys } from '#/values/vat-dates.generated';\n\nimport { vatDateCodesKeys } from '#/values/vat-dates.generated';\n\nexport type PeppolVatDateCode = VatDateCodesKeys;\n\n/**\n * @validations\n * - PEPPOL-EN16931-CL006: Invoice period description code must be according to UNCL 2005 D.16B.\n */\nexport const vatDateCodeSchema = Schema.Literals(vatDateCodesKeys);\n","import { Schema } from 'effect';\n\nimport { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { vatDateCodeSchema } from '#/schemas/values/vat-date-code-schema.ts';\n\n/**\n * @description A group of business terms providing information on the invoice period. Also called delivery period. If the group is used, the invoiceing period\n * start date and/or end date must be used.\n *\n * @summary DELIVERY OR INVOICE PERIOD\n *\n * @name `cac:InvoicePeriod`\n */\nexport class PeppolInvoicePeriod extends opaque<PeppolInvoicePeriod>()(\n PeppolInvoiceLinePeriod.pipe(\n Schema.fieldsAssign({\n /**\n * @description The code of the date when the VAT becomes acccountable for the Seller and the Buyer.\n *\n * @example\n * `35`;\n *\n * @summary Value added tax point date code\n *\n * @name `cbc:DescriptionCode`\n */\n descriptionCode: Schema.optional(vatDateCodeSchema),\n })\n )\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @description A group of business terms providing the monetary totals for the Invoice.\n *\n * @summary Document totals\n *\n * @name cac:LegalMonetaryTotal\n */\nexport class PeppolLegalMonetaryTotal extends opaque<PeppolLegalMonetaryTotal>()(\n Schema.Struct({\n /**\n * @description Sum of all allowances on document level in the Invoice.\n *\n * @remarks\n * Must be rounded to maxium 2 decimals.\n *\n * @example\n * 200.0;\n *\n * @summary Sum of allowances on document level\n *\n * @name `cbc:AllowanceTotalAmount (+ @currencyID)`\n */\n allowanceTotalAmount: Schema.optional(PeppolAmount),\n /**\n * @description Sum of all charges on document level in the Invoice.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 0.0;\n *\n * @summary Sum of charges on document level\n *\n * @name `cbc:ChargeTotalAmount (+ @currencyID)`\n */\n chargeTotalAmount: Schema.optional(PeppolAmount),\n /**\n * @description Sum of all Invoice line net amounts in the Invoice.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 3800.0;\n *\n * @summary Sum of Invoice line amount\n *\n * @name `cbc:LineExtensionAmount (+ @currencyID)`\n */\n lineExtensionAmount: PeppolAmount,\n /**\n * @description The amount due for payment on the Invoice, after accounting for all allowances, charges, prepayments, and rounding adjustments.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 4500.0;\n *\n * @summary Amount due for payment\n *\n * @name `cbc:PayableAmount (+ @currencyID)`\n */\n payableAmount: PeppolAmount,\n /**\n * @description The rounding amount applied to the Invoice total.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 0.0;\n *\n * @summary Rounding amount\n *\n * @name `cbc:PayableRoundingAmount (+ @currencyID)`\n */\n payableRoundingAmount: Schema.optional(PeppolAmount),\n /**\n * @description The sum of amounts which have been paid in advances.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 0.0;\n *\n * @summary Paid amount\n *\n * @name `cbc:PrepaidAmount (+ @currencyID)`\n */\n prepaidAmount: Schema.optional(PeppolAmount),\n /**\n * @description The total amount of the Invoice without VAT.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 3600.0;\n *\n * @summary Invoice total amount without VAT\n *\n * @name `cbc:TaxExclusiveAmount (+ @currencyID)`\n */\n taxExclusiveAmount: PeppolAmount,\n /**\n * @description The total amount of the Invoice with VAT.\n *\n * @example\n * 4500.0;\n *\n * @summary Invoice total amount with VAT\n *\n * @remark Must be rounded to maximum 2 decimals.\n *\n * @name `cbc:TaxInclusiveAmount (+ @currencyID)`\n */\n taxInclusiveAmount: PeppolAmount,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary ORDER AND SALES ORDER REFERENCE\n *\n * @name cac:OrderReference\n */\nexport class PeppolOrderReference extends opaque<PeppolOrderReference>()(\n Schema.Struct({\n /**\n * @description An identifier of a referenced purchase order, issued by the Buyer. An identifier of a referenced purchase order, issued by the Buyer. An\n * invoice must have buyer reference (BT-10) or purchase order reference. In cases where sales order reference is provided, but there's no\n * purchase order reference, then use value \"NA\" as this element is mandatory in UBL.\n *\n * @example\n * `98776`;\n *\n * @summary Purchase order reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description An identifier of a referenced Sales order, issued by the Seller. In cases where sales order reference is provided, but there's no purchase\n * order reference, then set cac:OrderReference/cbc:ID to value \"NA\" as this element is mandatory in UBL.\n *\n * @example\n * `112233`;\n *\n * @summary Sales order reference\n *\n * @name `cbc:SalesOrderID`\n */\n salesOrderId: Schema.optional(Schema.String),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolContact extends opaque<PeppolContact>()(\n Schema.Struct({\n /**\n * @name cbc:ElectronicMail\n */\n electronicMail: Schema.optional(Schema.String),\n /**\n * @name cbc:Name\n */\n name: Schema.optional(Schema.String),\n /**\n * @name cbc:Telephone\n */\n telephone: Schema.optional(Schema.String),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolPartyLegalEntity extends opaque<PeppolPartyLegalEntity>()(\n Schema.Struct({\n /**\n * @example\n * 987654321;\n *\n * @name cbc:CompanyID (+ @schemeID)\n */\n companyId: Schema.optional(PeppolIdentifier),\n /**\n * @example\n * Share capital\n *\n * @name cbc:CompanyLegalForm\n */\n companyLegalForm: Schema.optional(Schema.String),\n /**\n * @example\n * Full Formal Seller Name LTD.\n *\n * @name cbc:RegistrationName\n */\n registrationName: Schema.String,\n })\n) {}\n\nexport type PeppolPartyLegalEntitySchema = PeppolPartyLegalEntity;\n","import { Effect, Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PeppolTaxSchemeId extends opaque<PeppolTaxSchemeId>()(\n Schema.Struct({\n /**\n * @description Mandatory element. For Seller VAT identifier (BT-31), use value “VAT”, for the seller tax registration identifier (BT-32), use != \"VAT\"\n *\n * @name cbc:ID\n */\n id: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed('VAT'))),\n })\n) {}\n\n/**\n * @name cac:PartyTaxScheme (0..2)\n */\nexport class PeppolPartyTaxScheme extends opaque<PeppolPartyTaxScheme>()(\n Schema.Struct({\n /**\n * @description The Seller's VAT identifier (also known as Seller VAT identification number) or the local identification (defined by the Seller’s address) of\n * the Seller for tax purposes or a reference that enables the Seller to state his registered tax status. In order for the buyer to automatically\n * identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31)\n * shall be present.\n *\n * @summary Seller VAT identifier, Seller tax registration identifier\n *\n * @name `cbc:CompanyID`\n */\n companyId: Schema.String,\n /**\n * @description Mandatory element. For Seller VAT identifier (BT-31), use value “VAT”, for the seller tax registration identifier (BT-32), use != \"VAT\"\n *\n * @name `cac:TaxScheme`\n */\n taxSchemeId: PeppolTaxSchemeId,\n })\n) {}\n\nexport type PeppolPartyTaxSchema = PeppolPartyTaxScheme;\n","/**\n * @module effect/values/eas-codes\n * Electronic Address Scheme (EAS) codes as used in PEPPOL networks\n * These codes identify the scheme used for electronic addresses of parties\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/\n */\nimport { Schema } from 'effect';\n\nimport { electronicAddressCodesKeys } from '#/values/eas-codes.generated';\n\n/**\n * @description An electronic address scheme (EAS) code, identifying the scheme of an electronic address (e.g. `0088` for GLN).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/\n */\nexport type PeppolElectronicAddressCode = typeof electronicCodesSchema.Type;\n\n/**\n * @description Validates an electronic address scheme (EAS) code against the PEPPOL Electronic Address Identifier Scheme codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid electronic address scheme codes.\n *\n * @validations\n * - PEPPOL-EN16931-CL008: Electronic address identifier scheme MUST be from the codelist \"Electronic Address Identifier Scheme\".\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/\n */\nexport const electronicCodesSchema = Schema.Literals(electronicAddressCodesKeys).pipe(Schema.brand('PeppolElectronicAddressCode'));\n","import { Schema } from 'effect';\n\nimport { PeppolAddress } from '#/schemas/fields/peppol-address-schema.ts';\nimport { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { PeppolPartyLegalEntity } from '#/schemas/fields/peppol-party-legal-entity-schema.ts';\nimport { PeppolPartyTaxScheme } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { electronicCodesSchema } from '#/schemas/values/electronic-codes-schema.ts';\nimport { icdCodesSchema } from '#/schemas/values/icd-codes-schema.ts';\n\nexport class PeppolPartyName extends opaque<PeppolPartyName>()(\n Schema.Struct({\n /**\n * @description A name by which the Buyer/Seller is known, other than Buyer/Seller name (also known as Business name).\n *\n * @example\n * `Trading Name`;\n *\n * @summary Buyer/Seller trading name\n */\n name: Schema.String,\n })\n) {}\n\nexport class PeppolPartyIdentification extends opaque<PeppolPartyIdentification>()(\n Schema.Struct({\n /**\n * @description An identifier of the Buyer/seller.\n *\n * @summary Buyer/seller identifier\n *\n * @name `cbc:ID`\n */\n id: PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description Identifies the Seller/buyer's electronic address to which the application level response to the invoice may be delivered.\n *\n * @example\n * 7300010000001;\n *\n * @summary Seller/Buyer electronic address\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Seller/Buyer electronic address.\n *\n * @summary Seller/Buyer electronic address identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(icdCodesSchema),\n })\n ),\n })\n) {}\n\nexport class PeppolPartyEndpointId extends opaque<PeppolPartyEndpointId>()(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description Identifies the Seller/buyer's electronic address to which the application level response to the invoice may be delivered.\n *\n * @example\n * 7300010000001;\n *\n * @summary Seller/Buyer electronic address\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Seller/Buyer electronic address.\n *\n * @summary Seller/Buyer electronic address identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: electronicCodesSchema,\n })\n )\n) {}\n\n/**\n * @summary Party common substructure\n *\n * @name cac:Party\n */\nexport class PeppolPartySchema extends opaque<PeppolPartySchema>()(\n Schema.Struct({\n /**\n * @description Identifies the Seller/buyer's electronic address to which the application level response to the invoice may be delivered.\n *\n * @example\n * 7300010000001;\n *\n * @summary Seller/Buyer electronic address\n *\n * @name `cbc:EndpointID`\n */\n endpointId: PeppolPartyEndpointId,\n /**\n * @example\n * 5060012349998;\n *\n * @summary PARTY IDENTIFICATION\n *\n * @name `cac:PartyIdentification`\n */\n partyIdentification: Schema.optional(PeppolPartyIdentification),\n /**\n * @example\n * Seller Business Name AS\n *\n * @summary PARTY NAME\n *\n * @name cac:PartyName\n */\n partyName: Schema.optional(PeppolPartyName),\n /**\n * @name cac:PostalAddress\n */\n postalAddress: PeppolAddress,\n /**\n * @remarks\n * Max 1 for a buyer, max 2 for a seller.\n *\n * @name cac:PartyTaxScheme\n *\n * @cardinality (0..2)\n */\n partyTaxSchemes: Schema.optional(Schema.Array(PeppolPartyTaxScheme).check(Schema.isMaxLength(2))),\n /**\n * @name cac:PartyLegalEntity\n */\n partyLegalEntity: PeppolPartyLegalEntity,\n /**\n * @name cac:Contact\n */\n contact: Schema.optional(PeppolContact),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { icdCodesSchema } from '#/schemas/values/icd-codes-schema.ts';\n\nclass PeppolPartyName extends opaque<PeppolPartyName>()(Schema.Struct({ name: Schema.String })) {}\n\nclass PeppolPartyLegalEntity extends opaque<PeppolPartyLegalEntity>()(\n Schema.Struct({\n /**\n * @description An identifier issued by an official registrar that identifies the payee as a legal entity or person.\n *\n * @example\n * `FR932874294`;\n *\n * @summary Payee legal registration identifier\n *\n * @name `cbc:CompanyID`\n */\n companyId: Schema.optional(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description An identifier issued by an official registrar that identifies the payee as a legal entity or person.\n *\n * @example\n * `FR932874294`;\n *\n * @summary Payee legal registration identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Payee legal registration identifier.\n *\n * @summary Payee legal registration identifier identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(icdCodesSchema),\n })\n )\n ),\n })\n) {}\n\nclass PeppolPartyIdentification extends opaque<PeppolPartyIdentification>()(\n Schema.Struct({\n /**\n * @description This element is used for both the identification of the Payee, or the unique banking reference identifier of Payee (assigned by the Payee\n * bank.) For payee identification use ICD code list, for SEPA bank assigned creditor reference, use SEPA.\n *\n * @summary Payee identifier or bank assigned crditor identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.optional(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description This element is used for both the identification of the Payee, or the unique banking reference identifier of Payee (assigned by the Payee\n * bank.) For payee identification use ICD code list, for SEPA bank assigned creditor reference, use SEPA.\n *\n * @summary Payee identifier or bank assigned crditor identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the payee identifier. For bank assigned creditor identifier (BT-90), value MUST be \"SEPA\"\n *\n * @summary Payee or bank assigned creditor identifier identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(Schema.String),\n })\n )\n ),\n })\n) {}\n\n/**\n * @description A group of business terms providing information about the Payee, i.e. the role that received the payment. Shall be used wwhen the payee is\n * different from the seller.\n *\n * @summary PAYEE\n *\n * @name cac:PayeeParty\n */\nexport class PeppolPayeeParty extends opaque<PeppolPayeeParty>()(\n Schema.Struct({\n /**\n * @summary PARTY IDENTIFICATION\n *\n * @name `cac:PartyIdentification`\n */\n partyIdentification: Schema.optional(PeppolPartyIdentification),\n /**\n * @summary PARTY LEGAL ENTITY\n *\n * @name `cac:PartyLegalEntity`\n */\n partyLegalEntity: Schema.optional(PeppolPartyLegalEntity),\n /**\n * @description The name of the payee.\n *\n * @example\n * `Payee Name Ltd`;\n *\n * @summary Payee name\n *\n * @name `cac:PartyName`\n */\n partyName: PeppolPartyName,\n })\n) {}\n","/**\n * @module effect/values/payment-means-codes-schema\n *\n * Payment means codes as defined by UN/CEFACT UNCL4461.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/\n */\n\nimport { Schema } from 'effect';\n\nimport { paymentMeansCodesKeys } from '#/values/payment-means-codes.generated';\n\n/**\n * @description A payment means code as defined by the PEPPOL subset of UNCL 4461.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/\n */\nexport type PeppolPaymentMeansCode = typeof paymentMeansCodeSchema.Type;\n\n/**\n * @description Validates a payment means code against the PEPPOL subset of UNCL 4461.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid payment means codes.\n *\n * @validations\n * - BR-CL-16: Payment means code MUST be a valid UNCL 4461 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/\n */\nexport const paymentMeansCodeSchema = Schema.Literals(paymentMeansCodesKeys).pipe(Schema.brand('PeppolPaymentMeansCode'));\n","import { Schema } from 'effect';\n\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { paymentMeansCodeSchema } from '#/schemas/values/payment-means-code-schema.ts';\n\nclass PeppolPaymentMandatePayerFinancialAccountId extends opaque<PeppolPaymentMandatePayerFinancialAccountId>()(\n Schema.Struct({\n /**\n * @description The account to be debited by the direct debit.\n *\n * @example\n * `12345676543`;\n *\n * @summary Debited account identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nclass PeppolPaymentMandate extends opaque<PeppolPaymentMandate>()(\n Schema.Struct({\n /**\n * @description Unique identifier assigned by the Payee for referencing the direct debit mandate. Used in order to pre-notify the Buyer of a SEPA direct debit.\n *\n * @summary Mandate reference identifier\n *\n * @name cbc:ID\n */\n id: Schema.optional(Schema.String),\n /**\n * @description The account to be debited by the direct debit.\n *\n * @example\n * `12345676543`;\n *\n * @summary Debited account identifier\n *\n * @name `cac:PayerFinancialAccount`\n */\n payerFinancialAccountId: Schema.optional(PeppolPaymentMandatePayerFinancialAccountId),\n })\n) {}\n\nclass PeppolPayeeFinancialAccountFinancialInstitutionBranch extends opaque<PeppolPayeeFinancialAccountFinancialInstitutionBranch>()(\n Schema.Struct({\n /**\n * @description An identifier for the payment service provider where a payment account is located. Such as a BIC or a national clearing code where required. No\n * identification scheme Identifier to be used.\n *\n * @example\n * `9998`;\n *\n * @summary Payment service provider identifier\n *\n * @name `cac:FinancialInstitutionBranch`\n */\n id: Schema.String,\n })\n) {}\n\nclass PeppolPayeeFinancialAccount extends opaque<PeppolPayeeFinancialAccount>()(\n Schema.Struct({\n /**\n * @description An identifier for the payment service provider where a payment account is located. Such as a BIC or a national clearing code where required. No\n * identification scheme Identifier to be used.\n *\n * @example\n * `9998`;\n *\n * @summary Payment service provider identifier\n *\n * @name `cac:FinancialInstitutionBranch`\n */\n financialInstitutionBranch: Schema.optional(PeppolPayeeFinancialAccountFinancialInstitutionBranch),\n /**\n * @description A unique identifier of the financial payment account, at a payment service provider, to which payment should be made. Such as IBAN or BBAN.\n *\n * @summary Payment account identifier\n *\n * @name cbc:ID\n */\n id: Schema.String,\n /**\n * @description The name of the payment account, at a payment service provider, to which payment should be made.\n *\n * @summary Payment account name\n *\n * @name cbc:Name\n */\n name: Schema.optional(Schema.String),\n })\n) {}\n\nclass PeppolCardAccount extends opaque<PeppolCardAccount>()(\n Schema.Struct({\n /**\n * @description The name of the payment card holder.\n *\n * @summary Payment card holder name\n *\n * @name cbc:HolderName\n */\n holderName: Schema.optional(Schema.String),\n /**\n * @summary Syntax required element not related to a business term.\n *\n * @name cbc:NetworkID\n */\n networkId: Schema.String,\n /**\n * @description The Primary Account Number (PAN) of the card used for payment. In accordance with card payments security standards, an invoice should never\n * include a full card primary account number.\n *\n * @example\n * `1234`;\n *\n * @summary Payment card primary account number\n *\n * @name cbc:PrimaryAccountNumberID\n */\n primaryAccountNumberId: Schema.String,\n })\n) {}\n\nclass PeppolPaymentMeansCode extends opaque<PeppolPaymentMeansCode>()(\n Schema.Struct({\n /**\n * @description The means, expressed as code, for how a payment is expected to be or has been settled.\n *\n * @example\n * 30;\n *\n * @summary Payment means type code\n *\n * @name `#text`\n */\n code: paymentMeansCodeSchema,\n /**\n * @description The means, expressed as text, for how a payment is expected to be or has been settled.\n *\n * @example\n * Credit transfer\n *\n * @summary Payment means text\n *\n * @name `@name`\n */\n name: Schema.optional(Schema.String),\n })\n) {}\n\n/**\n * @description A group of business terms providing information about the payment.\n *\n * @summary Payment means (credit transfer/direct debit/card)\n *\n * @name cac:PaymentMeans\n */\nexport class PeppolPaymentMeans extends opaque<PeppolPaymentMeans>()(\n Schema.Struct({\n /**\n * @description The means, expressed as code, for how a payment is expected to be or has been settled.\n *\n * @example\n * 30;\n *\n * @summary Payment means type code\n *\n * @name `cbc:PaymentMeansCode`\n */\n paymentMeansCode: PeppolPaymentMeansCode,\n /**\n * @description The date when the payment is due.Format \"YYYY-MM-DD\". In case the Amount due for payment (BT-115) is positive, either the Payment due date\n * (BT-9) or the Payment terms (BT-20) shall be present.\n *\n * @remarks\n * This should only be used with a credit note.\n *\n * @summary Payment due date\n *\n * @name `cbc:PaymentDueDate`\n */\n paymentDueDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description A textual value used to establish a link between the payment and the Invoice, issued by the Seller. Used for creditor's critical reconciliation\n * information. This information element helps the Seller to assign an incoming payment to the relevant payment process.\n *\n * @example\n * `432948234234234`;\n *\n * @summary Remittance information\n *\n * @name cbc:PaymentID\n */\n paymentId: Schema.optional(Schema.String),\n /**\n * @description A group of business terms providing information about card used for payment contemporaneous with invoice issuance.\n *\n * @summary PAYMENT CARD INFORMATION\n *\n * @name cac:CardAccount\n */\n cardAccount: Schema.optional(PeppolCardAccount),\n /**\n * @description A group of business terms to specify credit transfer payments.\n *\n * @summary CREDIT TRANSFER\n *\n * @name cac:PayeeFinancialAccount\n */\n payeeFinancialAccount: Schema.optional(PeppolPayeeFinancialAccount),\n /**\n * @description A group of business terms to specify a direct debit.\n *\n * @summary DIRECT DEBIT\n *\n * @name cac:PaymentMandate\n */\n paymentMandate: Schema.optional(PeppolPaymentMandate),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary PAYMENT TERMS\n *\n * @name cac:PaymentTerms\n */\nexport class PeppolPaymentTerms extends opaque<PeppolPaymentTerms>()(\n Schema.Struct({\n /**\n * @description A textual description of the payment terms that apply to the amount due for payment (Including description of possible penalties). In case the\n * Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.\n *\n * @example\n * Net within 30 days\n *\n * @summary Payment terms\n *\n * @name cbc:Note\n */\n note: Schema.String,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolAddress } from '#/schemas/fields/peppol-address-schema.ts';\nimport { PeppolPartyTaxScheme } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary SELLER TAX REPRESENTATIVE PARTY\n *\n * @name cac:TaxRepresentativeParty\n */\nexport class PeppolTaxRepresentative extends opaque<PeppolTaxRepresentative>()(\n Schema.Struct({\n /**\n * @name cac:PartyName/cbc:Name\n */\n name: Schema.String,\n /**\n * @name cac:PostalAddress\n */\n postalAddress: PeppolAddress,\n partyTaxScheme: PeppolPartyTaxScheme,\n })\n) {}\n\nexport type PeppolTaxRepresentativeParty = PeppolTaxRepresentative;\n","import { Schema } from 'effect';\n\nimport { PeppolTaxCategory } from '#/schemas/fields/peppol-tax-category-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @description This one is specific for TaxSubtotal since it includes more fields.\n *\n * @summary Tax Category for Tax Subtotal\n *\n * @name cac:TaxCategory\n */\nexport class PeppolTaxSubTotalCategory extends opaque<PeppolTaxSubTotalCategory>()(\n Schema.Struct({\n ...PeppolTaxCategory.fields,\n /**\n * @description The reason for the tax exemption.\n *\n * @name cbc:TaxExemptionReason\n */\n taxExemptionReason: Schema.optional(Schema.String),\n /**\n * @description The code for the reason of the tax exemption.\n *\n * @name cbc:TaxExemptionReasonCode\n */\n taxExemptionReasonCode: Schema.optional(Schema.String),\n })\n) {}\n\nexport interface PeppolTaxSubTotalCategoryEncoded extends Schema.Codec.Encoded<typeof PeppolTaxSubTotalCategory> {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { PeppolTaxSubTotalCategory } from '#/schemas/fields/peppol-tax-subtotal-category-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary VAT breakdown (TaxSubtotal)\n *\n * @name cac:TaxSubtotal\n */\nexport class PeppolTaxSubTotal extends opaque<PeppolTaxSubTotal>()(\n Schema.Struct({\n /**\n * @description The amount of tax for the tax subtotal.\n *\n * @name `cbc:TaxAmount (+ @currencyID)`\n */\n taxAmount: PeppolAmount,\n /**\n * @description The tax category associated with this tax subtotal.\n *\n * @name cac:TaxCategory\n */\n taxCategory: PeppolTaxSubTotalCategory,\n /**\n * @description The taxable amount for the tax subtotal.\n *\n * @name `cbc:TaxableAmount (+ @currencyID)`\n */\n taxableAmount: PeppolAmount,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { PeppolTaxSubTotal } from '#/schemas/fields/peppol-tax-subtotal-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary TAX TOTAL\n *\n * @name cac:TaxTotal (1..2)\n */\nexport class PeppolTaxTotalsBase extends opaque<PeppolTaxTotalsBase>()(\n Schema.Struct({\n /**\n * @example\n * 200;\n *\n * @name cbc:TaxAmount (+ @currencyID)\n */\n taxAmount: PeppolAmount,\n /**\n * @name cac:TaxSubtotal (0..n)\n */\n taxSubtotals: Schema.optional(Schema.Array(PeppolTaxSubTotal)),\n })\n) {}\n\nexport type PeppolTaxTotal = PeppolTaxTotalsBase;\n","import { Effect, Schema } from 'effect';\n\nimport { DEFAULT_CUSTOMIZATION_ID } from '#/schemas/fields/default-customization-id.ts';\nimport { DEFAULT_PROFILE_ID } from '#/schemas/fields/default-profile-id.ts';\nimport { PeppolAdditionalDocumentReference } from '#/schemas/fields/peppol-additional-document-reference-schema.ts';\nimport { peppolAllowanceChargeSchema } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\nimport { PeppolBillingReference } from '#/schemas/fields/peppol-billing-reference-schema.ts';\nimport { PeppolDelivery } from '#/schemas/fields/peppol-delivery-schema.ts';\nimport { PeppolInvoicePeriod } from '#/schemas/fields/peppol-invoice-period-schema.ts';\nimport { PeppolLegalMonetaryTotal } from '#/schemas/fields/peppol-legal-monetary-total-schema.ts';\nimport { PeppolOrderReference } from '#/schemas/fields/peppol-order-reference-schema.ts';\nimport { PeppolPartySchema } from '#/schemas/fields/peppol-party-base-schema.ts';\nimport { PeppolPayeeParty } from '#/schemas/fields/peppol-payee-party-schema.ts';\nimport { PeppolPaymentMeans } from '#/schemas/fields/peppol-payment-means-schema.ts';\nimport { PeppolPaymentTerms } from '#/schemas/fields/peppol-payment-terms-schema.ts';\nimport { PeppolTaxRepresentative } from '#/schemas/fields/peppol-tax-representative-schema.ts';\nimport { PeppolTaxTotalsBase } from '#/schemas/fields/peppol-tax-totals-base-schema.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { currencyCodeSchema } from '#/schemas/values/currency-code-schema.ts';\n\nexport class PeppolContractDocumentReference extends opaque<PeppolContractDocumentReference>()(\n Schema.Struct({\n /**\n * @description An identifier of a referenced contract.\n *\n * @example\n * `123Contractref`;\n *\n * @summary Contract reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nexport class PeppolOriginatorDocumentReference extends opaque<PeppolOriginatorDocumentReference>()(\n Schema.Struct({\n /**\n * @description The identification of the call for tender or lot the invoice relates to.\n *\n * @example\n * `PPID-123`;\n *\n * @summary Tender or lot reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nexport class PeppolReceiptDocumentReference extends opaque<PeppolReceiptDocumentReference>()(\n Schema.Struct({\n /**\n * @description An identifier of a referenced receiving advice.\n *\n * @example\n * `rec98`;\n *\n * @summary Receiving advice reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nexport class PeppolDespatchDocumentReference extends opaque<PeppolDespatchDocumentReference>()(\n Schema.Struct({\n /**\n * @description An identifier of a referenced despatch advice.\n *\n * @example\n * `desp98`;\n *\n * @summary Despatch advice reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\n/**\n * @description Base schema for a billing document.\n *\n * @see {@link creditNoteSchema} - the credit note schema\n * @see {@link invoiceSchema} - the invoice schema\n */\nexport class PeppolBillingBase extends opaque<PeppolBillingBase>()(\n Schema.Struct({\n /**\n * @description An identification of the specification containing the total set of rules regarding semantic content, cardinalities, and business rules to which\n * the data contained in the intance document conforms.\n *\n * @default `urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0`\n *\n * @summary Specification identifier\n *\n * @cardinality 1..1\n *\n * @name `cbc:CustomizationID`\n */\n customizationId: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed(DEFAULT_CUSTOMIZATION_ID))).check(\n Schema.isStartsWith('urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0', {\n message:\n \"PEPPOL-EN16931-R004: Specification identifier MUST have the value 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0'.\",\n })\n ),\n /**\n * @description Identifies the business process context in which the transaction appears, to enable the Buyer to process the Invoice in an appropriate way.\n *\n * @default `urn:fdc:peppol.eu:2017:poacc:billing:01:1.0`\n *\n * @summary Business process type\n *\n * @name `cbc:ProfileID`\n */\n profileId: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed(DEFAULT_PROFILE_ID))).check(\n Schema.isPattern(/^urn:fdc:peppol.eu:2017:poacc:billing:(\\d{2}):1\\.0$/, {\n message:\n \"PEPPOL-EN16931-R007: Business process MUST be in the format 'urn:fdc:peppol.eu:2017:poacc:billing:NN:1.0' where NN indicates the process number.\",\n })\n ),\n /**\n * @description A using identification of the Invoice. The sequential number required in Article 226(2) of the directive 2006/112/EC [2], to uniquely identify\n * the Invoice within the business context, time-frame, operating systems and records of the Seller. No identification scheme is to be used.\n *\n * @example\n * 33445566;\n *\n * @summary Invoice number\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description The date when the invoice was issued.\n *\n * @example\n * `2017-11-01`;\n *\n * @summary Invoice issue date\n *\n * @format `YYYY-MM-DD`\n *\n * @name `cbc:IssueDate`\n */\n issueDate: PeppolIsoDateString,\n /**\n * @description Invoice note A textual note that gives unstructured information that is relevant to the Credit Note as a whole.\n *\n * @example\n * Please note our new phone number 33 44 55 66\n *\n * @name `cbc:Note`\n */\n note: Schema.optional(Schema.String),\n /**\n * @description The date when the VAT becomes accountable for the Seller and for the Buyer in so far as that date can be determined and differs from the date\n * of issue of the invoice, according to the VAT directive.This element is required if the Value added tax point date is different from the\n * Invoice issue date.\n *\n * @example\n * 2017 - 11 - 01;\n *\n * @summary Value added tax point date\n *\n * @name `cbc:TaxPointDate`\n */\n taxPointDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description The currency in which all Invoice amounts are given, except for the Total VAT amount in accounting currency. Only one currency shall be used in\n * the Invoice, except for the VAT accounting currency code (BT-6) and the invoice total VAT amount in accounting currency (BT-111).\n *\n * @example\n * EUR;\n *\n * @summary Invoice currency code\n *\n * @name `cbc:DocumentCurrencyCode`\n */\n documentCurrencyCode: currencyCodeSchema,\n /**\n * @description The currency used for VAT accounting and reporting purposes as accepted or required in the country of the Seller. Shall be used in combination\n * with the Invoice total VAT amount in accounting currency (BT-111), when the VAT accounting currency code differs from the Invoice currency\n * code.\n *\n * @example\n * SEK;\n *\n * @summary VAT accounting currency code\n *\n * @name `cbc:TaxCurrencyCode`\n */\n taxCurrencyCode: Schema.optional(currencyCodeSchema),\n /**\n * @description A textual value that specifies where to book the relevant data into the Buyer's financial accounts.\n *\n * @example\n * `4217:2323:2323`;\n *\n * @summary Buyer accounting reference\n *\n * @name `cbc:AccountingCost`\n */\n accountingCost: Schema.optional(Schema.String),\n /**\n * @description An identifier assigned by the Buyer used for internal routing purposes. An invoice must have buyer reference or purchase order reference\n * (BT-13).\n *\n * @example\n * `abs1234`;\n *\n * @summary Buyer reference\n *\n * @name `cbc:BuyerReference`\n */\n buyerReference: Schema.optional(Schema.String),\n /**\n * @description A group of business terms providing information on the invoice period. Also called delivery period. If the group is used, the invoiceing period\n * start date and/or end date must be used.\n *\n * @summary DELIVERY OR INVOICE PERIOD\n *\n * @name `cac:InvoicePeriod`\n */\n invoicePeriod: Schema.optional(PeppolInvoicePeriod),\n /**\n * @summary ORDER AND SALES ORDER REFERENCE\n *\n * @name `cac:OrderReference`\n */\n orderReference: Schema.optional(PeppolOrderReference),\n /**\n * @summary PRECEDING INVOICE REFERENCE (0..n)\n *\n * @name `cac:BillingReference`\n */\n billingReferences: Schema.optional(Schema.Array(PeppolBillingReference)),\n /**\n * @summary DESPATCH ADVICE REFERENCE\n *\n * @name `cac:DespatchDocumentReference`\n */\n despatchDocumentReference: Schema.optional(PeppolDespatchDocumentReference),\n /**\n * @summary RECEIPT ADVICE REFERENCE\n *\n * @name `cac:ReceiptDocumentReference`\n */\n receiptDocumentReference: Schema.optional(PeppolReceiptDocumentReference),\n /**\n * @summary TENDER OR LOT REFERENCE\n *\n * @name `cac:OriginatorDocumentReference`\n */\n originatorDocumentReference: Schema.optional(PeppolOriginatorDocumentReference),\n\n /**\n * @summary CONTRACT REFERENCE\n *\n * @name `cac:ContractDocumentReference`\n */\n contractDocumentReference: Schema.optional(PeppolContractDocumentReference),\n\n /**\n * @description A group of business terms providing information about additional supporting documents substantiating the claims made in the Invoice. The\n * additional supporting documents can be used for both referencing a document number which is expected to be known by the receiver, an external\n * document (referenced by a URL) or as an embedded document, Base64 encoded (such as a time report).\n *\n * @summary ADDITIONAL SUPPORTING DOCUMENTS\n *\n * @name `cac:AdditionalDocumentReference`\n */\n additionalDocumentReferences: Schema.optional(Schema.Array(PeppolAdditionalDocumentReference)),\n\n /**\n * @description A group of business terms providing information about the seller.\n *\n * @summary SELLER\n *\n * @name `cac:AccountingSupplierParty`\n */\n accountingSupplierParty: PeppolPartySchema,\n\n /**\n * @description A group of business terms providing information about the Buyer.\n *\n * @summary BUYER\n *\n * @name `cac:AccountingCustomerParty`\n */\n accountingCustomerParty: PeppolPartySchema,\n\n /**\n * @description A group of business terms providing information about the Payee, i.e. the role that received the payment. Shall be used wwhen the payee is\n * different from the seller.\n *\n * @summary PAYEE\n *\n * @name cac:PayeeParty\n */\n payeeParty: Schema.optional(PeppolPayeeParty),\n\n /**\n * @description SELLER TAX REPRESENTATIVE PARTY.\n *\n * @name cac:TaxRepresentativeParty\n */\n taxRepresentativeParty: Schema.optional(PeppolTaxRepresentative),\n\n /**\n * @description DELIVERY INFORMATION.\n *\n * @name cac:Delivery\n */\n delivery: Schema.optional(PeppolDelivery),\n\n /**\n * @summary PAYMENT INSTRUCTIONS\n * @summary A group of business terms providing information about the payment.\n *\n * @name cac:PaymentMeans\n */\n paymentMeans: Schema.optional(Schema.Array(PeppolPaymentMeans)),\n\n /**\n * @example\n * Net within 30 days\n *\n * @summary PAYMENT TERMS\n *\n * @name cac:PaymentTerms\n */\n paymentTerms: Schema.optional(PeppolPaymentTerms),\n\n /**\n * @description A group of business terms providing information about allowances applicable to the Invoice as a whole. A group of business terms providing\n * information about charges and taxes other than VAT, applicable to the Invoice as a whole.\n *\n * @summary DOCUMENT LEVEL ALLOWANCES AND CHARGES\n *\n * @name cac:AllowanceCharge\n */\n allowanceCharges: Schema.optional(Schema.Array(peppolAllowanceChargeSchema)),\n\n /**\n * @description When tax currency code is provided, two instances of the tax total must be present, but only one with tax subtotal.\n *\n * @summary TAX TOTAL\n *\n * @name cac:TaxTotal\n */\n taxTotals: Schema.Array(PeppolTaxTotalsBase).check(Schema.isMinLength(1), Schema.isMaxLength(2)),\n\n /**\n * @summary DOCUMENT TOTALS\n *\n * @name cac:LegalMonetaryTotal\n */\n legalMonetaryTotal: PeppolLegalMonetaryTotal,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { itemClassificationCodesKeys } from '#/values/item-classification-code.generated';\n\n/**\n * @description An item classification code as defined by the PEPPOL subset of UNCL 7143.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL7143/\n */\nexport type PeppolItemClassificationCode = typeof itemClassificationCodesSchema.Type;\n\n/**\n * @description Validates an item classification code against the PEPPOL subset of UNCL 7143.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid item classification codes.\n *\n * @validations\n * - BR-CL-13: Item classification scheme MUST be a valid UNTDID 7143 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL7143/\n */\nexport const itemClassificationCodesSchema = Schema.Literals(itemClassificationCodesKeys).pipe(Schema.brand('PeppolItemClassificationCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { itemClassificationCodesSchema } from '#/schemas/values/item-classification-codes-schema.ts';\n\n/**\n * @description A code for classifying the item by its type or nature.\n *\n * @example\n * `9873242`;\n *\n * @summary Item classification identifier\n *\n * @name `cbc:ItemClassificationCode`\n */\nexport class PeppolItemClassification extends opaque<PeppolItemClassification>()(\n Schema.Struct({\n /**\n * @description A code for classifying the item by its type or nature.\n *\n * @summary Item classification identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the item classification identifier.\n *\n * @summary Item classification identifier identification scheme identifier\n *\n * @name `@listID`\n */\n listId: itemClassificationCodesSchema,\n /**\n * @description The identification scheme version identifier of the Item classification identifier.\n *\n * @remarks\n * Only used with danish.\n *\n * @summary Item classification identifier version identification scheme identifier\n *\n * @name `@listVersionID`\n */\n listVersionId: Schema.optional(Schema.String),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { PeppolItemClassification } from '#/schemas/fields/peppol-item-classification-schema.ts';\nimport { PeppolTaxCategory } from '#/schemas/fields/peppol-tax-category-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { icdCodesSchema } from '#/schemas/values/icd-codes-schema.ts';\nimport { peppolCountryCodeSchema } from '#/schemas/values/peppol-country-code-schema.ts';\n\nclass PeppolAdditionalItemProperties extends opaque<PeppolAdditionalItemProperties>()(\n Schema.Struct({\n /**\n * @description The name of the attribute or property of the item.\n *\n * @summary Item attribute name\n *\n * @name cbc:Name\n */\n name: Schema.String,\n /**\n * @description The value of the attribute or property of the item.\n *\n * @summary Item attribute value\n *\n * @name cbc:Value\n */\n value: Schema.String,\n })\n) {}\n\nclass PeppolCommodityClassifications extends opaque<PeppolCommodityClassifications>()(\n Schema.Struct({\n /**\n * @description A code for classifying the item by its type or nature.\n *\n * @example\n * `9873242`;\n *\n * @summary Item classification identifier\n *\n * @name `cbc:ItemClassificationCode`\n */\n itemClassification: PeppolItemClassification,\n })\n) {}\n\nclass PeppolOriginCountryCode extends opaque<PeppolOriginCountryCode>()(\n Schema.Struct({\n /**\n * @description The code identifying the country from which the item originates.\n *\n * @summary Item country of origin\n *\n * @name `cbc:IdentificationCode`\n */\n identificationCode: peppolCountryCodeSchema,\n })\n) {}\n\nclass PeppolStandardItemIdentification extends opaque<PeppolStandardItemIdentification>()(\n Schema.Struct({\n /**\n * @description An item identifier based on a registered scheme.\n *\n * @summary Item standard identifier\n *\n * @name `cbc:ID`\n */\n id: PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description An item identifier based on a registered scheme.\n *\n * @summary Item standard identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Item standard identifier.\n *\n * @summary Item standard identifier identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: icdCodesSchema,\n })\n ),\n })\n) {}\n\nclass PeppolSellersItemIdentification extends opaque<PeppolSellersItemIdentification>()(\n Schema.Struct({\n /**\n * @description An identifier, assigned by the Seller, for the item.\n *\n * @example\n * `987323`;\n *\n * @summary Item Seller's identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nclass PeppolBuyersItemIdentification extends opaque<PeppolBuyersItemIdentification>()(\n Schema.Struct({\n /**\n * @description An identifier, assigned by the Buyer, for the item.\n *\n * @example\n * `12345`;\n *\n * @summary Item Buyer's identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\n/**\n * @summary Item details on invoice/credit-note line\n *\n * @name cac:Item\n */\nexport class PeppolLineItem extends opaque<PeppolLineItem>()(\n Schema.Struct({\n /**\n * @description A description for an item. The item description allows for descibing the item and its features in more detail than the item name.\n *\n * @summary Item description\n *\n * @name cbc:Description\n */\n description: Schema.optional(Schema.String),\n /**\n * @description A name for an item.\n *\n * @summary Item name\n *\n * @name cbc:Name\n */\n name: Schema.String,\n /**\n * @summary BUYERS ITEM IDENTIFICATION\n *\n * @name cac:BuyersItemIdentification\n */\n buyersItemIdentification: Schema.optional(PeppolBuyersItemIdentification),\n /**\n * @summary Sellers item identification\n *\n * @name cac:SellersItemIdentification\n */\n sellersItemIdentification: Schema.optional(PeppolSellersItemIdentification),\n /**\n * @summary Standard item identification\n *\n * @name cac:StandardItemIdentification\n */\n standardItemIdentification: Schema.optional(PeppolStandardItemIdentification),\n /**\n * @summary ORIGIN COUNTRY\n *\n * @name `cac:OriginCountry`\n */\n originCountryCode: Schema.optional(PeppolOriginCountryCode),\n /**\n * @summary COMMODITY CLASSIFICATION\n *\n * @name cac:CommodityClassification (0..n)\n */\n commodityClassifications: Schema.optional(Schema.Array(PeppolCommodityClassifications)),\n /**\n * @description A group of business terms providing information about the VAT applicable for the goods and services invoiced on the Invoice line.\n *\n * @summary LINE VAT INFORMATION\n *\n * @name cac:ClassifiedTaxCategory\n */\n classifiedTaxCategory: PeppolTaxCategory,\n /**\n * @description A group of business terms providing information about properties of the goods and services invoiced.\n *\n * @summary ITEM ATTRIBUTES\n *\n * @name cac:AdditionalItemProperty\n */\n additionalItemProperties: Schema.optional(Schema.Array(PeppolAdditionalItemProperties)),\n })\n) {}\n\nexport type PeppolItem = PeppolLineItem;\n","import { Schema } from 'effect';\n\nimport { quantityUnitCodesKeys } from '#/values/quantity-unit-codes.generated';\n\n/**\n * @description A unit of measure code as defined by the PEPPOL subset of UN/ECE Recommendation 20.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNECERec20/\n */\nexport type PeppolQuantityUnitCode = typeof quantityUnitCodesSchema.Type;\n\n/**\n * @description Validates a unit of measure code against the PEPPOL subset of UN/ECE Recommendation 20.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid quantity unit codes.\n *\n * @validations\n * - BR-CL-23: Unit of measure code MUST be a valid UN/ECE Rec 20 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNECERec20/\n */\nexport const quantityUnitCodesSchema = Schema.Literals(quantityUnitCodesKeys).pipe(Schema.brand('PeppolQuantityUnitCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { quantityUnitCodesSchema } from '#/schemas/values/quantity-unit-codes-schema.ts';\n\n/**\n * @summary Quantity with optional unit code\n *\n * @name `cbc:* (+ @unitCode)`\n */\nexport class PeppolQuantity extends opaque<PeppolQuantity>()(\n Schema.Struct({\n /**\n * @name `@unitCode`\n */\n unitCode: Schema.optional(quantityUnitCodesSchema),\n /**\n * @name `#text (value)`\n */\n value: Schema.Finite,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { PeppolLinePriceAllowanceCharge } from '#/schemas/fields/peppol-line-price-allowance-charge-schema.ts';\nimport { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary Price details on invoice line\n *\n * @name cac:Price\n */\nexport class PeppolLinePrice extends opaque<PeppolLinePrice>()(\n Schema.Struct({\n /**\n * @name cac:AllowanceCharge\n *\n * @cardinality 0..1\n */\n allowanceCharge: Schema.optional(PeppolLinePriceAllowanceCharge),\n /**\n * @name cbc:BaseQuantity (+ @unitCode)\n *\n * @cardinality 0..1\n */\n baseQuantity: Schema.optional(PeppolQuantity),\n /**\n * @name cbc:PriceAmount (+ @currencyID)\n */\n priceAmount: PeppolAmount,\n })\n) {}\n","import { Effect, Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';\nimport { peppolLineAllowanceChargeSchema } from '#/schemas/fields/peppol-line-allowance-charge-schema.ts';\nimport { PeppolLineItem } from '#/schemas/fields/peppol-line-item-schema.ts';\nimport { PeppolLinePrice } from '#/schemas/fields/peppol-line-price-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolOrderLineReference extends opaque<PeppolOrderLineReference>()(Schema.Struct({ lineId: Schema.String })) {}\n\n/**\n * @description Base of the invoice line and credit note line schemas.\n */\nexport class PeppolBaseLine extends opaque<PeppolBaseLine>()(\n Schema.Struct({\n /**\n * @description A textual value that specifies where to book the relevant data into the Buyer's financial accounts.\n *\n * @example\n * `1287:65464`;\n *\n * @summary Invoice line Buyer accounting reference\n *\n * @name cbc:AccountingCost\n *\n * @cardinality 0..1\n */\n accountingCost: Schema.optional(Schema.String),\n /**\n * @description A group of business terms providing information about allowances or charges applicable to the individual Invoice line.\n *\n * @summary Invoice line allowances or charges\n *\n * @name cac:AllowanceCharge\n *\n * @cardinality 0..n\n */\n allowanceCharges: Schema.optional(Schema.Array(peppolLineAllowanceChargeSchema)),\n /**\n * @summary Line object identifier\n *\n * @name cac:DocumentReference\n *\n * @cardinality 0..1\n */\n documentReference: Schema.optional(\n Schema.Array(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @default 130\n *\n * @name cbc:DocumentTypeCode\n */\n documentTypeCode: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed('130'))),\n })\n )\n )\n ),\n /**\n * @description A unique identifier for the individual line within the Invoice.\n *\n * @example\n * 12;\n *\n * @summary Invoice line identifier\n *\n * @name cbc:ID\n *\n * @cardinality 1..1\n */\n id: Schema.String,\n /**\n * @description A group of business terms providing information about the period relevant for the Invoice line.\n *\n * @summary Invoice line period\n *\n * @name cac:InvoicePeriod\n *\n * @cardinality 0..1\n */\n invoicePeriod: Schema.optional(PeppolInvoiceLinePeriod),\n /**\n * @description A group of business terms providing information about the goods and services invoiced.\n *\n * @summary Item information\n *\n * @name cac:Item\n *\n * @cardinality 1..1\n */\n item: PeppolLineItem,\n /**\n * @description The total amount of the Invoice line. The amount is “net” without VAT, i.e. inclusive of line level allowances and charges as well as other\n * relevant taxes. Must be rounded to maximum 2 decimals.\n *\n * @example\n * { value: 2145.0, currencyId: \"EUR\" }\n *\n * @summary Invoice line net amount\n *\n * @name cbc:LineExtensionAmount (+ @currencyID)\n *\n * @cardinality 1..1\n */\n lineExtensionAmount: PeppolAmount,\n /**\n * @description A textual note that gives unstructured information that is relevant to the Invoice line.\n *\n * @example\n * New article number 12345\n *\n * @summary Invoice line note\n *\n * @name cbc:Note\n *\n * @cardinality 0..1\n */\n note: Schema.optional(Schema.String),\n /**\n * @summary Order line reference\n *\n * @name cac:OrderLineReference\n *\n * @cardinality 0..1\n */\n orderLineReference: Schema.optional(PeppolOrderLineReference),\n /**\n * @description A group of business terms providing information about the price applied for the goods and services invoices on the Invoice line.\n *\n * @summary Price Details\n *\n * @name cac:Price\n *\n * @cardinality 1..1\n */\n price: PeppolLinePrice,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolBaseLine } from '#/schemas/fields/peppol-base-line-schema.ts';\nimport { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { quantityUnitCodesSchema } from '#/schemas/values/quantity-unit-codes-schema.ts';\n\n/**\n * @summary Invoice line\n *\n * @name cac:InvoiceLine\n */\nexport class PeppolInvoiceLine extends opaque<PeppolInvoiceLine>()(\n Schema.Struct({\n ...PeppolBaseLine.fields,\n /**\n * @description The quantity of items (goods or services) that is charged in the Invoice line.\n *\n * @example\n * { value: 100, unitCode: \"C62\" }\n *\n * @summary Invoiced quantity\n *\n * @name cbc:InvoicedQuantity (+ @unitCode)\n */\n invoicedQuantity: PeppolQuantity.pipe(\n Schema.fieldsAssign({\n /**\n * @description The unit of measure that applies to the invoiced quantity. Codes for unit of packaging from UNECE Recommendation No. 21 can be used in\n * accordance with the descriptions in the \"Intro\" section of UN/ECE Recommendation 20, Revision 11 (2015): The 2 character alphanumeric code\n * values in UNECE Recommendation 21 shall be used. To avoid duplication with existing code values in UNECE Recommendation No. 20, each code\n * value from UNECE Recommendation 21 shall be prefixed with an “X”, resulting in a 3 alphanumeric code when used as a unit of measure.\n *\n * @example\n * `C62`;\n *\n * @summary Invoiced quantity unit of measure\n *\n * @see {@link quantityUnitCodes}\n */\n unitCode: quantityUnitCodesSchema,\n })\n ),\n })\n) {}\nexport interface PeppolInvoiceLineEncoded extends Schema.Codec.Encoded<typeof PeppolInvoiceLine> {}\n","import { Schema } from 'effect';\n\nimport { invoiceTypeCodesKeys } from '#/values/invoice-type-codes.generated';\n\n/**\n * @description An invoice type code as defined by the PEPPOL subset of UNCL 1001 (invoice).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-inv/\n */\nexport type PeppolInvoiceTypeCode = typeof invoiceTypeCodeSchema.Type;\n\n/**\n * @description Validates an invoice type code against the PEPPOL subset of UNCL 1001 (invoice).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid invoice type codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-inv/\n */\nexport const invoiceTypeCodeSchema = Schema.Literals(invoiceTypeCodesKeys).pipe(Schema.brand('PeppolInvoiceTypeCode'));\n","import { Schema } from 'effect';\n\nimport { PeppolInvoiceLine } from '#/schemas/fields/peppol-invoice-line-schema.ts';\nimport { PeppolBillingBase } from '#/schemas/peppol-billing-base-schema.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { invoiceTypeCodeSchema } from '#/schemas/values/invoice-type-code-schema.ts';\n\nclass PeppolProjectReference extends opaque<PeppolProjectReference>()(Schema.Struct({ id: Schema.String })) {}\n\nexport class PeppolInvoice extends opaque<PeppolInvoice>()(\n Schema.Struct({\n ...PeppolBillingBase.fields,\n /**\n * @example\n * `2017-11-01`;\n *\n * @summary Payment due date\n *\n * @name cbc:DueDate\n */\n dueDate: Schema.optional(PeppolIsoDateString),\n /**\n * @summary INVOICE LINE\n *\n * @name cac:InvoiceLine\n */\n invoiceLines: Schema.Array(PeppolInvoiceLine).check(Schema.isMinLength(1)),\n /**\n * @example\n * `380`;\n *\n * @summary Invoice type code\n *\n * @name cbc:InvoiceTypeCode\n */\n invoiceTypeCode: invoiceTypeCodeSchema,\n /**\n * @summary PROJECT REFERENCE\n *\n * @name cac:ProjectReference\n */\n projectReference: Schema.optional(PeppolProjectReference),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolBaseLine } from '#/schemas/fields/peppol-base-line-schema.ts';\nimport { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { quantityUnitCodesSchema } from '#/schemas/values/quantity-unit-codes-schema.ts';\n\n/**\n * @description Credit note line is identical to Invoice line except the quantity element name.\n */\nexport class PeppolCreditNoteLine extends opaque<PeppolCreditNoteLine>()(\n PeppolBaseLine.pipe(\n Schema.fieldsAssign({\n /**\n * @description Invoiced/Credited quantity.\n *\n * @example\n * { value: 40, unitCode: \"C62\" }\n *\n * @name cbc:CreditedQuantity (+ @unitCode)\n */\n creditedQuantity: PeppolQuantity.pipe(\n Schema.fieldsAssign({\n /**\n * @description The unit of measure that applies to the invoiced quantity. Codes for unit of packaging from UNECE Recommendation No. 21 can be used in\n * accordance with the descriptions in the \"Intro\" section of UN/ECE Recommendation 20, Revision 11 (2015): The 2 character alphanumeric\n * code values in UNECE Recommendation 21 shall be used. To avoid duplication with existing code values in UNECE Recommendation No. 20, each\n * code value from UNECE Recommendation 21 shall be prefixed with an “X”, resulting in a 3 alphanumeric code when used as a unit of\n * measure.\n *\n * @example\n * `C62`;\n *\n * @summary Invoiced quantity unit of measure\n *\n * @see {@link quantityUnitCodes}\n */\n unitCode: quantityUnitCodesSchema,\n })\n ),\n })\n )\n) {}\nexport interface PeppolCreditNoteLineEncoded extends Schema.Codec.Encoded<typeof PeppolCreditNoteLine> {}\n","import { Schema } from 'effect';\n\nimport type { CreditNoteTypeCodesKeys } from '#/values/credit-notes-type-codes.generated';\n\nimport { creditNoteTypeCodesKeys } from '#/values/credit-notes-type-codes.generated';\n\n/**\n * @description A credit note type code as defined by the PEPPOL subset of UNCL 1001 (credit note).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-cn/\n */\nexport type PeppolCreditNoteTypeCode = CreditNoteTypeCodesKeys;\n\n/**\n * @description Validates a credit note type code against the PEPPOL subset of UNCL 1001 (credit note).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid credit note type codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-cn/\n */\nexport const creditNoteTypeCodeSchema = Schema.Literals(creditNoteTypeCodesKeys);\n","import { Schema } from 'effect';\n\nimport { PeppolCreditNoteLine } from '#/schemas/fields/peppol-credit-note-line-schema.ts';\nimport { PeppolBillingBase } from '#/schemas/peppol-billing-base-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { creditNoteTypeCodeSchema } from '#/schemas/values/credit-note-type-code-schema.ts';\n\n/**\n * @description Main UBL Credit Note schema (camelCase properties) Effect port of `creditNoteSchema` (`z.extend(billingBaseSchema, ...)` →\n * `PeppolBillingBase.pipe(Schema.fieldsAssign(...))`).\n */\nexport class PeppolCreditNote extends opaque<PeppolCreditNote>()(\n Schema.Struct({\n ...PeppolBillingBase.fields,\n /**\n * @description CREDIT NOTE LINE.\n *\n * @name cac:CreditNoteLine (1..n)\n */\n creditNoteLines: Schema.Array(PeppolCreditNoteLine).check(Schema.isMinLength(1)),\n /**\n * @description Invoice type code A code specifying the functional type of the Credit Note.\n *\n * @example\n * 381;\n *\n * @name cbc:CreditNoteTypeCode\n */\n creditNoteTypeCode: creditNoteTypeCodeSchema,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolMessageLevelResponseParty extends opaque<PeppolMessageLevelResponseParty>()(\n Schema.Struct({\n /**\n * @description Identifies the sender party's electronic address.\n *\n * @example\n * 7300010000001;\n *\n * @summary Sender/Receiver party's electronic address\n *\n * @name `cbc:EndpointID (+ @schemeID)`\n */\n endpointId: Schema.optional(PeppolIdentifier),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { documentTypeCodesKeys } from '#/values/document-type-codes.generated';\n\n/**\n * @description A document type code as defined by the PEPPOL subset of UNCL 1001 (document/message name code).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001/\n */\nexport type PeppolDocumentTypeCode = typeof peppolDocumentTypeCodeSchema.Type;\n\n/**\n * @description Validates a document type code against the PEPPOL subset of UNCL 1001.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid document type codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001/\n */\nexport const peppolDocumentTypeCodeSchema = Schema.Literals(documentTypeCodesKeys).pipe(Schema.brand('PeppolDocumentTypeCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolDocumentTypeCodeSchema } from '#/schemas/values/peppol-document-type-code-schema.ts';\n\nexport class PeppolDocumentResponseDocumentReference extends opaque<PeppolDocumentResponseDocumentReference>()(\n Schema.Struct({\n /**\n * @description Identifies the document on which the message level response is based.\n *\n * @example\n * `EnvelopeID-12345`;\n *\n * @summary Document identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description The type of the document being referred to, expressed as a code.\n *\n * @summary Document type code\n *\n * @name `cbc:DocumentTypeCode`\n */\n documentTypeCode: Schema.optional(peppolDocumentTypeCodeSchema),\n /**\n * @description The version of the document that has been identifier with the document identifier.\n *\n * @example\n * `2`;\n *\n * @summary Document version identifier\n *\n * @name `cbc:VersionID`\n */\n versionId: Schema.optional(Schema.String),\n })\n) {}\n\nexport type PeppolMessageLevelDocumentResponseDocumentReference = PeppolDocumentResponseDocumentReference;\n","import { Schema } from 'effect';\n\nimport type { ApplicationResponseTypeCodesKeys } from '#/values/application-response-type-codes.generated';\n\nimport { applicationResponseTypeCodesKeys } from '#/values/application-response-type-codes.generated';\n\n/**\n * @description An application response type code as defined by the PEPPOL subset of UNCL 4343.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4343/\n */\nexport type PeppolApplicationResponseTypeCode = ApplicationResponseTypeCodesKeys;\n\n/**\n * @description Validates an application response type code against the PEPPOL subset of UNCL 4343.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid application response type codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4343/\n */\nexport const applicationResponseTypeCodeSchema = Schema.Literals(applicationResponseTypeCodesKeys);\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { applicationResponseTypeCodeSchema } from '#/schemas/values/application-response-type-code-schema.ts';\n\n/**\n * @summary Response information\n *\n * @name `cac:Response`\n *\n * @cardinality (1..1)\n *\n * @see {@link messageLevelResponseDocumentResponseSchema}\n */\nexport class PeppolDocumentResponseDocument extends opaque<PeppolDocumentResponseDocument>()(\n Schema.Struct({\n /**\n * @description An indicator stating whether the referenced message was cleared through validation and advanced to the next step in the process. A negative\n * response states that the document was not processed because of identified issues.\n *\n * @example\n * `RE`;\n *\n * @summary Message response code\n *\n * @name `cbc:ResponseCode`\n */\n responseCode: applicationResponseTypeCodeSchema,\n /**\n * @description Used to meake any comments or instructions relevant to the response. The use of this element requires manual assessment by the receiver.\n *\n * @summary Response textual notes\n */\n description: Schema.optional(Schema.String),\n })\n) {}\n\nexport type PeppolMessageLevelResponseDocumentResponseDocument = PeppolDocumentResponseDocument;\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { applicationResponseTypeCodeSchema } from '#/schemas/values/application-response-type-code-schema.ts';\n\nclass PeppolStatus extends opaque<PeppolStatus>()(\n Schema.Struct({\n /**\n * @description A codified version of the issue description that describes the nature of the issue. e.g. Syntax violation, business rule violation, ...\n *\n * @summary Issue type coded\n *\n * @name `cbc:StatusReasonCode`\n */\n statusReasonCode: Schema.Literals(['BV', 'BW', 'SV']),\n })\n) {}\n\nexport class PeppolDocumentResponseLineResponseContent extends opaque<PeppolDocumentResponseLineResponseContent>()(\n Schema.Struct({\n /**\n * @description An indicator stating whether the referenced message was cleared through validation and advanced to the next step in the process. A negative\n * response states that the document was not processed because of identified issues.\n *\n * @example\n * `RE`;\n *\n * @summary Line response code\n *\n * @name `cbc:ResponseCode`\n */\n responseCode: applicationResponseTypeCodeSchema,\n /**\n * @description The description of the issued identifier in the transaction document.\n *\n * @example\n * `Validation gives error [CL-T77-R0002]- Tax categories MUST be coded using UN/ECE 5305 code list`;\n *\n * @summary Issue description\n *\n * @name `cbc:Description`\n */\n description: Schema.String,\n /**\n * @name `cac:Status`\n */\n status: PeppolStatus,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolDocumentResponseLineResponseContent } from '#/schemas/peppol-document-response-line-response-content-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PeppolLineReference extends opaque<PeppolLineReference>()(\n Schema.Struct({\n /**\n * @description Identifies the section of the document to which the reported issue applied. The LineID element mustbe used to indicate where in the business\n * document the error occurred by using XPath to reference the element causing the error. To cater for scenarios where it is not possible to\n * provide XPath, a dummy value must be applied. The dummay value must consist of the characters NA. This is due to that the LineID element is\n * mendatory in the ApplicationResponse message in UBL 2.1 on which the MLR message is based.\n *\n * @example\n * `/Catalogue/cac:CatalogueLine[3]/cac:Item[1]/cac:ClassifiedTaxCategory[1]/cbc:ID[1]`;\n *\n * @summary Section identifier\n */\n lineId: Schema.String,\n })\n) {}\n\nexport class PeppolDocumentResponseLineResponse extends opaque<PeppolDocumentResponseLineResponse>()(\n Schema.Struct({\n /**\n * @description Identifies the line in the business document to which the reported issue applies.\n *\n * @summary Line reference\n *\n * @name `cac:LineReference`\n */\n lineReference: PeppolLineReference,\n /**\n * @summary Line response information\n */\n response: PeppolDocumentResponseLineResponseContent,\n })\n) {}\n\nexport type PeppolMessageLevelDocumentResponseLineResponse = PeppolDocumentResponseLineResponse;\n","import { Schema } from 'effect';\n\nimport { PeppolDocumentResponseDocumentReference } from '#/schemas/peppol-document-response-document-reference-schema.ts';\nimport { PeppolDocumentResponseDocument } from '#/schemas/peppol-document-response-document-schema.ts';\nimport { PeppolDocumentResponseLineResponse } from '#/schemas/peppol-document-response-line-response-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolMessageLevelResponseDocumentResponse extends opaque<PeppolMessageLevelResponseDocumentResponse>()(\n Schema.Struct({\n /**\n * @summary Response information\n *\n * @name `cac:Response`\n *\n * @cardinality (1..1)\n */\n response: PeppolDocumentResponseDocument,\n /**\n * @description The document reference is used to provide a reference to the envelope of the business document on which the message level response is based.\n * The message level response message may only cover exactly one business document. The element\n * `cac:DocumentResponse/cac:DocumentReference/cbc:ID` **MUST** contain the instance identifier of the envelope of the original business\n * document.\n *\n * @summary Document reference\n */\n documentReference: PeppolDocumentResponseDocumentReference,\n /**\n * @description A response to a particular line in the document. If the document response is negative (code='RE'), the line response element is used to specify\n * the errors in the business document.\n *\n * @summary Line response information\n */\n lineResponse: Schema.Array(PeppolDocumentResponseLineResponse),\n })\n) {}\n","import { DateTime } from 'effect';\n\n/**\n * @description Pads a number with leading zeros, preserving a leading `-` for negative values. Extracted from date-fns\n * `pkgs/core/src/_lib/addLeadingZeros/index.ts`.\n *\n * @param value - The number to pad.\n * @param targetLength - The total length the output should have.\n *\n * @returns The zero-padded string.\n */\nconst addLeadingZeros = (value: number, targetLength: number): string => {\n const sign = value < 0 ? '-' : '';\n return sign + Math.abs(value).toString().padStart(targetLength, '0');\n};\n\n/**\n * @description The `HH`, `mm` and `ss` tokens extracted from the date-fns `lightFormatters` (`pkgs/core/src/_lib/format/lightFormatters/index.ts`). The date-fns\n * implementation reads the local components of a `Date`; this port reads the UTC components because the caller hands it a `Date` whose UTC fields\n * already hold the wall-clock time of the target time zone.\n *\n * @param date - A `Date` whose UTC fields hold the wall-clock time to format.\n *\n * @returns The zero-padded `HH` component.\n */\nconst formatHours = (date: Date): string => addLeadingZeros(date.getUTCHours(), 2);\n\n/**\n * @description See {@link formatHours}. Formats the `mm` token.\n *\n * @param date - A `Date` whose UTC fields hold the wall-clock time to format.\n *\n * @returns The zero-padded `mm` component.\n */\nconst formatMinutes = (date: Date): string => addLeadingZeros(date.getUTCMinutes(), 2);\n\n/**\n * @description See {@link formatHours}. Formats the `ss` token. Fractional seconds are dropped because XSD `time` values produced by this library carry second\n * precision.\n *\n * @param date - A `Date` whose UTC fields hold the wall-clock time to format.\n *\n * @returns The zero-padded `ss` component.\n */\nconst formatSeconds = (date: Date): string => addLeadingZeros(date.getUTCSeconds(), 2);\n\n/**\n * @description Formats a UTC offset as the ISO-8601 `XXX` token (`+HH:MM` / `-HH:MM`). The digit handling is extracted from date-fns `formatTimezone`\n * (`pkgs/core/src/_lib/format/formatters/index.ts`) with two deliberate differences:\n *\n * 1. The offset is expressed in the standard direction (positive means east of UTC) instead of JavaScript's inverted `Date#getTimezoneOffset` sign.\n * 2. A zero offset returns an empty string. date-fns renders it as `Z`; XSD `time` wants the time zone to be optional, so UTC produces no offset at all.\n *\n * @param offsetInMinutes - The offset east of UTC in minutes (for example `+05:30` is `330`).\n *\n * @returns The formatted offset, or an empty string for UTC.\n */\nexport const formatTimeZoneOffset = (offsetInMinutes: number): string => {\n if (offsetInMinutes === 0) return '';\n const sign = offsetInMinutes > 0 ? '+' : '-';\n const absoluteOffset = Math.abs(offsetInMinutes);\n const hours = addLeadingZeros(Math.trunc(absoluteOffset / 60), 2);\n const minutes = addLeadingZeros(absoluteOffset % 60, 2);\n return `${sign}${hours}:${minutes}`;\n};\n\n/**\n * @description Formats a `DateTime` as an XSD `time` lexical value: `HH:mm:ss` followed by an optional `±HH:MM` offset. The offset is omitted for UTC, so a UTC\n * value encodes as bare `HH:mm:ss` while a zoned value encodes as `HH:mm:ss±HH:MM`. Fractional seconds are intentionally dropped to match the second\n * precision the schema round-trips.\n *\n * @param date - The `DateTime` to format. It is rendered in its own time zone, not normalised to UTC.\n *\n * @returns The XSD `time` string.\n */\nexport const formatXsdTime = (date: DateTime.DateTime): string => {\n const wallClock = DateTime.toDate(date);\n const offsetInMinutes = (wallClock.getTime() - DateTime.toEpochMillis(date)) / (60 * 1000);\n return `${formatHours(wallClock)}:${formatMinutes(wallClock)}:${formatSeconds(wallClock)}${formatTimeZoneOffset(offsetInMinutes)}`;\n};\n","import { Clock, Option, DateTime, Effect, Predicate, Schema, SchemaGetter, SchemaIssue, SchemaParser } from 'effect';\n\nimport { formatXsdTime } from '#/schemas/utils/format-xsd-time.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nconst timeRegex =\n /^(?<hours>[01]\\d|2[0-3]):(?<minutes>[0-5]\\d):(?<seconds>[0-5]\\d)(?<nanoseconds>\\.\\d{1,9})?(?<tz>(?:Z|-0[1-9]|-1\\d|-2[0-3]|-00:?(?:0[1-9]|[1-5]\\d)|\\+[01]\\d|\\+2[0-3])?(?:|:?[0-5]\\d))$/;\nconst timeZoneRegex = /^(?:(?<utc>Z)|[-+](?<hours>0[1-9]|1\\d|2[0-3]|00):?(?<minutes>[0-5]\\d))$/;\nconst numberFromString = SchemaParser.decodeSync(\n Schema.UndefinedOr(Schema.String.pipe(Schema.withDecodingDefault(Effect.succeed('0')))).pipe(\n Schema.decodeTo(Schema.Number, { encode: SchemaGetter.String(), decode: SchemaGetter.Number() }),\n Schema.catchDecoding(() => Effect.succeedSome(0))\n )\n);\n\n/**\n * @description Parse a timezone offset from a string. The string must be in the format `(+|-)HH:MM` where `HH` and `MM` are two digits.\n *\n * @param tz - The timzeone offset string.\n *\n * @returns\n *\n * @internal\n */\nexport const parseZoneOffsetFromString = (tz: `+${number}:${number}` | `-${number}:${number}` | (string & {})) => {\n const tzRegexResult = timeZoneRegex.exec(tz);\n if (Predicate.isNullish(tzRegexResult)) {\n return undefined;\n }\n const [_tzParsed, _isUtc, tzHours, tzMinutes] = tzRegexResult;\n const offset = DateTime.zoneMakeOffset((numberFromString(tzHours) * 60 + numberFromString(tzMinutes)) * 60 * 1000);\n return offset;\n};\n\n/**\n * @description XSD `time` lexical value (`HH:MM:SS` with optional fractional seconds and timezone). Effect port of `xsdTime` (`z.string().check(z.regex(...))`):\n * keeps the value as a plain string and only validates the shape.\n */\nexport class PeppolXsdTime extends opaque<PeppolXsdTime>()(\n Schema.String.check(\n Schema.isPattern(\n /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d{1,9})?(?:Z|-0[1-9]|-1\\d|-2[0-3]|-00:?(?:0[1-9]|[1-5]\\d)|\\+[01]\\d|\\+2[0-3])?(?:|:?[0-5]\\d)$/\n ).annotate({ message: 'Invalid ISO time' })\n )\n .pipe(\n Schema.decodeTo(Schema.DateTimeUtc, {\n decode: SchemaGetter.transformEffect((input, options) =>\n Clock.currentTimeMillis.pipe(\n Effect.map(millis => DateTime.make(millis)),\n Effect.flatMap(option => Effect.fromOption(option)),\n Effect.map(date =>\n DateTime.withDate(date, date => {\n const regexResult = timeRegex.exec(input);\n if (Predicate.isNullish(regexResult)) return Option.none();\n const [_time, hours, minutes, seconds, nanoseconds, tz] = regexResult;\n\n date.setUTCHours(numberFromString(hours), numberFromString(minutes), numberFromString(seconds), numberFromString(nanoseconds));\n if (Predicate.isUndefined(tz) || tz === 'Z') {\n return DateTime.make(date.getTime());\n }\n const offset = parseZoneOffsetFromString(tz);\n if (Predicate.isNullish(offset)) {\n return DateTime.make(date.getTime());\n }\n\n return DateTime.makeZoned(date.getTime(), { adjustForTimeZone: false, timeZone: offset }).pipe(\n Option.map(date => DateTime.toUtc(date))\n );\n })\n ),\n Effect.flatMap(option => Effect.fromOption(option)),\n Effect.catchTag('NoSuchElementError', () => Effect.fail(new SchemaIssue.InvalidValue({ message: 'Invalid date input' }, input, options)))\n )\n ),\n encode: SchemaGetter.transform(self => formatXsdTime(self)),\n })\n )\n .annotate({ message: 'Invalid ISO time' })\n) {}\n","import { Schema } from 'effect';\n\nimport { MESSAGE_LEVEL_RESPONSE_PROFILE_ID } from '#/constants/message-level-response-profile-id.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { PeppolMessageLevelResponseDocumentResponse } from '#/schemas/peppol-message-level-response-document-response-schema.ts';\nimport { PeppolMessageLevelResponseParty } from '#/schemas/peppol-message-level-response-party-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { PeppolXsdTime } from '#/schemas/utils/peppol-xsd-time-schema.ts';\n\nexport class PeppolMessageLevelResponse extends opaque<PeppolMessageLevelResponse>()(\n Schema.Struct({\n /**\n * @description Identifies the specification of content and rules that apply to the transaction.\n *\n * @default `urn:fdc:peppol.eu:poacc:trns:mlr:3`\n *\n * @summary Specification identification\n *\n * @name `cbc:CustomizationID`\n *\n * @cardinality 1..1\n */\n customizationId: Schema.String,\n /**\n * @description Identifies the BII profile or business process context in which the transaction appears.\n *\n * @remarks\n * Fixed value to `urn:fdc:peppol.eu:poacc:bis:mlr:3`\n *\n * @default `urn:fdc:peppol.eu:poacc:bis:mlr:3`\n *\n * @summary Business process type identifier\n *\n * @name `cbc:ProfileID`\n */\n profileId: Schema.Literal(MESSAGE_LEVEL_RESPONSE_PROFILE_ID),\n /**\n * @description A transaction instance must contain an identifier. The identifier enables positive referencing the transaction instance for various puropses\n * including referencing between transactions that are part of the same process.\n *\n * @example\n * 23;\n *\n * @summary Response identifier\n *\n * @name cbc:ID\n */\n id: Schema.String,\n /**\n * @description The date on which the transaction instance was issued.\n *\n * @example\n * 2017 - 11 - 01;\n *\n * @summary Response issue date\n *\n * @format `YYYY-MM-DD`\n *\n * @name cbc:IssueDate\n */\n issueDate: PeppolIsoDateString,\n /**\n * @description The time at which the transaction instance was issued.\n *\n * @example\n * 12:01:34\n *\n * @summary Response issue time\n *\n * @format `hh:mm:ss`\n *\n * @name cbc:IssueDate\n */\n issueTime: Schema.optional(PeppolXsdTime),\n /**\n * @description The party sending an electronic message level response message back to the sending party of the business document.\n *\n * @summary Sender information\n */\n senderParty: PeppolMessageLevelResponseParty,\n /**\n * @description The party, an electronic message level response was addressed to, and who is supposed to process the message level response. This is the same\n * party as the sender of the business document.\n *\n * @summary Receiver information\n */\n receiverParty: PeppolMessageLevelResponseParty,\n /**\n * @description The document response is used to indicate the result of business document validation. The element\n * `cac:DocumentResponse/cac:Response/cbc:ResponseCode` MUST contain the overall result code.\n *\n * @summary Document response\n *\n * @name `cac:DocumentResponse`\n */\n documentResponse: PeppolMessageLevelResponseDocumentResponse,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opStatusActionKeys } from '#/values/op-status-action.generated';\n\n/**\n * @description An OpenPeppol operation status action code (e.g. the outcome of a message response).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/OPStatusAction/\n */\nexport type PeppolOpStatusAction = typeof opStatusActionSchema.Type;\n\n/**\n * @description Validates an OpenPeppol operation status action code against the OPStatusAction codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid operation status action codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/OPStatusAction/\n */\nexport const opStatusActionSchema = Schema.Literals(opStatusActionKeys).pipe(Schema.brand('PeppolOpStatusAction'));\n","import { Schema } from 'effect';\n\nimport { opStatusReasonKeys } from '#/values/op-status-reason.generated';\n\n/**\n * @description An OpenPeppol operation status reason code (e.g. the reason for a message response outcome).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/OPStatusReason/\n */\nexport type PeppolOpStatusReason = typeof opStatusReasonSchema.Type;\n\n/**\n * @description Validates an OpenPeppol operation status reason code against the OPStatusReason codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid operation status reason codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/OPStatusReason/\n */\nexport const opStatusReasonSchema = Schema.Literals(opStatusReasonKeys).pipe(Schema.brand('PeppolOpStatusReason'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { opStatusActionSchema } from '#/schemas/values/op-status-action-schema.ts';\nimport { opStatusReasonSchema } from '#/schemas/values/op-status-reason-schema.ts';\n\nexport class PeppolInvoiceResponseStatusReasonCodeReason extends opaque<PeppolInvoiceResponseStatusReasonCodeReason>()(\n Schema.Struct({\n value: opStatusReasonSchema,\n /**\n * @description List identifier for clarification.\n *\n * @summary List identifier\n *\n * @name `@listId`\n */\n listId: Schema.Literal('OPStatusReason'),\n })\n) {}\n\nexport class PeppolInvoiceResponseStatusReasonCodeAction extends opaque<PeppolInvoiceResponseStatusReasonCodeAction>()(\n Schema.Struct({\n value: opStatusActionSchema,\n /**\n * @description List identifier for clarification.\n *\n * @summary List identifier\n *\n * @name `@listId`\n */\n listId: Schema.Literal('OPStatusAction'),\n })\n) {}\n\nexport const peppolInvoiceResponseStatusReasonCodeSchema = Schema.Union([\n PeppolInvoiceResponseStatusReasonCodeAction,\n PeppolInvoiceResponseStatusReasonCodeReason,\n]);\n\nexport type PeppolInvoiceResponseStatusReasonCode = typeof peppolInvoiceResponseStatusReasonCodeSchema.Type;\n","import { Schema } from 'effect';\n\nimport { peppolInvoiceResponseStatusReasonCodeSchema } from '#/schemas/peppol-invoice-response-status-reason-code-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolInvoiceResponseCondition extends opaque<PeppolInvoiceResponseCondition>()(\n Schema.Struct({\n /**\n * @description A code defining the type of the detail.\n *\n * @example\n * `BT-75`;\n *\n * @summary Detail type code\n *\n * @name `cbc:AttributeId`\n */\n attributeId: Schema.String,\n /**\n * @description The value of the detail.\n *\n * @example\n * `EU123456789`;\n *\n * @summary Detail value\n *\n * @name `cbc:Description`\n */\n description: Schema.optional(Schema.String),\n })\n) {}\n\nexport class PeppolInvoiceResponseDocumentActualResponseStatus extends opaque<PeppolInvoiceResponseDocumentActualResponseStatus>()(\n Schema.Struct({\n /**\n * @description A code defining a clarification given for the invoice status.\n *\n * @summary Clarification code\n *\n * @name `cbc:StatusReasonCode`\n */\n statusReasonCode: Schema.optional(peppolInvoiceResponseStatusReasonCodeSchema),\n /**\n * @description The description of the clarification given for the invoice status.\n *\n * @example\n * `TAX reference not found`;\n *\n * @summary Clarification description\n *\n * @name `cbc:StatusReason\n */\n statusReason: Schema.optional(Schema.String),\n /**\n * @summary Condition\n *\n * @name `cac:Condition`\n */\n condition: Schema.optional(Schema.Array(PeppolInvoiceResponseCondition)),\n })\n) {}\n\nexport type InvoiceResponseDocumentActualResponseStatus = PeppolInvoiceResponseDocumentActualResponseStatus;\n","import { Schema } from 'effect';\n\nimport { invoiceResponseCodeNeedsSchema } from '#/invoice-response-codes/invoice-response-code-needs-schema.ts';\nimport { invoiceResponseCodeNotNeedsSchema } from '#/invoice-response-codes/invoice-response-code-not-needs-schema.ts';\nimport { PeppolInvoiceResponseDocumentActualResponseStatus } from '#/schemas/peppol-invoice-response-document-actual-response-status-schema.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport const withStatusCodes = Schema.Literals(invoiceResponseCodeNeedsSchema);\nexport const withoutStatusCodes = Schema.Literals(invoiceResponseCodeNotNeedsSchema);\n\nexport class PeppolInvoiceResponseDocumentActualResponseWithoutStatus extends opaque<PeppolInvoiceResponseDocumentActualResponseWithoutStatus>()(\n Schema.Struct({\n /**\n * @summary A code stating the status of the invoice in the process.\n *\n * @name `cbc:ResponseCode`\n */\n responseCode: withoutStatusCodes,\n /**\n * @description The date when the status became effective.\n *\n * @example\n * `2018-08-02`;\n *\n * @summary Status date\n *\n * @name `cbc:EffectiveDate`\n */\n effectiveDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description Clarification is mendatory when the status is UQ-`under query`,RE-`rejected` and `CA`-Conditionally accepted. Clarification may be given as a\n * code, a description or both. If both are used, they must indicate the same clarification.\n *\n * @summary Clarification information\n *\n * @name `cac:Status`\n */\n status: Schema.optional(Schema.Array(PeppolInvoiceResponseDocumentActualResponseStatus)),\n })\n) {}\n\nexport class PeppolInvoiceResponseDocumentActualResponseWithStatus extends opaque<PeppolInvoiceResponseDocumentActualResponseWithStatus>()(\n Schema.Struct({\n /**\n * @remarks\n * This is a rejection code that needs clarification in {@link status}\n *\n * @summary A code stating the status of the invoice in the process.\n *\n * @name `cbc:ResponseCode`\n */\n responseCode: withStatusCodes,\n /**\n * @description The date when the status became effective.\n *\n * @example\n * `2018-08-02`;\n *\n * @summary Status date\n *\n * @name `cbc:EffectiveDate`\n */\n effectiveDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description Clarification is mendatory when the status is UQ-`under query`,RE-`rejected` and `CA`-Conditionally accepted. Clarification may be given as a\n * code, a description or both. If both are used, they must indicate the same clarification.\n *\n * @summary Clarification information\n *\n * @name `cac:Status`\n */\n status: Schema.Array(PeppolInvoiceResponseDocumentActualResponseStatus).check(Schema.isMinLength(1)),\n })\n) {}\n\nexport const peppolInvoiceResponseDocumentActualResponseSchema = Schema.Union([\n PeppolInvoiceResponseDocumentActualResponseWithStatus,\n PeppolInvoiceResponseDocumentActualResponseWithoutStatus,\n]);\n\nexport type InvoiceResponseDocumentActualResponse = typeof peppolInvoiceResponseDocumentActualResponseSchema.Type;\n","import { Schema, Struct } from 'effect';\n\nimport { INVOICE_RESPONSE_PROFILE_ID } from '#/constants/invoice-response-profile-id.ts';\nimport { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { PeppolPartyLegalEntity } from '#/schemas/fields/peppol-party-legal-entity-schema.ts';\nimport { peppolInvoiceResponseDocumentActualResponseSchema } from '#/schemas/peppol-invoice-response-document-actual-response-schema.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { PeppolMessageLevelResponseParty } from '#/schemas/peppol-message-level-response-party-schema.ts';\nimport { PeppolMessageLevelResponse } from '#/schemas/peppol-message-level-response-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolDocumentTypeCodeSchema } from '#/schemas/values/peppol-document-type-code-schema.ts';\n\nexport class PeppolInvoiceResponseDocumentResponsePartyName extends opaque<PeppolInvoiceResponseDocumentResponsePartyName>()(\n Schema.Struct({\n /**\n * @description - The party that issued the reference invoice\n * - The party who the referenced invoice is issued.\n *\n * @summary Seller/Buyer party name\n *\n * @name `cbc:Name`\n */\n name: Schema.String,\n })\n) {}\n\nexport class PeppolInvoiceResponseParty extends opaque<PeppolInvoiceResponseParty>()(\n PeppolMessageLevelResponseParty.pipe(\n Schema.fieldsAssign({\n /**\n * @summary Party partyIdentification\n */\n partyIdentification: Schema.optional(PeppolIdentifier),\n partyLegalEntity: PeppolPartyLegalEntity.mapFields(Struct.pick(['registrationName'])),\n })\n )\n) {}\n\nexport class PeppolInvoiceResponseSenderParty extends opaque<PeppolInvoiceResponseSenderParty>()(\n PeppolInvoiceResponseParty.pipe(\n Schema.fieldsAssign({\n /**\n * @summary Contact information\n *\n * @name `cac:Contact`\n */\n contact: Schema.optional(PeppolContact),\n })\n )\n) {}\n\n/**\n * @description Party schema used under `cac:DocumentReference/(cac:IssuerParty|cac:RecipientParty)`\n */\nexport class PeppolInvoiceResponseDocumentResponseParty extends opaque<PeppolInvoiceResponseDocumentResponseParty>()(\n Schema.Struct({\n /**\n * @summary Party partyIdentification\n */\n partyIdentification: Schema.optional(PeppolIdentifier),\n /**\n * @example\n * Seller Business Name AS\n *\n * @name cac:PartyName\n */\n partyName: PeppolInvoiceResponseDocumentResponsePartyName,\n })\n) {}\n\nexport type PeppolInvoiceDocumentResponseParty = PeppolInvoiceResponseDocumentResponseParty;\n\nexport class PeppolInvoiceResponseDocumentReference extends opaque<PeppolInvoiceResponseDocumentReference>()(\n Schema.Struct({\n /**\n * @description An identifier for the invoice that the status applies to. The invoice identifier must be of the main invoice number that appears in the invoice\n * itself.\n *\n * @example\n * `inv-99876`;\n *\n * @summary Invoice identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description The date on which the referenced invoice was issued.\n *\n * @example\n * `2018-08-01`;\n *\n * @summary Invoice issue date\n *\n * @name `cbc:IssueDate`\n */\n issueDate: Schema.optional(PeppolIsoDateString),\n /**\n * @example\n * `380`;\n *\n * @summary Identifier type code\n */\n documentTypeCode: peppolDocumentTypeCodeSchema,\n })\n) {}\n\nexport class PeppolInvoiceResponseDocumentResponse extends opaque<PeppolInvoiceResponseDocumentResponse>()(\n Schema.Struct({\n /**\n * @summary Response information\n *\n * @name `cac:Response`\n *\n * @cardinality (1..1)\n */\n response: peppolInvoiceResponseDocumentActualResponseSchema,\n /**\n * @summary Document reference\n *\n * @name `cac:DocumentReference`\n */\n documentReference: PeppolInvoiceResponseDocumentReference,\n /**\n * @summary Seller party information\n *\n * @name `cac:IssuerParty`\n */\n issuerParty: Schema.optional(PeppolInvoiceResponseDocumentResponseParty),\n /**\n * @summary Buyer party information\n *\n * @name `cac:RecipientParty`\n */\n recipientParty: Schema.optional(PeppolInvoiceResponseDocumentResponseParty),\n })\n) {}\n\n/**\n * @description The invoice response is a descendant of the message level response with more fields. Effect port of `invoiceResponseSchema`\n * (`z.extend(messageLevelResponse, ...)` → `messageLevelResponse.pipe(Schema.fieldsAssign(...))`), overriding `profileId` with\n * `Schema.Literal(INVOICE_RESPONSE_PROFILE_ID)` plus sender/receiver/documentResponse.\n */\nexport class PeppolInvoiceResponse extends opaque<PeppolInvoiceResponse>()(\n Schema.Struct({\n ...PeppolMessageLevelResponse.fields,\n profileId: Schema.Literal(INVOICE_RESPONSE_PROFILE_ID),\n /**\n * @description The party sending an electronic message level response message back to the sending party of the business document.\n *\n * @summary Sender information\n */\n senderParty: PeppolInvoiceResponseSenderParty,\n /**\n * @description The party, an electronic message level response was addressed to, and who is supposed to process the message level response. This is the same\n * party as the sender of the business document.\n *\n * @summary Receiver information\n */\n receiverParty: PeppolInvoiceResponseParty,\n /**\n * @description General comments or instructions that are revelant to the response as a whole.\n *\n * @example\n * `Please refere to previous email exchange regarding this invoice.`;\n *\n * @summary Invoice response note\n */\n note: Schema.optional(Schema.String),\n /**\n * @summary Document response\n */\n documentResponse: PeppolInvoiceResponseDocumentResponse,\n })\n) {}\n","import { Effect, Predicate } from 'effect';\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport type XmlNode = any;\n\nexport const getProp = Effect.fn(function* (node: XmlNode, ...path: Array<string>): Effect.fn.Return<XmlNode> {\n if (!Predicate.isTruthy(node)) {\n return undefined;\n }\n if (path.length === 0) {\n return node;\n }\n let currentNode = node;\n for (const key of path) {\n const newNode = currentNode[key];\n if (Predicate.isNotNullish(newNode)) {\n currentNode = newNode;\n continue;\n }\n if (key.includes(':')) {\n const [, localKey] = key.split(':') as [string, string, ...Array<string>];\n currentNode = currentNode[localKey];\n if (Predicate.isNullish(currentNode)) {\n return undefined;\n }\n } else {\n return undefined;\n }\n }\n return currentNode;\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const strOrUnd = Effect.fn('str-or-und')(function* <const T extends string = string>(\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<T | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n if (!Predicate.isObject(val)) return (val as { toString(): T }).toString();\n const raw = val as XmlNode;\n if (Predicate.isUndefined(raw['#text'])) return undefined;\n return raw['#text'].toString();\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport interface Identifier<T extends PeppolIdentifier['schemeId'] = string> extends PeppolIdentifier {\n schemeId?: T;\n}\n\nexport const decodeIdentifier = Effect.fn(function* <const T extends PeppolIdentifier['schemeId'] = string>(\n node: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<Identifier<T>> | undefined> {\n const val = yield* getProp(node, ...path);\n if (!Predicate.isTruthy(val) && val !== 0) return undefined;\n const id = yield* strOrUnd(val);\n if ((Predicate.isString(val) || Predicate.isNumber(val)) && Predicate.isTruthy(id)) {\n return { id };\n }\n if (!Predicate.isTruthy(id)) return undefined;\n return {\n id,\n // @ts-expect-error I don't want to bother with the typecheck\n schemeId: yield* strOrUnd(val, '@schemeID'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const getArray = Effect.fn(function* (node: XmlNode, ...path: Array<string>): Effect.fn.Return<Array<XmlNode>> {\n if (!Predicate.isTruthy(node)) return [];\n let currentNode = node;\n for (const key of path) {\n if (!Predicate.isTruthy(currentNode)) {\n return [];\n }\n if (Array.isArray(currentNode)) {\n const flattened = yield* Effect.forEach(\n currentNode,\n Effect.fn(function* (n: XmlNode) {\n return (yield* getProp(n, key)) || [];\n })\n );\n currentNode = flattened.flat();\n } else {\n currentNode = yield* getProp(currentNode, key);\n }\n }\n if (!Predicate.isTruthy(currentNode)) {\n return [];\n }\n return Array.isArray(currentNode) ? currentNode : [currentNode];\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAdditionalDocumentReference } from '#/schemas/fields/peppol-additional-document-reference-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeAdditionalDocumentReferences = Effect.fn(function* (\n doc: XmlNode\n): Effect.fn.Return<Array<RecursivePartial<PeppolAdditionalDocumentReference>> | undefined> {\n const arr = yield* getArray(doc, 'cac:AdditionalDocumentReference');\n if (arr.length === 0) {\n return undefined;\n }\n\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (additionalDocumentReference: XmlNode) {\n const attachment = yield* getProp(additionalDocumentReference, 'cac:Attachment');\n const embeddedDocumentBinaryObject = yield* getProp(attachment, 'cbc:EmbeddedDocumentBinaryObject');\n const externalReference = yield* getProp(attachment, 'cac:ExternalReference');\n return {\n attachment: Predicate.isNotNullish(attachment)\n ? {\n embeddedDocumentBinaryObject: Predicate.isNotNullish(embeddedDocumentBinaryObject)\n ? {\n content: yield* strOrUnd(embeddedDocumentBinaryObject),\n filename: yield* strOrUnd(embeddedDocumentBinaryObject, '@filename'),\n mimeCode: yield* strOrUnd(embeddedDocumentBinaryObject, '@mimeCode'),\n }\n : undefined,\n externalReference: Predicate.isNotNullish(externalReference) ? { uri: yield* strOrUnd(externalReference, 'cbc:URI') } : undefined,\n }\n : undefined,\n documentDescription: yield* strOrUnd(additionalDocumentReference, 'cbc:DocumentDescription'),\n documentTypeCode: yield* strOrUnd(additionalDocumentReference, 'cbc:DocumentTypeCode'),\n id: yield* decodeIdentifier(additionalDocumentReference, 'cbc:ID'),\n };\n })\n );\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport type { PeppolCurrencyCode } from '#/schemas/values/currency-code-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeAmount = Effect.fn(function* (\n amount: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAmount> | undefined> {\n const val = yield* getProp(amount, ...path);\n if (!Predicate.isTruthy(val) && val !== 0) return undefined;\n if (Predicate.isObject(val)) {\n const raw = val as XmlNode;\n return { currencyId: String(raw['@currencyID']) as PeppolCurrencyCode, value: parseFloat(String(raw['#text'] ?? raw)) };\n }\n return { currencyId: '' as PeppolCurrencyCode, value: parseFloat(String(val)) };\n});\n","import { Effect, Predicate, SchemaIssue } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const bool = Effect.fn(function* <const T extends boolean = boolean>(node: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(node, ...path).pipe(\n Effect.filterOrFail(\n val => Predicate.isNotNullish(val),\n () => new SchemaIssue.MissingKey({ message: `Unable to find ${path.join('->')} into ${node}` })\n )\n );\n if (Predicate.isBoolean(val)) return val as T;\n if (Predicate.isObject(val) && Predicate.hasProperty(val, '#text') && Predicate.isNotUndefined(val['#text'])) return val['#text'] as T;\n return yield* Effect.fail(new SchemaIssue.MissingKey({ message: `Unable to find ${path.join('->')} into ${node}` }));\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const numOrUnd = Effect.fn(function* (node: XmlNode, ...path: Array<string>): Effect.fn.Return<number | undefined> {\n const val = yield* strOrUnd(node, ...path);\n\n return Predicate.isNotUndefined(val) ? parseFloat(val) : undefined;\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { bool } from '#/helpers/bool.ts';\nimport { numOrUnd } from '#/helpers/num-or-und.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeBaseAllowanceCharge = Effect.fn(function* (allowanceCharge: XmlNode) {\n return {\n allowanceChargeReason: yield* strOrUnd(allowanceCharge, 'cbc:AllowanceChargeReason'),\n allowanceChargeReasonCode: yield* strOrUnd(allowanceCharge, 'cbc:AllowanceChargeReasonCode'),\n amount: yield* decodeAmount(allowanceCharge, 'cbc:Amount'),\n baseAmount: yield* decodeAmount(allowanceCharge, 'cbc:BaseAmount'),\n chargeIndicator: yield* bool(allowanceCharge, 'cbc:ChargeIndicator'),\n multiplierFactorNumeric: yield* numOrUnd(allowanceCharge, 'cbc:MultiplierFactorNumeric'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getArray } from '#/helpers/get-array.ts';\n\nexport const decodeNodeList = Effect.fn(function* <A, E, R>(\n node: XmlNode,\n decodeItem: (item: XmlNode) => Effect.Effect<A, E, R>,\n ...path: Array<string>\n): Effect.fn.Return<Array<A> | undefined, E, R> {\n const arr = yield* getArray(node, ...path);\n if (arr.length === 0) return undefined;\n return yield* Effect.forEach(arr, decodeItem);\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeSimpleIdentifer = Effect.fn('decode-simple-identifier')(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<{ id: string }> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n return { id: yield* strOrUnd(node, 'cbc:ID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { numOrUnd } from '#/helpers/num-or-und.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeTaxCategory = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAllowanceCharge['taxCategory']> | undefined> {\n const taxCategory = yield* getProp(doc, ...path);\n if (Predicate.isNullish(taxCategory)) {\n return undefined;\n }\n\n return {\n id: yield* strOrUnd(taxCategory, 'cbc:ID'),\n percent: yield* numOrUnd(taxCategory, 'cbc:Percent'),\n taxSchemeId: yield* decodeSimpleIdentifer(taxCategory, 'cac:TaxScheme'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeBaseAllowanceCharge } from '#/decoders/fields/decode-base-allowance-charge.ts';\nimport { decodeNodeList } from '#/decoders/fields/decode-node-list.ts';\nimport { decodeTaxCategory } from '#/decoders/fields/decode-tax-category.ts';\n\nexport const decodeAllowanceCharges = Effect.fn(function* (allowanceCharges: XmlNode, ...path: Array<string>) {\n return yield* decodeNodeList(\n allowanceCharges,\n Effect.fn(function* (allowanceCharge: XmlNode) {\n return {\n ...(yield* decodeBaseAllowanceCharge(allowanceCharge)),\n taxCategory: yield* decodeTaxCategory(allowanceCharge, 'cac:TaxCategory'),\n } as RecursivePartial<PeppolAllowanceCharge>;\n }),\n ...path\n );\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolBillingReference } from '#/schemas/fields/peppol-billing-reference-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getArray } from '#/helpers/get-array.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeBillingReferences = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<Array<RecursivePartial<PeppolBillingReference>> | undefined> {\n const arr = yield* getArray(doc, ...path);\n if (arr.length === 0) return undefined;\n\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (billingReference: XmlNode) {\n return {\n invoiceDocumentReference: {\n id: yield* strOrUnd(billingReference, 'cac:InvoiceDocumentReference', 'cbc:ID'),\n issueDate: yield* strOrUnd(billingReference, 'cac:InvoiceDocumentReference', 'cbc:IssueDate'),\n },\n };\n })\n );\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAddress } from '#/schemas/fields/peppol-address-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeAddress = Effect.fn(function* (\n address: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAddress> | undefined> {\n const val = yield* getProp(address, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n additionalStreetName: yield* strOrUnd(val, 'cbc:AdditionalStreetName'),\n addressLine: yield* decodeAddressLine(val, 'cac:AddressLine'),\n cityName: yield* strOrUnd(val, 'cbc:CityName'),\n countryCode: yield* decodeCountryCode(val, 'cac:Country'),\n countrySubentity: yield* strOrUnd(val, 'cbc:CountrySubentity'),\n postalZone: yield* strOrUnd(val, 'cbc:PostalZone'),\n streetName: yield* strOrUnd(val, 'cbc:StreetName'),\n };\n});\n\nconst decodeAddressLine = Effect.fn(function* (\n address: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAddress['addressLine']> | undefined> {\n const val = yield* getProp(address, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { line: yield* strOrUnd(val, 'cbc:Line') };\n});\n\nconst decodeCountryCode = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAddress['countryCode']> | undefined> {\n const country = yield* getProp(node, ...path);\n if (Predicate.isNullish(country)) return undefined;\n return { identificationCode: yield* strOrUnd(country, 'cbc:IdentificationCode') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolDelivery } from '#/schemas/fields/peppol-delivery-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAddress } from '#/decoders/fields/decode-address.ts';\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeDelivery = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDelivery> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n actualDeliveryDate: yield* strOrUnd(val, 'cbc:ActualDeliveryDate'),\n deliveryLocation: yield* decodeDeliveryLocation(val, 'cac:DeliveryLocation'),\n deliveryParty: yield* decodeDeliveryParty(val, 'cac:DeliveryParty'),\n };\n});\n\nconst decodeDeliveryLocation = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDelivery['deliveryLocation']> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return { address: yield* decodeAddress(val, 'cac:Address'), id: yield* decodeIdentifier(val, 'cbc:ID') };\n});\n\nconst decodeDeliveryParty = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDelivery['deliveryParty']> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n const name = yield* strOrUnd(val, 'cac:PartyName', 'cbc:Name');\n if (!Predicate.isTruthy(name)) return undefined;\n\n return { partyName: { name } };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeInvoicePeriod = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const invoicePeriod = yield* getProp(doc, ...path);\n if (Predicate.isNullish(invoicePeriod)) return undefined;\n return {\n descriptionCode: yield* strOrUnd(invoicePeriod, 'cbc:DescriptionCode'),\n endDate: yield* strOrUnd(invoicePeriod, 'cbc:EndDate'),\n startDate: yield* strOrUnd(invoicePeriod, 'cbc:StartDate'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolLegalMonetaryTotal } from '#/schemas/fields/peppol-legal-monetary-total-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeLegalMonetaryTotal = Effect.fn(function* (\n node: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolLegalMonetaryTotal> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n allowanceTotalAmount: yield* decodeAmount(val, 'cbc:AllowanceTotalAmount'),\n chargeTotalAmount: yield* decodeAmount(val, 'cbc:ChargeTotalAmount'),\n lineExtensionAmount: yield* decodeAmount(val, 'cbc:LineExtensionAmount'),\n payableAmount: yield* decodeAmount(val, 'cbc:PayableAmount'),\n payableRoundingAmount: yield* decodeAmount(val, 'cbc:PayableRoundingAmount'),\n prepaidAmount: yield* decodeAmount(val, 'cbc:PrepaidAmount'),\n taxExclusiveAmount: yield* decodeAmount(val, 'cbc:TaxExclusiveAmount'),\n taxInclusiveAmount: yield* decodeAmount(val, 'cbc:TaxInclusiveAmount'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolOrderReference } from '#/schemas/fields/peppol-order-reference-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeOrderReference = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolOrderReference> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return { id: yield* strOrUnd(val, 'cbc:ID'), salesOrderId: yield* strOrUnd(val, 'cbc:SalesOrderID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeContact = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolContact> | undefined> {\n const contactNode = yield* getProp(node, ...path);\n if (Predicate.isNullish(contactNode)) return undefined;\n\n return {\n electronicMail: yield* strOrUnd(contactNode, 'cbc:ElectronicMail'),\n name: yield* strOrUnd(contactNode, 'cbc:Name'),\n telephone: yield* strOrUnd(contactNode, 'cbc:Telephone'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\n\nexport const decodeElectronicAddress = Effect.fn(function* <const T extends PeppolIdentifier['schemeId'] = string>(\n node: XmlNode | undefined,\n ...path: Array<string>\n) {\n const value = yield* decodeIdentifier<T>(node, ...path);\n if (Predicate.isTruthy(value?.schemeId)) {\n // @ts-expect-error I don't want to bother with the typecheck\n value.schemeId = (value.schemeId as string).padStart(4, '0') as T;\n }\n return value;\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyTaxSchema } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePartyTaxScheme = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPartyTaxSchema> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n return { companyId: yield* strOrUnd(node, 'cbc:CompanyID'), taxSchemeId: yield* decodeSimpleIdentifer(node, 'cac:TaxScheme') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyTaxSchema } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodePartyTaxScheme } from '#/decoders/fields/decode-party-tax-scheme.ts';\nimport { getArray } from '#/helpers/get-array.ts';\n\nexport const decodePartiesTaxScheme = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<Array<PeppolPartyTaxSchema>> | undefined> {\n const node = yield* getArray(doc, ...path);\n if (node.length === 0) return undefined;\n\n const values = yield* Effect.forEach(\n node,\n Effect.fn(function* (n: XmlNode) {\n return yield* decodePartyTaxScheme(n);\n })\n );\n return values.filter(Predicate.isNotNullish);\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyLegalEntitySchema } from '#/schemas/fields/peppol-party-legal-entity-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePartyLegalEntity = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPartyLegalEntitySchema> | undefined> {\n const partyLegalEntityNode = yield* getProp(node, ...path);\n if (Predicate.isNullish(partyLegalEntityNode)) return undefined;\n\n return {\n companyId: yield* decodeIdentifier(partyLegalEntityNode, 'cbc:CompanyID'),\n companyLegalForm: yield* strOrUnd(partyLegalEntityNode, 'cbc:CompanyLegalForm'),\n registrationName: yield* strOrUnd(partyLegalEntityNode, 'cbc:RegistrationName'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAddress } from '#/decoders/fields/decode-address.ts';\nimport { decodeContact } from '#/decoders/fields/decode-contact.ts';\nimport { decodeElectronicAddress } from '#/decoders/fields/decode-electronic-address.ts';\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { decodePartiesTaxScheme } from '#/decoders/fields/decode-parties-tax-scheme.ts';\nimport { decodePartyLegalEntity } from '#/decoders/fields/decode-party-legal-entity.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeParty = Effect.fn(function* (party: XmlNode | undefined, ...path: Array<string>) {\n const val = yield* getProp(party, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n contact: yield* decodeContact(val, 'cac:Contact'),\n endpointId: yield* decodeElectronicAddress(val, 'cbc:EndpointID'),\n partyIdentification: yield* decodeAdditionalIdentifiers(val, 'cac:PartyIdentification'),\n partyLegalEntity: yield* decodePartyLegalEntity(val, 'cac:PartyLegalEntity'),\n partyName: yield* decodePartyName(val, 'cac:PartyName'),\n partyTaxSchemes: yield* decodePartiesTaxScheme(val, 'cac:PartyTaxScheme'),\n postalAddress: yield* decodeAddress(val, 'cac:PostalAddress'),\n };\n});\n\nconst decodePartyName = Effect.fn(function* (node: XmlNode, ...path: Array<string>) {\n const partyNameNode = yield* getProp(node, ...path);\n if (Predicate.isNullish(partyNameNode)) return undefined;\n return { name: yield* strOrUnd(partyNameNode, 'cbc:Name') };\n});\n\nconst decodeAdditionalIdentifiers = Effect.fn(function* (node: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { id: yield* decodeIdentifier(val, 'cbc:ID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPayeeParty } from '#/schemas/fields/peppol-payee-party-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePayeeParty = Effect.fn(function* (\n payee: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPayeeParty> | undefined> {\n const node = yield* getProp(payee, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return {\n partyIdentification: yield* decodePartyIdentification(node, 'cac:PartyIdentification'),\n partyLegalEntity: yield* decodePartyLegalEntity(node, 'cac:PartyLegalEntity'),\n partyName: yield* decodePartyName(node, 'cac:PartyName'),\n };\n});\n\nconst decodePartyLegalEntity = Effect.fn(function* (\n party: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPayeeParty['partyLegalEntity']> | undefined> {\n const node = yield* getProp(party, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return { companyId: yield* decodeIdentifier(node, 'cbc:CompanyID') };\n});\n\nconst decodePartyName = Effect.fn(function* (\n party: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPayeeParty['partyName']> | undefined> {\n const node = yield* getProp(party, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return { name: yield* strOrUnd(node, 'cbc:Name') };\n});\n\nconst decodePartyIdentification = Effect.fn(function* (\n party: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPayeeParty['partyIdentification']> | undefined> {\n const node = yield* getProp(party, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return { id: yield* decodeIdentifier(node, 'cbc:ID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport type { PeppolPaymentMeans } from '#/schemas/fields/peppol-payment-means-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePaymentMeans = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<Array<RecursivePartial<PeppolPaymentMeans>> | undefined> {\n const arr = yield* getArray(doc, ...path);\n if (arr.length === 0) return undefined;\n\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (paymentMeans: XmlNode) {\n const cardAccount = yield* getProp(paymentMeans, 'cac:CardAccount');\n\n return {\n cardAccount: Predicate.isNotNullish(cardAccount)\n ? {\n holderName: yield* strOrUnd(cardAccount, 'cbc:HolderName'),\n networkId: yield* strOrUnd(cardAccount, 'cbc:NetworkID'),\n primaryAccountNumberId: yield* strOrUnd(cardAccount, 'cbc:PrimaryAccountNumberID'),\n }\n : undefined,\n payeeFinancialAccount: yield* decodePayeeFinancialAccount(paymentMeans, 'cac:PayeeFinancialAccount'),\n paymentDueDate: yield* strOrUnd(paymentMeans, 'cbc:PaymentDueDate'),\n paymentId: yield* strOrUnd(paymentMeans, 'cbc:PaymentID'),\n paymentMandate: yield* decodePaymentMendates(paymentMeans, 'cac:PaymentMandate'),\n paymentMeansCode: yield* decodePaymentMeansCodes(paymentMeans, 'cbc:PaymentMeansCode'),\n };\n })\n );\n});\n\nconst decodePayeeFinancialAccount = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPaymentMeans['payeeFinancialAccount']> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n let financialInstitutionBranch: RecursivePartial<PeppolIdentifier> | undefined = yield* decodeSimpleIdentifer(\n node,\n 'cac:FinancialInstitutionBranch'\n );\n // NOTE: this 2 way comparision is necessary to ensure that `id` is null with a returned value which means that it is not direct child\n if (Predicate.isNotUndefined(financialInstitutionBranch) && !Predicate.isTruthy(financialInstitutionBranch?.id)) {\n financialInstitutionBranch = yield* decodeSimpleIdentifer(node, 'cac:FinancialInstitutionBranch', 'ns0:FinancialInstitution');\n }\n return { financialInstitutionBranch, id: yield* strOrUnd(node, 'cbc:ID'), name: yield* strOrUnd(node, 'cbc:Name') };\n});\n\nconst decodePaymentMendates = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPaymentMeans['paymentMandate']> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n return { id: yield* strOrUnd(node, 'cbc:ID'), payerFinancialAccountId: yield* decodeSimpleIdentifer(node, 'cac:PayerFinancialAccount') };\n});\n\nconst decodePaymentMeansCodes = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPaymentMeans['paymentMeansCode']> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return { code: yield* strOrUnd(node), name: yield* strOrUnd(node, '@name') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPaymentTerms } from '#/schemas/fields/peppol-payment-terms-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePaymentTerms = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPaymentTerms> | undefined> {\n const terms = yield* getProp(doc, ...path);\n if (Predicate.isNullish(terms)) return undefined;\n const note = yield* getProp(terms, 'cbc:Note');\n return Predicate.isNotNullish(note) ? { note: yield* strOrUnd(note) } : undefined;\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolTaxRepresentativeParty } from '#/schemas/fields/peppol-tax-representative-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAddress } from '#/decoders/fields/decode-address.ts';\nimport { decodePartyTaxScheme } from '#/decoders/fields/decode-party-tax-scheme.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeTaxRepresentativeParty = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolTaxRepresentativeParty> | undefined> {\n const taxRepresentative = yield* getProp(doc, ...path);\n if (Predicate.isNullish(taxRepresentative)) return undefined;\n\n return {\n name: yield* strOrUnd(taxRepresentative, 'cac:PartyName', 'cbc:Name'),\n partyTaxScheme: yield* decodePartyTaxScheme(taxRepresentative, 'cac:PartyTaxScheme'),\n postalAddress: yield* decodeAddress(taxRepresentative, 'cac:PostalAddress'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolTaxSubTotal } from '#/schemas/fields/peppol-tax-subtotal-schema.ts';\nimport type { PeppolTaxTotal } from '#/schemas/fields/peppol-tax-totals-base-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { numOrUnd } from '#/helpers/num-or-und.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeTaxTotals = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<Array<RecursivePartial<PeppolTaxTotal>> | undefined> {\n const arr = yield* getArray(doc, ...path);\n if (arr.length === 0) return undefined;\n\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (n: XmlNode) {\n return { taxAmount: yield* decodeAmount(n, 'cbc:TaxAmount'), taxSubtotals: yield* decodeTaxSubTotal(n, 'cac:TaxSubtotal') };\n })\n );\n});\n\nconst decodeTaxSubTotal = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<Array<RecursivePartial<PeppolTaxSubTotal>> | undefined> {\n const arr = yield* getArray(doc, ...path);\n if (arr.length === 0) return undefined;\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (node: XmlNode) {\n return {\n taxAmount: yield* decodeAmount(node, 'cbc:TaxAmount'),\n taxCategory: yield* decodeTaxCategory(node, 'cac:TaxCategory'),\n taxableAmount: yield* decodeAmount(node, 'cbc:TaxableAmount'),\n };\n })\n );\n});\n\nconst decodeTaxCategory = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolTaxSubTotal['taxCategory']> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) {\n return undefined;\n }\n\n return {\n id: yield* strOrUnd(node, 'cbc:ID'),\n percent: yield* numOrUnd(node, 'cbc:Percent'),\n taxExemptionReason: yield* strOrUnd(node, 'cbc:TaxExemptionReason'),\n taxExemptionReasonCode: yield* strOrUnd(node, 'cbc:TaxExemptionReasonCode'),\n taxSchemeId: yield* decodeSimpleIdentifer(node, 'cac:TaxScheme'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAdditionalDocumentReferences } from '#/decoders/fields/decode-additional-document-references.ts';\nimport { decodeAllowanceCharges } from '#/decoders/fields/decode-allowance-charges.ts';\nimport { decodeBillingReferences } from '#/decoders/fields/decode-billing-references.ts';\nimport { decodeDelivery } from '#/decoders/fields/decode-delivery.ts';\nimport { decodeInvoicePeriod } from '#/decoders/fields/decode-invoice-period.ts';\nimport { decodeLegalMonetaryTotal } from '#/decoders/fields/decode-legal-monetary-total.ts';\nimport { decodeOrderReference } from '#/decoders/fields/decode-order-reference.ts';\nimport { decodeParty } from '#/decoders/fields/decode-party.ts';\nimport { decodePayeeParty } from '#/decoders/fields/decode-payee-party.ts';\nimport { decodePaymentMeans } from '#/decoders/fields/decode-payment-means.ts';\nimport { decodePaymentTerms } from '#/decoders/fields/decode-payment-terms.ts';\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { decodeTaxRepresentativeParty } from '#/decoders/fields/decode-tax-representative-party.ts';\nimport { decodeTaxTotals } from '#/decoders/fields/decode-tax-totals.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeBilling = Effect.fn('decode-billing')(function* (doc: XmlNode) {\n return {\n accountingCost: yield* strOrUnd(doc, 'cbc:AccountingCost'),\n accountingCustomerParty: yield* decodeParty(doc, 'cac:AccountingCustomerParty', 'cac:Party'),\n accountingSupplierParty: yield* decodeParty(doc, 'cac:AccountingSupplierParty', 'cac:Party'),\n additionalDocumentReferences: yield* decodeAdditionalDocumentReferences(doc),\n allowanceCharges: yield* decodeAllowanceCharges(doc, 'cac:AllowanceCharge'),\n billingReferences: yield* decodeBillingReferences(doc, 'cac:BillingReference'),\n buyerReference: yield* strOrUnd(doc, 'cbc:BuyerReference'),\n contractDocumentReference: yield* decodeSimpleIdentifer(doc, 'cac:ContractDocumentReference'),\n customizationId: yield* strOrUnd(doc, 'cbc:CustomizationID'),\n delivery: yield* decodeDelivery(doc, 'cac:Delivery'),\n despatchDocumentReference: yield* decodeSimpleIdentifer(doc, 'cac:DespatchDocumentReference'),\n documentCurrencyCode: yield* strOrUnd(doc, 'cbc:DocumentCurrencyCode'),\n id: yield* strOrUnd(doc, 'cbc:ID'),\n invoicePeriod: yield* decodeInvoicePeriod(doc, 'cac:InvoicePeriod'),\n issueDate: yield* strOrUnd(doc, 'cbc:IssueDate'),\n legalMonetaryTotal: yield* decodeLegalMonetaryTotal(doc, 'cac:LegalMonetaryTotal'),\n note: yield* strOrUnd(doc, 'cbc:Note'),\n orderReference: yield* decodeOrderReference(doc, 'cac:OrderReference'),\n originatorDocumentReference: yield* decodeSimpleIdentifer(doc, 'cac:OriginatorDocumentReference'),\n payeeParty: yield* decodePayeeParty(doc, 'cac:PayeeParty'),\n paymentMeans: yield* decodePaymentMeans(doc, 'cac:PaymentMeans'),\n paymentTerms: yield* decodePaymentTerms(doc, 'cac:PaymentTerms'),\n profileId: yield* strOrUnd(doc, 'cbc:ProfileID'),\n receiptDocumentReference: yield* decodeSimpleIdentifer(doc, 'cac:ReceiptDocumentReference'),\n taxCurrencyCode: yield* strOrUnd(doc, 'cbc:TaxCurrencyCode'),\n taxPointDate: yield* strOrUnd(doc, 'cbc:TaxPointDate'),\n taxRepresentativeParty: yield* decodeTaxRepresentativeParty(doc, 'cac:TaxRepresentativeParty'),\n taxTotals: yield* decodeTaxTotals(doc, 'cac:TaxTotal'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeInvoiceLinePeriod = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolInvoiceLinePeriod> | undefined> {\n const invoicePeriod = yield* getProp(doc, ...path);\n return Predicate.isNotNullish(invoicePeriod)\n ? { endDate: yield* strOrUnd(invoicePeriod, 'cbc:EndDate'), startDate: yield* strOrUnd(invoicePeriod, 'cbc:StartDate') }\n : undefined;\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolLineAllowanceCharge } from '#/schemas/fields/peppol-line-allowance-charge-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeBaseAllowanceCharge } from '#/decoders/fields/decode-base-allowance-charge.ts';\nimport { decodeNodeList } from '#/decoders/fields/decode-node-list.ts';\n\nexport const decodeLineAllowanceCharges = Effect.fn(function* (allowanceCharges: XmlNode, ...path: Array<string>) {\n return yield* decodeNodeList(\n allowanceCharges,\n Effect.fn(function* (allowanceCharge: XmlNode) {\n return { ...(yield* decodeBaseAllowanceCharge(allowanceCharge)) } as RecursivePartial<PeppolLineAllowanceCharge>;\n }),\n ...path\n );\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { bool } from '#/helpers/bool.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodePriceAllowanceCharge = Effect.fn(function* (allowanceCharges: XmlNode, ...path: Array<string>) {\n const allowanceCharge = yield* getProp(allowanceCharges, ...path);\n if (Predicate.isNullish(allowanceCharge)) {\n return undefined;\n }\n return {\n amount: yield* decodeAmount(allowanceCharge, 'cbc:Amount'),\n baseAmount: yield* decodeAmount(allowanceCharge, 'cbc:BaseAmount'),\n chargeIndicator: yield* bool<false>(allowanceCharge, 'cbc:ChargeIndicator'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { numOrUnd } from '#/helpers/num-or-und.ts';\n\nexport const decodeQuantity = Effect.fn(function* (quantity: XmlNode | undefined, ...path: Array<string>) {\n const val = yield* getProp(quantity, ...path);\n if (!Predicate.isTruthy(val) && val !== 0) return undefined;\n if (Predicate.isObject(val)) {\n return { unitCode: yield* getProp(val, '@unitCode'), value: yield* numOrUnd(val) };\n }\n return { value: yield* numOrUnd(val) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { decodePriceAllowanceCharge } from '#/decoders/fields/decode-price-allowance-charge.ts';\nimport { decodeQuantity } from '#/decoders/fields/decode-quantity.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeLinePrice = Effect.fn(function* (price: XmlNode, ...path: Array<string>) {\n const node = yield* getProp(price, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n return {\n allowanceCharge: yield* decodePriceAllowanceCharge(node, 'cac:AllowanceCharge'),\n baseQuantity: yield* decodeQuantity(node, 'cbc:BaseQuantity'),\n priceAmount: yield* decodeAmount(node, 'cbc:PriceAmount'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolDocumentLine } from '#/schemas/peppol-document-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { decodeInvoiceLinePeriod } from '#/decoders/fields/decode-invoice-line-period.ts';\nimport { decodeLineAllowanceCharges } from '#/decoders/fields/decode-line-allowance-charges.ts';\nimport { decodeLinePrice } from '#/decoders/fields/decode-line-price.ts';\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { decodeTaxCategory } from '#/decoders/fields/decode-tax-category.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\ntype PeppolDocumentLineItem = PeppolDocumentLine['item'];\n\nexport const decodeLineShared = Effect.fn(function* (lineShared: XmlNode) {\n const item = yield* getProp(lineShared, 'cac:Item');\n const orderLineReference = yield* getProp(lineShared, 'cac:OrderLineReference');\n\n return {\n accountingCost: yield* strOrUnd(lineShared, 'cbc:AccountingCost'),\n allowanceCharges: yield* decodeLineAllowanceCharges(lineShared, 'cac:AllowanceCharge'),\n documentReference: yield* Effect.forEach(\n yield* getArray(lineShared, 'cac:DocumentReference'),\n Effect.fn(function* (documentReference: XmlNode) {\n return {\n documentTypeCode: yield* strOrUnd(documentReference, 'cbc:DocumentTypeCode'),\n id: yield* strOrUnd(documentReference, 'cbc:ID'),\n schemeId: yield* strOrUnd(documentReference, 'cbc:ID', '@schemeID'),\n };\n })\n ),\n id: yield* strOrUnd(lineShared, 'cbc:ID'),\n invoicePeriod: yield* decodeInvoiceLinePeriod(lineShared, 'cac:InvoicePeriod'),\n item: {\n additionalItemProperties: yield* Effect.forEach(\n yield* getArray(item, 'cac:AdditionalItemProperty'),\n Effect.fn(function* (n: XmlNode) {\n return { name: yield* strOrUnd(n, 'cbc:Name'), value: yield* strOrUnd(n, 'cbc:Value') };\n })\n ),\n buyersItemIdentification: yield* decodeSimpleIdentifer(item, 'cac:BuyersItemIdentification'),\n classifiedTaxCategory: yield* decodeTaxCategory(item, 'cac:ClassifiedTaxCategory'),\n commodityClassifications: yield* Effect.forEach(\n yield* getArray(item, 'cac:CommodityClassification'),\n Effect.fn(function* (commodityClassification: XmlNode) {\n return {\n itemClassification: {\n id: yield* strOrUnd(commodityClassification, 'cbc:ItemClassificationCode'),\n listId: yield* strOrUnd(commodityClassification, 'cbc:ItemClassificationCode', '@listID'),\n listVersionId: yield* strOrUnd(commodityClassification, 'cbc:ItemClassificationCode', '@listVersionID'),\n },\n };\n })\n ),\n description: yield* strOrUnd(item, 'cbc:Description'),\n name: yield* strOrUnd(item, 'cbc:Name'),\n originCountryCode: yield* decodeOriginCountryCode(item, 'cac:OriginCountry'),\n sellersItemIdentification: yield* decodeSimpleIdentifer(item, 'cac:SellersItemIdentification'),\n standardItemIdentification: yield* decodeStandardItem(item, 'cac:StandardItemIdentification'),\n },\n lineExtensionAmount: yield* decodeAmount(lineShared, 'cbc:LineExtensionAmount'),\n note: yield* strOrUnd(lineShared, 'cbc:Note'),\n orderLineReference: Predicate.isNotNullish(orderLineReference) ? { lineId: yield* strOrUnd(orderLineReference, 'cbc:LineID') } : undefined,\n price: yield* decodeLinePrice(lineShared, 'cac:Price'),\n };\n});\n\nconst decodeStandardItem = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDocumentLineItem['standardItemIdentification']>> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { id: yield* decodeIdentifier(val, 'cbc:ID') };\n});\n\nconst decodeOriginCountryCode = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDocumentLineItem['originCountryCode']>> {\n const country = yield* getProp(node, ...path);\n if (Predicate.isNullish(country)) return undefined;\n return { identificationCode: yield* strOrUnd(country, 'cbc:IdentificationCode') };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeLineShared } from '#/decoders/fields/decode-line-shared.ts';\nimport { decodeNodeList } from '#/decoders/fields/decode-node-list.ts';\nimport { decodeQuantity } from '#/decoders/fields/decode-quantity.ts';\n\nexport const decodeCreditNoteLines = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n return yield* decodeNodeList(\n doc,\n Effect.fn(function* (lineNode: XmlNode) {\n const shared = yield* decodeLineShared(lineNode);\n return { ...shared, creditedQuantity: (yield* decodeQuantity(lineNode, 'cbc:CreditedQuantity'))! };\n }),\n ...path\n ).pipe(Effect.map(items => items ?? []));\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeBilling } from '#/decoders/decode-billing.ts';\nimport { decodeCreditNoteLines } from '#/decoders/fields/decode-credit-note-lines.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeCreditNote = Effect.fn('decode-credit-note')(function* (value: XmlNode) {\n const root = value || {};\n const doc: XmlNode = (yield* getProp(root, 'ubl:CreditNote')) ?? root; // accept either the whole JSON or just the CreditNote node\n\n return {\n ...(yield* decodeBilling(doc)),\n creditNoteLines: yield* decodeCreditNoteLines(doc, 'cac:CreditNoteLine'),\n creditNoteTypeCode: yield* strOrUnd(doc, 'cbc:CreditNoteTypeCode'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeApplicationResponseBase = Effect.fn(function* (value: XmlNode) {\n const root = value || {};\n const doc: XmlNode = yield* getProp(root, 'ubl:ApplicationResponse');\n\n return {\n base: {\n customizationId: yield* strOrUnd(doc, 'cbc:CustomizationID'),\n id: yield* strOrUnd(doc, 'cbc:ID'),\n issueDate: yield* strOrUnd(doc, 'cbc:IssueDate'),\n issueTime: yield* strOrUnd(doc, 'cbc:IssueTime'),\n },\n doc,\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolInvoiceDocumentResponseParty } from '#/schemas/peppol-invoice-response-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeInvoiceMessageDocumentParty = Effect.fn(function* (\n party: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolInvoiceDocumentResponseParty> | undefined> {\n const val = yield* getProp(party, ...path);\n if (Predicate.isNullish(val)) return undefined;\n const partyName = yield* getProp(val, 'cac:PartyName');\n return {\n partyIdentification: yield* decodeIdentifier(val, 'cac:PartyIdentification', 'cbc:ID'),\n partyName: Predicate.isNotNullish(partyName) ? { name: yield* strOrUnd(partyName, 'cbc:Name') } : undefined,\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeContact } from '#/decoders/fields/decode-contact.ts';\nimport { decodeElectronicAddress } from '#/decoders/fields/decode-electronic-address.ts';\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { decodePartyLegalEntity } from '#/decoders/fields/decode-party-legal-entity.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeInvoiceMessageParty = Effect.fn(function* (party: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(party, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n contact: yield* decodeContact(val, 'cac:Contact'),\n endpointId: yield* decodeElectronicAddress(val, 'cbc:EndpointID'),\n partyIdentification: yield* decodeIdentifier(val, 'cac:PartyIdentification', 'cbc:ID'),\n partyLegalEntity: yield* decodePartyLegalEntity(val, 'cac:PartyLegalEntity'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeApplicationResponseBase } from '#/decoders/fields/decode-application-response.ts';\nimport { decodeInvoiceMessageDocumentParty } from '#/decoders/fields/decode-invoice-message-document-party.ts';\nimport { decodeInvoiceMessageParty } from '#/decoders/fields/decode-invoice-message-party.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nconst decodeStatusReasonCode = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (!Predicate.isTruthy(val) && val !== 0) return undefined;\n const value = yield* strOrUnd(val);\n if (Predicate.isString(val) || Predicate.isNumber(val)) {\n return { value };\n }\n if (!Predicate.isTruthy(value)) return undefined;\n return { listId: yield* strOrUnd(val, '@listID'), value };\n});\n\nconst decodeCondition = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getArray(doc, ...path);\n /* istanbul ignore next -- getArray never returns a falsy value */\n if (Predicate.isNullish(val)) return undefined;\n return yield* Effect.forEach(\n val,\n Effect.fn(function* (item: XmlNode) {\n return { attributeId: yield* strOrUnd(item, 'cbc:AttributeID'), description: yield* strOrUnd(item, 'cbc:Description') };\n })\n );\n});\n\nconst decodeDocumentResponseStatus = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getArray(doc, ...path);\n /* istanbul ignore next -- getArray never returns a falsy value */\n if (Predicate.isNullish(val)) return undefined;\n return yield* Effect.forEach(\n val,\n Effect.fn(function* (item: XmlNode) {\n return {\n condition: yield* decodeCondition(item, 'cac:Condition'),\n statusReason: yield* strOrUnd(item, 'cbc:StatusReason'),\n statusReasonCode: yield* decodeStatusReasonCode(item, 'cbc:StatusReasonCode'),\n };\n })\n );\n});\n\nconst decodeDocumentActualResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n effectiveDate: yield* strOrUnd(val, 'cbc:EffectiveDate'),\n responseCode: yield* strOrUnd(val, 'cbc:ResponseCode'),\n status: yield* decodeDocumentResponseStatus(val, 'cac:Status'),\n };\n});\n\nconst decodeDocumentReference = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n documentTypeCode: yield* strOrUnd(val, 'cbc:DocumentTypeCode'),\n id: yield* strOrUnd(val, 'cbc:ID'),\n issueDate: yield* strOrUnd(val, 'cbc:IssueDate'),\n };\n});\n\nconst decodeDocumentResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n documentReference: yield* decodeDocumentReference(val, 'cac:DocumentReference'),\n issuerParty: yield* decodeInvoiceMessageDocumentParty(val, 'cac:IssuerParty'),\n recipientParty: yield* decodeInvoiceMessageDocumentParty(val, 'cac:RecipientParty'),\n response: yield* decodeDocumentActualResponse(val, 'cac:Response'),\n };\n});\n\nexport const decodeInvoiceResponse = Effect.fn(function* (value: XmlNode) {\n const { base, doc } = yield* decodeApplicationResponseBase(value);\n\n return {\n ...base,\n documentResponse: yield* decodeDocumentResponse(doc, 'cac:DocumentResponse'),\n note: yield* strOrUnd(doc, 'cbc:Note'),\n profileId: yield* strOrUnd<'urn:fdc:peppol.eu:poacc:bis:invoice_response:3'>(doc, 'cbc:ProfileID'),\n receiverParty: yield* decodeInvoiceMessageParty(doc, 'cac:ReceiverParty'),\n senderParty: yield* decodeInvoiceMessageParty(doc, 'cac:SenderParty'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeLineShared } from '#/decoders/fields/decode-line-shared.ts';\nimport { decodeNodeList } from '#/decoders/fields/decode-node-list.ts';\nimport { decodeQuantity } from '#/decoders/fields/decode-quantity.ts';\n\nexport const decodeInvoiceLines = Effect.fn('decode-invoice-lines')(function* (doc: XmlNode, ...path: Array<string>) {\n return yield* decodeNodeList(\n doc,\n Effect.fn(function* (lineNode: XmlNode) {\n const shared = yield* decodeLineShared(lineNode);\n return { ...shared, invoicedQuantity: yield* decodeQuantity(lineNode, 'cbc:InvoicedQuantity') };\n }),\n ...path\n );\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeBilling } from '#/decoders/decode-billing.ts';\nimport { decodeInvoiceLines } from '#/decoders/fields/decode-invoice-lines.ts';\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeInvoice = Effect.fn('decode-invoice')(function* (value: XmlNode) {\n const root = value || {};\n const doc: XmlNode = (yield* getProp(root, 'ubl:Invoice')) ?? root;\n\n return {\n ...(yield* decodeBilling(doc)),\n dueDate: yield* strOrUnd(doc, 'cbc:DueDate'),\n invoiceLines: yield* decodeInvoiceLines(doc, 'cac:InvoiceLine'),\n invoiceTypeCode: yield* strOrUnd(doc, 'cbc:InvoiceTypeCode'),\n projectReference: yield* decodeSimpleIdentifer(doc, 'cac:ProjectReference'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolMessageLevelResponseParty } from '#/schemas/peppol-message-level-response-party-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeElectronicAddress } from '#/decoders/fields/decode-electronic-address.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeMessageLevelParty = Effect.fn(function* (\n party: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolMessageLevelResponseParty> | undefined> {\n const val = yield* getProp(party, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { endpointId: yield* decodeElectronicAddress(val, 'cbc:EndpointID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeApplicationResponseBase } from '#/decoders/fields/decode-application-response.ts';\nimport { decodeMessageLevelParty } from '#/decoders/fields/decode-message-level-party.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nconst decodeLineResponseContent = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n description: yield* strOrUnd(val, 'cbc:Description'),\n responseCode: yield* strOrUnd(val, 'cbc:ResponseCode'),\n status: { statusReasonCode: yield* strOrUnd<'BV' | 'BW' | 'SV'>(val, 'cac:Status', 'cbc:StatusReasonCode') },\n };\n});\n\nconst decodeLineResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getArray(doc, ...path);\n /* istanbul ignore next -- getArray never returns a falsy value */\n if (Predicate.isNullish(val)) return undefined;\n\n return yield* Effect.forEach(\n val,\n Effect.fn(function* (line: XmlNode) {\n return {\n lineReference: { lineId: yield* strOrUnd(line, 'cac:LineReference', 'cbc:LineID') },\n response: yield* decodeLineResponseContent(line, 'cac:Response'),\n };\n })\n );\n});\n\nconst decodeResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { description: yield* strOrUnd(val, 'cbc:Description'), responseCode: yield* strOrUnd(val, 'cbc:ResponseCode') };\n});\n\nconst decodeDocumentReference = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n documentTypeCode: yield* strOrUnd(val, 'cbc:DocumentTypeCode'),\n id: yield* strOrUnd(val, 'cbc:ID'),\n versionId: yield* strOrUnd(val, 'cbc:VersionID'),\n };\n});\n\nconst decodeDocumentResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n documentReference: yield* decodeDocumentReference(val, 'cac:DocumentReference'),\n lineResponse: yield* decodeLineResponse(val, 'cac:LineResponse'),\n response: yield* decodeResponse(val, 'cac:Response'),\n };\n});\n\nexport const decodeMessageLevelResponse = Effect.fn(function* (value: XmlNode) {\n const { base, doc } = yield* decodeApplicationResponseBase(value);\n return {\n ...base,\n documentResponse: yield* decodeDocumentResponse(doc, 'cac:DocumentResponse'),\n profileId: yield* strOrUnd<'urn:fdc:peppol.eu:poacc:bis:mlr:3'>(doc, 'cbc:ProfileID'),\n receiverParty: yield* decodeMessageLevelParty(doc, 'cac:ReceiverParty'),\n senderParty: yield* decodeMessageLevelParty(doc, 'cac:SenderParty'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\n\nexport const encodeIdentifier = Effect.fn(function* (id?: PeppolIdentifier) {\n if (Predicate.isNullish(id)) return undefined;\n if (Predicate.isNullish(id.schemeId) || id.schemeId === '') return id.id;\n return { '#text': id.id, '@schemeID': id.schemeId };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolAdditionalDocumentReference } from '#/schemas/fields/peppol-additional-document-reference-schema.ts';\n\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\n\nexport const encodeAdditionalDocumentReferences = Effect.fn(function* (refs: ReadonlyArray<PeppolAdditionalDocumentReference> | undefined) {\n if (Predicate.isNullish(refs)) return undefined;\n\n return yield* Effect.forEach(\n refs,\n Effect.fn(function* (ref: PeppolAdditionalDocumentReference) {\n return {\n 'cbc:ID': yield* encodeIdentifier(ref.id),\n 'cbc:DocumentTypeCode': ref.documentTypeCode,\n 'cbc:DocumentDescription': ref.documentDescription,\n 'cac:Attachment': yield* encodeAttachment(ref.attachment),\n };\n })\n );\n});\n\nconst encodeAttachment = Effect.fn(function* (attachment: PeppolAdditionalDocumentReference['attachment'] | undefined) {\n if (Predicate.isNullish(attachment)) return undefined;\n return {\n 'cac:ExternalReference': Predicate.isNotNullish(attachment.externalReference) ? { 'cbc:URI': attachment.externalReference.uri } : undefined,\n 'cbc:EmbeddedDocumentBinaryObject': Predicate.isNotNullish(attachment.embeddedDocumentBinaryObject)\n ? {\n '#text': attachment.embeddedDocumentBinaryObject.content,\n '@filename': attachment.embeddedDocumentBinaryObject.filename,\n '@mimeCode': attachment.embeddedDocumentBinaryObject.mimeCode,\n }\n : undefined,\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\n\nexport const encodeAmount = Effect.fn(function* (amount?: PeppolAmount) {\n if (Predicate.isNullish(amount)) return undefined;\n return { '#text': amount.value, '@currencyID': amount.currencyId };\n});\n","import { Effect, Predicate } from 'effect';\n\ntype Exact<TExpected, TActual extends TExpected> = keyof TExpected extends keyof TActual\n ? keyof TActual extends keyof TExpected\n ? TActual\n : never\n : never;\n\nexport const encodeSimpleIdentifier = Effect.fn(function* <const T extends { id: string } = { id: string }>(\n identifier: Exact<{ id: string }, T> | undefined\n) {\n if (Predicate.isNullish(identifier)) return undefined;\n\n return { 'cbc:ID': identifier.id };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\n\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\n\nexport const encodeTaxCategory = Effect.fn(function* (taxCategory: PeppolAllowanceCharge['taxCategory']) {\n if (Predicate.isNullish(taxCategory)) {\n return undefined;\n }\n return { 'cbc:ID': taxCategory.id, 'cbc:Percent': taxCategory.percent, 'cac:TaxScheme': yield* encodeSimpleIdentifier(taxCategory.taxSchemeId) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\nimport { encodeTaxCategory } from '#/decoders/fields/encode-tax-category.ts';\n\nexport const encodeAllowanceCharges = Effect.fn(function* (allowanceCharges: ReadonlyArray<PeppolAllowanceCharge> | undefined) {\n if (Predicate.isNullish(allowanceCharges)) return undefined;\n\n return yield* Effect.forEach(\n allowanceCharges,\n Effect.fn(function* (allowanceCharge: PeppolAllowanceCharge) {\n return {\n 'cbc:ChargeIndicator': allowanceCharge.chargeIndicator,\n 'cbc:AllowanceChargeReasonCode': allowanceCharge.allowanceChargeReasonCode,\n 'cbc:AllowanceChargeReason': allowanceCharge.allowanceChargeReason,\n 'cbc:MultiplierFactorNumeric': allowanceCharge.multiplierFactorNumeric,\n 'cbc:Amount': yield* encodeAmount(allowanceCharge.amount),\n 'cbc:BaseAmount': yield* encodeAmount(allowanceCharge.baseAmount),\n 'cac:TaxCategory': yield* encodeTaxCategory(allowanceCharge.taxCategory),\n };\n })\n );\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolBillingReference } from '#/schemas/fields/peppol-billing-reference-schema.ts';\n\nexport const encodeBillingReferences = Effect.fn(function* (billingReferences: ReadonlyArray<PeppolBillingReference> | undefined) {\n return billingReferences?.map(billingReference => ({\n 'cac:InvoiceDocumentReference': {\n 'cbc:ID': billingReference.invoiceDocumentReference.id,\n 'cbc:IssueDate': billingReference.invoiceDocumentReference.issueDate,\n },\n }));\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';\n\nexport const encodeInvoiceLinePeriod = Effect.fn(function* (invoicePeriod: PeppolInvoiceLinePeriod | undefined) {\n return Predicate.isNotNullish(invoicePeriod) ? { 'cbc:StartDate': invoicePeriod.startDate, 'cbc:EndDate': invoicePeriod.endDate } : undefined;\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolLineAllowanceCharge } from '#/schemas/fields/peppol-line-allowance-charge-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\n\nexport const encodeLineAllowanceCharges = Effect.fn(function* (allowanceCharges: ReadonlyArray<PeppolLineAllowanceCharge> | undefined) {\n if (Predicate.isNullish(allowanceCharges)) return undefined;\n\n return yield* Effect.forEach(\n allowanceCharges,\n Effect.fn(function* (allowanceCharge: PeppolLineAllowanceCharge) {\n return {\n 'cbc:ChargeIndicator': allowanceCharge.chargeIndicator,\n 'cbc:AllowanceChargeReasonCode': allowanceCharge.allowanceChargeReasonCode,\n 'cbc:AllowanceChargeReason': allowanceCharge.allowanceChargeReason,\n 'cbc:MultiplierFactorNumeric': allowanceCharge.multiplierFactorNumeric,\n 'cbc:Amount': yield* encodeAmount(allowanceCharge.amount),\n 'cbc:BaseAmount': yield* encodeAmount(allowanceCharge.baseAmount),\n };\n })\n );\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolLinePriceAllowanceCharge } from '#/schemas/fields/peppol-line-price-allowance-charge-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\n\nexport const encodePriceAllowanceCharges = Effect.fn(function* (allowanceCharge: PeppolLinePriceAllowanceCharge | undefined) {\n if (Predicate.isNullish(allowanceCharge)) {\n return undefined;\n }\n\n return {\n 'cbc:ChargeIndicator': allowanceCharge.chargeIndicator,\n 'cbc:Amount': yield* encodeAmount(allowanceCharge.amount),\n 'cbc:BaseAmount': yield* encodeAmount(allowanceCharge.baseAmount),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';\n\nexport const encodeQuantity = Effect.fn(function* (quantity?: PeppolQuantity) {\n if (Predicate.isNullish(quantity)) return undefined;\n return { '#text': quantity.value, '@unitCode': quantity.unitCode };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolLinePrice } from '#/schemas/fields/peppol-line-price-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\nimport { encodePriceAllowanceCharges } from '#/decoders/fields/encode-price-allowance-charges.ts';\nimport { encodeQuantity } from '#/decoders/fields/encode-quantity.ts';\n\nexport const encodeLinePrice = Effect.fn(function* (price: PeppolLinePrice | undefined) {\n if (Predicate.isNullish(price)) {\n return undefined;\n }\n return {\n 'cbc:PriceAmount': yield* encodeAmount(price.priceAmount),\n 'cbc:BaseQuantity': yield* encodeQuantity(price.baseQuantity),\n 'cac:AllowanceCharge': yield* encodePriceAllowanceCharges(price.allowanceCharge),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolDocumentLine } from '#/schemas/peppol-document-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\nimport { encodeInvoiceLinePeriod } from '#/decoders/fields/encode-invoice-line-period.ts';\nimport { encodeLineAllowanceCharges } from '#/decoders/fields/encode-line-allowance-charges.ts';\nimport { encodeLinePrice } from '#/decoders/fields/encode-line-price.ts';\nimport { encodeQuantity } from '#/decoders/fields/encode-quantity.ts';\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\nimport { encodeTaxCategory } from '#/decoders/fields/encode-tax-category.ts';\n\nexport const encodeLineShared = Effect.fn(function* (lineShared: PeppolDocumentLine) {\n return {\n 'cbc:ID': lineShared.id,\n 'cbc:Note': lineShared.note,\n 'cbc:InvoicedQuantity': 'invoicedQuantity' in lineShared ? yield* encodeQuantity(lineShared.invoicedQuantity) : undefined,\n 'cbc:CreditedQuantity': 'creditedQuantity' in lineShared ? yield* encodeQuantity(lineShared.creditedQuantity) : undefined,\n 'cbc:LineExtensionAmount': yield* encodeAmount(lineShared.lineExtensionAmount),\n 'cbc:AccountingCost': lineShared.accountingCost,\n 'cac:InvoicePeriod': yield* encodeInvoiceLinePeriod(lineShared.invoicePeriod),\n 'cac:OrderLineReference': lineShared.orderLineReference ? { 'cbc:LineID': lineShared.orderLineReference.lineId } : undefined,\n 'cac:DocumentReference': Predicate.isNullish(lineShared.documentReference)\n ? undefined\n : yield* Effect.forEach(\n lineShared.documentReference,\n Effect.fn(function* (documentReference) {\n return { 'cbc:DocumentTypeCode': documentReference.documentTypeCode, 'cbc:ID': yield* encodeIdentifier(documentReference) };\n })\n ),\n 'cac:AllowanceCharge': yield* encodeLineAllowanceCharges(lineShared.allowanceCharges),\n 'cac:Item': {\n 'cbc:Description': lineShared.item.description,\n 'cbc:Name': lineShared.item.name,\n 'cac:BuyersItemIdentification': yield* encodeSimpleIdentifier(lineShared.item.buyersItemIdentification),\n 'cac:SellersItemIdentification': yield* encodeSimpleIdentifier(lineShared.item.sellersItemIdentification),\n 'cac:StandardItemIdentification': lineShared.item.standardItemIdentification\n ? { 'cbc:ID': yield* encodeIdentifier(lineShared.item.standardItemIdentification.id) }\n : undefined,\n 'cac:OriginCountry': lineShared.item.originCountryCode\n ? { 'cbc:IdentificationCode': lineShared.item.originCountryCode.identificationCode }\n : undefined,\n 'cac:CommodityClassification': lineShared.item.commodityClassifications?.map(c => ({\n 'cbc:ItemClassificationCode': {\n '#text': c.itemClassification.id,\n '@listID': c.itemClassification.listId,\n '@listVersionID': c.itemClassification.listVersionId,\n },\n })),\n 'cac:ClassifiedTaxCategory': yield* encodeTaxCategory(lineShared.item.classifiedTaxCategory),\n 'cac:AdditionalItemProperty': lineShared.item.additionalItemProperties?.map(p => ({ 'cbc:Name': p.name, 'cbc:Value': p.value })),\n },\n 'cac:Price': yield* encodeLinePrice(lineShared.price),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolCreditNoteLine } from '#/schemas/fields/peppol-credit-note-line-schema.ts';\n\nimport { encodeLineShared } from '#/decoders/fields/encode-line-shared.ts';\n\nexport const encodeCreditNoteLines = Effect.fn(function* (creditNoteLines: ReadonlyArray<PeppolCreditNoteLine>) {\n if (creditNoteLines.length === 0) return undefined;\n\n return yield* Effect.forEach(creditNoteLines, encodeLineShared);\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAddress } from '#/schemas/fields/peppol-address-schema.ts';\n\nexport const encodeAddress = Effect.fn(function* (address?: PeppolAddress): Effect.fn.Return<XmlNode> {\n if (Predicate.isNullish(address)) return undefined;\n return {\n 'cbc:StreetName': address.streetName,\n 'cbc:AdditionalStreetName': address.additionalStreetName,\n 'cbc:CityName': address.cityName,\n 'cbc:PostalZone': address.postalZone,\n 'cbc:CountrySubentity': address.countrySubentity,\n 'cac:AddressLine': address.addressLine?.line ? { 'cbc:Line': address.addressLine.line } : undefined,\n 'cac:Country': { 'cbc:IdentificationCode': address.countryCode.identificationCode },\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolDelivery } from '#/schemas/fields/peppol-delivery-schema.ts';\n\nimport { encodeAddress } from '#/decoders/fields/encode-address.ts';\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\n\nexport const encodeDelivery = Effect.fn(function* (delivery: PeppolDelivery | undefined) {\n if (Predicate.isNullish(delivery)) return undefined;\n\n return {\n 'cbc:ActualDeliveryDate': delivery.actualDeliveryDate,\n 'cac:DeliveryLocation': yield* encodeDeliveryLocation(delivery.deliveryLocation),\n 'cac:DeliveryParty': Predicate.isTruthy(delivery.deliveryParty?.partyName.name)\n ? { 'cac:PartyName': { 'cbc:Name': delivery.deliveryParty?.partyName.name } }\n : undefined,\n };\n});\n\nconst encodeDeliveryLocation = Effect.fn(function* (location: PeppolDelivery['deliveryLocation']) {\n if (Predicate.isNullish(location)) return undefined;\n return { 'cbc:ID': yield* encodeIdentifier(location.id), 'cac:Address': yield* encodeAddress(location.address) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolInvoicePeriod } from '#/schemas/fields/peppol-invoice-period-schema.ts';\n\nexport const encodeInvoicePeriod = Effect.fn(function* (invoicePeriod: PeppolInvoicePeriod | undefined) {\n return Predicate.isNotNullish(invoicePeriod)\n ? { 'cbc:StartDate': invoicePeriod.startDate, 'cbc:EndDate': invoicePeriod.endDate, 'cbc:DescriptionCode': invoicePeriod.descriptionCode }\n : undefined;\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolLegalMonetaryTotal } from '#/schemas/fields/peppol-legal-monetary-total-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\n\nexport const encodeLegalMonetaryTotal = Effect.fn(function* (legalMonetaryTotal: PeppolLegalMonetaryTotal) {\n return {\n 'cbc:LineExtensionAmount': yield* encodeAmount(legalMonetaryTotal.lineExtensionAmount),\n 'cbc:TaxExclusiveAmount': yield* encodeAmount(legalMonetaryTotal.taxExclusiveAmount),\n 'cbc:TaxInclusiveAmount': yield* encodeAmount(legalMonetaryTotal.taxInclusiveAmount),\n 'cbc:AllowanceTotalAmount': yield* encodeAmount(legalMonetaryTotal.allowanceTotalAmount),\n 'cbc:ChargeTotalAmount': yield* encodeAmount(legalMonetaryTotal.chargeTotalAmount),\n 'cbc:PrepaidAmount': yield* encodeAmount(legalMonetaryTotal.prepaidAmount),\n 'cbc:PayableRoundingAmount': yield* encodeAmount(legalMonetaryTotal.payableRoundingAmount),\n 'cbc:PayableAmount': yield* encodeAmount(legalMonetaryTotal.payableAmount),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolOrderReference } from '#/schemas/fields/peppol-order-reference-schema.ts';\n\nexport const encodeOrderReference = Effect.fn(function* (orderReference: PeppolOrderReference | undefined) {\n if (Predicate.isNullish(orderReference)) return undefined;\n\n return { 'cbc:ID': orderReference.id, 'cbc:SalesOrderID': orderReference.salesOrderId };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\n\nexport const encodeContact = Effect.fn(function* (contact: PeppolContact | undefined) {\n if (Predicate.isNullish(contact)) return undefined;\n\n return { 'cbc:Name': contact.name, 'cbc:Telephone': contact.telephone, 'cbc:ElectronicMail': contact.electronicMail };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyTaxSchema } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\n\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\n\nexport const encodePartyTaxScheme = Effect.fn(function* (partyTaxScheme: PeppolPartyTaxSchema | undefined): Effect.fn.Return<XmlNode> {\n if (Predicate.isNullish(partyTaxScheme)) return undefined;\n\n return { 'cbc:CompanyID': partyTaxScheme.companyId, 'cac:TaxScheme': yield* encodeSimpleIdentifier(partyTaxScheme.taxSchemeId) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyTaxSchema } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\n\nimport { encodePartyTaxScheme } from '#/decoders/fields/encode-party-tax-scheme.ts';\n\nexport const encodePartiesTaxScheme = Effect.fn(function* (partiesTaxScheme: Array<PeppolPartyTaxSchema> | undefined): Effect.fn.Return<XmlNode> {\n if (Predicate.isNullish(partiesTaxScheme) || partiesTaxScheme.length === 0) return undefined;\n\n return yield* Effect.forEach(\n partiesTaxScheme,\n Effect.fn(function* (partyTaxScheme: PeppolPartyTaxSchema) {\n return yield* encodePartyTaxScheme(partyTaxScheme);\n })\n );\n});\n","import { Effect } from 'effect';\n\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\n\nexport const encodePartyLegalEntity = Effect.fn(function* (legalEntity: {\n registrationName?: string;\n companyId?: Parameters<typeof encodeIdentifier>[0];\n companyLegalForm?: string | undefined;\n}) {\n return {\n 'cbc:RegistrationName': legalEntity.registrationName,\n 'cbc:CompanyID': yield* encodeIdentifier(legalEntity.companyId),\n 'cbc:CompanyLegalForm': legalEntity.companyLegalForm,\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolPartySchema } from '#/schemas/fields/peppol-party-base-schema.ts';\n\nimport { encodeAddress } from '#/decoders/fields/encode-address.ts';\nimport { encodeContact } from '#/decoders/fields/encode-contact.ts';\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\nimport { encodePartiesTaxScheme } from '#/decoders/fields/encode-parties-tax-scheme.ts';\nimport { encodePartyLegalEntity } from '#/decoders/fields/encode-party-legal-entity.ts';\n\nexport const encodeParty = Effect.fn(function* (party?: PeppolPartySchema) {\n if (Predicate.isNullish(party)) return undefined;\n\n return {\n 'cac:Party': {\n 'cbc:EndpointID': yield* encodeIdentifier(party.endpointId),\n 'cac:PartyIdentification': yield* encodeAdditionalIdentifiers(party.partyIdentification),\n 'cac:PartyName': yield* encodePartyName(party.partyName),\n 'cac:PostalAddress': yield* encodeAddress(party.postalAddress),\n 'cac:PartyTaxScheme': yield* encodePartiesTaxScheme(party.partyTaxSchemes),\n 'cac:PartyLegalEntity': yield* encodePartyLegalEntity(party.partyLegalEntity),\n 'cac:Contact': yield* encodeContact(party.contact),\n },\n };\n});\n\nconst encodePartyName = Effect.fn(function* (partyName?: PeppolPartySchema['partyName']) {\n if (Predicate.isNullish(partyName)) return undefined;\n return { 'cbc:Name': partyName.name };\n});\n\nconst encodeAdditionalIdentifiers = Effect.fn(function* (identifiers: PeppolPartySchema['partyIdentification']) {\n if (Predicate.isNullish(identifiers)) return undefined;\n return { 'cbc:ID': yield* encodeIdentifier(identifiers?.id) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolPayeeParty } from '#/schemas/fields/peppol-payee-party-schema.ts';\n\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\n\nexport const encodePayeeParty = Effect.fn(function* (payeeParty: PeppolPayeeParty | undefined) {\n if (Predicate.isNullish(payeeParty)) return undefined;\n return {\n 'cac:PartyIdentification': yield* encodePartyIdentification(payeeParty.partyIdentification),\n 'cac:PartyName': yield* encodePartyName(payeeParty.partyName),\n 'cac:PartyLegalEntity': yield* encodePartyLegalEntity(payeeParty.partyLegalEntity),\n };\n});\n\nconst encodePartyName = Effect.fn(function* (partyName: PeppolPayeeParty['partyName']) {\n return { 'cbc:Name': partyName.name };\n});\n\nconst encodePartyLegalEntity = Effect.fn(function* (partyLegalEntity: PeppolPayeeParty['partyLegalEntity']) {\n if (Predicate.isNullish(partyLegalEntity)) return undefined;\n return { 'cbc:CompanyId': Predicate.isTruthy(partyLegalEntity?.companyId) ? yield* encodeIdentifier(partyLegalEntity?.companyId) : undefined };\n});\n\nconst encodePartyIdentification = Effect.fn(function* (partyIdentification: PeppolPayeeParty['partyIdentification']) {\n if (Predicate.isNullish(partyIdentification)) return undefined;\n return { 'cbc:ID': Predicate.isTruthy(partyIdentification.id) ? yield* encodeIdentifier(partyIdentification.id) : undefined };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolPaymentMeans } from '#/schemas/fields/peppol-payment-means-schema.ts';\n\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\n\nexport const encodePaymentMeans = Effect.fn(function* (pms: ReadonlyArray<PeppolPaymentMeans> | undefined) {\n if (Predicate.isNullish(pms)) return undefined;\n\n return yield* Effect.forEach(\n pms,\n Effect.fn(function* (pm: PeppolPaymentMeans) {\n return {\n 'cbc:PaymentMeansCode': yield* encodePaymentMeansCode(pm.paymentMeansCode),\n 'cbc:PaymentID': pm.paymentId,\n 'cbc:PaymentDueDate': pm.paymentDueDate,\n 'cac:CardAccount': Predicate.isNotNullish(pm.cardAccount)\n ? {\n 'cbc:PrimaryAccountNumberID': pm.cardAccount.primaryAccountNumberId,\n 'cbc:NetworkID': pm.cardAccount.networkId,\n 'cbc:HolderName': pm.cardAccount.holderName,\n }\n : undefined,\n 'cac:PayeeFinancialAccount': yield* encodePayeeFinancialAccount(pm.payeeFinancialAccount),\n 'cac:PaymentMandate': yield* encodePaymentMendate(pm.paymentMandate),\n };\n })\n );\n});\n\nconst encodePaymentMeansCode = Effect.fn(function* (code: PeppolPaymentMeans['paymentMeansCode'] | undefined) {\n if (Predicate.isNullish(code)) return undefined;\n return { '#text': code.code, '@name': code.name };\n});\n\nconst encodePaymentMendate = Effect.fn(function* (mendate: PeppolPaymentMeans['paymentMandate'] | undefined) {\n if (Predicate.isNullish(mendate)) return undefined;\n return { 'cbc:Id': mendate.id, 'cac:PayerFinancialAccount': yield* encodeSimpleIdentifier(mendate.payerFinancialAccountId) };\n});\n\nconst encodePayeeFinancialAccount = Effect.fn(function* (account: PeppolPaymentMeans['payeeFinancialAccount'] | undefined) {\n if (Predicate.isNullish(account)) return undefined;\n return {\n 'cbc:ID': account.id,\n 'cbc:Name': account.name,\n 'cac:FinancialInstitutionBranch': yield* encodeSimpleIdentifier(account.financialInstitutionBranch),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolPaymentTerms } from '#/schemas/fields/peppol-payment-terms-schema.ts';\n\nexport const encodePaymentTerms = Effect.fn(function* (paymentTerms: PeppolPaymentTerms | undefined) {\n if (Predicate.isNullish(paymentTerms)) return undefined;\n\n return { 'cbc:Note': paymentTerms.note };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolTaxRepresentativeParty } from '#/schemas/fields/peppol-tax-representative-schema.ts';\n\nimport { encodeAddress } from '#/decoders/fields/encode-address.ts';\nimport { encodePartyTaxScheme } from '#/decoders/fields/encode-party-tax-scheme.ts';\n\nexport const encodeTaxRepresentativeParty = Effect.fn(function* (\n taxRepresentativeParty: PeppolTaxRepresentativeParty | undefined\n): Effect.fn.Return<XmlNode> {\n if (Predicate.isNullish(taxRepresentativeParty)) {\n return undefined;\n }\n return {\n 'cac:PartyName': { 'cbc:Name': taxRepresentativeParty.name },\n 'cac:PostalAddress': yield* encodeAddress(taxRepresentativeParty.postalAddress),\n 'cac:PartyTaxScheme': yield* encodePartyTaxScheme(taxRepresentativeParty.partyTaxScheme),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolTaxSubTotal } from '#/schemas/fields/peppol-tax-subtotal-schema.ts';\nimport type { PeppolTaxTotal } from '#/schemas/fields/peppol-tax-totals-base-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\n\nexport const encodeTaxTotals = Effect.fn(function* (taxTotals: ReadonlyArray<PeppolTaxTotal>) {\n return yield* Effect.forEach(\n taxTotals,\n Effect.fn(function* (taxTotal: PeppolTaxTotal) {\n return { 'cbc:TaxAmount': yield* encodeAmount(taxTotal.taxAmount), 'cac:TaxSubtotal': yield* encodeTaxSubtotals(taxTotal.taxSubtotals) };\n })\n );\n});\n\nconst encodeTaxSubtotals = Effect.fn(function* (taxSubtotals: ReadonlyArray<PeppolTaxSubTotal> | undefined) {\n if (Predicate.isNullish(taxSubtotals)) return undefined;\n\n return yield* Effect.forEach(\n taxSubtotals,\n Effect.fn(function* (taxSubTotal: PeppolTaxSubTotal) {\n return {\n 'cbc:TaxableAmount': yield* encodeAmount(taxSubTotal.taxableAmount),\n 'cbc:TaxAmount': yield* encodeAmount(taxSubTotal.taxAmount),\n 'cac:TaxCategory': {\n 'cbc:ID': taxSubTotal.taxCategory.id,\n 'cbc:Percent': taxSubTotal.taxCategory.percent,\n 'cbc:TaxExemptionReasonCode': taxSubTotal.taxCategory.taxExemptionReasonCode,\n 'cbc:TaxExemptionReason': taxSubTotal.taxCategory.taxExemptionReason,\n 'cac:TaxScheme': yield* encodeSimpleIdentifier(taxSubTotal.taxCategory.taxSchemeId),\n },\n };\n })\n );\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolCreditNote } from '#/schemas/peppol-credit-note-schema.ts';\n\nimport { encodeAdditionalDocumentReferences } from '#/decoders/fields/encode-additional-document-references.ts';\nimport { encodeAllowanceCharges } from '#/decoders/fields/encode-allowance-charges.ts';\nimport { encodeBillingReferences } from '#/decoders/fields/encode-billing-references.ts';\nimport { encodeCreditNoteLines } from '#/decoders/fields/encode-credit-note-lines.ts';\nimport { encodeDelivery } from '#/decoders/fields/encode-delivery.ts';\nimport { encodeInvoicePeriod } from '#/decoders/fields/encode-invoice-period.ts';\nimport { encodeLegalMonetaryTotal } from '#/decoders/fields/encode-legal-monetary-total.ts';\nimport { encodeOrderReference } from '#/decoders/fields/encode-order-reference.ts';\nimport { encodeParty } from '#/decoders/fields/encode-party.ts';\nimport { encodePayeeParty } from '#/decoders/fields/encode-payee-party.ts';\nimport { encodePaymentMeans } from '#/decoders/fields/encode-payment-means.ts';\nimport { encodePaymentTerms } from '#/decoders/fields/encode-payment-terms.ts';\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\nimport { encodeTaxRepresentativeParty } from '#/decoders/fields/encode-tax-representative-party.ts';\nimport { encodeTaxTotals } from '#/decoders/fields/encode-tax-totals.ts';\n\nexport const encodeCreditNote = Effect.fn(function* (creditNote: PeppolCreditNote) {\n return {\n '?xml': { '@version': '1.0', '@encoding': 'UTF-8' },\n CreditNote: {\n '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n '@xsi:schemaLocation':\n import.meta.env['MODE'] === 'test'\n ? 'urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/maindoc/UBL-CreditNote-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonAggregateComponents-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonBasicComponents-2.4.xsd'\n : undefined,\n '@xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n '@xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n '@xmlns': 'urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2',\n 'cbc:CustomizationID': creditNote.customizationId,\n 'cbc:ProfileID': creditNote.profileId,\n 'cbc:ID': creditNote.id,\n 'cbc:IssueDate': creditNote.issueDate,\n 'cbc:CreditNoteTypeCode': creditNote.creditNoteTypeCode,\n 'cbc:Note': creditNote.note,\n 'cbc:TaxPointDate': creditNote.taxPointDate,\n 'cbc:DocumentCurrencyCode': creditNote.documentCurrencyCode,\n 'cbc:TaxCurrencyCode': creditNote.taxCurrencyCode,\n 'cbc:AccountingCost': creditNote.accountingCost,\n 'cbc:BuyerReference': creditNote.buyerReference,\n 'cac:InvoicePeriod': yield* encodeInvoicePeriod(creditNote.invoicePeriod),\n 'cac:OrderReference': yield* encodeOrderReference(creditNote.orderReference),\n 'cac:BillingReference': yield* encodeBillingReferences(creditNote.billingReferences),\n 'cac:DespatchDocumentReference': yield* encodeSimpleIdentifier(creditNote.despatchDocumentReference),\n 'cac:ReceiptDocumentReference': yield* encodeSimpleIdentifier(creditNote.receiptDocumentReference),\n 'cac:OriginatorDocumentReference': yield* encodeSimpleIdentifier(creditNote.originatorDocumentReference),\n 'cac:ContractDocumentReference': yield* encodeSimpleIdentifier(creditNote.contractDocumentReference),\n 'cac:AdditionalDocumentReference': yield* encodeAdditionalDocumentReferences(creditNote.additionalDocumentReferences),\n 'cac:AccountingSupplierParty': yield* encodeParty(creditNote.accountingSupplierParty),\n 'cac:AccountingCustomerParty': yield* encodeParty(creditNote.accountingCustomerParty),\n 'cac:PayeeParty': yield* encodePayeeParty(creditNote.payeeParty),\n 'cac:TaxRepresentativeParty': yield* encodeTaxRepresentativeParty(creditNote.taxRepresentativeParty),\n 'cac:Delivery': yield* encodeDelivery(creditNote.delivery),\n 'cac:PaymentMeans': yield* encodePaymentMeans(creditNote.paymentMeans),\n 'cac:PaymentTerms': yield* encodePaymentTerms(creditNote.paymentTerms),\n 'cac:AllowanceCharge': yield* encodeAllowanceCharges(creditNote.allowanceCharges),\n 'cac:TaxTotal': yield* encodeTaxTotals(creditNote.taxTotals),\n 'cac:LegalMonetaryTotal': yield* encodeLegalMonetaryTotal(creditNote.legalMonetaryTotal),\n 'cac:CreditNoteLine': yield* encodeCreditNoteLines(creditNote.creditNoteLines),\n },\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport type { PeppolInvoiceDocumentResponseParty, PeppolInvoiceResponseParty } from '#/schemas/peppol-invoice-response-schema.ts';\nimport type { PeppolMessageLevelResponseParty } from '#/schemas/peppol-message-level-response-party-schema.ts';\n\nimport { encodeContact } from '#/decoders/fields/encode-contact.ts';\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\nimport { encodePartyLegalEntity } from '#/decoders/fields/encode-party-legal-entity.ts';\n\ntype ResponseParty = PeppolMessageLevelResponseParty | PeppolInvoiceResponseParty | PeppolInvoiceDocumentResponseParty;\n\n/**\n * @description The response party union exposes different fields per variant; reading the optional ones through a shared view keeps the encoder branch-free.\n */\ninterface ResponsePartyFields {\n endpointId?: PeppolIdentifier | undefined;\n partyIdentification?: PeppolIdentifier | undefined;\n partyName?: { name: string } | undefined;\n partyLegalEntity?:\n | { registrationName?: string | undefined; companyId?: PeppolIdentifier | undefined; companyLegalForm?: string | undefined }\n | undefined;\n contact?: PeppolContact | undefined;\n}\n\nexport const encodeMessageParty = Effect.fn(function* (party?: ResponseParty) {\n if (Predicate.isNullish(party)) return undefined;\n const fields = party as ResponsePartyFields;\n return {\n 'cbc:EndpointID': yield* encodeIdentifier(fields.endpointId),\n 'cac:PartyIdentification': fields.partyIdentification ? { 'cbc:ID': yield* encodeIdentifier(fields.partyIdentification) } : undefined,\n 'cac:PartyName': fields.partyName ? { 'cbc:Name': fields.partyName.name } : undefined,\n 'cac:PartyLegalEntity': fields.partyLegalEntity ? yield* encodePartyLegalEntity(fields.partyLegalEntity) : undefined,\n 'cac:Contact': yield* encodeContact(fields.contact),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type {\n PeppolInvoiceResponse,\n PeppolInvoiceResponseDocumentReference,\n PeppolInvoiceResponseDocumentResponse,\n} from '#/schemas/peppol-invoice-response-schema.ts';\n\nimport { encodeMessageParty } from '#/decoders/fields/encode-message-party.ts';\n\nexport const encodeInvoiceResponse = Effect.fn(function* (invoiceResponse: PeppolInvoiceResponse) {\n return {\n '?xml': { '@version': '1.0', '@encoding': 'UTF-8' },\n ApplicationResponse: {\n '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n '@xsi:schemaLocation':\n import.meta.env['MODE'] === 'test'\n ? 'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/maindoc/UBL-ApplicationResponse-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonAggregateComponents-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonBasicComponents-2.4.xsd'\n : undefined,\n '@xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n '@xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n '@xmlns': 'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2',\n 'cbc:CustomizationID': invoiceResponse.customizationId,\n 'cbc:ProfileID': invoiceResponse.profileId,\n 'cbc:ID': invoiceResponse.id,\n 'cbc:IssueDate': invoiceResponse.issueDate,\n 'cbc:IssueTime': invoiceResponse.issueTime,\n 'cbc:Note': invoiceResponse.note,\n 'cac:SenderParty': yield* encodeMessageParty(invoiceResponse.senderParty),\n 'cac:ReceiverParty': yield* encodeMessageParty(invoiceResponse.receiverParty),\n 'cac:DocumentResponse': yield* encodeDocumentResponse(invoiceResponse.documentResponse),\n },\n };\n});\n\nconst encodeDocumentResponse = Effect.fn(function* (documentResponse: PeppolInvoiceResponseDocumentResponse) {\n if (Predicate.isNullish(documentResponse)) {\n return undefined;\n }\n return {\n 'cac:Response': {\n 'cbc:ResponseCode': documentResponse.response.responseCode,\n 'cbc:EffectiveDate': documentResponse.response.effectiveDate,\n 'cac:Status': documentResponse.response.status?.map(status => ({\n 'cbc:StatusReasonCode': Predicate.isNotNullish(status.statusReasonCode)\n ? { '#text': status.statusReasonCode.value, '@listID': status.statusReasonCode.listId }\n : undefined,\n 'cbc:StatusReason': status.statusReason,\n 'cac:Condition': status.condition?.map(condition => ({ 'cbc:AttributeID': condition.attributeId, 'cbc:Description': condition.description })),\n })),\n },\n 'cac:DocumentReference': yield* encodeDocumentReference(documentResponse.documentReference),\n 'cac:IssuerParty': yield* encodeMessageParty(documentResponse.issuerParty),\n 'cac:RecipientParty': yield* encodeMessageParty(documentResponse.recipientParty),\n };\n});\n\nconst encodeDocumentReference = Effect.fn(function* (documentReference: PeppolInvoiceResponseDocumentReference) {\n if (Predicate.isNullish(documentReference)) return undefined;\n return { 'cbc:ID': documentReference.id, 'cbc:IssueDate': documentReference.issueDate, 'cbc:DocumentTypeCode': documentReference.documentTypeCode };\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolInvoiceLine } from '#/schemas/fields/peppol-invoice-line-schema.ts';\n\nimport { encodeLineShared } from '#/decoders/fields/encode-line-shared.ts';\n\nexport const encodeInvoiceLines = Effect.fn(function* (invoiceLines: ReadonlyArray<PeppolInvoiceLine>) {\n if (invoiceLines.length === 0) return undefined;\n\n return yield* Effect.forEach(invoiceLines, encodeLineShared);\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolInvoice } from '#/schemas/peppol-invoice-schema.ts';\n\nimport { encodeAdditionalDocumentReferences } from '#/decoders/fields/encode-additional-document-references.ts';\nimport { encodeAllowanceCharges } from '#/decoders/fields/encode-allowance-charges.ts';\nimport { encodeBillingReferences } from '#/decoders/fields/encode-billing-references.ts';\nimport { encodeDelivery } from '#/decoders/fields/encode-delivery.ts';\nimport { encodeInvoiceLines } from '#/decoders/fields/encode-invoice-lines.ts';\nimport { encodeInvoicePeriod } from '#/decoders/fields/encode-invoice-period.ts';\nimport { encodeLegalMonetaryTotal } from '#/decoders/fields/encode-legal-monetary-total.ts';\nimport { encodeOrderReference } from '#/decoders/fields/encode-order-reference.ts';\nimport { encodeParty } from '#/decoders/fields/encode-party.ts';\nimport { encodePayeeParty } from '#/decoders/fields/encode-payee-party.ts';\nimport { encodePaymentMeans } from '#/decoders/fields/encode-payment-means.ts';\nimport { encodePaymentTerms } from '#/decoders/fields/encode-payment-terms.ts';\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\nimport { encodeTaxRepresentativeParty } from '#/decoders/fields/encode-tax-representative-party.ts';\nimport { encodeTaxTotals } from '#/decoders/fields/encode-tax-totals.ts';\n\nexport const encodeInvoice = Effect.fn(function* (invoice: PeppolInvoice) {\n return {\n '?xml': { '@version': '1.0', '@encoding': 'UTF-8' },\n Invoice: {\n '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n '@xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n '@xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n '@xmlns': 'urn:oasis:names:specification:ubl:schema:xsd:Invoice-2',\n 'cbc:CustomizationID': invoice.customizationId,\n 'cbc:ProfileID': invoice.profileId,\n 'cbc:ID': invoice.id,\n 'cbc:IssueDate': invoice.issueDate,\n 'cbc:DueDate': invoice.dueDate,\n 'cbc:InvoiceTypeCode': invoice.invoiceTypeCode,\n 'cbc:Note': invoice.note,\n 'cbc:TaxPointDate': invoice.taxPointDate,\n 'cbc:DocumentCurrencyCode': invoice.documentCurrencyCode,\n 'cbc:TaxCurrencyCode': invoice.taxCurrencyCode,\n 'cbc:AccountingCost': invoice.accountingCost,\n 'cbc:BuyerReference': invoice.buyerReference,\n 'cac:InvoicePeriod': yield* encodeInvoicePeriod(invoice.invoicePeriod),\n 'cac:OrderReference': yield* encodeOrderReference(invoice.orderReference),\n 'cac:BillingReference': yield* encodeBillingReferences(invoice.billingReferences),\n 'cac:DespatchDocumentReference': yield* encodeSimpleIdentifier(invoice.despatchDocumentReference),\n 'cac:ReceiptDocumentReference': yield* encodeSimpleIdentifier(invoice.receiptDocumentReference),\n 'cac:OriginatorDocumentReference': yield* encodeSimpleIdentifier(invoice.originatorDocumentReference),\n 'cac:ContractDocumentReference': yield* encodeSimpleIdentifier(invoice.contractDocumentReference),\n 'cac:AdditionalDocumentReference': yield* encodeAdditionalDocumentReferences(invoice.additionalDocumentReferences),\n 'cac:ProjectReference': yield* encodeSimpleIdentifier(invoice.projectReference),\n 'cac:AccountingSupplierParty': yield* encodeParty(invoice.accountingSupplierParty),\n 'cac:AccountingCustomerParty': yield* encodeParty(invoice.accountingCustomerParty),\n 'cac:PayeeParty': yield* encodePayeeParty(invoice.payeeParty),\n 'cac:TaxRepresentativeParty': yield* encodeTaxRepresentativeParty(invoice.taxRepresentativeParty),\n 'cac:Delivery': yield* encodeDelivery(invoice.delivery),\n 'cac:PaymentMeans': yield* encodePaymentMeans(invoice.paymentMeans),\n 'cac:PaymentTerms': yield* encodePaymentTerms(invoice.paymentTerms),\n 'cac:AllowanceCharge': yield* encodeAllowanceCharges(invoice.allowanceCharges),\n 'cac:TaxTotal': yield* encodeTaxTotals(invoice.taxTotals),\n 'cac:LegalMonetaryTotal': yield* encodeLegalMonetaryTotal(invoice.legalMonetaryTotal),\n 'cac:InvoiceLine': yield* encodeInvoiceLines(invoice.invoiceLines),\n },\n };\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolMessageLevelResponseDocumentResponse } from '#/schemas/peppol-message-level-response-document-response-schema.ts';\nimport type { PeppolMessageLevelResponse } from '#/schemas/peppol-message-level-response-schema.ts';\n\nimport { encodeMessageParty } from '#/decoders/fields/encode-message-party.ts';\n\nexport const encodeMessageLevelResponse = Effect.fn(function* (messageResponse: PeppolMessageLevelResponse) {\n return {\n '?xml': { '@version': '1.0', '@encoding': 'UTF-8' },\n ApplicationResponse: {\n '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n '@xsi:schemaLocation':\n import.meta.env['MODE'] === 'test'\n ? 'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/maindoc/UBL-ApplicationResponse-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonAggregateComponents-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonBasicComponents-2.4.xsd'\n : undefined,\n '@xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n '@xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n '@xmlns': 'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2',\n 'cbc:CustomizationID': messageResponse.customizationId,\n 'cbc:ProfileID': messageResponse.profileId,\n 'cbc:ID': messageResponse.id,\n 'cbc:IssueDate': messageResponse.issueDate,\n 'cbc:IssueTime': messageResponse.issueTime,\n 'cac:SenderParty': yield* encodeMessageParty(messageResponse.senderParty),\n 'cac:ReceiverParty': yield* encodeMessageParty(messageResponse.receiverParty),\n 'cac:DocumentResponse': yield* encodeMessageLevelDocumentResponse(messageResponse.documentResponse),\n },\n };\n});\n\nconst encodeMessageLevelDocumentResponse = Effect.fn(function* (documentResponse: PeppolMessageLevelResponseDocumentResponse) {\n return {\n 'cac:Response': { 'cbc:ResponseCode': documentResponse.response.responseCode, 'cbc:Description': documentResponse.response.description },\n 'cac:DocumentReference': {\n 'cbc:ID': documentResponse.documentReference.id,\n 'cbc:DocumentTypeCode': documentResponse.documentReference.documentTypeCode,\n 'cbc:VersionID': documentResponse.documentReference.versionId,\n },\n 'cac:LineResponse': documentResponse.lineResponse.map(line => ({\n 'cac:LineReference': { 'cbc:LineID': line.lineReference.lineId },\n 'cac:Response': {\n 'cbc:ResponseCode': line.response.responseCode,\n 'cbc:Description': line.response.description,\n 'cac:Status': { 'cbc:StatusReasonCode': line.response.status.statusReasonCode },\n },\n })),\n };\n});\n","import type { SchemaAST } from 'effect';\n\nimport { Effect, Predicate, Schema, SchemaGetter, SchemaIssue } from 'effect';\nimport XMLBuilder from 'fast-xml-builder';\nimport { XMLParser } from 'fast-xml-parser';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolCreditNoteLine } from '#/schemas/fields/peppol-credit-note-line-schema.ts';\nimport type { PeppolInvoiceLine } from '#/schemas/fields/peppol-invoice-line-schema.ts';\n\nimport { INVOICE_RESPONSE_PROFILE_ID } from '#/constants/invoice-response-profile-id.ts';\nimport { MESSAGE_LEVEL_RESPONSE_PROFILE_ID } from '#/constants/message-level-response-profile-id.ts';\nimport { decodeCreditNote } from '#/decoders/decode-credit-note.ts';\nimport { decodeInvoiceResponse } from '#/decoders/decode-invoice-response.ts';\nimport { decodeInvoice } from '#/decoders/decode-invoice.ts';\nimport { decodeMessageLevelResponse } from '#/decoders/decode-message-level-response.ts';\nimport { encodeCreditNote } from '#/decoders/encode-credit-note.ts';\nimport { encodeInvoiceResponse } from '#/decoders/encode-invoice-response.ts';\nimport { encodeInvoice } from '#/decoders/encode-invoice.ts';\nimport { encodeMessageLevelResponse } from '#/decoders/encode-message-level-response.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\nimport { PeppolCreditNote } from '#/schemas/peppol-credit-note-schema.ts';\nimport { PeppolInvoiceResponse } from '#/schemas/peppol-invoice-response-schema.ts';\nimport { PeppolInvoice } from '#/schemas/peppol-invoice-schema.ts';\nimport { PeppolMessageLevelResponse } from '#/schemas/peppol-message-level-response-schema.ts';\nimport { builderOptions } from '#/xml/builder-options.ts';\nimport { parserOptions } from '#/xml/parser-options.ts';\n\n/**\n * @description Object representation of a PEPPOL document, before the member schemas normalise it (dates stay strings, enums stay loose). This is the shape\n * produced by the legacy `#/decoders/*` functions and consumed by their `#/decoders/encode-*` counterparts.\n */\nconst peppolDocumentObjectSchema = Schema.Union([PeppolInvoice, PeppolCreditNote, PeppolMessageLevelResponse, PeppolInvoiceResponse], {\n mode: 'oneOf',\n});\n\ntype PeppolDocumentObject = typeof peppolDocumentObjectSchema.Encoded;\n\nconst parseXml = (value: string): XmlNode => new XMLParser({ ...parserOptions, removeNSPrefix: true }).parse(value);\n\nexport const isPeppolInvoice = Schema.is(PeppolInvoice);\nexport const isPeppolCreditNote = Schema.is(PeppolCreditNote);\nexport const isPeppolMessageLevelResponse = Schema.is(PeppolMessageLevelResponse);\nexport const isPeppolInvoiceResponse = Schema.is(PeppolInvoiceResponse);\n\n/**\n * @description XML string -> loose document object. Dispatches on the root element; `ApplicationResponse` is further split by its `cbc:ProfileID`.\n */\nconst decodeDocumentXml = Effect.fn('decode-peppol-document-xml')(function* (value: string, options: SchemaAST.ParseOptions) {\n const parsed = parseXml(value);\n\n if (Predicate.isNotNullish(parsed.Invoice)) {\n return yield* decodeInvoice(parsed);\n }\n if (Predicate.isNotNullish(parsed.CreditNote)) {\n return yield* decodeCreditNote(parsed);\n }\n if (Predicate.isNotNullish(parsed.ApplicationResponse)) {\n const profileId = yield* strOrUnd(parsed.ApplicationResponse, 'cbc:ProfileID');\n if (profileId === MESSAGE_LEVEL_RESPONSE_PROFILE_ID) {\n return yield* decodeMessageLevelResponse(parsed);\n }\n if (profileId === INVOICE_RESPONSE_PROFILE_ID) {\n return yield* decodeInvoiceResponse(parsed);\n }\n }\n\n const rootNodes = Object.keys(parsed);\n return yield* Effect.fail(new SchemaIssue.InvalidValue({ message: `Unsupported document type: ${rootNodes.join(',')}` }, value, options));\n});\n\n/**\n * @description Loose document object -> XML string. Mirrors {@link decodeDocumentXml} by dispatching on the decoded discriminant.\n */\nconst encodeDocumentXml = Effect.fn('encode-peppol-document-xml')(function* (value: PeppolDocumentObject, options: SchemaAST.ParseOptions) {\n let content: unknown;\n\n if (isPeppolInvoice(value) || Predicate.hasProperty(value, 'invoiceLines')) {\n content = yield* encodeInvoice(value as never);\n } else if (isPeppolCreditNote(value) || Predicate.hasProperty(value, 'creditNoteLines')) {\n content = yield* encodeCreditNote(value as never);\n } else if (isPeppolMessageLevelResponse(value) || value.profileId === MESSAGE_LEVEL_RESPONSE_PROFILE_ID) {\n content = yield* encodeMessageLevelResponse(value as never);\n } else if (isPeppolInvoiceResponse(value) || value.profileId === INVOICE_RESPONSE_PROFILE_ID) {\n content = yield* encodeInvoiceResponse(value as never);\n } else {\n const rootNodes = Object.keys(value);\n console.log(value, isPeppolInvoice(value), isPeppolCreditNote(value), isPeppolMessageLevelResponse(value), isPeppolInvoiceResponse(value));\n return yield* Effect.fail(\n new SchemaIssue.InvalidValue({ message: `Unsupported document type: ${value.profileId}\\n${rootNodes.join(',')}` }, value, options)\n );\n }\n\n return new XMLBuilder(builderOptions).build(content) as string;\n});\n\n/**\n * @description Union of every supported PEPPOL business document. Members discriminate cleanly: invoice vs credit note via `invoiceLines`/`creditNoteLines`,\n * message-level vs invoice response via the `profileId` literal.\n */\nexport const peppolDocumentSchema = peppolDocumentObjectSchema.pipe(\n Schema.encodeTo(Schema.String, {\n encode: SchemaGetter.transformEffect((value, options) => encodeDocumentXml(value, options)),\n decode: SchemaGetter.transformEffect((value, options) => decodeDocumentXml(value, options)),\n })\n);\n\nexport type PeppolDocumentEncoded = Schema.Codec.Encoded<typeof peppolDocumentSchema>;\nexport type PeppolDocumentDecoded = Schema.Schema.Type<typeof peppolDocumentSchema>;\n\n/**\n * @description This defines the types of documents that are sent/received through the peppol network.\n */\nexport type PeppolDocument = PeppolInvoice | PeppolCreditNote;\n/**\n * @description This defines the types of message that are sent/received through the peppol network.\n */\nexport type PeppolMessage = PeppolMessageLevelResponse | PeppolInvoiceResponse;\nexport type PeppolAllDocuments = PeppolDocument | PeppolMessage;\nexport type PeppolDocumentLine = PeppolInvoiceLine | PeppolCreditNoteLine;\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PeppolReferenceId extends opaque<PeppolReferenceId>()(Schema.Struct({ id: Schema.String })) {}\n\nexport const peppolReferenceSchema = Schema.Union([PeppolReferenceId, Schema.Undefined]);\n\nexport type PeppolReferenceSchema = typeof peppolReferenceSchema.Type;\n","import type { PeppolQuantityUnitCode } from '#/schemas/values/quantity-unit-codes-schema.ts';\n\nexport type BaseIntlUnit =\n | 'acre'\n | 'bit'\n | 'byte'\n | 'celsius'\n | 'centimeter'\n | 'degree'\n | 'fahrenheit'\n | 'fluid-ounce'\n | 'foot'\n | 'gallon'\n | 'gigabit'\n | 'gigabyte'\n | 'gram'\n | 'hectare'\n | 'inch'\n | 'kilobit'\n | 'kilobyte'\n | 'kilogram'\n | 'kilometer'\n | 'liter'\n | 'megabit'\n | 'megabyte'\n | 'meter'\n | 'mile'\n | 'mile-scandinavian'\n | 'milliliter'\n | 'millimeter'\n | 'ounce'\n | 'percent'\n | 'petabyte'\n | 'pound'\n | 'stone'\n | 'terabit'\n | 'terabyte'\n | 'yard';\nexport type TimeIntlUnit = 'nanosecond' | 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';\n\nexport type IntlUnit = BaseIntlUnit | TimeIntlUnit | `${BaseIntlUnit}-per-${TimeIntlUnit}`;\n\nexport const quantityToIntlUnitMap = {\n CMT: 'centimeter',\n MTR: 'meter',\n MMT: 'millimeter',\n KMT: 'kilometer',\n INH: 'inch',\n FOT: 'foot',\n YRD: 'yard',\n SMI: 'mile',\n F49: 'mile-scandinavian',\n ACR: 'acre',\n H18: 'hectare',\n LTR: 'liter',\n MLT: 'milliliter',\n GLI: 'gallon',\n GLL: 'gallon',\n OZA: 'fluid-ounce',\n GRM: 'gram',\n KGM: 'kilogram',\n LBR: 'pound',\n ONZ: 'ounce',\n STI: 'stone',\n STN: 'stone',\n SEC: 'second',\n MIN: 'minute',\n HUR: 'hour',\n DAY: 'day',\n WEE: 'week',\n MON: 'month',\n ANN: 'year',\n B98: 'microsecond',\n C26: 'millisecond',\n C47: 'nanosecond',\n CEL: 'celsius',\n FAH: 'fahrenheit',\n A99: 'bit',\n AD: 'byte',\n '2P': 'kilobyte',\n '4L': 'megabyte',\n E34: 'gigabyte',\n E35: 'terabyte',\n E36: 'petabyte',\n B68: 'gigabit',\n B80: 'gigabit',\n C21: 'kilobit',\n B10: 'bit',\n DD: 'degree',\n P1: 'percent',\n KMH: 'kilometer-per-hour',\n MTS: 'meter-per-second',\n HM: 'mile-per-hour',\n KNT: 'kilometer-per-hour',\n '2X': 'meter-per-minute',\n '40': 'milliliter-per-second',\n '41': 'milliliter-per-minute',\n '4G': 'milliliter',\n '4H': 'micrometer' as IntlUnit,\n A44: 'liter',\n A45: 'meter',\n A11: 'meter',\n A12: 'kilometer',\n B57: 'kilometer',\n '4U': 'pound-per-hour',\n '4M': 'gram-per-hour' as IntlUnit,\n} satisfies Partial<Record<string, IntlUnit>>;\n\nexport function quantityUnitCodeToIntlUnit(code: PeppolQuantityUnitCode | (string & {})): IntlUnit | undefined {\n return (quantityToIntlUnitMap as Record<string, IntlUnit>)[code];\n}\n","import { quantityToIntlUnitMap } from '#/schemas/utils/quantity-unit-code-to-intl-unit.ts';\nimport { quantityUnitCodes } from '#/values/quantity-unit-codes.generated';\n\nexport function formatQuantityWithUnit(\n value: number,\n code: string,\n locale: string = 'en-US',\n unitDisplay: 'short' | 'narrow' | 'long' = 'short'\n): string {\n const intlUnit = quantityToIntlUnitMap[code as keyof typeof quantityToIntlUnitMap];\n\n if (intlUnit) {\n try {\n return new Intl.NumberFormat(locale, { style: 'unit', unit: intlUnit, unitDisplay }).format(value);\n } catch {}\n }\n\n const formattedNumber = new Intl.NumberFormat(locale).format(value);\n const unitName = (quantityUnitCodes as Record<string, string>)[code];\n return `${formattedNumber} ${unitName}`;\n}\n","import type { PeppolCreditNoteTypeCode } from '#/schemas/values/credit-note-type-code-schema.ts';\n\nimport { creditNoteTypeCodes } from '#/values/credit-notes-type-codes.generated';\n\nexport function getCreditNoteTypeCodeDescription(code: PeppolCreditNoteTypeCode): string {\n return (creditNoteTypeCodes as Record<string, string>)[code] as string;\n}\n","import type { PeppolInvoiceTypeCode } from '#/schemas/values/invoice-type-code-schema.ts';\n\nimport { invoiceTypeCodes } from '#/values/invoice-type-codes.generated';\n\nexport function getInvoiceTypeCodeDescription(code: PeppolInvoiceTypeCode): string {\n return (invoiceTypeCodes as Record<string, string>)[code] as string;\n}\n","import type { PeppolCreditNoteTypeCode } from '#/schemas/values/credit-note-type-code-schema.ts';\n\nimport { creditNoteTypeCodes } from '#/values/credit-notes-type-codes.generated';\n\nexport function isValidCreditNoteTypeCode(code: string): code is PeppolCreditNoteTypeCode {\n return code in creditNoteTypeCodes;\n}\n","import type { PeppolInvoiceTypeCode } from '#/schemas/values/invoice-type-code-schema.ts';\n\nimport { invoiceTypeCodes } from '#/values/invoice-type-codes.generated';\n\nexport function isValidInvoiceTypeCode(code: string): code is PeppolInvoiceTypeCode {\n return code in invoiceTypeCodes;\n}\n","import type { PeppolProcesses } from '#/schemas/values/peppol-process-schema.ts';\n\nimport { processesList } from '#/values/processes.generated';\n\nexport function isValidProcess(code: string): code is PeppolProcesses {\n return processesList.includes(code);\n}\n","import { Schema } from 'effect';\n\nimport { isValidMod97_0208 } from '#/peppol-validations/is-valid-mod97-0208.ts';\n\n/**\n * @description Belgian VAT number (`BE` + 10 digits with mod 97-0208 check digits). Effect port of the `BE` member of `vatRegexSchema`: prefix, exact length,\n * pattern, and mod 97 check-digit validation share the original `'Invalid belgian vat number'` message.\n */\nconst belgianVat = Schema.String.check(\n Schema.isStartsWith('BE'),\n Schema.isLengthBetween(12, 12),\n Schema.isPattern(/^BE[01]\\d{9}$/),\n Schema.makeFilter((value: string) => isValidMod97_0208(value.substring(2)).success)\n).annotate({ message: 'Invalid belgian vat number' });\n\n/**\n * @description EU VAT identification number (one member per member-state prefix/pattern). Effect port of `vatRegexSchema` (`z.union([...])` of\n * `z.string().check(...)` members): each member keeps its original prefix + pattern checks as `Schema.String.check` filters.\n */\nexport const peppolVatRegexSchema = Schema.Union([\n belgianVat,\n Schema.String.check(Schema.isStartsWith('AT'), Schema.isPattern(/^ATU\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('BG'), Schema.isPattern(/^BG\\d{9,10}$/)),\n Schema.String.check(Schema.isStartsWith('CY'), Schema.isPattern(/^CY\\d{8}L$/)),\n Schema.String.check(Schema.isStartsWith('CZ'), Schema.isPattern(/^CZ\\d{8,10}$/)),\n Schema.String.check(Schema.isStartsWith('DE'), Schema.isPattern(/^DE\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('DK'), Schema.isPattern(/^DK\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('EE'), Schema.isPattern(/^EE\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('EL'), Schema.isPattern(/^EL\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('GR'), Schema.isPattern(/^GR\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('ES'), Schema.isPattern(/^ES[0-9A-Z]\\d{7}[0-9A-Z]$/)),\n Schema.String.check(Schema.isStartsWith('FI'), Schema.isPattern(/^FI\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('FR'), Schema.isPattern(/^FR[0-9A-Z]{2}\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('GB'), Schema.isPattern(/^GB(\\d{9}(\\d{3})?|[A-Z]{2}\\d{3})$/)),\n Schema.String.check(Schema.isStartsWith('HU'), Schema.isPattern(/^HU\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('IE'), Schema.isPattern(/^IE\\dS\\d{5}L$/)),\n Schema.String.check(Schema.isStartsWith('IT'), Schema.isPattern(/^IT\\d{11}$/)),\n Schema.String.check(Schema.isStartsWith('LT'), Schema.isPattern(/^LT(\\d{9}|\\d{12})$/)),\n Schema.String.check(Schema.isStartsWith('LU'), Schema.isPattern(/^LU\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('LV'), Schema.isPattern(/^LV\\d{11}$/)),\n Schema.String.check(Schema.isStartsWith('MT'), Schema.isPattern(/^MT\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('NL'), Schema.isPattern(/^NL\\d{9}B\\d{2}$/)),\n Schema.String.check(Schema.isStartsWith('PL'), Schema.isPattern(/^PL\\d{10}$/)),\n Schema.String.check(Schema.isStartsWith('PT'), Schema.isPattern(/^PT\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('RO'), Schema.isPattern(/^RO\\d{2,10}$/)),\n Schema.String.check(Schema.isStartsWith('SE'), Schema.isPattern(/^SE\\d{12}$/)),\n Schema.String.check(Schema.isStartsWith('SI'), Schema.isPattern(/^SI\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('SK'), Schema.isPattern(/^SK\\d{10}$/)),\n]);\n","import { Predicate, Schema } from 'effect';\n\nimport type { DocumentTypesTableKeys } from '#/values/document-type.generated';\n\nimport { documentTypesTable, documentTypesTableKeys } from '#/values/document-type.generated';\n\n/**\n * @description One of the PEPPOL document type schemes (e.g. `busdox-docid-qns`, `peppol-doctype-wildcard`).\n *\n * @see {@link documentTypesTable}\n */\nexport type PeppolDocumentType = typeof peppolDocumentTypeSchema.Type;\n\n/**\n * @description Validates a full PEPPOL document type identifier (`<scheme>::<value>`) against the known document type table. The scheme prefix must be a known key\n * and the full identifier must exist in the document type table (checked via a filter).\n *\n * @param error - The custom error message to use when validation fails. Defaults to `'invalid peppol document type'`.\n *\n * @returns An Effect schema that matches a valid `scheme::value` document type identifier.\n *\n * @see {@link documentTypesTable}\n */\nexport const peppolDocumentTypeSchema = Schema.TemplateLiteral([Schema.Literals(documentTypesTableKeys), Schema.Literal('::'), Schema.String]).check(\n Schema.makeFilter((val: string) => {\n const [prefix, ...suffix] = val.split('::');\n if (Predicate.isNullish(prefix) || !documentTypesTableKeys.includes(prefix as never)) return false;\n const info = documentTypesTable[prefix as DocumentTypesTableKeys];\n return Predicate.isNotNullish(info) && info.some(v => v === suffix.join('::'));\n })\n);\n","import { Schema } from 'effect';\n\nimport { documentTypesScheme } from '#/values/document-type.generated';\n\n/**\n * @description Validates a PEPPOL document type scheme (e.g. `busdox-docid-qns`, `peppol-doctype-wildcard`).\n *\n * @param error - The error message to use when validation fails. Defaults to `'invalid Peppol document type scheme'`.\n *\n * @returns An Effect schema that accepts only valid document type schemes.\n *\n * @see {@link documentTypesScheme}\n */\nexport const documentTypeSchemesSchema = Schema.Literals(documentTypesScheme as [string, ...Array<string>]);\n","import { Record, Schema } from 'effect';\n\nimport { documentTypesTable } from '#/values/document-type.generated';\n\nconst values = Record.values(documentTypesTable).flat();\n\n/**\n * @description Validates the value part of a PEPPOL document type identifier (the portion after the scheme prefix) against the known document type table.\n *\n * @param error - The error message to use when validation fails. Defaults to `'invalid Peppol document type value'`.\n *\n * @returns An Effect schema that accepts only valid document type values.\n *\n * @see {@link documentTypesTable}\n */\nexport const documentTypeValuesSchema = Schema.String.check(Schema.makeFilter((val: string) => values.includes(val as never)));\n","import { Schema } from 'effect';\n\nimport { invoiceStatusCodesKeys } from '#/values/invoice-status-codes.generated';\n\n/**\n * @description An invoice status code as defined by the PEPPOL subset of UNCL 4343 (T111).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4343-T111/\n */\nexport type PeppolInvoiceStatusCodes = typeof invoiceStatusCodeSchema.Type;\n\n/**\n * @description Validates an invoice status code against the PEPPOL subset of UNCL 4343 (T111).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid invoice status codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4343-T111/\n */\nexport const invoiceStatusCodeSchema = Schema.Literals(invoiceStatusCodesKeys).pipe(Schema.brand('PeppolInvoiceStatusCodes'));\n","import { Schema } from 'effect';\n\nimport { participantIdentifierSchemesKeys } from '#/values/participant-identifier-schemes.generated';\n\n/**\n * @description A PEPPOL participant identifier scheme, identifying the scheme of a participant identifier (e.g. EAS codes).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/\n */\nexport type PeppolParticipantIdentifierCode = typeof participantIdentifierCodeSchema.Type;\n\n/**\n * @description Validates a PEPPOL participant identifier scheme against the participant identifier schemes list.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid participant identifier schemes.\n */\nexport const participantIdentifierCodeSchema = Schema.Literals(participantIdentifierSchemesKeys).pipe(\n Schema.brand('PeppolParticipantIdentifierCode')\n);\n","import { Schema } from 'effect';\n\nimport type { ProcessesKeys } from '#/values/processes.generated';\n\nimport { processes, processesKeys } from '#/values/processes.generated';\n\n/**\n * @description A PEPPOL business process identifier key as defined by the processes codelist.\n *\n * @see {@link processes}\n */\nexport type PeppolProcesses = typeof peppolProcessSchema.Encoded;\n\n/**\n * @description Validates a full PEPPOL business process identifier (`<scheme>::<value>`) against the known processes.\n *\n * @param error - The custom error message to use when validation fails. Defaults to `'invalid peppol process identifier'`.\n *\n * @returns An Effect schema that matches a valid `scheme::value` process identifier.\n *\n * @see {@link processes}\n */\nexport const peppolProcessSchema = Schema.TemplateLiteral([Schema.Literals(processesKeys), Schema.Literal('::'), Schema.String]).check(\n Schema.makeFilter((val: string) => {\n const [prefix, suffix] = val.split('::');\n if (prefix === undefined || suffix === undefined) return false;\n const info = processes[prefix as ProcessesKeys];\n return info !== undefined && info.some(v => v === suffix);\n })\n);\n","import { Schema } from 'effect';\n\nimport type { PeppolDocumentType } from '#/schemas/values/peppol-document-type-schema.ts';\n\nimport { peppolProcessSchema } from '#/schemas/values/peppol-process-schema.ts';\nimport { documentTypesProcessIds } from '#/values/document-type.generated';\n\n/**\n * @description Validates a business process identifier (`<scheme>::<value>`) against the processes allowed for a given document type.\n *\n * @param documentType - The PEPPOL document type scheme whose allowed processes should be used.\n * @param error - The custom error message to use when validation fails. Defaults to `'invalid process type for document type'`.\n *\n * @returns An Effect schema that matches only processes allowed for the given document type.\n *\n * @see {@link peppolProcessSchema}\n * @see {@link documentTypesProcessIds}\n */\nexport function processFromDocumentTypeSchema(documentType: PeppolDocumentType, error = 'invalid process type for document type') {\n const allowed = documentTypesProcessIds[documentType as keyof typeof documentTypesProcessIds];\n if (allowed === undefined) {\n return peppolProcessSchema;\n }\n const values = allowed.map(p => `${p.scheme}::${p.value}`);\n return Schema.String.check(Schema.makeFilter((val: string) => values.includes(val as never))).annotate({ message: error });\n}\n","import { Schema } from 'effect';\n\nimport { vatexCodesKeys } from '#/values/vatex-codes.generated';\n\n/**\n * @description A VAT exemption reason code as defined by the CEF VATEX codelist.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/vatex/\n */\nexport type PeppolVatexCode = typeof vatexCodeSchema.Type;\n\n/**\n * @description Validates a VAT exemption reason code against the CEF VATEX codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid VAT exemption reason codes.\n *\n * @validations\n * - BR-CL-22: VAT exemption reason code MUST be a valid CEF VATEX code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/vatex/\n */\nexport const vatexCodeSchema = Schema.Literals(vatexCodesKeys).pipe(Schema.brand('PeppolVatexCode'));\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["PeppolTaxSchemeId","PeppolPartyName","PeppolPartyLegalEntity","PeppolPartyIdentification","decodeTaxCategory","decodeTaxCategory","decodePartyLegalEntity","decodePartyLegalEntity","decodePartyName","decodeTaxCategory","decodePartyLegalEntity","decodeDocumentReference","decodeDocumentResponse","encodePartyLegalEntity","encodePartyName","encodePartyLegalEntity","encodePartyLegalEntity"],"sources":["../src/schemas/fields/default-customization-id.ts","../src/schemas/fields/default-profile-id.ts","../src/schemas/utils/peppol-base-64-schema.ts","../src/schemas/values/mime-codes-schema.ts","../src/schemas/fields/peppol-binary-object-schema.ts","../src/schemas/fields/peppol-identifier-schema.ts","../src/schemas/values/additional-document-reference-code-schema.ts","../src/schemas/fields/peppol-additional-document-reference-schema.ts","../src/schemas/values/currency-code-schema.ts","../src/schemas/fields/peppol-amount-schema.ts","../src/schemas/fields/peppol-line-price-allowance-charge-schema.ts","../src/schemas/values/allowance-charge-reason-code-schema.ts","../src/schemas/values/charge-reason-code-schema.ts","../src/schemas/fields/peppol-line-allowance-charge-schema.ts","../src/schemas/values/duty-tax-fee-category-schema.ts","../src/schemas/fields/peppol-tax-category-schema.ts","../src/schemas/fields/peppol-allowance-charge-schema.ts","../src/schemas/fields/peppol-billing-reference-schema.ts","../src/schemas/values/icd-codes-schema.ts","../src/schemas/values/peppol-country-code-schema.ts","../src/schemas/fields/peppol-address-schema.ts","../src/schemas/fields/peppol-delivery-schema.ts","../src/schemas/fields/peppol-invoice-line-period-schema.ts","../src/schemas/values/vat-date-code-schema.ts","../src/schemas/fields/peppol-invoice-period-schema.ts","../src/schemas/fields/peppol-legal-monetary-total-schema.ts","../src/schemas/fields/peppol-order-reference-schema.ts","../src/schemas/fields/peppol-contact-schema.ts","../src/schemas/fields/peppol-party-legal-entity-schema.ts","../src/schemas/fields/peppol-party-tax-scheme-schema.ts","../src/schemas/values/electronic-codes-schema.ts","../src/schemas/fields/peppol-party-base-schema.ts","../src/schemas/fields/peppol-payee-party-schema.ts","../src/schemas/values/payment-means-code-schema.ts","../src/schemas/fields/peppol-payment-means-schema.ts","../src/schemas/fields/peppol-payment-terms-schema.ts","../src/schemas/fields/peppol-tax-representative-schema.ts","../src/schemas/fields/peppol-tax-subtotal-category-schema.ts","../src/schemas/fields/peppol-tax-subtotal-schema.ts","../src/schemas/fields/peppol-tax-totals-base-schema.ts","../src/schemas/peppol-billing-base-schema.ts","../src/schemas/values/item-classification-codes-schema.ts","../src/schemas/fields/peppol-item-classification-schema.ts","../src/schemas/fields/peppol-line-item-schema.ts","../src/schemas/values/quantity-unit-codes-schema.ts","../src/schemas/fields/peppol-quantity-schema.ts","../src/schemas/fields/peppol-line-price-schema.ts","../src/schemas/fields/peppol-base-line-schema.ts","../src/schemas/fields/peppol-invoice-line-schema.ts","../src/schemas/values/invoice-type-code-schema.ts","../src/schemas/peppol-invoice-schema.ts","../src/schemas/fields/peppol-credit-note-line-schema.ts","../src/schemas/values/credit-note-type-code-schema.ts","../src/schemas/peppol-credit-note-schema.ts","../src/schemas/peppol-message-level-response-party-schema.ts","../src/schemas/values/peppol-document-type-code-schema.ts","../src/schemas/peppol-document-response-document-reference-schema.ts","../src/schemas/values/application-response-type-code-schema.ts","../src/schemas/peppol-document-response-document-schema.ts","../src/schemas/peppol-document-response-line-response-content-schema.ts","../src/schemas/peppol-document-response-line-response-schema.ts","../src/schemas/peppol-message-level-response-document-response-schema.ts","../src/schemas/utils/format-xsd-time.ts","../src/schemas/utils/peppol-xsd-time-schema.ts","../src/schemas/peppol-message-level-response-schema.ts","../src/schemas/values/op-status-action-schema.ts","../src/schemas/values/op-status-reason-schema.ts","../src/schemas/peppol-invoice-response-status-reason-code-schema.ts","../src/schemas/peppol-invoice-response-document-actual-response-status-schema.ts","../src/schemas/peppol-invoice-response-document-actual-response-schema.ts","../src/schemas/peppol-invoice-response-schema.ts","../src/helpers/get-prop.ts","../src/helpers/str-or-und.ts","../src/decoders/fields/decode-identifier.ts","../src/helpers/get-array.ts","../src/decoders/fields/decode-additional-document-references.ts","../src/decoders/fields/decode-amount.ts","../src/helpers/bool.ts","../src/helpers/num-or-und.ts","../src/decoders/fields/decode-base-allowance-charge.ts","../src/decoders/fields/decode-node-list.ts","../src/decoders/fields/decode-simple-identifier.ts","../src/decoders/fields/decode-tax-category.ts","../src/decoders/fields/decode-allowance-charges.ts","../src/decoders/fields/decode-billing-references.ts","../src/decoders/fields/decode-address.ts","../src/decoders/fields/decode-delivery.ts","../src/decoders/fields/decode-invoice-period.ts","../src/decoders/fields/decode-legal-monetary-total.ts","../src/decoders/fields/decode-order-reference.ts","../src/decoders/fields/decode-contact.ts","../src/decoders/fields/decode-electronic-address.ts","../src/decoders/fields/decode-party-tax-scheme.ts","../src/decoders/fields/decode-parties-tax-scheme.ts","../src/decoders/fields/decode-party-legal-entity.ts","../src/decoders/fields/decode-party.ts","../src/decoders/fields/decode-payee-party.ts","../src/decoders/fields/decode-payment-means.ts","../src/decoders/fields/decode-payment-terms.ts","../src/decoders/fields/decode-tax-representative-party.ts","../src/decoders/fields/decode-tax-totals.ts","../src/decoders/decode-billing.ts","../src/decoders/fields/decode-invoice-line-period.ts","../src/decoders/fields/decode-line-allowance-charges.ts","../src/decoders/fields/decode-price-allowance-charge.ts","../src/decoders/fields/decode-quantity.ts","../src/decoders/fields/decode-line-price.ts","../src/decoders/fields/decode-line-shared.ts","../src/decoders/fields/decode-credit-note-lines.ts","../src/decoders/decode-credit-note.ts","../src/decoders/fields/decode-application-response.ts","../src/decoders/fields/decode-invoice-message-document-party.ts","../src/decoders/fields/decode-invoice-message-party.ts","../src/decoders/decode-invoice-response.ts","../src/decoders/fields/decode-invoice-lines.ts","../src/decoders/decode-invoice.ts","../src/decoders/fields/decode-message-level-party.ts","../src/decoders/decode-message-level-response.ts","../src/decoders/fields/encode-identifier.ts","../src/decoders/fields/encode-additional-document-references.ts","../src/decoders/fields/encode-amount.ts","../src/decoders/fields/encode-simple-identifier.ts","../src/decoders/fields/encode-tax-category.ts","../src/decoders/fields/encode-allowance-charges.ts","../src/decoders/fields/encode-billing-references.ts","../src/decoders/fields/encode-invoice-line-period.ts","../src/decoders/fields/encode-line-allowance-charges.ts","../src/decoders/fields/encode-price-allowance-charges.ts","../src/decoders/fields/encode-quantity.ts","../src/decoders/fields/encode-line-price.ts","../src/decoders/fields/encode-line-shared.ts","../src/decoders/fields/encode-credit-note-lines.ts","../src/decoders/fields/encode-address.ts","../src/decoders/fields/encode-delivery.ts","../src/decoders/fields/encode-invoice-period.ts","../src/decoders/fields/encode-legal-monetary-total.ts","../src/decoders/fields/encode-order-reference.ts","../src/decoders/fields/encode-contact.ts","../src/decoders/fields/encode-party-tax-scheme.ts","../src/decoders/fields/encode-parties-tax-scheme.ts","../src/decoders/fields/encode-party-legal-entity.ts","../src/decoders/fields/encode-party.ts","../src/decoders/fields/encode-payee-party.ts","../src/decoders/fields/encode-payment-means.ts","../src/decoders/fields/encode-payment-terms.ts","../src/decoders/fields/encode-tax-representative-party.ts","../src/decoders/fields/encode-tax-totals.ts","../src/decoders/encode-credit-note.ts","../src/decoders/fields/encode-message-party.ts","../src/decoders/encode-invoice-response.ts","../src/decoders/fields/encode-invoice-lines.ts","../src/decoders/encode-invoice.ts","../src/decoders/encode-message-level-response.ts","../src/schemas/peppol-document-schema.ts","../src/schemas/fields/peppol-reference-schema.ts","../src/schemas/utils/quantity-unit-code-to-intl-unit.ts","../src/schemas/utils/format-quantity-with-unit.ts","../src/schemas/utils/get-credit-note-type-code-description.ts","../src/schemas/utils/get-invoice-type-code-description.ts","../src/schemas/utils/is-valid-credit-note-type-code.ts","../src/schemas/utils/is-valid-invoice-type-code.ts","../src/schemas/utils/is-valid-process.ts","../src/schemas/utils/peppol-vat-regex-schema.ts","../src/schemas/values/peppol-document-type-schema.ts","../src/schemas/values/document-type-schemes-schema.ts","../src/schemas/values/document-type-values-schema.ts","../src/schemas/values/invoice-status-code-schema.ts","../src/schemas/values/participant-identifier-code-schema.ts","../src/schemas/values/peppol-process-schema.ts","../src/schemas/values/process-from-document-type-schema.ts","../src/schemas/values/vatex-code-schema.ts"],"sourcesContent":["export const DEFAULT_CUSTOMIZATION_ID = 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0' as const;\n","export const DEFAULT_PROFILE_ID = 'urn:fdc:peppol.eu:2017:poacc:billing:01:1.0' as const;\n","import { Schema } from 'effect';\n\n// RFC 4648 §4 — Base 64 Encoding\n//\n// Alphabet: A-Z a-z 0-9 + / (pad: =)\n// Encoding quanta: 4 characters represent 3 bytes.\n// Padding rules (only at the very end):\n// • 0 pad chars → last quantum is xxxx (input length % 3 === 0)\n// • 1 pad char → last quantum is xxx= (input length % 3 === 2)\n// • 2 pad chars → last quantum is xx== (input length % 3 === 1)\n//\n// §3.1: CRLF / LF line endings are treated as non-alphabet characters\n// and stripped before validation (as in PEM / MIME / XML).\n// §3.3: Implementations MUST reject data with non-alphabet characters\n// (other than the allowed line endings stripped above).\n//\n// The regex below encodes all three quantum variants in a single pass:\n// ([A-Za-z0-9+/]{4})* — zero or more full quanta (no padding)\n// followed by one of:\n// [A-Za-z0-9+/]{2}== — 2-pad quantum (1 remaining input byte)\n// [A-Za-z0-9+/]{3}= — 1-pad quantum (2 remaining input bytes)\n// (empty) — no trailing partial quantum\nconst BASE64_RE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/;\n\n/**\n * @description RFC 4648 base64 string (PEM / MIME / XML line endings tolerated). Effect port of `base64Schema` (`z.string().check(z.refine(...))`): strips CRLF /\n * LF line endings before testing the quantum regex.\n */\nexport const peppolBase64Schema = Schema.String.check(Schema.makeFilter((val: string) => BASE64_RE.test(val.replace(/\\r?\\n/g, '')))).annotate({\n message: 'Invalid base64',\n});\n\nexport type Base64 = typeof peppolBase64Schema.Type;\n","import { Schema } from 'effect';\n\nimport { mimeCodesKeys } from '#/values/mime-codes.generated';\n\n/**\n * @description A MIME media type code (e.g. `application/pdf`) as used for attached documents.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/MimeCode/\n */\nexport type PeppolMimeCode = typeof mimeCodesSchema.Type;\n\n/**\n * @description Validates a MIME media type against the PEPPOL MIME code list.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid MIME types.\n *\n * @validations\n * - PEPPOL-EN16931-CL001: Attachment (MIME) type MUST come from the allowed list.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/MimeCode/\n */\nexport const mimeCodesSchema = Schema.Literals(mimeCodesKeys)\n .pipe(Schema.brand('PeppolMimeCode'))\n .annotate({ documentation: 'PEPPOL-EN16931-CL001: Mime code must be according to subset of IANA code list.' });\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolBase64Schema } from '#/schemas/utils/peppol-base-64-schema.ts';\nimport { mimeCodesSchema } from '#/schemas/values/mime-codes-schema.ts';\n\n// RFC 4648 §5 — Base64url Encoding: URL/file-safe alphabet (A-Z a-z 0-9 - _), optional `=` padding.\n// Effect port of `z.base64url()`: keeps the value as a plain string and only validates the shape.\nconst base64UrlSchema = Schema.String.check(Schema.isPattern(/^[A-Za-z0-9\\-_]+={0,2}$/)).annotate({ message: 'Invalid base64url' });\n\n/**\n * @summary Binary object for attachments\n *\n * @name cbc:EmbeddedDocumentBinaryObject (+ @mimeCode, @filename)\n */\nexport class PeppolBinaryObject extends opaque<PeppolBinaryObject>()(\n Schema.Struct({\n /**\n * @description An attached document embedded as binary object (Base64) or sent together with the invoice.\n *\n * @example\n * aHR0cHM6Ly90ZXN0LXZlZmEuZGlmaS5uby9wZXBwb2xiaXMvcG9hY2MvYmlsbGluZy8zLjAvYmlzLw==\n *\n * @summary Attached document\n *\n * @name `#text` (Base64 content)\n */\n content: Schema.Union([peppolBase64Schema, base64UrlSchema]),\n /**\n * @description The mime code of the attached document.\n *\n * @example\n * text / csv;\n *\n * @summary Attached document Mime code\n *\n * @name `@mimeCode`\n */\n mimeCode: mimeCodesSchema,\n /**\n * @description The file name of the attached document.\n *\n * @example\n * Hours - spent.csv;\n *\n * @summary Attached document Filename\n *\n * @name `@filename`\n */\n filename: Schema.String,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary Identifier with optional scheme\n *\n * @name `cbc:ID (+ optional @schemeID)`\n */\nexport class PeppolIdentifier extends opaque<PeppolIdentifier>()(\n Schema.Struct({\n /**\n * @name cbc:ID\n */\n id: Schema.String,\n /**\n * @name `@schemeID`\n */\n schemeId: Schema.optional(Schema.String),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { additionalDocumentReferenceCodesKeys } from '#/values/additional-document-reference-codes.generated';\n\n/**\n * @description Additional document reference.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1153/\n * @see {@link additionalDocumentReferenceCodesKeys}\n */\nexport type PeppolAdditionalDocumentReferenceCode = typeof additionalDocumentReferenceCodeSchema.Type;\n\n/**\n * @description Validates an additional document reference code against the PEPPOL subset of UNCL 1153 (reference qualifiers).\n *\n * @param error - The custom error message to use when validation fails. Defaults to the generic message.\n *\n * @returns An Effect schema that accepts only valid additional document reference codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1153/\n * @see {@link additionalDocumentReferenceCodesKeys}\n */\nexport const additionalDocumentReferenceCodeSchema = Schema.Literals(additionalDocumentReferenceCodesKeys).pipe(\n Schema.brand('PeppolAdditionalDocumentReferenceCode')\n);\n","import { Schema } from 'effect';\n\nimport { PeppolBinaryObject } from '#/schemas/fields/peppol-binary-object-schema.ts';\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { additionalDocumentReferenceCodeSchema } from '#/schemas/values/additional-document-reference-code-schema.ts';\n\nclass PeppolAttachmentExternalReference extends opaque<PeppolAttachmentExternalReference>()(\n Schema.Struct({\n /**\n * @description The URL (Uniform Resource Locator) that identifies where the external document is located. A means of locating the resource, including its\n * primary access mechanism, e.g. http:// or ftp://.\n *\n * @example\n * `http://www.example.com/index.html`;\n *\n * @summary External document location\n *\n * @name `cbc:URI`\n */\n uri: Schema.String,\n })\n) {}\n\nclass PeppolAttachment extends opaque<PeppolAttachment>()(\n Schema.Struct({\n /**\n * @description An attached document embedded as binary object (Base64) or sent together with the invoice.\n *\n * @example\n * ```base64\n * aHR0cHM6Ly90ZXN0LXZlZmEuZGlmaS5uby9wZXBwb2xiaXMvcG9hY2MvYmlsbGluZy8zLjAvYmlzLw==\n * ```;\n *\n * @summary Attached document\n *\n * @name `cbc:EmbeddedDocumentBinaryObject`\n */\n embeddedDocumentBinaryObject: Schema.optional(PeppolBinaryObject),\n /**\n * @summary EXTERNAL REFERENCE\n *\n * @name `cac:ExternalReference`\n */\n externalReference: Schema.optional(PeppolAttachmentExternalReference),\n })\n) {}\n\nclass PeppolId extends opaque<PeppolId>()(\n Schema.Struct({\n /**\n * @description An identifier for an object on which the invoice is based (with DocumentTypeCode=130), given by the Seller, the identifier for the supporting\n * document or the project reference identifier (DocumentTypeCode=50).\n *\n * @summary Invoiced object identifier, Supporting document reference or project reference\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Invoiced object identifier.\n *\n * @summary Scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(additionalDocumentReferenceCodeSchema),\n })\n) {}\n\n/**\n * @description A group of business terms providing information about additional supporting documents substantiating the claims made in the Invoice. The additional\n * supporting documents can be used for both referencing a document number which is expected to be known by the receiver, an external document\n * (referenced by a URL) or as an embedded document, Base64 encoded (such as a time report).\n *\n * @summary ADDITIONAL SUPPORTING DOCUMENTS\n *\n * @name `cac:AdditionalDocumentReference`\n */\nexport class PeppolAdditionalDocumentReference extends opaque<PeppolAdditionalDocumentReference>()(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description An identifier for an object on which the invoice is based (with DocumentTypeCode=130), given by the Seller, the identifier for the supporting\n * document or the project reference identifier (DocumentTypeCode=50).\n *\n * @summary Invoiced object identifier, Supporting document reference or project reference\n *\n * @name `cbc:ID`\n */\n id: PeppolId,\n /**\n * @remarks\n * Code \"130\" MUST be used to indicate an invoice object reference and code \"50\" for project reference. Element is not used for other\n * additional documents.\n *\n * @default 130\n *\n * @summary Document type code\n *\n * @name `cbc:DocumentTypeCode`\n */\n documentTypeCode: Schema.optional(Schema.String),\n /**\n * @description A description of the supporting document, such as timesheet, usage report, etc.\n *\n * @example\n * Time list\n *\n * @summary Supporting document description\n *\n * @name `cbc:DocumentDescription`\n */\n documentDescription: Schema.optional(Schema.String),\n /**\n * @summary Attachment\n *\n * @name `cac:Attachment`\n */\n attachment: Schema.optional(PeppolAttachment),\n })\n )\n) {}\n","/**\n * @description Currency codes as defined by ISO 4217.\n *\n * @see https://www.iso.org/iso-4217-currency-codes.html\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/\n */\n\nimport { Schema } from 'effect';\n\nimport { currencyCodesKeys } from '#/values/currency-code.generated';\n\n/**\n * @description An ISO 4217 currency code as defined by the PEPPOL subset.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/\n */\nexport type PeppolCurrencyCode = Schema.Schema.Type<typeof currencyCodeSchema>;\n/**\n * @description An ISO 4217 currency code as defined by the PEPPOL subset.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/\n */\nexport type PeppolCurrencyCodeEncoded = Schema.Codec.Encoded<typeof currencyCodeSchema>;\n\n/**\n * @description Validates an ISO 4217 currency code against the PEPPOL codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid currency codes.\n *\n * @validations\n * - PEPPOL-EN16931-CL007: Currency codes MUST be valid ISO 4217 codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO4217/\n */\nexport const currencyCodeSchema = Schema.Literals(currencyCodesKeys).pipe(Schema.brand('PeppolCurrencyCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { currencyCodeSchema } from '#/schemas/values/currency-code-schema.ts';\n\n/**\n * @summary Monetary amount with mandatory currency\n *\n * @name cbc:* (+ @currencyID)\n */\nexport class PeppolAmount extends opaque<PeppolAmount>()(\n Schema.Struct({\n /**\n * @name \\@currencyID\n */\n currencyId: currencyCodeSchema,\n /**\n * @name #text (value)\n */\n value: Schema.Finite,\n })\n) {}\nexport interface PeppolAmountEncoded extends Schema.Codec.Encoded<typeof PeppolAmount> {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PriceAllowanceCharge extends opaque<PriceAllowanceCharge>()(\n Schema.Struct({\n /**\n * @example\n * 200;\n *\n * @name cbc:Amount (+ @currencyID)\n */\n amount: PeppolAmount,\n /**\n * @example\n * 1000;\n *\n * @name cbc:BaseAmount (+ @currencyID)\n */\n baseAmount: Schema.optional(PeppolAmount),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value false\n */\n chargeIndicator: Schema.Boolean,\n })\n) {}\n\nexport class PeppolLinePriceAllowanceCharge extends opaque<PeppolLinePriceAllowanceCharge>()(\n PriceAllowanceCharge.pipe(\n Schema.fieldsAssign({\n chargeIndicator: Schema.Literal(false).annotate({\n message: \"PEPPOL-EN16931-R044: Charge on price level is NOT allowed. Only value 'false' allowed.\",\n }),\n })\n )\n) {}\n\nexport { PriceAllowanceCharge };\n","import { Schema } from 'effect';\n\nimport { allowanceChargeReasonCodesKeys } from '#/values/allowance-charge-reason-codes.generated';\n\n/**\n * @description An allowance or charge reason code as defined by the PEPPOL subset of UNCL 5189.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5189/\n */\nexport type PeppolAllowanceChargeReasonCode = typeof allowanceChargeReasonCodeSchema.Type;\n\n/**\n * @description Validates an allowance or charge reason code against the PEPPOL subset of UNCL 5189 (D.16B).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid allowance/charge reason codes.\n *\n * @validations\n * - PEPPOL-EN16931-CL002: Document allowance reason code MUST be according to the subset of UNCL 5189 D.16B.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5189/\n */\nexport const allowanceChargeReasonCodeSchema = Schema.Literals(allowanceChargeReasonCodesKeys)\n .pipe(Schema.brand('PeppolAllowanceChargeReasonCode'))\n .annotate({ documentation: 'PEPPOL-EN16931-CL002: Reason code MUST be according to subset of UNCL 5189 D.16B.' });\n","import { Schema } from 'effect';\n\nimport { chargeReasonCodesKeys } from '#/values/charge-reason-codes.generated';\n\n/**\n * @description A charge reason code as defined by the PEPPOL subset of UNCL 7161.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL7161/\n */\nexport type PeppolChargeReasonCode = typeof chargeReasonCodeSchema.Type;\n\n/**\n * @description Validates a charge reason code against the PEPPOL subset of UNCL 7161 (D.16B).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid charge reason codes.\n *\n * @validations\n * - PEPPOL-EN16931-CL003: Charge reason code MUST be according to UNCL 7161 D.16B.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL7161/\n */\nexport const chargeReasonCodeSchema = Schema.Literals(chargeReasonCodesKeys)\n .pipe(Schema.brand('PeppolChargeReasonCode'))\n .annotate({ documentation: 'PEPPOL-EN16931-CL003: Reason code MUST be according to UNCL 7161 D.16B.' });\n","import { Schema } from 'effect';\n\nimport { PriceAllowanceCharge } from '#/schemas/fields/peppol-line-price-allowance-charge-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { allowanceChargeReasonCodeSchema } from '#/schemas/values/allowance-charge-reason-code-schema.ts';\nimport { chargeReasonCodeSchema } from '#/schemas/values/charge-reason-code-schema.ts';\n\nexport class BaseLineAllowanceCharge extends opaque<BaseLineAllowanceCharge>()(\n Schema.Struct({\n ...PriceAllowanceCharge.fields /**\n * @example\n * Discount;\n *\n * @name cbc:AllowanceChargeReason\n */,\n allowanceChargeReason: Schema.optional(Schema.String),\n /**\n * @example\n * 20;\n *\n * @name cbc:MultiplierFactorNumeric\n */\n multiplierFactorNumeric: Schema.optional(Schema.Finite),\n })\n) {}\n\nexport class PeppolLineAllowance extends opaque<PeppolLineAllowance>()(\n Schema.Struct({\n ...BaseLineAllowanceCharge.fields,\n /**\n * @name cbc:AllowanceChargeReasonCode\n */\n allowanceChargeReasonCode: Schema.optional(allowanceChargeReasonCodeSchema),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value `false`\n */\n chargeIndicator: Schema.Literal(false).annotate({\n message: \"PEPPOL-EN16931-R043: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'\",\n }),\n })\n) {}\n\nexport class PeppolLineCharge extends opaque<PeppolLineCharge>()(\n Schema.Struct({\n ...BaseLineAllowanceCharge.fields,\n /**\n * @name cbc:AllowanceChargeReasonCode\n */\n allowanceChargeReasonCode: Schema.optional(chargeReasonCodeSchema),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value `true`\n */\n chargeIndicator: Schema.Literal(true).annotate({\n message: \"PEPPOL-EN16931-R043: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'\",\n }),\n })\n) {}\n\nexport const peppolLineAllowanceChargeSchema = Schema.Union([PeppolLineAllowance, PeppolLineCharge]).annotate({\n message: 'unable to decode line allowance charge',\n});\n\nexport type PeppolLineAllowanceCharge = typeof peppolLineAllowanceChargeSchema.Type;\nexport type PeppolLineAllowanceChargeEncoded = typeof peppolLineAllowanceChargeSchema.Encoded;\n","import { Schema } from 'effect';\n\nimport { dutyTaxFeeCategoriesKeys } from '#/values/duty-tax-fee-categories.generated';\n\n/**\n * @description A duty, tax or fee category code as defined by the PEPPOL subset of UNCL 5305 (VAT category code).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/\n */\nexport type PeppolDutyTaxFeeCategoryCode = typeof peppolDutyTaxFeeCategorySchema.Type;\nexport type PeppolDutyTaxFeeCategoryCodeEncoded = typeof peppolDutyTaxFeeCategorySchema.Encoded;\n\n/**\n * @description Validates a duty, tax or fee category code against the PEPPOL subset of UNCL 5305 (VAT category code).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid duty/tax/fee category codes.\n *\n * @validations\n * - BR-CL-17 / BR-CL-18: VAT category code MUST be a valid UNCL 5305 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL5305/\n */\nexport const peppolDutyTaxFeeCategorySchema = Schema.Literals(dutyTaxFeeCategoriesKeys).pipe(Schema.brand('PeppolDutyTaxFeeCategoryCode'));\n","import { Effect, Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolDutyTaxFeeCategorySchema } from '#/schemas/values/duty-tax-fee-category-schema.ts';\n\nexport class PeppolTaxSchemeId extends opaque<PeppolTaxSchemeId>()(\n Schema.Struct({\n /**\n * @name `cbc:ID`\n */\n id: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed('VAT'))),\n })\n) {}\n\n/**\n * @description A group of business terms providing information about the VAT applicable for the goods and services invoiced on the Invoice line.\n *\n * @summary LINE VAT INFORMATION\n *\n * @name `cac:TaxCategory`\n */\nexport class PeppolTaxCategory extends opaque<PeppolTaxCategory>()(\n Schema.Struct({\n /**\n * @description The VAT category code for the invoiced item.\n *\n * @summary Invoiced item VAT category code\n *\n * @name `cbc:ID`\n */\n id: peppolDutyTaxFeeCategorySchema,\n /**\n * @description The VAT rate, represented as percentage that applies to the invoiced item.\n *\n * @summary Invoiced item VAT rate\n *\n * @name `cbc:Percent`\n */\n percent: Schema.optional(Schema.Finite),\n /**\n * @default VAT\n *\n * @name `cac:TaxScheme`\n */\n taxSchemeId: PeppolTaxSchemeId,\n })\n) {}\n","import { Effect, Schema } from 'effect';\n\nimport { BaseLineAllowanceCharge } from '#/schemas/fields/peppol-line-allowance-charge-schema.ts';\nimport { PeppolTaxCategory } from '#/schemas/fields/peppol-tax-category-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { allowanceChargeReasonCodeSchema } from '#/schemas/values/allowance-charge-reason-code-schema.ts';\nimport { chargeReasonCodeSchema } from '#/schemas/values/charge-reason-code-schema.ts';\nimport { peppolDutyTaxFeeCategorySchema } from '#/schemas/values/duty-tax-fee-category-schema.ts';\n\nexport class PeppolTaxCategoryTaxSchemeId extends opaque<PeppolTaxCategoryTaxSchemeId>()(\n Schema.Struct({\n /**\n * @description Mandatory element. Use \"VAT\"\n *\n * @name `cbc:ID`\n */\n id: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed('VAT'))),\n })\n) {}\n\nexport class BaseAllowanceCharge extends opaque<BaseAllowanceCharge>()(\n Schema.Struct({\n ...BaseLineAllowanceCharge.fields,\n /**\n * @summary TAX CATEGORY\n *\n * @name cac:TaxCategory\n */\n taxCategory: Schema.optional(\n PeppolTaxCategory.pipe(\n Schema.fieldsAssign({\n /**\n * @description A coded identification of what VAT category applies to the document level allowance or charge.\n *\n * @summary Document level allowance or charge VAT category code\n *\n * @name `cbc:ID`\n */\n id: peppolDutyTaxFeeCategorySchema,\n /**\n * @description The VAT rate, represented as percentage that applies to the document level allowance or charge.\n *\n * @summary Document level allowance or charge VAT rate\n *\n * @name `cbc:Percent`\n */\n percent: Schema.optional(Schema.Finite),\n /**\n * @default VAT\n *\n * @name `cac:TaxScheme`\n */\n taxSchemeId: PeppolTaxCategoryTaxSchemeId,\n })\n )\n ),\n })\n) {}\n\nexport class PeppolAllowance extends opaque<PeppolAllowance>()(\n Schema.Struct({\n ...BaseAllowanceCharge.fields,\n /**\n * @name cbc:AllowanceChargeReasonCode\n */\n allowanceChargeReasonCode: Schema.optional(allowanceChargeReasonCodeSchema),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value `false`\n */\n chargeIndicator: Schema.Literal(false).annotate({\n message: \"PEPPOL-EN16931-R043: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'\",\n }),\n })\n) {}\n\nexport class PeppolCharge extends opaque<PeppolCharge>()(\n Schema.Struct({\n ...BaseAllowanceCharge.fields,\n /**\n * @name cbc:AllowanceChargeReasonCode\n */\n allowanceChargeReasonCode: Schema.optional(chargeReasonCodeSchema),\n /**\n * @name cbc:ChargeIndicator\n *\n * @value `true`\n */\n chargeIndicator: Schema.Literal(true).annotate({\n message: \"PEPPOL-EN16931-R043: Allowance/charge ChargeIndicator value MUST equal 'true' or 'false'\",\n }),\n })\n) {}\n\n/**\n * @summary Allowance/Charge\n *\n * @name cac:AllowanceCharge\n */\nexport const peppolAllowanceChargeSchema = Schema.Union([PeppolAllowance, PeppolCharge]).annotate({ message: 'unable to decode allowance charge' });\n\nexport type PeppolAllowanceCharge = Schema.Schema.Type<typeof peppolAllowanceChargeSchema>;\nexport type PeppolAllowanceChargeEncoded = Schema.Codec.Encoded<typeof peppolAllowanceChargeSchema>;\n","import { Schema } from 'effect';\n\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PeppolInvoiceDocumentReference extends opaque<PeppolInvoiceDocumentReference>()(\n Schema.Struct({\n /**\n * @description The identification of an Invoice that was previously sent by the seller.\n *\n * @example\n * `inv123`;\n *\n * @summary Preceding invoice number\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description The date when the preceding invoice was issued. Shall be provided in case the preceding invoice identifier is not unique.\n *\n * @example\n * `2017-09-15`;\n *\n * @summary Preceding invoice issue date\n *\n * @format `YYYY-MM-DD`\n *\n * @name `cbc:IssueDate`\n */\n issueDate: Schema.optional(PeppolIsoDateString),\n })\n) {}\n\n/**\n * @summary PRECEDING INVOICE REFERENCE (0..n)\n *\n * @name cac:BillingReference\n */\nexport class PeppolBillingReference extends opaque<PeppolBillingReference>()(\n Schema.Struct({\n /**\n * @example\n * inv123;\n *\n * @summary INVOICE DOCUMENT REFERENCE\n *\n * @name `cac:InvoiceDocumentReference`\n */\n invoiceDocumentReference: PeppolInvoiceDocumentReference,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { icdCodesKeys } from '#/values/icd-codes.generated';\n\n/**\n * @description An ISO 6523 ICD (International Code Designator) code identifying an identifier scheme.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ICD/\n */\nexport type PeppolIcdCode = typeof icdCodesSchema.Type;\n\n/**\n * @description Validates an ISO 6523 ICD code against the PEPPOL codelist.\n *\n * @param error - The custom error message to use when validation fails. Defaults to `'Invalid ICD code provided'`.\n *\n * @returns An Effect schema that accepts only valid ICD codes.\n *\n * @validations\n * - BR-CL-10 / BR-CL-11 / BR-CL-21: Identifier scheme MUST be a valid ISO 6523 ICD code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ICD/\n */\nexport const icdCodesSchema = Schema.Literals(icdCodesKeys).pipe(Schema.brand('PeppolIcdCode'));\n","/**\n * @description ISO 3166-1 alpha-2 country codes with additional entries These codes identify countries and territories worldwide.\n *\n * @module effect/values/country-code\n *\n * @see https://www.iso.org/iso-3166-country-codes.html\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO3166/\n */\n\nimport { Schema } from 'effect';\n\nimport { countryCodesKeys } from '#/values/country-code.generated';\n\n/**\n * @description An ISO 3166-1 alpha-2 country code as defined by the PEPPOL subset.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO3166/\n */\nexport type PeppolCountryCode = typeof peppolCountryCodeSchema.Type;\n\n/**\n * @description Validates a two character ISO 3166-1 alpha-2 country code against the PEPPOL codelist. All codes in the codelist are exactly 2 characters, so the\n * literals union implies the length check.\n *\n * @validations\n * - BR-CL-14 / BR-CL-15: Country code MUST be a valid ISO 3166-1 alpha-2 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/ISO3166/\n */\nexport const peppolCountryCodeSchema = Schema.Literals(countryCodesKeys).pipe(Schema.brand('PeppolCountryCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolCountryCodeSchema } from '#/schemas/values/peppol-country-code-schema.ts';\n\nclass PeppolAddressLine extends opaque<PeppolAddressLine>()(\n Schema.Struct({\n /**\n * @description An additional address line in an address that can be used to give further details supplementing the main line.\n *\n * @summary Address line 3\n *\n * @name `cbc:Line`\n */\n line: Schema.String,\n })\n) {}\n\nclass PeppolCountryCode extends opaque<PeppolCountryCode>()(\n Schema.Struct({\n /**\n * @description A code that identifies the country.\n *\n * @example\n * GB;\n *\n * @summary Country code\n *\n * @name `cbc:IdentificationCode`\n */\n identificationCode: peppolCountryCodeSchema,\n })\n) {}\n\n/**\n * @summary Postal address\n *\n * @name `cac:PostalAddress`\n */\nexport class PeppolAddress extends opaque<PeppolAddress>()(\n Schema.Struct({\n /**\n * @description The main address line in an address.\n *\n * @example\n * Main Street 1\n *\n * @summary Address line 1\n *\n * @name `cbc:StreetName`\n */\n streetName: Schema.optional(Schema.String),\n /**\n * @description An additional address line in an address that can be used to give further details supplementing the main line.\n *\n * @example\n * Po Box 351\n *\n * @summary Address line 2\n *\n * @name `cbc:AdditionalStreetName`\n */\n additionalStreetName: Schema.optional(Schema.String),\n /**\n * @description The common name of the city, town or village, where the address is located.\n *\n * @example\n * London;\n *\n * @summary Seller city\n *\n * @name `cbc:CityName`\n */\n cityName: Schema.optional(Schema.String),\n /**\n * @description The identifier for an addressable group of properties according to the relevant postal service.\n *\n * @example\n * W1G 8LZ\n *\n * @summary post code\n *\n * @name `cbc:PostalZone`\n */\n postalZone: Schema.optional(Schema.String),\n /**\n * @description The subdivision of a country.\n *\n * @example\n * Region A\n *\n * @summary Seller country subdivision\n *\n * @name `cbc:CountrySubentity`\n */\n countrySubentity: Schema.optional(Schema.String),\n /**\n * @example\n * GB;\n *\n * @name `cac:Country`\n */\n countryCode: PeppolCountryCode,\n /**\n * @example\n * Building 23\n *\n * @name `cac:AddressLine`\n */\n addressLine: Schema.optional(PeppolAddressLine),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { icdCodesSchema } from '#/schemas/values/icd-codes-schema.ts';\n\nimport { PeppolAddress } from './peppol-address-schema.ts';\nimport { PeppolIdentifier } from './peppol-identifier-schema.ts';\n\nclass PeppolDeliveryPartyPartyName extends opaque<PeppolDeliveryPartyPartyName>()(\n Schema.Struct({\n /**\n * @description The name of the party to which the goods and services are delivered.\n *\n * @summary Deliver to party name\n *\n * @name `cbc:Name`\n */\n name: Schema.String,\n })\n) {}\n\nclass PeppolDeliveryParty extends opaque<PeppolDeliveryParty>()(\n Schema.Struct({\n /**\n * @summary PARTY NAME\n *\n * @name `cac:PartyName`\n */\n partyName: PeppolDeliveryPartyPartyName,\n })\n) {}\n\nclass PeppolDeliveryLocation extends opaque<PeppolDeliveryLocation>()(\n Schema.Struct({\n /**\n * @description An identifier for the location at which the goods and services are delivered.\n *\n * @example\n * `83745498753497`;\n *\n * @summary Deliver to location identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.optional(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description An identifier for the location at which the goods and services are delivered.\n *\n * @example\n * `83745498753497`;\n *\n * @summary Deliver to location identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Deliver to location identifier.\n *\n * @summary Deliver to location identifier identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(icdCodesSchema),\n })\n )\n ),\n /**\n * @description A groupd of business terms providing infomation about the address to which goods and services invoiced were or are delivered.\n *\n * @summary Deliver to address\n *\n * @name `cac:Address`\n */\n address: Schema.optional(PeppolAddress),\n })\n) {}\n\nexport class PeppolDelivery extends opaque<PeppolDelivery>()(\n Schema.Struct({\n /**\n * @description Th edate on which the supply of goods or services was made or completed.\n *\n * @example\n * 2017 - 12 - 01;\n *\n * @summary Actual delivery date\n *\n * @format `YYYY-MM-DD`\n *\n * @name cbc:ActualDeliveryDate\n */\n actualDeliveryDate: Schema.optional(PeppolIsoDateString),\n /**\n * @name `cac:DeliveryLocation`\n */\n deliveryLocation: Schema.optional(PeppolDeliveryLocation),\n\n /**\n * @summary Delivery party\n *\n * @name `cac:DeliveryParty`\n */\n deliveryParty: Schema.optional(PeppolDeliveryParty),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolInvoiceLinePeriod extends opaque<PeppolInvoiceLinePeriod>()(\n Schema.Struct({\n /**\n * @description The date when the Invoice period for this Invoice line ends. Format =\"YYYY-MM-DD\"\n *\n * @example\n * `2017-10-31`;\n *\n * @summary Invoice line period end date\n *\n * @format \"YYYY-MM-DD\"\n *\n * @name `cbc:EndDate`\n */\n endDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description The date when the Invoice period for this Invoice line starts.\n *\n * @example\n * `2017-10-01`;\n *\n * @summary Invoice line period start date\n *\n * @format \"YYYY-MM-DD\"\n *\n * @name `cbc:StartDate`\n */\n startDate: Schema.optional(PeppolIsoDateString),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport type { VatDateCodesKeys } from '#/values/vat-dates.generated';\n\nimport { vatDateCodesKeys } from '#/values/vat-dates.generated';\n\nexport type PeppolVatDateCode = VatDateCodesKeys;\n\n/**\n * @validations\n * - PEPPOL-EN16931-CL006: Invoice period description code must be according to UNCL 2005 D.16B.\n */\nexport const vatDateCodeSchema = Schema.Literals(vatDateCodesKeys);\n","import { Schema } from 'effect';\n\nimport { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { vatDateCodeSchema } from '#/schemas/values/vat-date-code-schema.ts';\n\n/**\n * @description A group of business terms providing information on the invoice period. Also called delivery period. If the group is used, the invoiceing period\n * start date and/or end date must be used.\n *\n * @summary DELIVERY OR INVOICE PERIOD\n *\n * @name `cac:InvoicePeriod`\n */\nexport class PeppolInvoicePeriod extends opaque<PeppolInvoicePeriod>()(\n PeppolInvoiceLinePeriod.pipe(\n Schema.fieldsAssign({\n /**\n * @description The code of the date when the VAT becomes acccountable for the Seller and the Buyer.\n *\n * @example\n * `35`;\n *\n * @summary Value added tax point date code\n *\n * @name `cbc:DescriptionCode`\n */\n descriptionCode: Schema.optional(vatDateCodeSchema),\n })\n )\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @description A group of business terms providing the monetary totals for the Invoice.\n *\n * @summary Document totals\n *\n * @name cac:LegalMonetaryTotal\n */\nexport class PeppolLegalMonetaryTotal extends opaque<PeppolLegalMonetaryTotal>()(\n Schema.Struct({\n /**\n * @description Sum of all allowances on document level in the Invoice.\n *\n * @remarks\n * Must be rounded to maxium 2 decimals.\n *\n * @example\n * 200.0;\n *\n * @summary Sum of allowances on document level\n *\n * @name `cbc:AllowanceTotalAmount (+ @currencyID)`\n */\n allowanceTotalAmount: Schema.optional(PeppolAmount),\n /**\n * @description Sum of all charges on document level in the Invoice.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 0.0;\n *\n * @summary Sum of charges on document level\n *\n * @name `cbc:ChargeTotalAmount (+ @currencyID)`\n */\n chargeTotalAmount: Schema.optional(PeppolAmount),\n /**\n * @description Sum of all Invoice line net amounts in the Invoice.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 3800.0;\n *\n * @summary Sum of Invoice line amount\n *\n * @name `cbc:LineExtensionAmount (+ @currencyID)`\n */\n lineExtensionAmount: PeppolAmount,\n /**\n * @description The amount due for payment on the Invoice, after accounting for all allowances, charges, prepayments, and rounding adjustments.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 4500.0;\n *\n * @summary Amount due for payment\n *\n * @name `cbc:PayableAmount (+ @currencyID)`\n */\n payableAmount: PeppolAmount,\n /**\n * @description The rounding amount applied to the Invoice total.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 0.0;\n *\n * @summary Rounding amount\n *\n * @name `cbc:PayableRoundingAmount (+ @currencyID)`\n */\n payableRoundingAmount: Schema.optional(PeppolAmount),\n /**\n * @description The sum of amounts which have been paid in advances.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 0.0;\n *\n * @summary Paid amount\n *\n * @name `cbc:PrepaidAmount (+ @currencyID)`\n */\n prepaidAmount: Schema.optional(PeppolAmount),\n /**\n * @description The total amount of the Invoice without VAT.\n *\n * @remarks\n * Must be rounded to maximum 2 decimals.\n *\n * @example\n * 3600.0;\n *\n * @summary Invoice total amount without VAT\n *\n * @name `cbc:TaxExclusiveAmount (+ @currencyID)`\n */\n taxExclusiveAmount: PeppolAmount,\n /**\n * @description The total amount of the Invoice with VAT.\n *\n * @example\n * 4500.0;\n *\n * @summary Invoice total amount with VAT\n *\n * @remark Must be rounded to maximum 2 decimals.\n *\n * @name `cbc:TaxInclusiveAmount (+ @currencyID)`\n */\n taxInclusiveAmount: PeppolAmount,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary ORDER AND SALES ORDER REFERENCE\n *\n * @name cac:OrderReference\n */\nexport class PeppolOrderReference extends opaque<PeppolOrderReference>()(\n Schema.Struct({\n /**\n * @description An identifier of a referenced purchase order, issued by the Buyer. An identifier of a referenced purchase order, issued by the Buyer. An\n * invoice must have buyer reference (BT-10) or purchase order reference. In cases where sales order reference is provided, but there's no\n * purchase order reference, then use value \"NA\" as this element is mandatory in UBL.\n *\n * @example\n * `98776`;\n *\n * @summary Purchase order reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description An identifier of a referenced Sales order, issued by the Seller. In cases where sales order reference is provided, but there's no purchase\n * order reference, then set cac:OrderReference/cbc:ID to value \"NA\" as this element is mandatory in UBL.\n *\n * @example\n * `112233`;\n *\n * @summary Sales order reference\n *\n * @name `cbc:SalesOrderID`\n */\n salesOrderId: Schema.optional(Schema.String),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolContact extends opaque<PeppolContact>()(\n Schema.Struct({\n /**\n * @name cbc:ElectronicMail\n */\n electronicMail: Schema.optional(Schema.String),\n /**\n * @name cbc:Name\n */\n name: Schema.optional(Schema.String),\n /**\n * @name cbc:Telephone\n */\n telephone: Schema.optional(Schema.String),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolPartyLegalEntity extends opaque<PeppolPartyLegalEntity>()(\n Schema.Struct({\n /**\n * @example\n * 987654321;\n *\n * @name cbc:CompanyID (+ @schemeID)\n */\n companyId: Schema.optional(PeppolIdentifier),\n /**\n * @example\n * Share capital\n *\n * @name cbc:CompanyLegalForm\n */\n companyLegalForm: Schema.optional(Schema.String),\n /**\n * @example\n * Full Formal Seller Name LTD.\n *\n * @name cbc:RegistrationName\n */\n registrationName: Schema.String,\n })\n) {}\n\nexport type PeppolPartyLegalEntitySchema = PeppolPartyLegalEntity;\n","import { Effect, Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PeppolTaxSchemeId extends opaque<PeppolTaxSchemeId>()(\n Schema.Struct({\n /**\n * @description Mandatory element. For Seller VAT identifier (BT-31), use value “VAT”, for the seller tax registration identifier (BT-32), use != \"VAT\"\n *\n * @name cbc:ID\n */\n id: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed('VAT'))),\n })\n) {}\n\n/**\n * @name cac:PartyTaxScheme (0..2)\n */\nexport class PeppolPartyTaxScheme extends opaque<PeppolPartyTaxScheme>()(\n Schema.Struct({\n /**\n * @description The Seller's VAT identifier (also known as Seller VAT identification number) or the local identification (defined by the Seller’s address) of\n * the Seller for tax purposes or a reference that enables the Seller to state his registered tax status. In order for the buyer to automatically\n * identify a supplier, the Seller identifier (BT-29), the Seller legal registration identifier (BT-30) and/or the Seller VAT identifier (BT-31)\n * shall be present.\n *\n * @summary Seller VAT identifier, Seller tax registration identifier\n *\n * @name `cbc:CompanyID`\n */\n companyId: Schema.String,\n /**\n * @description Mandatory element. For Seller VAT identifier (BT-31), use value “VAT”, for the seller tax registration identifier (BT-32), use != \"VAT\"\n *\n * @name `cac:TaxScheme`\n */\n taxSchemeId: PeppolTaxSchemeId,\n })\n) {}\n\nexport type PeppolPartyTaxSchema = PeppolPartyTaxScheme;\n","/**\n * @module effect/values/eas-codes\n * Electronic Address Scheme (EAS) codes as used in PEPPOL networks\n * These codes identify the scheme used for electronic addresses of parties\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/\n */\nimport { Schema } from 'effect';\n\nimport { electronicAddressCodesKeys } from '#/values/eas-codes.generated';\n\n/**\n * @description An electronic address scheme (EAS) code, identifying the scheme of an electronic address (e.g. `0088` for GLN).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/\n */\nexport type PeppolElectronicAddressCode = typeof electronicCodesSchema.Type;\n\n/**\n * @description Validates an electronic address scheme (EAS) code against the PEPPOL Electronic Address Identifier Scheme codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid electronic address scheme codes.\n *\n * @validations\n * - PEPPOL-EN16931-CL008: Electronic address identifier scheme MUST be from the codelist \"Electronic Address Identifier Scheme\".\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/eas/\n */\nexport const electronicCodesSchema = Schema.Literals(electronicAddressCodesKeys).pipe(Schema.brand('PeppolElectronicAddressCode'));\n","import { Schema } from 'effect';\n\nimport { PeppolAddress } from '#/schemas/fields/peppol-address-schema.ts';\nimport { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { PeppolPartyLegalEntity } from '#/schemas/fields/peppol-party-legal-entity-schema.ts';\nimport { PeppolPartyTaxScheme } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { electronicCodesSchema } from '#/schemas/values/electronic-codes-schema.ts';\nimport { icdCodesSchema } from '#/schemas/values/icd-codes-schema.ts';\n\nexport class PeppolPartyName extends opaque<PeppolPartyName>()(\n Schema.Struct({\n /**\n * @description A name by which the Buyer/Seller is known, other than Buyer/Seller name (also known as Business name).\n *\n * @example\n * `Trading Name`;\n *\n * @summary Buyer/Seller trading name\n */\n name: Schema.String,\n })\n) {}\n\nexport class PeppolPartyIdentification extends opaque<PeppolPartyIdentification>()(\n Schema.Struct({\n /**\n * @description An identifier of the Buyer/seller.\n *\n * @summary Buyer/seller identifier\n *\n * @name `cbc:ID`\n */\n id: PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description Identifies the Seller/buyer's electronic address to which the application level response to the invoice may be delivered.\n *\n * @example\n * 7300010000001;\n *\n * @summary Seller/Buyer electronic address\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Seller/Buyer electronic address.\n *\n * @summary Seller/Buyer electronic address identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(icdCodesSchema),\n })\n ),\n })\n) {}\n\nexport class PeppolPartyEndpointId extends opaque<PeppolPartyEndpointId>()(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description Identifies the Seller/buyer's electronic address to which the application level response to the invoice may be delivered.\n *\n * @example\n * 7300010000001;\n *\n * @summary Seller/Buyer electronic address\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Seller/Buyer electronic address.\n *\n * @summary Seller/Buyer electronic address identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: electronicCodesSchema,\n })\n )\n) {}\n\n/**\n * @summary Party common substructure\n *\n * @name cac:Party\n */\nexport class PeppolPartySchema extends opaque<PeppolPartySchema>()(\n Schema.Struct({\n /**\n * @description Identifies the Seller/buyer's electronic address to which the application level response to the invoice may be delivered.\n *\n * @example\n * 7300010000001;\n *\n * @summary Seller/Buyer electronic address\n *\n * @name `cbc:EndpointID`\n */\n endpointId: PeppolPartyEndpointId,\n /**\n * @example\n * 5060012349998;\n *\n * @summary PARTY IDENTIFICATION\n *\n * @name `cac:PartyIdentification`\n */\n partyIdentification: Schema.optional(PeppolPartyIdentification),\n /**\n * @example\n * Seller Business Name AS\n *\n * @summary PARTY NAME\n *\n * @name cac:PartyName\n */\n partyName: Schema.optional(PeppolPartyName),\n /**\n * @name cac:PostalAddress\n */\n postalAddress: PeppolAddress,\n /**\n * @remarks\n * Max 1 for a buyer, max 2 for a seller.\n *\n * @name cac:PartyTaxScheme\n *\n * @cardinality (0..2)\n */\n partyTaxSchemes: Schema.optional(Schema.Array(PeppolPartyTaxScheme).check(Schema.isMaxLength(2))),\n /**\n * @name cac:PartyLegalEntity\n */\n partyLegalEntity: PeppolPartyLegalEntity,\n /**\n * @name cac:Contact\n */\n contact: Schema.optional(PeppolContact),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { icdCodesSchema } from '#/schemas/values/icd-codes-schema.ts';\n\nclass PeppolPartyName extends opaque<PeppolPartyName>()(Schema.Struct({ name: Schema.String })) {}\n\nclass PeppolPartyLegalEntity extends opaque<PeppolPartyLegalEntity>()(\n Schema.Struct({\n /**\n * @description An identifier issued by an official registrar that identifies the payee as a legal entity or person.\n *\n * @example\n * `FR932874294`;\n *\n * @summary Payee legal registration identifier\n *\n * @name `cbc:CompanyID`\n */\n companyId: Schema.optional(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description An identifier issued by an official registrar that identifies the payee as a legal entity or person.\n *\n * @example\n * `FR932874294`;\n *\n * @summary Payee legal registration identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Payee legal registration identifier.\n *\n * @summary Payee legal registration identifier identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(icdCodesSchema),\n })\n )\n ),\n })\n) {}\n\nclass PeppolPartyIdentification extends opaque<PeppolPartyIdentification>()(\n Schema.Struct({\n /**\n * @description This element is used for both the identification of the Payee, or the unique banking reference identifier of Payee (assigned by the Payee\n * bank.) For payee identification use ICD code list, for SEPA bank assigned creditor reference, use SEPA.\n *\n * @summary Payee identifier or bank assigned crditor identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.optional(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description This element is used for both the identification of the Payee, or the unique banking reference identifier of Payee (assigned by the Payee\n * bank.) For payee identification use ICD code list, for SEPA bank assigned creditor reference, use SEPA.\n *\n * @summary Payee identifier or bank assigned crditor identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the payee identifier. For bank assigned creditor identifier (BT-90), value MUST be \"SEPA\"\n *\n * @summary Payee or bank assigned creditor identifier identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: Schema.optional(Schema.String),\n })\n )\n ),\n })\n) {}\n\n/**\n * @description A group of business terms providing information about the Payee, i.e. the role that received the payment. Shall be used wwhen the payee is\n * different from the seller.\n *\n * @summary PAYEE\n *\n * @name cac:PayeeParty\n */\nexport class PeppolPayeeParty extends opaque<PeppolPayeeParty>()(\n Schema.Struct({\n /**\n * @summary PARTY IDENTIFICATION\n *\n * @name `cac:PartyIdentification`\n */\n partyIdentification: Schema.optional(PeppolPartyIdentification),\n /**\n * @summary PARTY LEGAL ENTITY\n *\n * @name `cac:PartyLegalEntity`\n */\n partyLegalEntity: Schema.optional(PeppolPartyLegalEntity),\n /**\n * @description The name of the payee.\n *\n * @example\n * `Payee Name Ltd`;\n *\n * @summary Payee name\n *\n * @name `cac:PartyName`\n */\n partyName: PeppolPartyName,\n })\n) {}\n","/**\n * @module effect/values/payment-means-codes-schema\n *\n * Payment means codes as defined by UN/CEFACT UNCL4461.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/\n */\n\nimport { Schema } from 'effect';\n\nimport { paymentMeansCodesKeys } from '#/values/payment-means-codes.generated';\n\n/**\n * @description A payment means code as defined by the PEPPOL subset of UNCL 4461.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/\n */\nexport type PeppolPaymentMeansCode = typeof paymentMeansCodeSchema.Type;\n\n/**\n * @description Validates a payment means code against the PEPPOL subset of UNCL 4461.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid payment means codes.\n *\n * @validations\n * - BR-CL-16: Payment means code MUST be a valid UNCL 4461 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4461/\n */\nexport const paymentMeansCodeSchema = Schema.Literals(paymentMeansCodesKeys).pipe(Schema.brand('PeppolPaymentMeansCode'));\n","import { Schema } from 'effect';\n\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { paymentMeansCodeSchema } from '#/schemas/values/payment-means-code-schema.ts';\n\nclass PeppolPaymentMandatePayerFinancialAccountId extends opaque<PeppolPaymentMandatePayerFinancialAccountId>()(\n Schema.Struct({\n /**\n * @description The account to be debited by the direct debit.\n *\n * @example\n * `12345676543`;\n *\n * @summary Debited account identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nclass PeppolPaymentMandate extends opaque<PeppolPaymentMandate>()(\n Schema.Struct({\n /**\n * @description Unique identifier assigned by the Payee for referencing the direct debit mandate. Used in order to pre-notify the Buyer of a SEPA direct debit.\n *\n * @summary Mandate reference identifier\n *\n * @name cbc:ID\n */\n id: Schema.optional(Schema.String),\n /**\n * @description The account to be debited by the direct debit.\n *\n * @example\n * `12345676543`;\n *\n * @summary Debited account identifier\n *\n * @name `cac:PayerFinancialAccount`\n */\n payerFinancialAccountId: Schema.optional(PeppolPaymentMandatePayerFinancialAccountId),\n })\n) {}\n\nclass PeppolPayeeFinancialAccountFinancialInstitutionBranch extends opaque<PeppolPayeeFinancialAccountFinancialInstitutionBranch>()(\n Schema.Struct({\n /**\n * @description An identifier for the payment service provider where a payment account is located. Such as a BIC or a national clearing code where required. No\n * identification scheme Identifier to be used.\n *\n * @example\n * `9998`;\n *\n * @summary Payment service provider identifier\n *\n * @name `cac:FinancialInstitutionBranch`\n */\n id: Schema.String,\n })\n) {}\n\nclass PeppolPayeeFinancialAccount extends opaque<PeppolPayeeFinancialAccount>()(\n Schema.Struct({\n /**\n * @description An identifier for the payment service provider where a payment account is located. Such as a BIC or a national clearing code where required. No\n * identification scheme Identifier to be used.\n *\n * @example\n * `9998`;\n *\n * @summary Payment service provider identifier\n *\n * @name `cac:FinancialInstitutionBranch`\n */\n financialInstitutionBranch: Schema.optional(PeppolPayeeFinancialAccountFinancialInstitutionBranch),\n /**\n * @description A unique identifier of the financial payment account, at a payment service provider, to which payment should be made. Such as IBAN or BBAN.\n *\n * @summary Payment account identifier\n *\n * @name cbc:ID\n */\n id: Schema.String,\n /**\n * @description The name of the payment account, at a payment service provider, to which payment should be made.\n *\n * @summary Payment account name\n *\n * @name cbc:Name\n */\n name: Schema.optional(Schema.String),\n })\n) {}\n\nclass PeppolCardAccount extends opaque<PeppolCardAccount>()(\n Schema.Struct({\n /**\n * @description The name of the payment card holder.\n *\n * @summary Payment card holder name\n *\n * @name cbc:HolderName\n */\n holderName: Schema.optional(Schema.String),\n /**\n * @summary Syntax required element not related to a business term.\n *\n * @name cbc:NetworkID\n */\n networkId: Schema.String,\n /**\n * @description The Primary Account Number (PAN) of the card used for payment. In accordance with card payments security standards, an invoice should never\n * include a full card primary account number.\n *\n * @example\n * `1234`;\n *\n * @summary Payment card primary account number\n *\n * @name cbc:PrimaryAccountNumberID\n */\n primaryAccountNumberId: Schema.String,\n })\n) {}\n\nclass PeppolPaymentMeansCode extends opaque<PeppolPaymentMeansCode>()(\n Schema.Struct({\n /**\n * @description The means, expressed as code, for how a payment is expected to be or has been settled.\n *\n * @example\n * 30;\n *\n * @summary Payment means type code\n *\n * @name `#text`\n */\n code: paymentMeansCodeSchema,\n /**\n * @description The means, expressed as text, for how a payment is expected to be or has been settled.\n *\n * @example\n * Credit transfer\n *\n * @summary Payment means text\n *\n * @name `@name`\n */\n name: Schema.optional(Schema.String),\n })\n) {}\n\n/**\n * @description A group of business terms providing information about the payment.\n *\n * @summary Payment means (credit transfer/direct debit/card)\n *\n * @name cac:PaymentMeans\n */\nexport class PeppolPaymentMeans extends opaque<PeppolPaymentMeans>()(\n Schema.Struct({\n /**\n * @description The means, expressed as code, for how a payment is expected to be or has been settled.\n *\n * @example\n * 30;\n *\n * @summary Payment means type code\n *\n * @name `cbc:PaymentMeansCode`\n */\n paymentMeansCode: PeppolPaymentMeansCode,\n /**\n * @description The date when the payment is due.Format \"YYYY-MM-DD\". In case the Amount due for payment (BT-115) is positive, either the Payment due date\n * (BT-9) or the Payment terms (BT-20) shall be present.\n *\n * @remarks\n * This should only be used with a credit note.\n *\n * @summary Payment due date\n *\n * @name `cbc:PaymentDueDate`\n */\n paymentDueDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description A textual value used to establish a link between the payment and the Invoice, issued by the Seller. Used for creditor's critical reconciliation\n * information. This information element helps the Seller to assign an incoming payment to the relevant payment process.\n *\n * @example\n * `432948234234234`;\n *\n * @summary Remittance information\n *\n * @name cbc:PaymentID\n */\n paymentId: Schema.optional(Schema.String),\n /**\n * @description A group of business terms providing information about card used for payment contemporaneous with invoice issuance.\n *\n * @summary PAYMENT CARD INFORMATION\n *\n * @name cac:CardAccount\n */\n cardAccount: Schema.optional(PeppolCardAccount),\n /**\n * @description A group of business terms to specify credit transfer payments.\n *\n * @summary CREDIT TRANSFER\n *\n * @name cac:PayeeFinancialAccount\n */\n payeeFinancialAccount: Schema.optional(PeppolPayeeFinancialAccount),\n /**\n * @description A group of business terms to specify a direct debit.\n *\n * @summary DIRECT DEBIT\n *\n * @name cac:PaymentMandate\n */\n paymentMandate: Schema.optional(PeppolPaymentMandate),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary PAYMENT TERMS\n *\n * @name cac:PaymentTerms\n */\nexport class PeppolPaymentTerms extends opaque<PeppolPaymentTerms>()(\n Schema.Struct({\n /**\n * @description A textual description of the payment terms that apply to the amount due for payment (Including description of possible penalties). In case the\n * Amount due for payment (BT-115) is positive, either the Payment due date (BT-9) or the Payment terms (BT-20) shall be present.\n *\n * @example\n * Net within 30 days\n *\n * @summary Payment terms\n *\n * @name cbc:Note\n */\n note: Schema.String,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolAddress } from '#/schemas/fields/peppol-address-schema.ts';\nimport { PeppolPartyTaxScheme } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary SELLER TAX REPRESENTATIVE PARTY\n *\n * @name cac:TaxRepresentativeParty\n */\nexport class PeppolTaxRepresentative extends opaque<PeppolTaxRepresentative>()(\n Schema.Struct({\n /**\n * @name cac:PartyName/cbc:Name\n */\n name: Schema.String,\n /**\n * @name cac:PostalAddress\n */\n postalAddress: PeppolAddress,\n partyTaxScheme: PeppolPartyTaxScheme,\n })\n) {}\n\nexport type PeppolTaxRepresentativeParty = PeppolTaxRepresentative;\n","import { Schema } from 'effect';\n\nimport { PeppolTaxCategory } from '#/schemas/fields/peppol-tax-category-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @description This one is specific for TaxSubtotal since it includes more fields.\n *\n * @summary Tax Category for Tax Subtotal\n *\n * @name cac:TaxCategory\n */\nexport class PeppolTaxSubTotalCategory extends opaque<PeppolTaxSubTotalCategory>()(\n Schema.Struct({\n ...PeppolTaxCategory.fields,\n /**\n * @description The reason for the tax exemption.\n *\n * @name cbc:TaxExemptionReason\n */\n taxExemptionReason: Schema.optional(Schema.String),\n /**\n * @description The code for the reason of the tax exemption.\n *\n * @name cbc:TaxExemptionReasonCode\n */\n taxExemptionReasonCode: Schema.optional(Schema.String),\n })\n) {}\n\nexport interface PeppolTaxSubTotalCategoryEncoded extends Schema.Codec.Encoded<typeof PeppolTaxSubTotalCategory> {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { PeppolTaxSubTotalCategory } from '#/schemas/fields/peppol-tax-subtotal-category-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary VAT breakdown (TaxSubtotal)\n *\n * @name cac:TaxSubtotal\n */\nexport class PeppolTaxSubTotal extends opaque<PeppolTaxSubTotal>()(\n Schema.Struct({\n /**\n * @description The amount of tax for the tax subtotal.\n *\n * @name `cbc:TaxAmount (+ @currencyID)`\n */\n taxAmount: PeppolAmount,\n /**\n * @description The tax category associated with this tax subtotal.\n *\n * @name cac:TaxCategory\n */\n taxCategory: PeppolTaxSubTotalCategory,\n /**\n * @description The taxable amount for the tax subtotal.\n *\n * @name `cbc:TaxableAmount (+ @currencyID)`\n */\n taxableAmount: PeppolAmount,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { PeppolTaxSubTotal } from '#/schemas/fields/peppol-tax-subtotal-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary TAX TOTAL\n *\n * @name cac:TaxTotal (1..2)\n */\nexport class PeppolTaxTotalsBase extends opaque<PeppolTaxTotalsBase>()(\n Schema.Struct({\n /**\n * @example\n * 200;\n *\n * @name cbc:TaxAmount (+ @currencyID)\n */\n taxAmount: PeppolAmount,\n /**\n * @name cac:TaxSubtotal (0..n)\n */\n taxSubtotals: Schema.optional(Schema.Array(PeppolTaxSubTotal)),\n })\n) {}\n\nexport type PeppolTaxTotal = PeppolTaxTotalsBase;\n","import { Effect, Schema } from 'effect';\n\nimport { DEFAULT_CUSTOMIZATION_ID } from '#/schemas/fields/default-customization-id.ts';\nimport { DEFAULT_PROFILE_ID } from '#/schemas/fields/default-profile-id.ts';\nimport { PeppolAdditionalDocumentReference } from '#/schemas/fields/peppol-additional-document-reference-schema.ts';\nimport { peppolAllowanceChargeSchema } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\nimport { PeppolBillingReference } from '#/schemas/fields/peppol-billing-reference-schema.ts';\nimport { PeppolDelivery } from '#/schemas/fields/peppol-delivery-schema.ts';\nimport { PeppolInvoicePeriod } from '#/schemas/fields/peppol-invoice-period-schema.ts';\nimport { PeppolLegalMonetaryTotal } from '#/schemas/fields/peppol-legal-monetary-total-schema.ts';\nimport { PeppolOrderReference } from '#/schemas/fields/peppol-order-reference-schema.ts';\nimport { PeppolPartySchema } from '#/schemas/fields/peppol-party-base-schema.ts';\nimport { PeppolPayeeParty } from '#/schemas/fields/peppol-payee-party-schema.ts';\nimport { PeppolPaymentMeans } from '#/schemas/fields/peppol-payment-means-schema.ts';\nimport { PeppolPaymentTerms } from '#/schemas/fields/peppol-payment-terms-schema.ts';\nimport { PeppolTaxRepresentative } from '#/schemas/fields/peppol-tax-representative-schema.ts';\nimport { PeppolTaxTotalsBase } from '#/schemas/fields/peppol-tax-totals-base-schema.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { currencyCodeSchema } from '#/schemas/values/currency-code-schema.ts';\n\nexport class PeppolContractDocumentReference extends opaque<PeppolContractDocumentReference>()(\n Schema.Struct({\n /**\n * @description An identifier of a referenced contract.\n *\n * @example\n * `123Contractref`;\n *\n * @summary Contract reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nexport class PeppolOriginatorDocumentReference extends opaque<PeppolOriginatorDocumentReference>()(\n Schema.Struct({\n /**\n * @description The identification of the call for tender or lot the invoice relates to.\n *\n * @example\n * `PPID-123`;\n *\n * @summary Tender or lot reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nexport class PeppolReceiptDocumentReference extends opaque<PeppolReceiptDocumentReference>()(\n Schema.Struct({\n /**\n * @description An identifier of a referenced receiving advice.\n *\n * @example\n * `rec98`;\n *\n * @summary Receiving advice reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nexport class PeppolDespatchDocumentReference extends opaque<PeppolDespatchDocumentReference>()(\n Schema.Struct({\n /**\n * @description An identifier of a referenced despatch advice.\n *\n * @example\n * `desp98`;\n *\n * @summary Despatch advice reference\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\n/**\n * @description Base schema for a billing document.\n *\n * @see {@link creditNoteSchema} - the credit note schema\n * @see {@link invoiceSchema} - the invoice schema\n */\nexport class PeppolBillingBase extends opaque<PeppolBillingBase>()(\n Schema.Struct({\n /**\n * @description An identification of the specification containing the total set of rules regarding semantic content, cardinalities, and business rules to which\n * the data contained in the intance document conforms.\n *\n * @default `urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0`\n *\n * @summary Specification identifier\n *\n * @cardinality 1..1\n *\n * @name `cbc:CustomizationID`\n */\n customizationId: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed(DEFAULT_CUSTOMIZATION_ID))).check(\n Schema.isStartsWith('urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0', {\n message:\n \"PEPPOL-EN16931-R004: Specification identifier MUST have the value 'urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0'.\",\n })\n ),\n /**\n * @description Identifies the business process context in which the transaction appears, to enable the Buyer to process the Invoice in an appropriate way.\n *\n * @default `urn:fdc:peppol.eu:2017:poacc:billing:01:1.0`\n *\n * @summary Business process type\n *\n * @name `cbc:ProfileID`\n */\n profileId: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed(DEFAULT_PROFILE_ID))).check(\n Schema.isPattern(/^urn:fdc:peppol.eu:2017:poacc:billing:(\\d{2}):1\\.0$/, {\n message:\n \"PEPPOL-EN16931-R007: Business process MUST be in the format 'urn:fdc:peppol.eu:2017:poacc:billing:NN:1.0' where NN indicates the process number.\",\n })\n ),\n /**\n * @description A using identification of the Invoice. The sequential number required in Article 226(2) of the directive 2006/112/EC [2], to uniquely identify\n * the Invoice within the business context, time-frame, operating systems and records of the Seller. No identification scheme is to be used.\n *\n * @example\n * 33445566;\n *\n * @summary Invoice number\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description The date when the invoice was issued.\n *\n * @example\n * `2017-11-01`;\n *\n * @summary Invoice issue date\n *\n * @format `YYYY-MM-DD`\n *\n * @name `cbc:IssueDate`\n */\n issueDate: PeppolIsoDateString,\n /**\n * @description Invoice note A textual note that gives unstructured information that is relevant to the Credit Note as a whole.\n *\n * @example\n * Please note our new phone number 33 44 55 66\n *\n * @name `cbc:Note`\n */\n note: Schema.optional(Schema.String),\n /**\n * @description The date when the VAT becomes accountable for the Seller and for the Buyer in so far as that date can be determined and differs from the date\n * of issue of the invoice, according to the VAT directive.This element is required if the Value added tax point date is different from the\n * Invoice issue date.\n *\n * @example\n * 2017 - 11 - 01;\n *\n * @summary Value added tax point date\n *\n * @name `cbc:TaxPointDate`\n */\n taxPointDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description The currency in which all Invoice amounts are given, except for the Total VAT amount in accounting currency. Only one currency shall be used in\n * the Invoice, except for the VAT accounting currency code (BT-6) and the invoice total VAT amount in accounting currency (BT-111).\n *\n * @example\n * EUR;\n *\n * @summary Invoice currency code\n *\n * @name `cbc:DocumentCurrencyCode`\n */\n documentCurrencyCode: currencyCodeSchema,\n /**\n * @description The currency used for VAT accounting and reporting purposes as accepted or required in the country of the Seller. Shall be used in combination\n * with the Invoice total VAT amount in accounting currency (BT-111), when the VAT accounting currency code differs from the Invoice currency\n * code.\n *\n * @example\n * SEK;\n *\n * @summary VAT accounting currency code\n *\n * @name `cbc:TaxCurrencyCode`\n */\n taxCurrencyCode: Schema.optional(currencyCodeSchema),\n /**\n * @description A textual value that specifies where to book the relevant data into the Buyer's financial accounts.\n *\n * @example\n * `4217:2323:2323`;\n *\n * @summary Buyer accounting reference\n *\n * @name `cbc:AccountingCost`\n */\n accountingCost: Schema.optional(Schema.String),\n /**\n * @description An identifier assigned by the Buyer used for internal routing purposes. An invoice must have buyer reference or purchase order reference\n * (BT-13).\n *\n * @example\n * `abs1234`;\n *\n * @summary Buyer reference\n *\n * @name `cbc:BuyerReference`\n */\n buyerReference: Schema.optional(Schema.String),\n /**\n * @description A group of business terms providing information on the invoice period. Also called delivery period. If the group is used, the invoiceing period\n * start date and/or end date must be used.\n *\n * @summary DELIVERY OR INVOICE PERIOD\n *\n * @name `cac:InvoicePeriod`\n */\n invoicePeriod: Schema.optional(PeppolInvoicePeriod),\n /**\n * @summary ORDER AND SALES ORDER REFERENCE\n *\n * @name `cac:OrderReference`\n */\n orderReference: Schema.optional(PeppolOrderReference),\n /**\n * @summary PRECEDING INVOICE REFERENCE (0..n)\n *\n * @name `cac:BillingReference`\n */\n billingReferences: Schema.optional(Schema.Array(PeppolBillingReference)),\n /**\n * @summary DESPATCH ADVICE REFERENCE\n *\n * @name `cac:DespatchDocumentReference`\n */\n despatchDocumentReference: Schema.optional(PeppolDespatchDocumentReference),\n /**\n * @summary RECEIPT ADVICE REFERENCE\n *\n * @name `cac:ReceiptDocumentReference`\n */\n receiptDocumentReference: Schema.optional(PeppolReceiptDocumentReference),\n /**\n * @summary TENDER OR LOT REFERENCE\n *\n * @name `cac:OriginatorDocumentReference`\n */\n originatorDocumentReference: Schema.optional(PeppolOriginatorDocumentReference),\n\n /**\n * @summary CONTRACT REFERENCE\n *\n * @name `cac:ContractDocumentReference`\n */\n contractDocumentReference: Schema.optional(PeppolContractDocumentReference),\n\n /**\n * @description A group of business terms providing information about additional supporting documents substantiating the claims made in the Invoice. The\n * additional supporting documents can be used for both referencing a document number which is expected to be known by the receiver, an external\n * document (referenced by a URL) or as an embedded document, Base64 encoded (such as a time report).\n *\n * @summary ADDITIONAL SUPPORTING DOCUMENTS\n *\n * @name `cac:AdditionalDocumentReference`\n */\n additionalDocumentReferences: Schema.optional(Schema.Array(PeppolAdditionalDocumentReference)),\n\n /**\n * @description A group of business terms providing information about the seller.\n *\n * @summary SELLER\n *\n * @name `cac:AccountingSupplierParty`\n */\n accountingSupplierParty: PeppolPartySchema,\n\n /**\n * @description A group of business terms providing information about the Buyer.\n *\n * @summary BUYER\n *\n * @name `cac:AccountingCustomerParty`\n */\n accountingCustomerParty: PeppolPartySchema,\n\n /**\n * @description A group of business terms providing information about the Payee, i.e. the role that received the payment. Shall be used wwhen the payee is\n * different from the seller.\n *\n * @summary PAYEE\n *\n * @name cac:PayeeParty\n */\n payeeParty: Schema.optional(PeppolPayeeParty),\n\n /**\n * @description SELLER TAX REPRESENTATIVE PARTY.\n *\n * @name cac:TaxRepresentativeParty\n */\n taxRepresentativeParty: Schema.optional(PeppolTaxRepresentative),\n\n /**\n * @description DELIVERY INFORMATION.\n *\n * @name cac:Delivery\n */\n delivery: Schema.optional(PeppolDelivery),\n\n /**\n * @summary PAYMENT INSTRUCTIONS\n * @summary A group of business terms providing information about the payment.\n *\n * @name cac:PaymentMeans\n */\n paymentMeans: Schema.optional(Schema.Array(PeppolPaymentMeans)),\n\n /**\n * @example\n * Net within 30 days\n *\n * @summary PAYMENT TERMS\n *\n * @name cac:PaymentTerms\n */\n paymentTerms: Schema.optional(PeppolPaymentTerms),\n\n /**\n * @description A group of business terms providing information about allowances applicable to the Invoice as a whole. A group of business terms providing\n * information about charges and taxes other than VAT, applicable to the Invoice as a whole.\n *\n * @summary DOCUMENT LEVEL ALLOWANCES AND CHARGES\n *\n * @name cac:AllowanceCharge\n */\n allowanceCharges: Schema.optional(Schema.Array(peppolAllowanceChargeSchema)),\n\n /**\n * @description When tax currency code is provided, two instances of the tax total must be present, but only one with tax subtotal.\n *\n * @summary TAX TOTAL\n *\n * @name cac:TaxTotal\n */\n taxTotals: Schema.Array(PeppolTaxTotalsBase).check(Schema.isMinLength(1), Schema.isMaxLength(2)),\n\n /**\n * @summary DOCUMENT TOTALS\n *\n * @name cac:LegalMonetaryTotal\n */\n legalMonetaryTotal: PeppolLegalMonetaryTotal,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { itemClassificationCodesKeys } from '#/values/item-classification-code.generated';\n\n/**\n * @description An item classification code as defined by the PEPPOL subset of UNCL 7143.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL7143/\n */\nexport type PeppolItemClassificationCode = typeof itemClassificationCodesSchema.Type;\n\n/**\n * @description Validates an item classification code against the PEPPOL subset of UNCL 7143.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid item classification codes.\n *\n * @validations\n * - BR-CL-13: Item classification scheme MUST be a valid UNTDID 7143 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL7143/\n */\nexport const itemClassificationCodesSchema = Schema.Literals(itemClassificationCodesKeys).pipe(Schema.brand('PeppolItemClassificationCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { itemClassificationCodesSchema } from '#/schemas/values/item-classification-codes-schema.ts';\n\n/**\n * @description A code for classifying the item by its type or nature.\n *\n * @example\n * `9873242`;\n *\n * @summary Item classification identifier\n *\n * @name `cbc:ItemClassificationCode`\n */\nexport class PeppolItemClassification extends opaque<PeppolItemClassification>()(\n Schema.Struct({\n /**\n * @description A code for classifying the item by its type or nature.\n *\n * @summary Item classification identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the item classification identifier.\n *\n * @summary Item classification identifier identification scheme identifier\n *\n * @name `@listID`\n */\n listId: itemClassificationCodesSchema,\n /**\n * @description The identification scheme version identifier of the Item classification identifier.\n *\n * @remarks\n * Only used with danish.\n *\n * @summary Item classification identifier version identification scheme identifier\n *\n * @name `@listVersionID`\n */\n listVersionId: Schema.optional(Schema.String),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { PeppolItemClassification } from '#/schemas/fields/peppol-item-classification-schema.ts';\nimport { PeppolTaxCategory } from '#/schemas/fields/peppol-tax-category-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { icdCodesSchema } from '#/schemas/values/icd-codes-schema.ts';\nimport { peppolCountryCodeSchema } from '#/schemas/values/peppol-country-code-schema.ts';\n\nclass PeppolAdditionalItemProperties extends opaque<PeppolAdditionalItemProperties>()(\n Schema.Struct({\n /**\n * @description The name of the attribute or property of the item.\n *\n * @summary Item attribute name\n *\n * @name cbc:Name\n */\n name: Schema.String,\n /**\n * @description The value of the attribute or property of the item.\n *\n * @summary Item attribute value\n *\n * @name cbc:Value\n */\n value: Schema.String,\n })\n) {}\n\nclass PeppolCommodityClassifications extends opaque<PeppolCommodityClassifications>()(\n Schema.Struct({\n /**\n * @description A code for classifying the item by its type or nature.\n *\n * @example\n * `9873242`;\n *\n * @summary Item classification identifier\n *\n * @name `cbc:ItemClassificationCode`\n */\n itemClassification: PeppolItemClassification,\n })\n) {}\n\nclass PeppolOriginCountryCode extends opaque<PeppolOriginCountryCode>()(\n Schema.Struct({\n /**\n * @description The code identifying the country from which the item originates.\n *\n * @summary Item country of origin\n *\n * @name `cbc:IdentificationCode`\n */\n identificationCode: peppolCountryCodeSchema,\n })\n) {}\n\nclass PeppolStandardItemIdentification extends opaque<PeppolStandardItemIdentification>()(\n Schema.Struct({\n /**\n * @description An item identifier based on a registered scheme.\n *\n * @summary Item standard identifier\n *\n * @name `cbc:ID`\n */\n id: PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @description An item identifier based on a registered scheme.\n *\n * @summary Item standard identifier\n *\n * @name `#text`\n */\n id: Schema.String,\n /**\n * @description The identification scheme identifier of the Item standard identifier.\n *\n * @summary Item standard identifier identification scheme identifier\n *\n * @name `@schemeID`\n */\n schemeId: icdCodesSchema,\n })\n ),\n })\n) {}\n\nclass PeppolSellersItemIdentification extends opaque<PeppolSellersItemIdentification>()(\n Schema.Struct({\n /**\n * @description An identifier, assigned by the Seller, for the item.\n *\n * @example\n * `987323`;\n *\n * @summary Item Seller's identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\nclass PeppolBuyersItemIdentification extends opaque<PeppolBuyersItemIdentification>()(\n Schema.Struct({\n /**\n * @description An identifier, assigned by the Buyer, for the item.\n *\n * @example\n * `12345`;\n *\n * @summary Item Buyer's identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n })\n) {}\n\n/**\n * @summary Item details on invoice/credit-note line\n *\n * @name cac:Item\n */\nexport class PeppolLineItem extends opaque<PeppolLineItem>()(\n Schema.Struct({\n /**\n * @description A description for an item. The item description allows for descibing the item and its features in more detail than the item name.\n *\n * @summary Item description\n *\n * @name cbc:Description\n */\n description: Schema.optional(Schema.String),\n /**\n * @description A name for an item.\n *\n * @summary Item name\n *\n * @name cbc:Name\n */\n name: Schema.String,\n /**\n * @summary BUYERS ITEM IDENTIFICATION\n *\n * @name cac:BuyersItemIdentification\n */\n buyersItemIdentification: Schema.optional(PeppolBuyersItemIdentification),\n /**\n * @summary Sellers item identification\n *\n * @name cac:SellersItemIdentification\n */\n sellersItemIdentification: Schema.optional(PeppolSellersItemIdentification),\n /**\n * @summary Standard item identification\n *\n * @name cac:StandardItemIdentification\n */\n standardItemIdentification: Schema.optional(PeppolStandardItemIdentification),\n /**\n * @summary ORIGIN COUNTRY\n *\n * @name `cac:OriginCountry`\n */\n originCountryCode: Schema.optional(PeppolOriginCountryCode),\n /**\n * @summary COMMODITY CLASSIFICATION\n *\n * @name cac:CommodityClassification (0..n)\n */\n commodityClassifications: Schema.optional(Schema.Array(PeppolCommodityClassifications)),\n /**\n * @description A group of business terms providing information about the VAT applicable for the goods and services invoiced on the Invoice line.\n *\n * @summary LINE VAT INFORMATION\n *\n * @name cac:ClassifiedTaxCategory\n */\n classifiedTaxCategory: PeppolTaxCategory,\n /**\n * @description A group of business terms providing information about properties of the goods and services invoiced.\n *\n * @summary ITEM ATTRIBUTES\n *\n * @name cac:AdditionalItemProperty\n */\n additionalItemProperties: Schema.optional(Schema.Array(PeppolAdditionalItemProperties)),\n })\n) {}\n\nexport type PeppolItem = PeppolLineItem;\n","import { Schema } from 'effect';\n\nimport { quantityUnitCodesKeys } from '#/values/quantity-unit-codes.generated';\n\n/**\n * @description A unit of measure code as defined by the PEPPOL subset of UN/ECE Recommendation 20.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNECERec20/\n */\nexport type PeppolQuantityUnitCode = typeof quantityUnitCodesSchema.Type;\n\n/**\n * @description Validates a unit of measure code against the PEPPOL subset of UN/ECE Recommendation 20.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid quantity unit codes.\n *\n * @validations\n * - BR-CL-23: Unit of measure code MUST be a valid UN/ECE Rec 20 code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNECERec20/\n */\nexport const quantityUnitCodesSchema = Schema.Literals(quantityUnitCodesKeys).pipe(Schema.brand('PeppolQuantityUnitCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { quantityUnitCodesSchema } from '#/schemas/values/quantity-unit-codes-schema.ts';\n\n/**\n * @summary Quantity with optional unit code\n *\n * @name `cbc:* (+ @unitCode)`\n */\nexport class PeppolQuantity extends opaque<PeppolQuantity>()(\n Schema.Struct({\n /**\n * @name `@unitCode`\n */\n unitCode: Schema.optional(quantityUnitCodesSchema),\n /**\n * @name `#text (value)`\n */\n value: Schema.Finite,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { PeppolLinePriceAllowanceCharge } from '#/schemas/fields/peppol-line-price-allowance-charge-schema.ts';\nimport { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\n/**\n * @summary Price details on invoice line\n *\n * @name cac:Price\n */\nexport class PeppolLinePrice extends opaque<PeppolLinePrice>()(\n Schema.Struct({\n /**\n * @name cac:AllowanceCharge\n *\n * @cardinality 0..1\n */\n allowanceCharge: Schema.optional(PeppolLinePriceAllowanceCharge),\n /**\n * @name cbc:BaseQuantity (+ @unitCode)\n *\n * @cardinality 0..1\n */\n baseQuantity: Schema.optional(PeppolQuantity),\n /**\n * @name cbc:PriceAmount (+ @currencyID)\n */\n priceAmount: PeppolAmount,\n })\n) {}\n","import { Effect, Schema } from 'effect';\n\nimport { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';\nimport { peppolLineAllowanceChargeSchema } from '#/schemas/fields/peppol-line-allowance-charge-schema.ts';\nimport { PeppolLineItem } from '#/schemas/fields/peppol-line-item-schema.ts';\nimport { PeppolLinePrice } from '#/schemas/fields/peppol-line-price-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolOrderLineReference extends opaque<PeppolOrderLineReference>()(Schema.Struct({ lineId: Schema.String })) {}\n\n/**\n * @description Base of the invoice line and credit note line schemas.\n */\nexport class PeppolBaseLine extends opaque<PeppolBaseLine>()(\n Schema.Struct({\n /**\n * @description A textual value that specifies where to book the relevant data into the Buyer's financial accounts.\n *\n * @example\n * `1287:65464`;\n *\n * @summary Invoice line Buyer accounting reference\n *\n * @name cbc:AccountingCost\n *\n * @cardinality 0..1\n */\n accountingCost: Schema.optional(Schema.String),\n /**\n * @description A group of business terms providing information about allowances or charges applicable to the individual Invoice line.\n *\n * @summary Invoice line allowances or charges\n *\n * @name cac:AllowanceCharge\n *\n * @cardinality 0..n\n */\n allowanceCharges: Schema.optional(Schema.Array(peppolLineAllowanceChargeSchema)),\n /**\n * @summary Line object identifier\n *\n * @name cac:DocumentReference\n *\n * @cardinality 0..1\n */\n documentReference: Schema.optional(\n Schema.Array(\n PeppolIdentifier.pipe(\n Schema.fieldsAssign({\n /**\n * @default 130\n *\n * @name cbc:DocumentTypeCode\n */\n documentTypeCode: Schema.String.pipe(Schema.withDecodingDefaultType(Effect.succeed('130'))),\n })\n )\n )\n ),\n /**\n * @description A unique identifier for the individual line within the Invoice.\n *\n * @example\n * 12;\n *\n * @summary Invoice line identifier\n *\n * @name cbc:ID\n *\n * @cardinality 1..1\n */\n id: Schema.String,\n /**\n * @description A group of business terms providing information about the period relevant for the Invoice line.\n *\n * @summary Invoice line period\n *\n * @name cac:InvoicePeriod\n *\n * @cardinality 0..1\n */\n invoicePeriod: Schema.optional(PeppolInvoiceLinePeriod),\n /**\n * @description A group of business terms providing information about the goods and services invoiced.\n *\n * @summary Item information\n *\n * @name cac:Item\n *\n * @cardinality 1..1\n */\n item: PeppolLineItem,\n /**\n * @description The total amount of the Invoice line. The amount is “net” without VAT, i.e. inclusive of line level allowances and charges as well as other\n * relevant taxes. Must be rounded to maximum 2 decimals.\n *\n * @example\n * { value: 2145.0, currencyId: \"EUR\" }\n *\n * @summary Invoice line net amount\n *\n * @name cbc:LineExtensionAmount (+ @currencyID)\n *\n * @cardinality 1..1\n */\n lineExtensionAmount: PeppolAmount,\n /**\n * @description A textual note that gives unstructured information that is relevant to the Invoice line.\n *\n * @example\n * New article number 12345\n *\n * @summary Invoice line note\n *\n * @name cbc:Note\n *\n * @cardinality 0..1\n */\n note: Schema.optional(Schema.String),\n /**\n * @summary Order line reference\n *\n * @name cac:OrderLineReference\n *\n * @cardinality 0..1\n */\n orderLineReference: Schema.optional(PeppolOrderLineReference),\n /**\n * @description A group of business terms providing information about the price applied for the goods and services invoices on the Invoice line.\n *\n * @summary Price Details\n *\n * @name cac:Price\n *\n * @cardinality 1..1\n */\n price: PeppolLinePrice,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolBaseLine } from '#/schemas/fields/peppol-base-line-schema.ts';\nimport { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { quantityUnitCodesSchema } from '#/schemas/values/quantity-unit-codes-schema.ts';\n\n/**\n * @summary Invoice line\n *\n * @name cac:InvoiceLine\n */\nexport class PeppolInvoiceLine extends opaque<PeppolInvoiceLine>()(\n Schema.Struct({\n ...PeppolBaseLine.fields,\n /**\n * @description The quantity of items (goods or services) that is charged in the Invoice line.\n *\n * @example\n * { value: 100, unitCode: \"C62\" }\n *\n * @summary Invoiced quantity\n *\n * @name cbc:InvoicedQuantity (+ @unitCode)\n */\n invoicedQuantity: PeppolQuantity.pipe(\n Schema.fieldsAssign({\n /**\n * @description The unit of measure that applies to the invoiced quantity. Codes for unit of packaging from UNECE Recommendation No. 21 can be used in\n * accordance with the descriptions in the \"Intro\" section of UN/ECE Recommendation 20, Revision 11 (2015): The 2 character alphanumeric code\n * values in UNECE Recommendation 21 shall be used. To avoid duplication with existing code values in UNECE Recommendation No. 20, each code\n * value from UNECE Recommendation 21 shall be prefixed with an “X”, resulting in a 3 alphanumeric code when used as a unit of measure.\n *\n * @example\n * `C62`;\n *\n * @summary Invoiced quantity unit of measure\n *\n * @see {@link quantityUnitCodes}\n */\n unitCode: quantityUnitCodesSchema,\n })\n ),\n })\n) {}\nexport interface PeppolInvoiceLineEncoded extends Schema.Codec.Encoded<typeof PeppolInvoiceLine> {}\n","import { Schema } from 'effect';\n\nimport { invoiceTypeCodesKeys } from '#/values/invoice-type-codes.generated';\n\n/**\n * @description An invoice type code as defined by the PEPPOL subset of UNCL 1001 (invoice).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-inv/\n */\nexport type PeppolInvoiceTypeCode = typeof invoiceTypeCodeSchema.Type;\n\n/**\n * @description Validates an invoice type code against the PEPPOL subset of UNCL 1001 (invoice).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid invoice type codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-inv/\n */\nexport const invoiceTypeCodeSchema = Schema.Literals(invoiceTypeCodesKeys).pipe(Schema.brand('PeppolInvoiceTypeCode'));\n","import { Schema } from 'effect';\n\nimport { PeppolInvoiceLine } from '#/schemas/fields/peppol-invoice-line-schema.ts';\nimport { PeppolBillingBase } from '#/schemas/peppol-billing-base-schema.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { invoiceTypeCodeSchema } from '#/schemas/values/invoice-type-code-schema.ts';\n\nclass PeppolProjectReference extends opaque<PeppolProjectReference>()(Schema.Struct({ id: Schema.String })) {}\n\nexport class PeppolInvoice extends opaque<PeppolInvoice>()(\n Schema.Struct({\n ...PeppolBillingBase.fields,\n /**\n * @example\n * `2017-11-01`;\n *\n * @summary Payment due date\n *\n * @name cbc:DueDate\n */\n dueDate: Schema.optional(PeppolIsoDateString),\n /**\n * @summary INVOICE LINE\n *\n * @name cac:InvoiceLine\n */\n invoiceLines: Schema.Array(PeppolInvoiceLine).check(Schema.isMinLength(1)),\n /**\n * @example\n * `380`;\n *\n * @summary Invoice type code\n *\n * @name cbc:InvoiceTypeCode\n */\n invoiceTypeCode: invoiceTypeCodeSchema,\n /**\n * @summary PROJECT REFERENCE\n *\n * @name cac:ProjectReference\n */\n projectReference: Schema.optional(PeppolProjectReference),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolBaseLine } from '#/schemas/fields/peppol-base-line-schema.ts';\nimport { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { quantityUnitCodesSchema } from '#/schemas/values/quantity-unit-codes-schema.ts';\n\n/**\n * @description Credit note line is identical to Invoice line except the quantity element name.\n */\nexport class PeppolCreditNoteLine extends opaque<PeppolCreditNoteLine>()(\n PeppolBaseLine.pipe(\n Schema.fieldsAssign({\n /**\n * @description Invoiced/Credited quantity.\n *\n * @example\n * { value: 40, unitCode: \"C62\" }\n *\n * @name cbc:CreditedQuantity (+ @unitCode)\n */\n creditedQuantity: PeppolQuantity.pipe(\n Schema.fieldsAssign({\n /**\n * @description The unit of measure that applies to the invoiced quantity. Codes for unit of packaging from UNECE Recommendation No. 21 can be used in\n * accordance with the descriptions in the \"Intro\" section of UN/ECE Recommendation 20, Revision 11 (2015): The 2 character alphanumeric\n * code values in UNECE Recommendation 21 shall be used. To avoid duplication with existing code values in UNECE Recommendation No. 20, each\n * code value from UNECE Recommendation 21 shall be prefixed with an “X”, resulting in a 3 alphanumeric code when used as a unit of\n * measure.\n *\n * @example\n * `C62`;\n *\n * @summary Invoiced quantity unit of measure\n *\n * @see {@link quantityUnitCodes}\n */\n unitCode: quantityUnitCodesSchema,\n })\n ),\n })\n )\n) {}\nexport interface PeppolCreditNoteLineEncoded extends Schema.Codec.Encoded<typeof PeppolCreditNoteLine> {}\n","import { Schema } from 'effect';\n\nimport type { CreditNoteTypeCodesKeys } from '#/values/credit-notes-type-codes.generated';\n\nimport { creditNoteTypeCodesKeys } from '#/values/credit-notes-type-codes.generated';\n\n/**\n * @description A credit note type code as defined by the PEPPOL subset of UNCL 1001 (credit note).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-cn/\n */\nexport type PeppolCreditNoteTypeCode = CreditNoteTypeCodesKeys;\n\n/**\n * @description Validates a credit note type code against the PEPPOL subset of UNCL 1001 (credit note).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid credit note type codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001-cn/\n */\nexport const creditNoteTypeCodeSchema = Schema.Literals(creditNoteTypeCodesKeys);\n","import { Schema } from 'effect';\n\nimport { PeppolCreditNoteLine } from '#/schemas/fields/peppol-credit-note-line-schema.ts';\nimport { PeppolBillingBase } from '#/schemas/peppol-billing-base-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { creditNoteTypeCodeSchema } from '#/schemas/values/credit-note-type-code-schema.ts';\n\n/**\n * @description Main UBL Credit Note schema (camelCase properties) Effect port of `creditNoteSchema` (`z.extend(billingBaseSchema, ...)` →\n * `PeppolBillingBase.pipe(Schema.fieldsAssign(...))`).\n */\nexport class PeppolCreditNote extends opaque<PeppolCreditNote>()(\n Schema.Struct({\n ...PeppolBillingBase.fields,\n /**\n * @description CREDIT NOTE LINE.\n *\n * @name cac:CreditNoteLine (1..n)\n */\n creditNoteLines: Schema.Array(PeppolCreditNoteLine).check(Schema.isMinLength(1)),\n /**\n * @description Invoice type code A code specifying the functional type of the Credit Note.\n *\n * @example\n * 381;\n *\n * @name cbc:CreditNoteTypeCode\n */\n creditNoteTypeCode: creditNoteTypeCodeSchema,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolMessageLevelResponseParty extends opaque<PeppolMessageLevelResponseParty>()(\n Schema.Struct({\n /**\n * @description Identifies the sender party's electronic address.\n *\n * @example\n * 7300010000001;\n *\n * @summary Sender/Receiver party's electronic address\n *\n * @name `cbc:EndpointID (+ @schemeID)`\n */\n endpointId: Schema.optional(PeppolIdentifier),\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { documentTypeCodesKeys } from '#/values/document-type-codes.generated';\n\n/**\n * @description A document type code as defined by the PEPPOL subset of UNCL 1001 (document/message name code).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001/\n */\nexport type PeppolDocumentTypeCode = typeof peppolDocumentTypeCodeSchema.Type;\n\n/**\n * @description Validates a document type code against the PEPPOL subset of UNCL 1001.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid document type codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL1001/\n */\nexport const peppolDocumentTypeCodeSchema = Schema.Literals(documentTypeCodesKeys).pipe(Schema.brand('PeppolDocumentTypeCode'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolDocumentTypeCodeSchema } from '#/schemas/values/peppol-document-type-code-schema.ts';\n\nexport class PeppolDocumentResponseDocumentReference extends opaque<PeppolDocumentResponseDocumentReference>()(\n Schema.Struct({\n /**\n * @description Identifies the document on which the message level response is based.\n *\n * @example\n * `EnvelopeID-12345`;\n *\n * @summary Document identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description The type of the document being referred to, expressed as a code.\n *\n * @summary Document type code\n *\n * @name `cbc:DocumentTypeCode`\n */\n documentTypeCode: Schema.optional(peppolDocumentTypeCodeSchema),\n /**\n * @description The version of the document that has been identifier with the document identifier.\n *\n * @example\n * `2`;\n *\n * @summary Document version identifier\n *\n * @name `cbc:VersionID`\n */\n versionId: Schema.optional(Schema.String),\n })\n) {}\n\nexport type PeppolMessageLevelDocumentResponseDocumentReference = PeppolDocumentResponseDocumentReference;\n","import { Schema } from 'effect';\n\nimport type { ApplicationResponseTypeCodesKeys } from '#/values/application-response-type-codes.generated';\n\nimport { applicationResponseTypeCodesKeys } from '#/values/application-response-type-codes.generated';\n\n/**\n * @description An application response type code as defined by the PEPPOL subset of UNCL 4343.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4343/\n */\nexport type PeppolApplicationResponseTypeCode = ApplicationResponseTypeCodesKeys;\n\n/**\n * @description Validates an application response type code against the PEPPOL subset of UNCL 4343.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid application response type codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4343/\n */\nexport const applicationResponseTypeCodeSchema = Schema.Literals(applicationResponseTypeCodesKeys);\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { applicationResponseTypeCodeSchema } from '#/schemas/values/application-response-type-code-schema.ts';\n\n/**\n * @summary Response information\n *\n * @name `cac:Response`\n *\n * @cardinality (1..1)\n *\n * @see {@link messageLevelResponseDocumentResponseSchema}\n */\nexport class PeppolDocumentResponseDocument extends opaque<PeppolDocumentResponseDocument>()(\n Schema.Struct({\n /**\n * @description An indicator stating whether the referenced message was cleared through validation and advanced to the next step in the process. A negative\n * response states that the document was not processed because of identified issues.\n *\n * @example\n * `RE`;\n *\n * @summary Message response code\n *\n * @name `cbc:ResponseCode`\n */\n responseCode: applicationResponseTypeCodeSchema,\n /**\n * @description Used to meake any comments or instructions relevant to the response. The use of this element requires manual assessment by the receiver.\n *\n * @summary Response textual notes\n */\n description: Schema.optional(Schema.String),\n })\n) {}\n\nexport type PeppolMessageLevelResponseDocumentResponseDocument = PeppolDocumentResponseDocument;\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { applicationResponseTypeCodeSchema } from '#/schemas/values/application-response-type-code-schema.ts';\n\nclass PeppolStatus extends opaque<PeppolStatus>()(\n Schema.Struct({\n /**\n * @description A codified version of the issue description that describes the nature of the issue. e.g. Syntax violation, business rule violation, ...\n *\n * @summary Issue type coded\n *\n * @name `cbc:StatusReasonCode`\n */\n statusReasonCode: Schema.Literals(['BV', 'BW', 'SV']),\n })\n) {}\n\nexport class PeppolDocumentResponseLineResponseContent extends opaque<PeppolDocumentResponseLineResponseContent>()(\n Schema.Struct({\n /**\n * @description An indicator stating whether the referenced message was cleared through validation and advanced to the next step in the process. A negative\n * response states that the document was not processed because of identified issues.\n *\n * @example\n * `RE`;\n *\n * @summary Line response code\n *\n * @name `cbc:ResponseCode`\n */\n responseCode: applicationResponseTypeCodeSchema,\n /**\n * @description The description of the issued identifier in the transaction document.\n *\n * @example\n * `Validation gives error [CL-T77-R0002]- Tax categories MUST be coded using UN/ECE 5305 code list`;\n *\n * @summary Issue description\n *\n * @name `cbc:Description`\n */\n description: Schema.String,\n /**\n * @name `cac:Status`\n */\n status: PeppolStatus,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { PeppolDocumentResponseLineResponseContent } from '#/schemas/peppol-document-response-line-response-content-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PeppolLineReference extends opaque<PeppolLineReference>()(\n Schema.Struct({\n /**\n * @description Identifies the section of the document to which the reported issue applied. The LineID element mustbe used to indicate where in the business\n * document the error occurred by using XPath to reference the element causing the error. To cater for scenarios where it is not possible to\n * provide XPath, a dummy value must be applied. The dummay value must consist of the characters NA. This is due to that the LineID element is\n * mendatory in the ApplicationResponse message in UBL 2.1 on which the MLR message is based.\n *\n * @example\n * `/Catalogue/cac:CatalogueLine[3]/cac:Item[1]/cac:ClassifiedTaxCategory[1]/cbc:ID[1]`;\n *\n * @summary Section identifier\n */\n lineId: Schema.String,\n })\n) {}\n\nexport class PeppolDocumentResponseLineResponse extends opaque<PeppolDocumentResponseLineResponse>()(\n Schema.Struct({\n /**\n * @description Identifies the line in the business document to which the reported issue applies.\n *\n * @summary Line reference\n *\n * @name `cac:LineReference`\n */\n lineReference: PeppolLineReference,\n /**\n * @summary Line response information\n */\n response: PeppolDocumentResponseLineResponseContent,\n })\n) {}\n\nexport type PeppolMessageLevelDocumentResponseLineResponse = PeppolDocumentResponseLineResponse;\n","import { Schema } from 'effect';\n\nimport { PeppolDocumentResponseDocumentReference } from '#/schemas/peppol-document-response-document-reference-schema.ts';\nimport { PeppolDocumentResponseDocument } from '#/schemas/peppol-document-response-document-schema.ts';\nimport { PeppolDocumentResponseLineResponse } from '#/schemas/peppol-document-response-line-response-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolMessageLevelResponseDocumentResponse extends opaque<PeppolMessageLevelResponseDocumentResponse>()(\n Schema.Struct({\n /**\n * @summary Response information\n *\n * @name `cac:Response`\n *\n * @cardinality (1..1)\n */\n response: PeppolDocumentResponseDocument,\n /**\n * @description The document reference is used to provide a reference to the envelope of the business document on which the message level response is based.\n * The message level response message may only cover exactly one business document. The element\n * `cac:DocumentResponse/cac:DocumentReference/cbc:ID` **MUST** contain the instance identifier of the envelope of the original business\n * document.\n *\n * @summary Document reference\n */\n documentReference: PeppolDocumentResponseDocumentReference,\n /**\n * @description A response to a particular line in the document. If the document response is negative (code='RE'), the line response element is used to specify\n * the errors in the business document.\n *\n * @summary Line response information\n */\n lineResponse: Schema.Array(PeppolDocumentResponseLineResponse),\n })\n) {}\n","import { DateTime } from 'effect';\n\n/**\n * @description Pads a number with leading zeros, preserving a leading `-` for negative values. Extracted from date-fns\n * `pkgs/core/src/_lib/addLeadingZeros/index.ts`.\n *\n * @param value - The number to pad.\n * @param targetLength - The total length the output should have.\n *\n * @returns The zero-padded string.\n */\nconst addLeadingZeros = (value: number, targetLength: number): string => {\n const sign = value < 0 ? '-' : '';\n return sign + Math.abs(value).toString().padStart(targetLength, '0');\n};\n\n/**\n * @description The `HH`, `mm` and `ss` tokens extracted from the date-fns `lightFormatters` (`pkgs/core/src/_lib/format/lightFormatters/index.ts`). The date-fns\n * implementation reads the local components of a `Date`; this port reads the UTC components because the caller hands it a `Date` whose UTC fields\n * already hold the wall-clock time of the target time zone.\n *\n * @param date - A `Date` whose UTC fields hold the wall-clock time to format.\n *\n * @returns The zero-padded `HH` component.\n */\nconst formatHours = (date: Date): string => addLeadingZeros(date.getUTCHours(), 2);\n\n/**\n * @description See {@link formatHours}. Formats the `mm` token.\n *\n * @param date - A `Date` whose UTC fields hold the wall-clock time to format.\n *\n * @returns The zero-padded `mm` component.\n */\nconst formatMinutes = (date: Date): string => addLeadingZeros(date.getUTCMinutes(), 2);\n\n/**\n * @description See {@link formatHours}. Formats the `ss` token. Fractional seconds are dropped because XSD `time` values produced by this library carry second\n * precision.\n *\n * @param date - A `Date` whose UTC fields hold the wall-clock time to format.\n *\n * @returns The zero-padded `ss` component.\n */\nconst formatSeconds = (date: Date): string => addLeadingZeros(date.getUTCSeconds(), 2);\n\n/**\n * @description Formats a UTC offset as the ISO-8601 `XXX` token (`+HH:MM` / `-HH:MM`). The digit handling is extracted from date-fns `formatTimezone`\n * (`pkgs/core/src/_lib/format/formatters/index.ts`) with two deliberate differences:\n *\n * 1. The offset is expressed in the standard direction (positive means east of UTC) instead of JavaScript's inverted `Date#getTimezoneOffset` sign.\n * 2. A zero offset returns an empty string. date-fns renders it as `Z`; XSD `time` wants the time zone to be optional, so UTC produces no offset at all.\n *\n * @param offsetInMinutes - The offset east of UTC in minutes (for example `+05:30` is `330`).\n *\n * @returns The formatted offset, or an empty string for UTC.\n */\nexport const formatTimeZoneOffset = (offsetInMinutes: number): string => {\n if (offsetInMinutes === 0) return '';\n const sign = offsetInMinutes > 0 ? '+' : '-';\n const absoluteOffset = Math.abs(offsetInMinutes);\n const hours = addLeadingZeros(Math.trunc(absoluteOffset / 60), 2);\n const minutes = addLeadingZeros(absoluteOffset % 60, 2);\n return `${sign}${hours}:${minutes}`;\n};\n\n/**\n * @description Formats a `DateTime` as an XSD `time` lexical value: `HH:mm:ss` followed by an optional `±HH:MM` offset. The offset is omitted for UTC, so a UTC\n * value encodes as bare `HH:mm:ss` while a zoned value encodes as `HH:mm:ss±HH:MM`. Fractional seconds are intentionally dropped to match the second\n * precision the schema round-trips.\n *\n * @param date - The `DateTime` to format. It is rendered in its own time zone, not normalised to UTC.\n *\n * @returns The XSD `time` string.\n */\nexport const formatXsdTime = (date: DateTime.DateTime): string => {\n const wallClock = DateTime.toDate(date);\n const offsetInMinutes = (wallClock.getTime() - DateTime.toEpochMillis(date)) / (60 * 1000);\n return `${formatHours(wallClock)}:${formatMinutes(wallClock)}:${formatSeconds(wallClock)}${formatTimeZoneOffset(offsetInMinutes)}`;\n};\n","import { Clock, Option, DateTime, Effect, Predicate, Schema, SchemaGetter, SchemaIssue, SchemaParser } from 'effect';\n\nimport { formatXsdTime } from '#/schemas/utils/format-xsd-time.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nconst timeRegex =\n /^(?<hours>[01]\\d|2[0-3]):(?<minutes>[0-5]\\d):(?<seconds>[0-5]\\d)(?<nanoseconds>\\.\\d{1,9})?(?<tz>(?:Z|-0[1-9]|-1\\d|-2[0-3]|-00:?(?:0[1-9]|[1-5]\\d)|\\+[01]\\d|\\+2[0-3])?(?:|:?[0-5]\\d))$/;\nconst timeZoneRegex = /^(?:(?<utc>Z)|[-+](?<hours>0[1-9]|1\\d|2[0-3]|00):?(?<minutes>[0-5]\\d))$/;\nconst numberFromString = SchemaParser.decodeSync(\n Schema.UndefinedOr(Schema.String.pipe(Schema.withDecodingDefault(Effect.succeed('0')))).pipe(\n Schema.decodeTo(Schema.Number, { encode: SchemaGetter.String(), decode: SchemaGetter.Number() }),\n Schema.catchDecoding(() => Effect.succeedSome(0))\n )\n);\n\n/**\n * @description Parse a timezone offset from a string. The string must be in the format `(+|-)HH:MM` where `HH` and `MM` are two digits.\n *\n * @param tz - The timzeone offset string.\n *\n * @returns\n *\n * @internal\n */\nexport const parseZoneOffsetFromString = (tz: `+${number}:${number}` | `-${number}:${number}` | (string & {})) => {\n const tzRegexResult = timeZoneRegex.exec(tz);\n if (Predicate.isNullish(tzRegexResult)) {\n return undefined;\n }\n const [_tzParsed, _isUtc, tzHours, tzMinutes] = tzRegexResult;\n const offset = DateTime.zoneMakeOffset((numberFromString(tzHours) * 60 + numberFromString(tzMinutes)) * 60 * 1000);\n return offset;\n};\n\n/**\n * @description XSD `time` lexical value (`HH:MM:SS` with optional fractional seconds and timezone). Effect port of `xsdTime` (`z.string().check(z.regex(...))`):\n * keeps the value as a plain string and only validates the shape.\n */\nexport class PeppolXsdTime extends opaque<PeppolXsdTime>()(\n Schema.String.check(\n Schema.isPattern(\n /^(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d{1,9})?(?:Z|-0[1-9]|-1\\d|-2[0-3]|-00:?(?:0[1-9]|[1-5]\\d)|\\+[01]\\d|\\+2[0-3])?(?:|:?[0-5]\\d)$/\n ).annotate({ message: 'Invalid ISO time' })\n )\n .pipe(\n Schema.decodeTo(Schema.DateTimeUtc, {\n decode: SchemaGetter.transformEffect((input, options) =>\n Clock.currentTimeMillis.pipe(\n Effect.map(millis => DateTime.make(millis)),\n Effect.flatMap(option => Effect.fromOption(option)),\n Effect.map(date =>\n DateTime.withDate(date, date => {\n const regexResult = timeRegex.exec(input);\n if (Predicate.isNullish(regexResult)) return Option.none();\n const [_time, hours, minutes, seconds, nanoseconds, tz] = regexResult;\n\n date.setUTCHours(numberFromString(hours), numberFromString(minutes), numberFromString(seconds), numberFromString(nanoseconds));\n if (Predicate.isUndefined(tz) || tz === 'Z') {\n return DateTime.make(date.getTime());\n }\n const offset = parseZoneOffsetFromString(tz);\n if (Predicate.isNullish(offset)) {\n return DateTime.make(date.getTime());\n }\n\n return DateTime.makeZoned(date.getTime(), { adjustForTimeZone: false, timeZone: offset }).pipe(\n Option.map(date => DateTime.toUtc(date))\n );\n })\n ),\n Effect.flatMap(option => Effect.fromOption(option)),\n Effect.catchTag('NoSuchElementError', () => Effect.fail(new SchemaIssue.InvalidValue({ message: 'Invalid date input' }, input, options)))\n )\n ),\n encode: SchemaGetter.transform(self => formatXsdTime(self)),\n })\n )\n .annotate({ message: 'Invalid ISO time' })\n) {}\n","import { Schema } from 'effect';\n\nimport { MESSAGE_LEVEL_RESPONSE_PROFILE_ID } from '#/constants/message-level-response-profile-id.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { PeppolMessageLevelResponseDocumentResponse } from '#/schemas/peppol-message-level-response-document-response-schema.ts';\nimport { PeppolMessageLevelResponseParty } from '#/schemas/peppol-message-level-response-party-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { PeppolXsdTime } from '#/schemas/utils/peppol-xsd-time-schema.ts';\n\nexport class PeppolMessageLevelResponse extends opaque<PeppolMessageLevelResponse>()(\n Schema.Struct({\n /**\n * @description Identifies the specification of content and rules that apply to the transaction.\n *\n * @default `urn:fdc:peppol.eu:poacc:trns:mlr:3`\n *\n * @summary Specification identification\n *\n * @name `cbc:CustomizationID`\n *\n * @cardinality 1..1\n */\n customizationId: Schema.String,\n /**\n * @description Identifies the BII profile or business process context in which the transaction appears.\n *\n * @remarks\n * Fixed value to `urn:fdc:peppol.eu:poacc:bis:mlr:3`\n *\n * @default `urn:fdc:peppol.eu:poacc:bis:mlr:3`\n *\n * @summary Business process type identifier\n *\n * @name `cbc:ProfileID`\n */\n profileId: Schema.Literal(MESSAGE_LEVEL_RESPONSE_PROFILE_ID),\n /**\n * @description A transaction instance must contain an identifier. The identifier enables positive referencing the transaction instance for various puropses\n * including referencing between transactions that are part of the same process.\n *\n * @example\n * 23;\n *\n * @summary Response identifier\n *\n * @name cbc:ID\n */\n id: Schema.String,\n /**\n * @description The date on which the transaction instance was issued.\n *\n * @example\n * 2017 - 11 - 01;\n *\n * @summary Response issue date\n *\n * @format `YYYY-MM-DD`\n *\n * @name cbc:IssueDate\n */\n issueDate: PeppolIsoDateString,\n /**\n * @description The time at which the transaction instance was issued.\n *\n * @example\n * 12:01:34\n *\n * @summary Response issue time\n *\n * @format `hh:mm:ss`\n *\n * @name cbc:IssueDate\n */\n issueTime: Schema.optional(PeppolXsdTime),\n /**\n * @description The party sending an electronic message level response message back to the sending party of the business document.\n *\n * @summary Sender information\n */\n senderParty: PeppolMessageLevelResponseParty,\n /**\n * @description The party, an electronic message level response was addressed to, and who is supposed to process the message level response. This is the same\n * party as the sender of the business document.\n *\n * @summary Receiver information\n */\n receiverParty: PeppolMessageLevelResponseParty,\n /**\n * @description The document response is used to indicate the result of business document validation. The element\n * `cac:DocumentResponse/cac:Response/cbc:ResponseCode` MUST contain the overall result code.\n *\n * @summary Document response\n *\n * @name `cac:DocumentResponse`\n */\n documentResponse: PeppolMessageLevelResponseDocumentResponse,\n })\n) {}\n","import { Schema } from 'effect';\n\nimport { opStatusActionKeys } from '#/values/op-status-action.generated';\n\n/**\n * @description An OpenPeppol operation status action code (e.g. the outcome of a message response).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/OPStatusAction/\n */\nexport type PeppolOpStatusAction = typeof opStatusActionSchema.Type;\n\n/**\n * @description Validates an OpenPeppol operation status action code against the OPStatusAction codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid operation status action codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/OPStatusAction/\n */\nexport const opStatusActionSchema = Schema.Literals(opStatusActionKeys).pipe(Schema.brand('PeppolOpStatusAction'));\n","import { Schema } from 'effect';\n\nimport { opStatusReasonKeys } from '#/values/op-status-reason.generated';\n\n/**\n * @description An OpenPeppol operation status reason code (e.g. the reason for a message response outcome).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/OPStatusReason/\n */\nexport type PeppolOpStatusReason = typeof opStatusReasonSchema.Type;\n\n/**\n * @description Validates an OpenPeppol operation status reason code against the OPStatusReason codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid operation status reason codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/OPStatusReason/\n */\nexport const opStatusReasonSchema = Schema.Literals(opStatusReasonKeys).pipe(Schema.brand('PeppolOpStatusReason'));\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { opStatusActionSchema } from '#/schemas/values/op-status-action-schema.ts';\nimport { opStatusReasonSchema } from '#/schemas/values/op-status-reason-schema.ts';\n\nexport class PeppolInvoiceResponseStatusReasonCodeReason extends opaque<PeppolInvoiceResponseStatusReasonCodeReason>()(\n Schema.Struct({\n value: opStatusReasonSchema,\n /**\n * @description List identifier for clarification.\n *\n * @summary List identifier\n *\n * @name `@listId`\n */\n listId: Schema.Literal('OPStatusReason'),\n })\n) {}\n\nexport class PeppolInvoiceResponseStatusReasonCodeAction extends opaque<PeppolInvoiceResponseStatusReasonCodeAction>()(\n Schema.Struct({\n value: opStatusActionSchema,\n /**\n * @description List identifier for clarification.\n *\n * @summary List identifier\n *\n * @name `@listId`\n */\n listId: Schema.Literal('OPStatusAction'),\n })\n) {}\n\nexport const peppolInvoiceResponseStatusReasonCodeSchema = Schema.Union([\n PeppolInvoiceResponseStatusReasonCodeAction,\n PeppolInvoiceResponseStatusReasonCodeReason,\n]);\n\nexport type PeppolInvoiceResponseStatusReasonCode = typeof peppolInvoiceResponseStatusReasonCodeSchema.Type;\n","import { Schema } from 'effect';\n\nimport { peppolInvoiceResponseStatusReasonCodeSchema } from '#/schemas/peppol-invoice-response-status-reason-code-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport class PeppolInvoiceResponseCondition extends opaque<PeppolInvoiceResponseCondition>()(\n Schema.Struct({\n /**\n * @description A code defining the type of the detail.\n *\n * @example\n * `BT-75`;\n *\n * @summary Detail type code\n *\n * @name `cbc:AttributeId`\n */\n attributeId: Schema.String,\n /**\n * @description The value of the detail.\n *\n * @example\n * `EU123456789`;\n *\n * @summary Detail value\n *\n * @name `cbc:Description`\n */\n description: Schema.optional(Schema.String),\n })\n) {}\n\nexport class PeppolInvoiceResponseDocumentActualResponseStatus extends opaque<PeppolInvoiceResponseDocumentActualResponseStatus>()(\n Schema.Struct({\n /**\n * @description A code defining a clarification given for the invoice status.\n *\n * @summary Clarification code\n *\n * @name `cbc:StatusReasonCode`\n */\n statusReasonCode: Schema.optional(peppolInvoiceResponseStatusReasonCodeSchema),\n /**\n * @description The description of the clarification given for the invoice status.\n *\n * @example\n * `TAX reference not found`;\n *\n * @summary Clarification description\n *\n * @name `cbc:StatusReason\n */\n statusReason: Schema.optional(Schema.String),\n /**\n * @summary Condition\n *\n * @name `cac:Condition`\n */\n condition: Schema.optional(Schema.Array(PeppolInvoiceResponseCondition)),\n })\n) {}\n\nexport type InvoiceResponseDocumentActualResponseStatus = PeppolInvoiceResponseDocumentActualResponseStatus;\n","import { Schema } from 'effect';\n\nimport { invoiceResponseCodeNeedsSchema } from '#/invoice-response-codes/invoice-response-code-needs-schema.ts';\nimport { invoiceResponseCodeNotNeedsSchema } from '#/invoice-response-codes/invoice-response-code-not-needs-schema.ts';\nimport { PeppolInvoiceResponseDocumentActualResponseStatus } from '#/schemas/peppol-invoice-response-document-actual-response-status-schema.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nexport const withStatusCodes = Schema.Literals(invoiceResponseCodeNeedsSchema);\nexport const withoutStatusCodes = Schema.Literals(invoiceResponseCodeNotNeedsSchema);\n\nexport class PeppolInvoiceResponseDocumentActualResponseWithoutStatus extends opaque<PeppolInvoiceResponseDocumentActualResponseWithoutStatus>()(\n Schema.Struct({\n /**\n * @summary A code stating the status of the invoice in the process.\n *\n * @name `cbc:ResponseCode`\n */\n responseCode: withoutStatusCodes,\n /**\n * @description The date when the status became effective.\n *\n * @example\n * `2018-08-02`;\n *\n * @summary Status date\n *\n * @name `cbc:EffectiveDate`\n */\n effectiveDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description Clarification is mendatory when the status is UQ-`under query`,RE-`rejected` and `CA`-Conditionally accepted. Clarification may be given as a\n * code, a description or both. If both are used, they must indicate the same clarification.\n *\n * @summary Clarification information\n *\n * @name `cac:Status`\n */\n status: Schema.optional(Schema.Array(PeppolInvoiceResponseDocumentActualResponseStatus)),\n })\n) {}\n\nexport class PeppolInvoiceResponseDocumentActualResponseWithStatus extends opaque<PeppolInvoiceResponseDocumentActualResponseWithStatus>()(\n Schema.Struct({\n /**\n * @remarks\n * This is a rejection code that needs clarification in {@link status}\n *\n * @summary A code stating the status of the invoice in the process.\n *\n * @name `cbc:ResponseCode`\n */\n responseCode: withStatusCodes,\n /**\n * @description The date when the status became effective.\n *\n * @example\n * `2018-08-02`;\n *\n * @summary Status date\n *\n * @name `cbc:EffectiveDate`\n */\n effectiveDate: Schema.optional(PeppolIsoDateString),\n /**\n * @description Clarification is mendatory when the status is UQ-`under query`,RE-`rejected` and `CA`-Conditionally accepted. Clarification may be given as a\n * code, a description or both. If both are used, they must indicate the same clarification.\n *\n * @summary Clarification information\n *\n * @name `cac:Status`\n */\n status: Schema.Array(PeppolInvoiceResponseDocumentActualResponseStatus).check(Schema.isMinLength(1)),\n })\n) {}\n\nexport const peppolInvoiceResponseDocumentActualResponseSchema = Schema.Union([\n PeppolInvoiceResponseDocumentActualResponseWithStatus,\n PeppolInvoiceResponseDocumentActualResponseWithoutStatus,\n]);\n\nexport type InvoiceResponseDocumentActualResponse = typeof peppolInvoiceResponseDocumentActualResponseSchema.Type;\n","import { Schema, Struct } from 'effect';\n\nimport { INVOICE_RESPONSE_PROFILE_ID } from '#/constants/invoice-response-profile-id.ts';\nimport { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\nimport { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport { PeppolPartyLegalEntity } from '#/schemas/fields/peppol-party-legal-entity-schema.ts';\nimport { peppolInvoiceResponseDocumentActualResponseSchema } from '#/schemas/peppol-invoice-response-document-actual-response-schema.ts';\nimport { PeppolIsoDateString } from '#/schemas/peppol-iso-date-string.ts';\nimport { PeppolMessageLevelResponseParty } from '#/schemas/peppol-message-level-response-party-schema.ts';\nimport { PeppolMessageLevelResponse } from '#/schemas/peppol-message-level-response-schema.ts';\nimport { opaque } from '#/schemas/utils/opaque.ts';\nimport { peppolDocumentTypeCodeSchema } from '#/schemas/values/peppol-document-type-code-schema.ts';\n\nexport class PeppolInvoiceResponseDocumentResponsePartyName extends opaque<PeppolInvoiceResponseDocumentResponsePartyName>()(\n Schema.Struct({\n /**\n * @description - The party that issued the reference invoice\n * - The party who the referenced invoice is issued.\n *\n * @summary Seller/Buyer party name\n *\n * @name `cbc:Name`\n */\n name: Schema.String,\n })\n) {}\n\nexport class PeppolInvoiceResponseParty extends opaque<PeppolInvoiceResponseParty>()(\n PeppolMessageLevelResponseParty.pipe(\n Schema.fieldsAssign({\n /**\n * @summary Party partyIdentification\n */\n partyIdentification: Schema.optional(PeppolIdentifier),\n partyLegalEntity: PeppolPartyLegalEntity.mapFields(Struct.pick(['registrationName'])),\n })\n )\n) {}\n\nexport class PeppolInvoiceResponseSenderParty extends opaque<PeppolInvoiceResponseSenderParty>()(\n PeppolInvoiceResponseParty.pipe(\n Schema.fieldsAssign({\n /**\n * @summary Contact information\n *\n * @name `cac:Contact`\n */\n contact: Schema.optional(PeppolContact),\n })\n )\n) {}\n\n/**\n * @description Party schema used under `cac:DocumentReference/(cac:IssuerParty|cac:RecipientParty)`\n */\nexport class PeppolInvoiceResponseDocumentResponseParty extends opaque<PeppolInvoiceResponseDocumentResponseParty>()(\n Schema.Struct({\n /**\n * @summary Party partyIdentification\n */\n partyIdentification: Schema.optional(PeppolIdentifier),\n /**\n * @example\n * Seller Business Name AS\n *\n * @name cac:PartyName\n */\n partyName: PeppolInvoiceResponseDocumentResponsePartyName,\n })\n) {}\n\nexport type PeppolInvoiceDocumentResponseParty = PeppolInvoiceResponseDocumentResponseParty;\n\nexport class PeppolInvoiceResponseDocumentReference extends opaque<PeppolInvoiceResponseDocumentReference>()(\n Schema.Struct({\n /**\n * @description An identifier for the invoice that the status applies to. The invoice identifier must be of the main invoice number that appears in the invoice\n * itself.\n *\n * @example\n * `inv-99876`;\n *\n * @summary Invoice identifier\n *\n * @name `cbc:ID`\n */\n id: Schema.String,\n /**\n * @description The date on which the referenced invoice was issued.\n *\n * @example\n * `2018-08-01`;\n *\n * @summary Invoice issue date\n *\n * @name `cbc:IssueDate`\n */\n issueDate: Schema.optional(PeppolIsoDateString),\n /**\n * @example\n * `380`;\n *\n * @summary Identifier type code\n */\n documentTypeCode: peppolDocumentTypeCodeSchema,\n })\n) {}\n\nexport class PeppolInvoiceResponseDocumentResponse extends opaque<PeppolInvoiceResponseDocumentResponse>()(\n Schema.Struct({\n /**\n * @summary Response information\n *\n * @name `cac:Response`\n *\n * @cardinality (1..1)\n */\n response: peppolInvoiceResponseDocumentActualResponseSchema,\n /**\n * @summary Document reference\n *\n * @name `cac:DocumentReference`\n */\n documentReference: PeppolInvoiceResponseDocumentReference,\n /**\n * @summary Seller party information\n *\n * @name `cac:IssuerParty`\n */\n issuerParty: Schema.optional(PeppolInvoiceResponseDocumentResponseParty),\n /**\n * @summary Buyer party information\n *\n * @name `cac:RecipientParty`\n */\n recipientParty: Schema.optional(PeppolInvoiceResponseDocumentResponseParty),\n })\n) {}\n\n/**\n * @description The invoice response is a descendant of the message level response with more fields. Effect port of `invoiceResponseSchema`\n * (`z.extend(messageLevelResponse, ...)` → `messageLevelResponse.pipe(Schema.fieldsAssign(...))`), overriding `profileId` with\n * `Schema.Literal(INVOICE_RESPONSE_PROFILE_ID)` plus sender/receiver/documentResponse.\n */\nexport class PeppolInvoiceResponse extends opaque<PeppolInvoiceResponse>()(\n Schema.Struct({\n ...PeppolMessageLevelResponse.fields,\n profileId: Schema.Literal(INVOICE_RESPONSE_PROFILE_ID),\n /**\n * @description The party sending an electronic message level response message back to the sending party of the business document.\n *\n * @summary Sender information\n */\n senderParty: PeppolInvoiceResponseSenderParty,\n /**\n * @description The party, an electronic message level response was addressed to, and who is supposed to process the message level response. This is the same\n * party as the sender of the business document.\n *\n * @summary Receiver information\n */\n receiverParty: PeppolInvoiceResponseParty,\n /**\n * @description General comments or instructions that are revelant to the response as a whole.\n *\n * @example\n * `Please refere to previous email exchange regarding this invoice.`;\n *\n * @summary Invoice response note\n */\n note: Schema.optional(Schema.String),\n /**\n * @summary Document response\n */\n documentResponse: PeppolInvoiceResponseDocumentResponse,\n })\n) {}\n","import { Effect, Predicate } from 'effect';\n\n// oxlint-disable-next-line typescript/no-explicit-any\nexport type XmlNode = any;\n\nexport const getProp = Effect.fn(function* (node: XmlNode, ...path: Array<string>): Effect.fn.Return<XmlNode> {\n if (!Predicate.isTruthy(node)) {\n return undefined;\n }\n if (path.length === 0) {\n return node;\n }\n let currentNode = node;\n for (const key of path) {\n const newNode = currentNode[key];\n if (Predicate.isNotNullish(newNode)) {\n currentNode = newNode;\n continue;\n }\n if (key.includes(':')) {\n const [, localKey] = key.split(':') as [string, string, ...Array<string>];\n currentNode = currentNode[localKey];\n if (Predicate.isNullish(currentNode)) {\n return undefined;\n }\n } else {\n return undefined;\n }\n }\n return currentNode;\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const strOrUnd = Effect.fn('str-or-und')(function* <const T extends string = string>(\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<T | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n if (!Predicate.isObject(val)) return (val as { toString(): T }).toString();\n const raw = val as XmlNode;\n if (Predicate.isUndefined(raw['#text'])) return undefined;\n return raw['#text'].toString();\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport interface Identifier<T extends PeppolIdentifier['schemeId'] = string> extends PeppolIdentifier {\n schemeId?: T;\n}\n\nexport const decodeIdentifier = Effect.fn(function* <const T extends PeppolIdentifier['schemeId'] = string>(\n node: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<Identifier<T>> | undefined> {\n const val = yield* getProp(node, ...path);\n if (!Predicate.isTruthy(val) && val !== 0) return undefined;\n const id = yield* strOrUnd(val);\n if ((Predicate.isString(val) || Predicate.isNumber(val)) && Predicate.isTruthy(id)) {\n return { id };\n }\n if (!Predicate.isTruthy(id)) return undefined;\n return {\n id,\n // @ts-expect-error I don't want to bother with the typecheck\n schemeId: yield* strOrUnd(val, '@schemeID'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const getArray = Effect.fn(function* (node: XmlNode, ...path: Array<string>): Effect.fn.Return<Array<XmlNode>> {\n if (!Predicate.isTruthy(node)) return [];\n let currentNode = node;\n for (const key of path) {\n if (!Predicate.isTruthy(currentNode)) {\n return [];\n }\n if (Array.isArray(currentNode)) {\n const flattened = yield* Effect.forEach(\n currentNode,\n Effect.fn(function* (n: XmlNode) {\n return (yield* getProp(n, key)) || [];\n })\n );\n currentNode = flattened.flat();\n } else {\n currentNode = yield* getProp(currentNode, key);\n }\n }\n if (!Predicate.isTruthy(currentNode)) {\n return [];\n }\n return Array.isArray(currentNode) ? currentNode : [currentNode];\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAdditionalDocumentReference } from '#/schemas/fields/peppol-additional-document-reference-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeAdditionalDocumentReferences = Effect.fn(function* (\n doc: XmlNode\n): Effect.fn.Return<Array<RecursivePartial<PeppolAdditionalDocumentReference>> | undefined> {\n const arr = yield* getArray(doc, 'cac:AdditionalDocumentReference');\n if (arr.length === 0) {\n return undefined;\n }\n\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (additionalDocumentReference: XmlNode) {\n const attachment = yield* getProp(additionalDocumentReference, 'cac:Attachment');\n const embeddedDocumentBinaryObject = yield* getProp(attachment, 'cbc:EmbeddedDocumentBinaryObject');\n const externalReference = yield* getProp(attachment, 'cac:ExternalReference');\n return {\n attachment: Predicate.isNotNullish(attachment)\n ? {\n embeddedDocumentBinaryObject: Predicate.isNotNullish(embeddedDocumentBinaryObject)\n ? {\n content: yield* strOrUnd(embeddedDocumentBinaryObject),\n filename: yield* strOrUnd(embeddedDocumentBinaryObject, '@filename'),\n mimeCode: yield* strOrUnd(embeddedDocumentBinaryObject, '@mimeCode'),\n }\n : undefined,\n externalReference: Predicate.isNotNullish(externalReference) ? { uri: yield* strOrUnd(externalReference, 'cbc:URI') } : undefined,\n }\n : undefined,\n documentDescription: yield* strOrUnd(additionalDocumentReference, 'cbc:DocumentDescription'),\n documentTypeCode: yield* strOrUnd(additionalDocumentReference, 'cbc:DocumentTypeCode'),\n id: yield* decodeIdentifier(additionalDocumentReference, 'cbc:ID'),\n };\n })\n );\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\nimport type { PeppolCurrencyCode } from '#/schemas/values/currency-code-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeAmount = Effect.fn(function* (\n amount: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAmount> | undefined> {\n const val = yield* getProp(amount, ...path);\n if (!Predicate.isTruthy(val) && val !== 0) return undefined;\n if (Predicate.isObject(val)) {\n const raw = val as XmlNode;\n return { currencyId: String(raw['@currencyID']) as PeppolCurrencyCode, value: parseFloat(String(raw['#text'] ?? raw)) };\n }\n return { currencyId: '' as PeppolCurrencyCode, value: parseFloat(String(val)) };\n});\n","import { Effect, Predicate, SchemaIssue } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const bool = Effect.fn(function* <const T extends boolean = boolean>(node: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(node, ...path).pipe(\n Effect.filterOrFail(\n val => Predicate.isNotNullish(val),\n () => new SchemaIssue.MissingKey({ message: `Unable to find ${path.join('->')} into ${node}` })\n )\n );\n if (Predicate.isBoolean(val)) return val as T;\n if (Predicate.isObject(val) && Predicate.hasProperty(val, '#text') && Predicate.isNotUndefined(val['#text'])) return val['#text'] as T;\n return yield* Effect.fail(new SchemaIssue.MissingKey({ message: `Unable to find ${path.join('->')} into ${node}` }));\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const numOrUnd = Effect.fn(function* (node: XmlNode, ...path: Array<string>): Effect.fn.Return<number | undefined> {\n const val = yield* strOrUnd(node, ...path);\n\n return Predicate.isNotUndefined(val) ? parseFloat(val) : undefined;\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { bool } from '#/helpers/bool.ts';\nimport { numOrUnd } from '#/helpers/num-or-und.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeBaseAllowanceCharge = Effect.fn(function* (allowanceCharge: XmlNode) {\n return {\n allowanceChargeReason: yield* strOrUnd(allowanceCharge, 'cbc:AllowanceChargeReason'),\n allowanceChargeReasonCode: yield* strOrUnd(allowanceCharge, 'cbc:AllowanceChargeReasonCode'),\n amount: yield* decodeAmount(allowanceCharge, 'cbc:Amount'),\n baseAmount: yield* decodeAmount(allowanceCharge, 'cbc:BaseAmount'),\n chargeIndicator: yield* bool(allowanceCharge, 'cbc:ChargeIndicator'),\n multiplierFactorNumeric: yield* numOrUnd(allowanceCharge, 'cbc:MultiplierFactorNumeric'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getArray } from '#/helpers/get-array.ts';\n\nexport const decodeNodeList = Effect.fn(function* <A, E, R>(\n node: XmlNode,\n decodeItem: (item: XmlNode) => Effect.Effect<A, E, R>,\n ...path: Array<string>\n): Effect.fn.Return<Array<A> | undefined, E, R> {\n const arr = yield* getArray(node, ...path);\n if (arr.length === 0) return undefined;\n return yield* Effect.forEach(arr, decodeItem);\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeSimpleIdentifer = Effect.fn('decode-simple-identifier')(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<{ id: string }> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n return { id: yield* strOrUnd(node, 'cbc:ID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { numOrUnd } from '#/helpers/num-or-und.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeTaxCategory = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAllowanceCharge['taxCategory']> | undefined> {\n const taxCategory = yield* getProp(doc, ...path);\n if (Predicate.isNullish(taxCategory)) {\n return undefined;\n }\n\n return {\n id: yield* strOrUnd(taxCategory, 'cbc:ID'),\n percent: yield* numOrUnd(taxCategory, 'cbc:Percent'),\n taxSchemeId: yield* decodeSimpleIdentifer(taxCategory, 'cac:TaxScheme'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeBaseAllowanceCharge } from '#/decoders/fields/decode-base-allowance-charge.ts';\nimport { decodeNodeList } from '#/decoders/fields/decode-node-list.ts';\nimport { decodeTaxCategory } from '#/decoders/fields/decode-tax-category.ts';\n\nexport const decodeAllowanceCharges = Effect.fn(function* (allowanceCharges: XmlNode, ...path: Array<string>) {\n return yield* decodeNodeList(\n allowanceCharges,\n Effect.fn(function* (allowanceCharge: XmlNode) {\n return {\n ...(yield* decodeBaseAllowanceCharge(allowanceCharge)),\n taxCategory: yield* decodeTaxCategory(allowanceCharge, 'cac:TaxCategory'),\n } as RecursivePartial<PeppolAllowanceCharge>;\n }),\n ...path\n );\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolBillingReference } from '#/schemas/fields/peppol-billing-reference-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getArray } from '#/helpers/get-array.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeBillingReferences = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<Array<RecursivePartial<PeppolBillingReference>> | undefined> {\n const arr = yield* getArray(doc, ...path);\n if (arr.length === 0) return undefined;\n\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (billingReference: XmlNode) {\n return {\n invoiceDocumentReference: {\n id: yield* strOrUnd(billingReference, 'cac:InvoiceDocumentReference', 'cbc:ID'),\n issueDate: yield* strOrUnd(billingReference, 'cac:InvoiceDocumentReference', 'cbc:IssueDate'),\n },\n };\n })\n );\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAddress } from '#/schemas/fields/peppol-address-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeAddress = Effect.fn(function* (\n address: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAddress> | undefined> {\n const val = yield* getProp(address, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n additionalStreetName: yield* strOrUnd(val, 'cbc:AdditionalStreetName'),\n addressLine: yield* decodeAddressLine(val, 'cac:AddressLine'),\n cityName: yield* strOrUnd(val, 'cbc:CityName'),\n countryCode: yield* decodeCountryCode(val, 'cac:Country'),\n countrySubentity: yield* strOrUnd(val, 'cbc:CountrySubentity'),\n postalZone: yield* strOrUnd(val, 'cbc:PostalZone'),\n streetName: yield* strOrUnd(val, 'cbc:StreetName'),\n };\n});\n\nconst decodeAddressLine = Effect.fn(function* (\n address: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAddress['addressLine']> | undefined> {\n const val = yield* getProp(address, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { line: yield* strOrUnd(val, 'cbc:Line') };\n});\n\nconst decodeCountryCode = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolAddress['countryCode']> | undefined> {\n const country = yield* getProp(node, ...path);\n if (Predicate.isNullish(country)) return undefined;\n return { identificationCode: yield* strOrUnd(country, 'cbc:IdentificationCode') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolDelivery } from '#/schemas/fields/peppol-delivery-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAddress } from '#/decoders/fields/decode-address.ts';\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeDelivery = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDelivery> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n actualDeliveryDate: yield* strOrUnd(val, 'cbc:ActualDeliveryDate'),\n deliveryLocation: yield* decodeDeliveryLocation(val, 'cac:DeliveryLocation'),\n deliveryParty: yield* decodeDeliveryParty(val, 'cac:DeliveryParty'),\n };\n});\n\nconst decodeDeliveryLocation = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDelivery['deliveryLocation']> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return { address: yield* decodeAddress(val, 'cac:Address'), id: yield* decodeIdentifier(val, 'cbc:ID') };\n});\n\nconst decodeDeliveryParty = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDelivery['deliveryParty']> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n const name = yield* strOrUnd(val, 'cac:PartyName', 'cbc:Name');\n if (!Predicate.isTruthy(name)) return undefined;\n\n return { partyName: { name } };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeInvoicePeriod = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const invoicePeriod = yield* getProp(doc, ...path);\n if (Predicate.isNullish(invoicePeriod)) return undefined;\n return {\n descriptionCode: yield* strOrUnd(invoicePeriod, 'cbc:DescriptionCode'),\n endDate: yield* strOrUnd(invoicePeriod, 'cbc:EndDate'),\n startDate: yield* strOrUnd(invoicePeriod, 'cbc:StartDate'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolLegalMonetaryTotal } from '#/schemas/fields/peppol-legal-monetary-total-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeLegalMonetaryTotal = Effect.fn(function* (\n node: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolLegalMonetaryTotal> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n allowanceTotalAmount: yield* decodeAmount(val, 'cbc:AllowanceTotalAmount'),\n chargeTotalAmount: yield* decodeAmount(val, 'cbc:ChargeTotalAmount'),\n lineExtensionAmount: yield* decodeAmount(val, 'cbc:LineExtensionAmount'),\n payableAmount: yield* decodeAmount(val, 'cbc:PayableAmount'),\n payableRoundingAmount: yield* decodeAmount(val, 'cbc:PayableRoundingAmount'),\n prepaidAmount: yield* decodeAmount(val, 'cbc:PrepaidAmount'),\n taxExclusiveAmount: yield* decodeAmount(val, 'cbc:TaxExclusiveAmount'),\n taxInclusiveAmount: yield* decodeAmount(val, 'cbc:TaxInclusiveAmount'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolOrderReference } from '#/schemas/fields/peppol-order-reference-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeOrderReference = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolOrderReference> | undefined> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return { id: yield* strOrUnd(val, 'cbc:ID'), salesOrderId: yield* strOrUnd(val, 'cbc:SalesOrderID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeContact = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolContact> | undefined> {\n const contactNode = yield* getProp(node, ...path);\n if (Predicate.isNullish(contactNode)) return undefined;\n\n return {\n electronicMail: yield* strOrUnd(contactNode, 'cbc:ElectronicMail'),\n name: yield* strOrUnd(contactNode, 'cbc:Name'),\n telephone: yield* strOrUnd(contactNode, 'cbc:Telephone'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\n\nexport const decodeElectronicAddress = Effect.fn(function* <const T extends PeppolIdentifier['schemeId'] = string>(\n node: XmlNode | undefined,\n ...path: Array<string>\n) {\n const value = yield* decodeIdentifier<T>(node, ...path);\n if (Predicate.isTruthy(value?.schemeId)) {\n // @ts-expect-error I don't want to bother with the typecheck\n value.schemeId = (value.schemeId as string).padStart(4, '0') as T;\n }\n return value;\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyTaxSchema } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePartyTaxScheme = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPartyTaxSchema> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n return { companyId: yield* strOrUnd(node, 'cbc:CompanyID'), taxSchemeId: yield* decodeSimpleIdentifer(node, 'cac:TaxScheme') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyTaxSchema } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodePartyTaxScheme } from '#/decoders/fields/decode-party-tax-scheme.ts';\nimport { getArray } from '#/helpers/get-array.ts';\n\nexport const decodePartiesTaxScheme = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<Array<PeppolPartyTaxSchema>> | undefined> {\n const node = yield* getArray(doc, ...path);\n if (node.length === 0) return undefined;\n\n const values = yield* Effect.forEach(\n node,\n Effect.fn(function* (n: XmlNode) {\n return yield* decodePartyTaxScheme(n);\n })\n );\n return values.filter(Predicate.isNotNullish);\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyLegalEntitySchema } from '#/schemas/fields/peppol-party-legal-entity-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePartyLegalEntity = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPartyLegalEntitySchema> | undefined> {\n const partyLegalEntityNode = yield* getProp(node, ...path);\n if (Predicate.isNullish(partyLegalEntityNode)) return undefined;\n\n return {\n companyId: yield* decodeIdentifier(partyLegalEntityNode, 'cbc:CompanyID'),\n companyLegalForm: yield* strOrUnd(partyLegalEntityNode, 'cbc:CompanyLegalForm'),\n registrationName: yield* strOrUnd(partyLegalEntityNode, 'cbc:RegistrationName'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAddress } from '#/decoders/fields/decode-address.ts';\nimport { decodeContact } from '#/decoders/fields/decode-contact.ts';\nimport { decodeElectronicAddress } from '#/decoders/fields/decode-electronic-address.ts';\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { decodePartiesTaxScheme } from '#/decoders/fields/decode-parties-tax-scheme.ts';\nimport { decodePartyLegalEntity } from '#/decoders/fields/decode-party-legal-entity.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeParty = Effect.fn(function* (party: XmlNode | undefined, ...path: Array<string>) {\n const val = yield* getProp(party, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n contact: yield* decodeContact(val, 'cac:Contact'),\n endpointId: yield* decodeElectronicAddress(val, 'cbc:EndpointID'),\n partyIdentification: yield* decodeAdditionalIdentifiers(val, 'cac:PartyIdentification'),\n partyLegalEntity: yield* decodePartyLegalEntity(val, 'cac:PartyLegalEntity'),\n partyName: yield* decodePartyName(val, 'cac:PartyName'),\n partyTaxSchemes: yield* decodePartiesTaxScheme(val, 'cac:PartyTaxScheme'),\n postalAddress: yield* decodeAddress(val, 'cac:PostalAddress'),\n };\n});\n\nconst decodePartyName = Effect.fn(function* (node: XmlNode, ...path: Array<string>) {\n const partyNameNode = yield* getProp(node, ...path);\n if (Predicate.isNullish(partyNameNode)) return undefined;\n return { name: yield* strOrUnd(partyNameNode, 'cbc:Name') };\n});\n\nconst decodeAdditionalIdentifiers = Effect.fn(function* (node: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { id: yield* decodeIdentifier(val, 'cbc:ID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPayeeParty } from '#/schemas/fields/peppol-payee-party-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePayeeParty = Effect.fn(function* (\n payee: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPayeeParty> | undefined> {\n const node = yield* getProp(payee, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return {\n partyIdentification: yield* decodePartyIdentification(node, 'cac:PartyIdentification'),\n partyLegalEntity: yield* decodePartyLegalEntity(node, 'cac:PartyLegalEntity'),\n partyName: yield* decodePartyName(node, 'cac:PartyName'),\n };\n});\n\nconst decodePartyLegalEntity = Effect.fn(function* (\n party: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPayeeParty['partyLegalEntity']> | undefined> {\n const node = yield* getProp(party, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return { companyId: yield* decodeIdentifier(node, 'cbc:CompanyID') };\n});\n\nconst decodePartyName = Effect.fn(function* (\n party: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPayeeParty['partyName']> | undefined> {\n const node = yield* getProp(party, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return { name: yield* strOrUnd(node, 'cbc:Name') };\n});\n\nconst decodePartyIdentification = Effect.fn(function* (\n party: XmlNode | undefined,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPayeeParty['partyIdentification']> | undefined> {\n const node = yield* getProp(party, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return { id: yield* decodeIdentifier(node, 'cbc:ID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport type { PeppolPaymentMeans } from '#/schemas/fields/peppol-payment-means-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePaymentMeans = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<Array<RecursivePartial<PeppolPaymentMeans>> | undefined> {\n const arr = yield* getArray(doc, ...path);\n if (arr.length === 0) return undefined;\n\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (paymentMeans: XmlNode) {\n const cardAccount = yield* getProp(paymentMeans, 'cac:CardAccount');\n\n return {\n cardAccount: Predicate.isNotNullish(cardAccount)\n ? {\n holderName: yield* strOrUnd(cardAccount, 'cbc:HolderName'),\n networkId: yield* strOrUnd(cardAccount, 'cbc:NetworkID'),\n primaryAccountNumberId: yield* strOrUnd(cardAccount, 'cbc:PrimaryAccountNumberID'),\n }\n : undefined,\n payeeFinancialAccount: yield* decodePayeeFinancialAccount(paymentMeans, 'cac:PayeeFinancialAccount'),\n paymentDueDate: yield* strOrUnd(paymentMeans, 'cbc:PaymentDueDate'),\n paymentId: yield* strOrUnd(paymentMeans, 'cbc:PaymentID'),\n paymentMandate: yield* decodePaymentMendates(paymentMeans, 'cac:PaymentMandate'),\n paymentMeansCode: yield* decodePaymentMeansCodes(paymentMeans, 'cbc:PaymentMeansCode'),\n };\n })\n );\n});\n\nconst decodePayeeFinancialAccount = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPaymentMeans['payeeFinancialAccount']> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n let financialInstitutionBranch: RecursivePartial<PeppolIdentifier> | undefined = yield* decodeSimpleIdentifer(\n node,\n 'cac:FinancialInstitutionBranch'\n );\n // NOTE: this 2 way comparision is necessary to ensure that `id` is null with a returned value which means that it is not direct child\n if (Predicate.isNotUndefined(financialInstitutionBranch) && !Predicate.isTruthy(financialInstitutionBranch?.id)) {\n financialInstitutionBranch = yield* decodeSimpleIdentifer(node, 'cac:FinancialInstitutionBranch', 'ns0:FinancialInstitution');\n }\n return { financialInstitutionBranch, id: yield* strOrUnd(node, 'cbc:ID'), name: yield* strOrUnd(node, 'cbc:Name') };\n});\n\nconst decodePaymentMendates = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPaymentMeans['paymentMandate']> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n return { id: yield* strOrUnd(node, 'cbc:ID'), payerFinancialAccountId: yield* decodeSimpleIdentifer(node, 'cac:PayerFinancialAccount') };\n});\n\nconst decodePaymentMeansCodes = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPaymentMeans['paymentMeansCode']> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) return undefined;\n return { code: yield* strOrUnd(node), name: yield* strOrUnd(node, '@name') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPaymentTerms } from '#/schemas/fields/peppol-payment-terms-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodePaymentTerms = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolPaymentTerms> | undefined> {\n const terms = yield* getProp(doc, ...path);\n if (Predicate.isNullish(terms)) return undefined;\n const note = yield* getProp(terms, 'cbc:Note');\n return Predicate.isNotNullish(note) ? { note: yield* strOrUnd(note) } : undefined;\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolTaxRepresentativeParty } from '#/schemas/fields/peppol-tax-representative-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAddress } from '#/decoders/fields/decode-address.ts';\nimport { decodePartyTaxScheme } from '#/decoders/fields/decode-party-tax-scheme.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeTaxRepresentativeParty = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolTaxRepresentativeParty> | undefined> {\n const taxRepresentative = yield* getProp(doc, ...path);\n if (Predicate.isNullish(taxRepresentative)) return undefined;\n\n return {\n name: yield* strOrUnd(taxRepresentative, 'cac:PartyName', 'cbc:Name'),\n partyTaxScheme: yield* decodePartyTaxScheme(taxRepresentative, 'cac:PartyTaxScheme'),\n postalAddress: yield* decodeAddress(taxRepresentative, 'cac:PostalAddress'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolTaxSubTotal } from '#/schemas/fields/peppol-tax-subtotal-schema.ts';\nimport type { PeppolTaxTotal } from '#/schemas/fields/peppol-tax-totals-base-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { numOrUnd } from '#/helpers/num-or-und.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeTaxTotals = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<Array<RecursivePartial<PeppolTaxTotal>> | undefined> {\n const arr = yield* getArray(doc, ...path);\n if (arr.length === 0) return undefined;\n\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (n: XmlNode) {\n return { taxAmount: yield* decodeAmount(n, 'cbc:TaxAmount'), taxSubtotals: yield* decodeTaxSubTotal(n, 'cac:TaxSubtotal') };\n })\n );\n});\n\nconst decodeTaxSubTotal = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<Array<RecursivePartial<PeppolTaxSubTotal>> | undefined> {\n const arr = yield* getArray(doc, ...path);\n if (arr.length === 0) return undefined;\n return yield* Effect.forEach(\n arr,\n Effect.fn(function* (node: XmlNode) {\n return {\n taxAmount: yield* decodeAmount(node, 'cbc:TaxAmount'),\n taxCategory: yield* decodeTaxCategory(node, 'cac:TaxCategory'),\n taxableAmount: yield* decodeAmount(node, 'cbc:TaxableAmount'),\n };\n })\n );\n});\n\nconst decodeTaxCategory = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolTaxSubTotal['taxCategory']> | undefined> {\n const node = yield* getProp(doc, ...path);\n if (Predicate.isNullish(node)) {\n return undefined;\n }\n\n return {\n id: yield* strOrUnd(node, 'cbc:ID'),\n percent: yield* numOrUnd(node, 'cbc:Percent'),\n taxExemptionReason: yield* strOrUnd(node, 'cbc:TaxExemptionReason'),\n taxExemptionReasonCode: yield* strOrUnd(node, 'cbc:TaxExemptionReasonCode'),\n taxSchemeId: yield* decodeSimpleIdentifer(node, 'cac:TaxScheme'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAdditionalDocumentReferences } from '#/decoders/fields/decode-additional-document-references.ts';\nimport { decodeAllowanceCharges } from '#/decoders/fields/decode-allowance-charges.ts';\nimport { decodeBillingReferences } from '#/decoders/fields/decode-billing-references.ts';\nimport { decodeDelivery } from '#/decoders/fields/decode-delivery.ts';\nimport { decodeInvoicePeriod } from '#/decoders/fields/decode-invoice-period.ts';\nimport { decodeLegalMonetaryTotal } from '#/decoders/fields/decode-legal-monetary-total.ts';\nimport { decodeOrderReference } from '#/decoders/fields/decode-order-reference.ts';\nimport { decodeParty } from '#/decoders/fields/decode-party.ts';\nimport { decodePayeeParty } from '#/decoders/fields/decode-payee-party.ts';\nimport { decodePaymentMeans } from '#/decoders/fields/decode-payment-means.ts';\nimport { decodePaymentTerms } from '#/decoders/fields/decode-payment-terms.ts';\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { decodeTaxRepresentativeParty } from '#/decoders/fields/decode-tax-representative-party.ts';\nimport { decodeTaxTotals } from '#/decoders/fields/decode-tax-totals.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeBilling = Effect.fn('decode-billing')(function* (doc: XmlNode) {\n return {\n accountingCost: yield* strOrUnd(doc, 'cbc:AccountingCost'),\n accountingCustomerParty: yield* decodeParty(doc, 'cac:AccountingCustomerParty', 'cac:Party'),\n accountingSupplierParty: yield* decodeParty(doc, 'cac:AccountingSupplierParty', 'cac:Party'),\n additionalDocumentReferences: yield* decodeAdditionalDocumentReferences(doc),\n allowanceCharges: yield* decodeAllowanceCharges(doc, 'cac:AllowanceCharge'),\n billingReferences: yield* decodeBillingReferences(doc, 'cac:BillingReference'),\n buyerReference: yield* strOrUnd(doc, 'cbc:BuyerReference'),\n contractDocumentReference: yield* decodeSimpleIdentifer(doc, 'cac:ContractDocumentReference'),\n customizationId: yield* strOrUnd(doc, 'cbc:CustomizationID'),\n delivery: yield* decodeDelivery(doc, 'cac:Delivery'),\n despatchDocumentReference: yield* decodeSimpleIdentifer(doc, 'cac:DespatchDocumentReference'),\n documentCurrencyCode: yield* strOrUnd(doc, 'cbc:DocumentCurrencyCode'),\n id: yield* strOrUnd(doc, 'cbc:ID'),\n invoicePeriod: yield* decodeInvoicePeriod(doc, 'cac:InvoicePeriod'),\n issueDate: yield* strOrUnd(doc, 'cbc:IssueDate'),\n legalMonetaryTotal: yield* decodeLegalMonetaryTotal(doc, 'cac:LegalMonetaryTotal'),\n note: yield* strOrUnd(doc, 'cbc:Note'),\n orderReference: yield* decodeOrderReference(doc, 'cac:OrderReference'),\n originatorDocumentReference: yield* decodeSimpleIdentifer(doc, 'cac:OriginatorDocumentReference'),\n payeeParty: yield* decodePayeeParty(doc, 'cac:PayeeParty'),\n paymentMeans: yield* decodePaymentMeans(doc, 'cac:PaymentMeans'),\n paymentTerms: yield* decodePaymentTerms(doc, 'cac:PaymentTerms'),\n profileId: yield* strOrUnd(doc, 'cbc:ProfileID'),\n receiptDocumentReference: yield* decodeSimpleIdentifer(doc, 'cac:ReceiptDocumentReference'),\n taxCurrencyCode: yield* strOrUnd(doc, 'cbc:TaxCurrencyCode'),\n taxPointDate: yield* strOrUnd(doc, 'cbc:TaxPointDate'),\n taxRepresentativeParty: yield* decodeTaxRepresentativeParty(doc, 'cac:TaxRepresentativeParty'),\n taxTotals: yield* decodeTaxTotals(doc, 'cac:TaxTotal'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeInvoiceLinePeriod = Effect.fn(function* (\n doc: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolInvoiceLinePeriod> | undefined> {\n const invoicePeriod = yield* getProp(doc, ...path);\n return Predicate.isNotNullish(invoicePeriod)\n ? { endDate: yield* strOrUnd(invoicePeriod, 'cbc:EndDate'), startDate: yield* strOrUnd(invoicePeriod, 'cbc:StartDate') }\n : undefined;\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolLineAllowanceCharge } from '#/schemas/fields/peppol-line-allowance-charge-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeBaseAllowanceCharge } from '#/decoders/fields/decode-base-allowance-charge.ts';\nimport { decodeNodeList } from '#/decoders/fields/decode-node-list.ts';\n\nexport const decodeLineAllowanceCharges = Effect.fn(function* (allowanceCharges: XmlNode, ...path: Array<string>) {\n return yield* decodeNodeList(\n allowanceCharges,\n Effect.fn(function* (allowanceCharge: XmlNode) {\n return { ...(yield* decodeBaseAllowanceCharge(allowanceCharge)) } as RecursivePartial<PeppolLineAllowanceCharge>;\n }),\n ...path\n );\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { bool } from '#/helpers/bool.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodePriceAllowanceCharge = Effect.fn(function* (allowanceCharges: XmlNode, ...path: Array<string>) {\n const allowanceCharge = yield* getProp(allowanceCharges, ...path);\n if (Predicate.isNullish(allowanceCharge)) {\n return undefined;\n }\n return {\n amount: yield* decodeAmount(allowanceCharge, 'cbc:Amount'),\n baseAmount: yield* decodeAmount(allowanceCharge, 'cbc:BaseAmount'),\n chargeIndicator: yield* bool<false>(allowanceCharge, 'cbc:ChargeIndicator'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { numOrUnd } from '#/helpers/num-or-und.ts';\n\nexport const decodeQuantity = Effect.fn(function* (quantity: XmlNode | undefined, ...path: Array<string>) {\n const val = yield* getProp(quantity, ...path);\n if (!Predicate.isTruthy(val) && val !== 0) return undefined;\n if (Predicate.isObject(val)) {\n return { unitCode: yield* getProp(val, '@unitCode'), value: yield* numOrUnd(val) };\n }\n return { value: yield* numOrUnd(val) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { decodePriceAllowanceCharge } from '#/decoders/fields/decode-price-allowance-charge.ts';\nimport { decodeQuantity } from '#/decoders/fields/decode-quantity.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeLinePrice = Effect.fn(function* (price: XmlNode, ...path: Array<string>) {\n const node = yield* getProp(price, ...path);\n if (Predicate.isNullish(node)) return undefined;\n\n return {\n allowanceCharge: yield* decodePriceAllowanceCharge(node, 'cac:AllowanceCharge'),\n baseQuantity: yield* decodeQuantity(node, 'cbc:BaseQuantity'),\n priceAmount: yield* decodeAmount(node, 'cbc:PriceAmount'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolDocumentLine } from '#/schemas/peppol-document-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeAmount } from '#/decoders/fields/decode-amount.ts';\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { decodeInvoiceLinePeriod } from '#/decoders/fields/decode-invoice-line-period.ts';\nimport { decodeLineAllowanceCharges } from '#/decoders/fields/decode-line-allowance-charges.ts';\nimport { decodeLinePrice } from '#/decoders/fields/decode-line-price.ts';\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { decodeTaxCategory } from '#/decoders/fields/decode-tax-category.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\ntype PeppolDocumentLineItem = PeppolDocumentLine['item'];\n\nexport const decodeLineShared = Effect.fn(function* (lineShared: XmlNode) {\n const item = yield* getProp(lineShared, 'cac:Item');\n const orderLineReference = yield* getProp(lineShared, 'cac:OrderLineReference');\n\n return {\n accountingCost: yield* strOrUnd(lineShared, 'cbc:AccountingCost'),\n allowanceCharges: yield* decodeLineAllowanceCharges(lineShared, 'cac:AllowanceCharge'),\n documentReference: yield* Effect.forEach(\n yield* getArray(lineShared, 'cac:DocumentReference'),\n Effect.fn(function* (documentReference: XmlNode) {\n return {\n documentTypeCode: yield* strOrUnd(documentReference, 'cbc:DocumentTypeCode'),\n id: yield* strOrUnd(documentReference, 'cbc:ID'),\n schemeId: yield* strOrUnd(documentReference, 'cbc:ID', '@schemeID'),\n };\n })\n ),\n id: yield* strOrUnd(lineShared, 'cbc:ID'),\n invoicePeriod: yield* decodeInvoiceLinePeriod(lineShared, 'cac:InvoicePeriod'),\n item: {\n additionalItemProperties: yield* Effect.forEach(\n yield* getArray(item, 'cac:AdditionalItemProperty'),\n Effect.fn(function* (n: XmlNode) {\n return { name: yield* strOrUnd(n, 'cbc:Name'), value: yield* strOrUnd(n, 'cbc:Value') };\n })\n ),\n buyersItemIdentification: yield* decodeSimpleIdentifer(item, 'cac:BuyersItemIdentification'),\n classifiedTaxCategory: yield* decodeTaxCategory(item, 'cac:ClassifiedTaxCategory'),\n commodityClassifications: yield* Effect.forEach(\n yield* getArray(item, 'cac:CommodityClassification'),\n Effect.fn(function* (commodityClassification: XmlNode) {\n return {\n itemClassification: {\n id: yield* strOrUnd(commodityClassification, 'cbc:ItemClassificationCode'),\n listId: yield* strOrUnd(commodityClassification, 'cbc:ItemClassificationCode', '@listID'),\n listVersionId: yield* strOrUnd(commodityClassification, 'cbc:ItemClassificationCode', '@listVersionID'),\n },\n };\n })\n ),\n description: yield* strOrUnd(item, 'cbc:Description'),\n name: yield* strOrUnd(item, 'cbc:Name'),\n originCountryCode: yield* decodeOriginCountryCode(item, 'cac:OriginCountry'),\n sellersItemIdentification: yield* decodeSimpleIdentifer(item, 'cac:SellersItemIdentification'),\n standardItemIdentification: yield* decodeStandardItem(item, 'cac:StandardItemIdentification'),\n },\n lineExtensionAmount: yield* decodeAmount(lineShared, 'cbc:LineExtensionAmount'),\n note: yield* strOrUnd(lineShared, 'cbc:Note'),\n orderLineReference: Predicate.isNotNullish(orderLineReference) ? { lineId: yield* strOrUnd(orderLineReference, 'cbc:LineID') } : undefined,\n price: yield* decodeLinePrice(lineShared, 'cac:Price'),\n };\n});\n\nconst decodeStandardItem = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDocumentLineItem['standardItemIdentification']>> {\n const val = yield* getProp(node, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { id: yield* decodeIdentifier(val, 'cbc:ID') };\n});\n\nconst decodeOriginCountryCode = Effect.fn(function* (\n node: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolDocumentLineItem['originCountryCode']>> {\n const country = yield* getProp(node, ...path);\n if (Predicate.isNullish(country)) return undefined;\n return { identificationCode: yield* strOrUnd(country, 'cbc:IdentificationCode') };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeLineShared } from '#/decoders/fields/decode-line-shared.ts';\nimport { decodeNodeList } from '#/decoders/fields/decode-node-list.ts';\nimport { decodeQuantity } from '#/decoders/fields/decode-quantity.ts';\n\nexport const decodeCreditNoteLines = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n return yield* decodeNodeList(\n doc,\n Effect.fn(function* (lineNode: XmlNode) {\n const shared = yield* decodeLineShared(lineNode);\n return { ...shared, creditedQuantity: (yield* decodeQuantity(lineNode, 'cbc:CreditedQuantity'))! };\n }),\n ...path\n ).pipe(Effect.map(items => items ?? []));\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeBilling } from '#/decoders/decode-billing.ts';\nimport { decodeCreditNoteLines } from '#/decoders/fields/decode-credit-note-lines.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeCreditNote = Effect.fn('decode-credit-note')(function* (value: XmlNode) {\n const root = value || {};\n const doc: XmlNode = (yield* getProp(root, 'ubl:CreditNote')) ?? root; // accept either the whole JSON or just the CreditNote node\n\n return {\n ...(yield* decodeBilling(doc)),\n creditNoteLines: yield* decodeCreditNoteLines(doc, 'cac:CreditNoteLine'),\n creditNoteTypeCode: yield* strOrUnd(doc, 'cbc:CreditNoteTypeCode'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeApplicationResponseBase = Effect.fn(function* (value: XmlNode) {\n const root = value || {};\n const doc: XmlNode = yield* getProp(root, 'ubl:ApplicationResponse');\n\n return {\n base: {\n customizationId: yield* strOrUnd(doc, 'cbc:CustomizationID'),\n id: yield* strOrUnd(doc, 'cbc:ID'),\n issueDate: yield* strOrUnd(doc, 'cbc:IssueDate'),\n issueTime: yield* strOrUnd(doc, 'cbc:IssueTime'),\n },\n doc,\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolInvoiceDocumentResponseParty } from '#/schemas/peppol-invoice-response-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeInvoiceMessageDocumentParty = Effect.fn(function* (\n party: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolInvoiceDocumentResponseParty> | undefined> {\n const val = yield* getProp(party, ...path);\n if (Predicate.isNullish(val)) return undefined;\n const partyName = yield* getProp(val, 'cac:PartyName');\n return {\n partyIdentification: yield* decodeIdentifier(val, 'cac:PartyIdentification', 'cbc:ID'),\n partyName: Predicate.isNotNullish(partyName) ? { name: yield* strOrUnd(partyName, 'cbc:Name') } : undefined,\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeContact } from '#/decoders/fields/decode-contact.ts';\nimport { decodeElectronicAddress } from '#/decoders/fields/decode-electronic-address.ts';\nimport { decodeIdentifier } from '#/decoders/fields/decode-identifier.ts';\nimport { decodePartyLegalEntity } from '#/decoders/fields/decode-party-legal-entity.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeInvoiceMessageParty = Effect.fn(function* (party: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(party, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n contact: yield* decodeContact(val, 'cac:Contact'),\n endpointId: yield* decodeElectronicAddress(val, 'cbc:EndpointID'),\n partyIdentification: yield* decodeIdentifier(val, 'cac:PartyIdentification', 'cbc:ID'),\n partyLegalEntity: yield* decodePartyLegalEntity(val, 'cac:PartyLegalEntity'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeApplicationResponseBase } from '#/decoders/fields/decode-application-response.ts';\nimport { decodeInvoiceMessageDocumentParty } from '#/decoders/fields/decode-invoice-message-document-party.ts';\nimport { decodeInvoiceMessageParty } from '#/decoders/fields/decode-invoice-message-party.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nconst decodeStatusReasonCode = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (!Predicate.isTruthy(val) && val !== 0) return undefined;\n const value = yield* strOrUnd(val);\n if (Predicate.isString(val) || Predicate.isNumber(val)) {\n return { value };\n }\n if (!Predicate.isTruthy(value)) return undefined;\n return { listId: yield* strOrUnd(val, '@listID'), value };\n});\n\nconst decodeCondition = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getArray(doc, ...path);\n /* istanbul ignore next -- getArray never returns a falsy value */\n if (Predicate.isNullish(val)) return undefined;\n return yield* Effect.forEach(\n val,\n Effect.fn(function* (item: XmlNode) {\n return { attributeId: yield* strOrUnd(item, 'cbc:AttributeID'), description: yield* strOrUnd(item, 'cbc:Description') };\n })\n );\n});\n\nconst decodeDocumentResponseStatus = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getArray(doc, ...path);\n /* istanbul ignore next -- getArray never returns a falsy value */\n if (Predicate.isNullish(val)) return undefined;\n return yield* Effect.forEach(\n val,\n Effect.fn(function* (item: XmlNode) {\n return {\n condition: yield* decodeCondition(item, 'cac:Condition'),\n statusReason: yield* strOrUnd(item, 'cbc:StatusReason'),\n statusReasonCode: yield* decodeStatusReasonCode(item, 'cbc:StatusReasonCode'),\n };\n })\n );\n});\n\nconst decodeDocumentActualResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n effectiveDate: yield* strOrUnd(val, 'cbc:EffectiveDate'),\n responseCode: yield* strOrUnd(val, 'cbc:ResponseCode'),\n status: yield* decodeDocumentResponseStatus(val, 'cac:Status'),\n };\n});\n\nconst decodeDocumentReference = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n documentTypeCode: yield* strOrUnd(val, 'cbc:DocumentTypeCode'),\n id: yield* strOrUnd(val, 'cbc:ID'),\n issueDate: yield* strOrUnd(val, 'cbc:IssueDate'),\n };\n});\n\nconst decodeDocumentResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n documentReference: yield* decodeDocumentReference(val, 'cac:DocumentReference'),\n issuerParty: yield* decodeInvoiceMessageDocumentParty(val, 'cac:IssuerParty'),\n recipientParty: yield* decodeInvoiceMessageDocumentParty(val, 'cac:RecipientParty'),\n response: yield* decodeDocumentActualResponse(val, 'cac:Response'),\n };\n});\n\nexport const decodeInvoiceResponse = Effect.fn(function* (value: XmlNode) {\n const { base, doc } = yield* decodeApplicationResponseBase(value);\n\n return {\n ...base,\n documentResponse: yield* decodeDocumentResponse(doc, 'cac:DocumentResponse'),\n note: yield* strOrUnd(doc, 'cbc:Note'),\n profileId: yield* strOrUnd<'urn:fdc:peppol.eu:poacc:bis:invoice_response:3'>(doc, 'cbc:ProfileID'),\n receiverParty: yield* decodeInvoiceMessageParty(doc, 'cac:ReceiverParty'),\n senderParty: yield* decodeInvoiceMessageParty(doc, 'cac:SenderParty'),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeLineShared } from '#/decoders/fields/decode-line-shared.ts';\nimport { decodeNodeList } from '#/decoders/fields/decode-node-list.ts';\nimport { decodeQuantity } from '#/decoders/fields/decode-quantity.ts';\n\nexport const decodeInvoiceLines = Effect.fn('decode-invoice-lines')(function* (doc: XmlNode, ...path: Array<string>) {\n return yield* decodeNodeList(\n doc,\n Effect.fn(function* (lineNode: XmlNode) {\n const shared = yield* decodeLineShared(lineNode);\n return { ...shared, invoicedQuantity: yield* decodeQuantity(lineNode, 'cbc:InvoicedQuantity') };\n }),\n ...path\n );\n});\n","import { Effect } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeBilling } from '#/decoders/decode-billing.ts';\nimport { decodeInvoiceLines } from '#/decoders/fields/decode-invoice-lines.ts';\nimport { decodeSimpleIdentifer } from '#/decoders/fields/decode-simple-identifier.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nexport const decodeInvoice = Effect.fn('decode-invoice')(function* (value: XmlNode) {\n const root = value || {};\n const doc: XmlNode = (yield* getProp(root, 'ubl:Invoice')) ?? root;\n\n return {\n ...(yield* decodeBilling(doc)),\n dueDate: yield* strOrUnd(doc, 'cbc:DueDate'),\n invoiceLines: yield* decodeInvoiceLines(doc, 'cac:InvoiceLine'),\n invoiceTypeCode: yield* strOrUnd(doc, 'cbc:InvoiceTypeCode'),\n projectReference: yield* decodeSimpleIdentifer(doc, 'cac:ProjectReference'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolMessageLevelResponseParty } from '#/schemas/peppol-message-level-response-party-schema.ts';\nimport type { RecursivePartial } from '#/types.ts';\n\nimport { decodeElectronicAddress } from '#/decoders/fields/decode-electronic-address.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\n\nexport const decodeMessageLevelParty = Effect.fn(function* (\n party: XmlNode,\n ...path: Array<string>\n): Effect.fn.Return<RecursivePartial<PeppolMessageLevelResponseParty> | undefined> {\n const val = yield* getProp(party, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { endpointId: yield* decodeElectronicAddress(val, 'cbc:EndpointID') };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\n\nimport { decodeApplicationResponseBase } from '#/decoders/fields/decode-application-response.ts';\nimport { decodeMessageLevelParty } from '#/decoders/fields/decode-message-level-party.ts';\nimport { getArray } from '#/helpers/get-array.ts';\nimport { getProp } from '#/helpers/get-prop.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\n\nconst decodeLineResponseContent = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n description: yield* strOrUnd(val, 'cbc:Description'),\n responseCode: yield* strOrUnd(val, 'cbc:ResponseCode'),\n status: { statusReasonCode: yield* strOrUnd<'BV' | 'BW' | 'SV'>(val, 'cac:Status', 'cbc:StatusReasonCode') },\n };\n});\n\nconst decodeLineResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getArray(doc, ...path);\n /* istanbul ignore next -- getArray never returns a falsy value */\n if (Predicate.isNullish(val)) return undefined;\n\n return yield* Effect.forEach(\n val,\n Effect.fn(function* (line: XmlNode) {\n return {\n lineReference: { lineId: yield* strOrUnd(line, 'cac:LineReference', 'cbc:LineID') },\n response: yield* decodeLineResponseContent(line, 'cac:Response'),\n };\n })\n );\n});\n\nconst decodeResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return { description: yield* strOrUnd(val, 'cbc:Description'), responseCode: yield* strOrUnd(val, 'cbc:ResponseCode') };\n});\n\nconst decodeDocumentReference = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n return {\n documentTypeCode: yield* strOrUnd(val, 'cbc:DocumentTypeCode'),\n id: yield* strOrUnd(val, 'cbc:ID'),\n versionId: yield* strOrUnd(val, 'cbc:VersionID'),\n };\n});\n\nconst decodeDocumentResponse = Effect.fn(function* (doc: XmlNode, ...path: Array<string>) {\n const val = yield* getProp(doc, ...path);\n if (Predicate.isNullish(val)) return undefined;\n\n return {\n documentReference: yield* decodeDocumentReference(val, 'cac:DocumentReference'),\n lineResponse: yield* decodeLineResponse(val, 'cac:LineResponse'),\n response: yield* decodeResponse(val, 'cac:Response'),\n };\n});\n\nexport const decodeMessageLevelResponse = Effect.fn(function* (value: XmlNode) {\n const { base, doc } = yield* decodeApplicationResponseBase(value);\n return {\n ...base,\n documentResponse: yield* decodeDocumentResponse(doc, 'cac:DocumentResponse'),\n profileId: yield* strOrUnd<'urn:fdc:peppol.eu:poacc:bis:mlr:3'>(doc, 'cbc:ProfileID'),\n receiverParty: yield* decodeMessageLevelParty(doc, 'cac:ReceiverParty'),\n senderParty: yield* decodeMessageLevelParty(doc, 'cac:SenderParty'),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\n\nexport const encodeIdentifier = Effect.fn(function* (id?: PeppolIdentifier) {\n if (Predicate.isNullish(id)) return undefined;\n if (Predicate.isNullish(id.schemeId) || id.schemeId === '') return id.id;\n return { '#text': id.id, '@schemeID': id.schemeId };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolAdditionalDocumentReference } from '#/schemas/fields/peppol-additional-document-reference-schema.ts';\n\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\n\nexport const encodeAdditionalDocumentReferences = Effect.fn(function* (refs: ReadonlyArray<PeppolAdditionalDocumentReference> | undefined) {\n if (Predicate.isNullish(refs)) return undefined;\n\n return yield* Effect.forEach(\n refs,\n Effect.fn(function* (ref: PeppolAdditionalDocumentReference) {\n return {\n 'cbc:ID': yield* encodeIdentifier(ref.id),\n 'cbc:DocumentTypeCode': ref.documentTypeCode,\n 'cbc:DocumentDescription': ref.documentDescription,\n 'cac:Attachment': yield* encodeAttachment(ref.attachment),\n };\n })\n );\n});\n\nconst encodeAttachment = Effect.fn(function* (attachment: PeppolAdditionalDocumentReference['attachment'] | undefined) {\n if (Predicate.isNullish(attachment)) return undefined;\n return {\n 'cac:ExternalReference': Predicate.isNotNullish(attachment.externalReference) ? { 'cbc:URI': attachment.externalReference.uri } : undefined,\n 'cbc:EmbeddedDocumentBinaryObject': Predicate.isNotNullish(attachment.embeddedDocumentBinaryObject)\n ? {\n '#text': attachment.embeddedDocumentBinaryObject.content,\n '@filename': attachment.embeddedDocumentBinaryObject.filename,\n '@mimeCode': attachment.embeddedDocumentBinaryObject.mimeCode,\n }\n : undefined,\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolAmount } from '#/schemas/fields/peppol-amount-schema.ts';\n\nexport const encodeAmount = Effect.fn(function* (amount?: PeppolAmount) {\n if (Predicate.isNullish(amount)) return undefined;\n return { '#text': amount.value, '@currencyID': amount.currencyId };\n});\n","import { Effect, Predicate } from 'effect';\n\ntype Exact<TExpected, TActual extends TExpected> = keyof TExpected extends keyof TActual\n ? keyof TActual extends keyof TExpected\n ? TActual\n : never\n : never;\n\nexport const encodeSimpleIdentifier = Effect.fn(function* <const T extends { id: string } = { id: string }>(\n identifier: Exact<{ id: string }, T> | undefined\n) {\n if (Predicate.isNullish(identifier)) return undefined;\n\n return { 'cbc:ID': identifier.id };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\n\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\n\nexport const encodeTaxCategory = Effect.fn(function* (taxCategory: PeppolAllowanceCharge['taxCategory']) {\n if (Predicate.isNullish(taxCategory)) {\n return undefined;\n }\n return { 'cbc:ID': taxCategory.id, 'cbc:Percent': taxCategory.percent, 'cac:TaxScheme': yield* encodeSimpleIdentifier(taxCategory.taxSchemeId) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolAllowanceCharge } from '#/schemas/fields/peppol-allowance-charge-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\nimport { encodeTaxCategory } from '#/decoders/fields/encode-tax-category.ts';\n\nexport const encodeAllowanceCharges = Effect.fn(function* (allowanceCharges: ReadonlyArray<PeppolAllowanceCharge> | undefined) {\n if (Predicate.isNullish(allowanceCharges)) return undefined;\n\n return yield* Effect.forEach(\n allowanceCharges,\n Effect.fn(function* (allowanceCharge: PeppolAllowanceCharge) {\n return {\n 'cbc:ChargeIndicator': allowanceCharge.chargeIndicator,\n 'cbc:AllowanceChargeReasonCode': allowanceCharge.allowanceChargeReasonCode,\n 'cbc:AllowanceChargeReason': allowanceCharge.allowanceChargeReason,\n 'cbc:MultiplierFactorNumeric': allowanceCharge.multiplierFactorNumeric,\n 'cbc:Amount': yield* encodeAmount(allowanceCharge.amount),\n 'cbc:BaseAmount': yield* encodeAmount(allowanceCharge.baseAmount),\n 'cac:TaxCategory': yield* encodeTaxCategory(allowanceCharge.taxCategory),\n };\n })\n );\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolBillingReference } from '#/schemas/fields/peppol-billing-reference-schema.ts';\n\nexport const encodeBillingReferences = Effect.fn(function* (billingReferences: ReadonlyArray<PeppolBillingReference> | undefined) {\n return billingReferences?.map(billingReference => ({\n 'cac:InvoiceDocumentReference': {\n 'cbc:ID': billingReference.invoiceDocumentReference.id,\n 'cbc:IssueDate': billingReference.invoiceDocumentReference.issueDate,\n },\n }));\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolInvoiceLinePeriod } from '#/schemas/fields/peppol-invoice-line-period-schema.ts';\n\nexport const encodeInvoiceLinePeriod = Effect.fn(function* (invoicePeriod: PeppolInvoiceLinePeriod | undefined) {\n return Predicate.isNotNullish(invoicePeriod) ? { 'cbc:StartDate': invoicePeriod.startDate, 'cbc:EndDate': invoicePeriod.endDate } : undefined;\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolLineAllowanceCharge } from '#/schemas/fields/peppol-line-allowance-charge-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\n\nexport const encodeLineAllowanceCharges = Effect.fn(function* (allowanceCharges: ReadonlyArray<PeppolLineAllowanceCharge> | undefined) {\n if (Predicate.isNullish(allowanceCharges)) return undefined;\n\n return yield* Effect.forEach(\n allowanceCharges,\n Effect.fn(function* (allowanceCharge: PeppolLineAllowanceCharge) {\n return {\n 'cbc:ChargeIndicator': allowanceCharge.chargeIndicator,\n 'cbc:AllowanceChargeReasonCode': allowanceCharge.allowanceChargeReasonCode,\n 'cbc:AllowanceChargeReason': allowanceCharge.allowanceChargeReason,\n 'cbc:MultiplierFactorNumeric': allowanceCharge.multiplierFactorNumeric,\n 'cbc:Amount': yield* encodeAmount(allowanceCharge.amount),\n 'cbc:BaseAmount': yield* encodeAmount(allowanceCharge.baseAmount),\n };\n })\n );\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolLinePriceAllowanceCharge } from '#/schemas/fields/peppol-line-price-allowance-charge-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\n\nexport const encodePriceAllowanceCharges = Effect.fn(function* (allowanceCharge: PeppolLinePriceAllowanceCharge | undefined) {\n if (Predicate.isNullish(allowanceCharge)) {\n return undefined;\n }\n\n return {\n 'cbc:ChargeIndicator': allowanceCharge.chargeIndicator,\n 'cbc:Amount': yield* encodeAmount(allowanceCharge.amount),\n 'cbc:BaseAmount': yield* encodeAmount(allowanceCharge.baseAmount),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolQuantity } from '#/schemas/fields/peppol-quantity-schema.ts';\n\nexport const encodeQuantity = Effect.fn(function* (quantity?: PeppolQuantity) {\n if (Predicate.isNullish(quantity)) return undefined;\n return { '#text': quantity.value, '@unitCode': quantity.unitCode };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolLinePrice } from '#/schemas/fields/peppol-line-price-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\nimport { encodePriceAllowanceCharges } from '#/decoders/fields/encode-price-allowance-charges.ts';\nimport { encodeQuantity } from '#/decoders/fields/encode-quantity.ts';\n\nexport const encodeLinePrice = Effect.fn(function* (price: PeppolLinePrice | undefined) {\n if (Predicate.isNullish(price)) {\n return undefined;\n }\n return {\n 'cbc:PriceAmount': yield* encodeAmount(price.priceAmount),\n 'cbc:BaseQuantity': yield* encodeQuantity(price.baseQuantity),\n 'cac:AllowanceCharge': yield* encodePriceAllowanceCharges(price.allowanceCharge),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolDocumentLine } from '#/schemas/peppol-document-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\nimport { encodeInvoiceLinePeriod } from '#/decoders/fields/encode-invoice-line-period.ts';\nimport { encodeLineAllowanceCharges } from '#/decoders/fields/encode-line-allowance-charges.ts';\nimport { encodeLinePrice } from '#/decoders/fields/encode-line-price.ts';\nimport { encodeQuantity } from '#/decoders/fields/encode-quantity.ts';\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\nimport { encodeTaxCategory } from '#/decoders/fields/encode-tax-category.ts';\n\nexport const encodeLineShared = Effect.fn(function* (lineShared: PeppolDocumentLine) {\n return {\n 'cbc:ID': lineShared.id,\n 'cbc:Note': lineShared.note,\n 'cbc:InvoicedQuantity': 'invoicedQuantity' in lineShared ? yield* encodeQuantity(lineShared.invoicedQuantity) : undefined,\n 'cbc:CreditedQuantity': 'creditedQuantity' in lineShared ? yield* encodeQuantity(lineShared.creditedQuantity) : undefined,\n 'cbc:LineExtensionAmount': yield* encodeAmount(lineShared.lineExtensionAmount),\n 'cbc:AccountingCost': lineShared.accountingCost,\n 'cac:InvoicePeriod': yield* encodeInvoiceLinePeriod(lineShared.invoicePeriod),\n 'cac:OrderLineReference': lineShared.orderLineReference ? { 'cbc:LineID': lineShared.orderLineReference.lineId } : undefined,\n 'cac:DocumentReference': Predicate.isNullish(lineShared.documentReference)\n ? undefined\n : yield* Effect.forEach(\n lineShared.documentReference,\n Effect.fn(function* (documentReference) {\n return { 'cbc:DocumentTypeCode': documentReference.documentTypeCode, 'cbc:ID': yield* encodeIdentifier(documentReference) };\n })\n ),\n 'cac:AllowanceCharge': yield* encodeLineAllowanceCharges(lineShared.allowanceCharges),\n 'cac:Item': {\n 'cbc:Description': lineShared.item.description,\n 'cbc:Name': lineShared.item.name,\n 'cac:BuyersItemIdentification': yield* encodeSimpleIdentifier(lineShared.item.buyersItemIdentification),\n 'cac:SellersItemIdentification': yield* encodeSimpleIdentifier(lineShared.item.sellersItemIdentification),\n 'cac:StandardItemIdentification': lineShared.item.standardItemIdentification\n ? { 'cbc:ID': yield* encodeIdentifier(lineShared.item.standardItemIdentification.id) }\n : undefined,\n 'cac:OriginCountry': lineShared.item.originCountryCode\n ? { 'cbc:IdentificationCode': lineShared.item.originCountryCode.identificationCode }\n : undefined,\n 'cac:CommodityClassification': lineShared.item.commodityClassifications?.map(c => ({\n 'cbc:ItemClassificationCode': {\n '#text': c.itemClassification.id,\n '@listID': c.itemClassification.listId,\n '@listVersionID': c.itemClassification.listVersionId,\n },\n })),\n 'cac:ClassifiedTaxCategory': yield* encodeTaxCategory(lineShared.item.classifiedTaxCategory),\n 'cac:AdditionalItemProperty': lineShared.item.additionalItemProperties?.map(p => ({ 'cbc:Name': p.name, 'cbc:Value': p.value })),\n },\n 'cac:Price': yield* encodeLinePrice(lineShared.price),\n };\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolCreditNoteLine } from '#/schemas/fields/peppol-credit-note-line-schema.ts';\n\nimport { encodeLineShared } from '#/decoders/fields/encode-line-shared.ts';\n\nexport const encodeCreditNoteLines = Effect.fn(function* (creditNoteLines: ReadonlyArray<PeppolCreditNoteLine>) {\n if (creditNoteLines.length === 0) return undefined;\n\n return yield* Effect.forEach(creditNoteLines, encodeLineShared);\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolAddress } from '#/schemas/fields/peppol-address-schema.ts';\n\nexport const encodeAddress = Effect.fn(function* (address?: PeppolAddress): Effect.fn.Return<XmlNode> {\n if (Predicate.isNullish(address)) return undefined;\n return {\n 'cbc:StreetName': address.streetName,\n 'cbc:AdditionalStreetName': address.additionalStreetName,\n 'cbc:CityName': address.cityName,\n 'cbc:PostalZone': address.postalZone,\n 'cbc:CountrySubentity': address.countrySubentity,\n 'cac:AddressLine': address.addressLine?.line ? { 'cbc:Line': address.addressLine.line } : undefined,\n 'cac:Country': { 'cbc:IdentificationCode': address.countryCode.identificationCode },\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolDelivery } from '#/schemas/fields/peppol-delivery-schema.ts';\n\nimport { encodeAddress } from '#/decoders/fields/encode-address.ts';\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\n\nexport const encodeDelivery = Effect.fn(function* (delivery: PeppolDelivery | undefined) {\n if (Predicate.isNullish(delivery)) return undefined;\n\n return {\n 'cbc:ActualDeliveryDate': delivery.actualDeliveryDate,\n 'cac:DeliveryLocation': yield* encodeDeliveryLocation(delivery.deliveryLocation),\n 'cac:DeliveryParty': Predicate.isTruthy(delivery.deliveryParty?.partyName.name)\n ? { 'cac:PartyName': { 'cbc:Name': delivery.deliveryParty?.partyName.name } }\n : undefined,\n };\n});\n\nconst encodeDeliveryLocation = Effect.fn(function* (location: PeppolDelivery['deliveryLocation']) {\n if (Predicate.isNullish(location)) return undefined;\n return { 'cbc:ID': yield* encodeIdentifier(location.id), 'cac:Address': yield* encodeAddress(location.address) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolInvoicePeriod } from '#/schemas/fields/peppol-invoice-period-schema.ts';\n\nexport const encodeInvoicePeriod = Effect.fn(function* (invoicePeriod: PeppolInvoicePeriod | undefined) {\n return Predicate.isNotNullish(invoicePeriod)\n ? { 'cbc:StartDate': invoicePeriod.startDate, 'cbc:EndDate': invoicePeriod.endDate, 'cbc:DescriptionCode': invoicePeriod.descriptionCode }\n : undefined;\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolLegalMonetaryTotal } from '#/schemas/fields/peppol-legal-monetary-total-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\n\nexport const encodeLegalMonetaryTotal = Effect.fn(function* (legalMonetaryTotal: PeppolLegalMonetaryTotal) {\n return {\n 'cbc:LineExtensionAmount': yield* encodeAmount(legalMonetaryTotal.lineExtensionAmount),\n 'cbc:TaxExclusiveAmount': yield* encodeAmount(legalMonetaryTotal.taxExclusiveAmount),\n 'cbc:TaxInclusiveAmount': yield* encodeAmount(legalMonetaryTotal.taxInclusiveAmount),\n 'cbc:AllowanceTotalAmount': yield* encodeAmount(legalMonetaryTotal.allowanceTotalAmount),\n 'cbc:ChargeTotalAmount': yield* encodeAmount(legalMonetaryTotal.chargeTotalAmount),\n 'cbc:PrepaidAmount': yield* encodeAmount(legalMonetaryTotal.prepaidAmount),\n 'cbc:PayableRoundingAmount': yield* encodeAmount(legalMonetaryTotal.payableRoundingAmount),\n 'cbc:PayableAmount': yield* encodeAmount(legalMonetaryTotal.payableAmount),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolOrderReference } from '#/schemas/fields/peppol-order-reference-schema.ts';\n\nexport const encodeOrderReference = Effect.fn(function* (orderReference: PeppolOrderReference | undefined) {\n if (Predicate.isNullish(orderReference)) return undefined;\n\n return { 'cbc:ID': orderReference.id, 'cbc:SalesOrderID': orderReference.salesOrderId };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\n\nexport const encodeContact = Effect.fn(function* (contact: PeppolContact | undefined) {\n if (Predicate.isNullish(contact)) return undefined;\n\n return { 'cbc:Name': contact.name, 'cbc:Telephone': contact.telephone, 'cbc:ElectronicMail': contact.electronicMail };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyTaxSchema } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\n\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\n\nexport const encodePartyTaxScheme = Effect.fn(function* (partyTaxScheme: PeppolPartyTaxSchema | undefined): Effect.fn.Return<XmlNode> {\n if (Predicate.isNullish(partyTaxScheme)) return undefined;\n\n return { 'cbc:CompanyID': partyTaxScheme.companyId, 'cac:TaxScheme': yield* encodeSimpleIdentifier(partyTaxScheme.taxSchemeId) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolPartyTaxSchema } from '#/schemas/fields/peppol-party-tax-scheme-schema.ts';\n\nimport { encodePartyTaxScheme } from '#/decoders/fields/encode-party-tax-scheme.ts';\n\nexport const encodePartiesTaxScheme = Effect.fn(function* (partiesTaxScheme: Array<PeppolPartyTaxSchema> | undefined): Effect.fn.Return<XmlNode> {\n if (Predicate.isNullish(partiesTaxScheme) || partiesTaxScheme.length === 0) return undefined;\n\n return yield* Effect.forEach(\n partiesTaxScheme,\n Effect.fn(function* (partyTaxScheme: PeppolPartyTaxSchema) {\n return yield* encodePartyTaxScheme(partyTaxScheme);\n })\n );\n});\n","import { Effect } from 'effect';\n\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\n\nexport const encodePartyLegalEntity = Effect.fn(function* (legalEntity: {\n registrationName?: string;\n companyId?: Parameters<typeof encodeIdentifier>[0];\n companyLegalForm?: string | undefined;\n}) {\n return {\n 'cbc:RegistrationName': legalEntity.registrationName,\n 'cbc:CompanyID': yield* encodeIdentifier(legalEntity.companyId),\n 'cbc:CompanyLegalForm': legalEntity.companyLegalForm,\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolPartySchema } from '#/schemas/fields/peppol-party-base-schema.ts';\n\nimport { encodeAddress } from '#/decoders/fields/encode-address.ts';\nimport { encodeContact } from '#/decoders/fields/encode-contact.ts';\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\nimport { encodePartiesTaxScheme } from '#/decoders/fields/encode-parties-tax-scheme.ts';\nimport { encodePartyLegalEntity } from '#/decoders/fields/encode-party-legal-entity.ts';\n\nexport const encodeParty = Effect.fn(function* (party?: PeppolPartySchema) {\n if (Predicate.isNullish(party)) return undefined;\n\n return {\n 'cac:Party': {\n 'cbc:EndpointID': yield* encodeIdentifier(party.endpointId),\n 'cac:PartyIdentification': yield* encodeAdditionalIdentifiers(party.partyIdentification),\n 'cac:PartyName': yield* encodePartyName(party.partyName),\n 'cac:PostalAddress': yield* encodeAddress(party.postalAddress),\n 'cac:PartyTaxScheme': yield* encodePartiesTaxScheme(party.partyTaxSchemes),\n 'cac:PartyLegalEntity': yield* encodePartyLegalEntity(party.partyLegalEntity),\n 'cac:Contact': yield* encodeContact(party.contact),\n },\n };\n});\n\nconst encodePartyName = Effect.fn(function* (partyName?: PeppolPartySchema['partyName']) {\n if (Predicate.isNullish(partyName)) return undefined;\n return { 'cbc:Name': partyName.name };\n});\n\nconst encodeAdditionalIdentifiers = Effect.fn(function* (identifiers: PeppolPartySchema['partyIdentification']) {\n if (Predicate.isNullish(identifiers)) return undefined;\n return { 'cbc:ID': yield* encodeIdentifier(identifiers?.id) };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolPayeeParty } from '#/schemas/fields/peppol-payee-party-schema.ts';\n\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\n\nexport const encodePayeeParty = Effect.fn(function* (payeeParty: PeppolPayeeParty | undefined) {\n if (Predicate.isNullish(payeeParty)) return undefined;\n return {\n 'cac:PartyIdentification': yield* encodePartyIdentification(payeeParty.partyIdentification),\n 'cac:PartyName': yield* encodePartyName(payeeParty.partyName),\n 'cac:PartyLegalEntity': yield* encodePartyLegalEntity(payeeParty.partyLegalEntity),\n };\n});\n\nconst encodePartyName = Effect.fn(function* (partyName: PeppolPayeeParty['partyName']) {\n return { 'cbc:Name': partyName.name };\n});\n\nconst encodePartyLegalEntity = Effect.fn(function* (partyLegalEntity: PeppolPayeeParty['partyLegalEntity']) {\n if (Predicate.isNullish(partyLegalEntity)) return undefined;\n return { 'cbc:CompanyId': Predicate.isTruthy(partyLegalEntity?.companyId) ? yield* encodeIdentifier(partyLegalEntity?.companyId) : undefined };\n});\n\nconst encodePartyIdentification = Effect.fn(function* (partyIdentification: PeppolPayeeParty['partyIdentification']) {\n if (Predicate.isNullish(partyIdentification)) return undefined;\n return { 'cbc:ID': Predicate.isTruthy(partyIdentification.id) ? yield* encodeIdentifier(partyIdentification.id) : undefined };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolPaymentMeans } from '#/schemas/fields/peppol-payment-means-schema.ts';\n\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\n\nexport const encodePaymentMeans = Effect.fn(function* (pms: ReadonlyArray<PeppolPaymentMeans> | undefined) {\n if (Predicate.isNullish(pms)) return undefined;\n\n return yield* Effect.forEach(\n pms,\n Effect.fn(function* (pm: PeppolPaymentMeans) {\n return {\n 'cbc:PaymentMeansCode': yield* encodePaymentMeansCode(pm.paymentMeansCode),\n 'cbc:PaymentID': pm.paymentId,\n 'cbc:PaymentDueDate': pm.paymentDueDate,\n 'cac:CardAccount': Predicate.isNotNullish(pm.cardAccount)\n ? {\n 'cbc:PrimaryAccountNumberID': pm.cardAccount.primaryAccountNumberId,\n 'cbc:NetworkID': pm.cardAccount.networkId,\n 'cbc:HolderName': pm.cardAccount.holderName,\n }\n : undefined,\n 'cac:PayeeFinancialAccount': yield* encodePayeeFinancialAccount(pm.payeeFinancialAccount),\n 'cac:PaymentMandate': yield* encodePaymentMendate(pm.paymentMandate),\n };\n })\n );\n});\n\nconst encodePaymentMeansCode = Effect.fn(function* (code: PeppolPaymentMeans['paymentMeansCode'] | undefined) {\n if (Predicate.isNullish(code)) return undefined;\n return { '#text': code.code, '@name': code.name };\n});\n\nconst encodePaymentMendate = Effect.fn(function* (mendate: PeppolPaymentMeans['paymentMandate'] | undefined) {\n if (Predicate.isNullish(mendate)) return undefined;\n return { 'cbc:Id': mendate.id, 'cac:PayerFinancialAccount': yield* encodeSimpleIdentifier(mendate.payerFinancialAccountId) };\n});\n\nconst encodePayeeFinancialAccount = Effect.fn(function* (account: PeppolPaymentMeans['payeeFinancialAccount'] | undefined) {\n if (Predicate.isNullish(account)) return undefined;\n return {\n 'cbc:ID': account.id,\n 'cbc:Name': account.name,\n 'cac:FinancialInstitutionBranch': yield* encodeSimpleIdentifier(account.financialInstitutionBranch),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolPaymentTerms } from '#/schemas/fields/peppol-payment-terms-schema.ts';\n\nexport const encodePaymentTerms = Effect.fn(function* (paymentTerms: PeppolPaymentTerms | undefined) {\n if (Predicate.isNullish(paymentTerms)) return undefined;\n\n return { 'cbc:Note': paymentTerms.note };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolTaxRepresentativeParty } from '#/schemas/fields/peppol-tax-representative-schema.ts';\n\nimport { encodeAddress } from '#/decoders/fields/encode-address.ts';\nimport { encodePartyTaxScheme } from '#/decoders/fields/encode-party-tax-scheme.ts';\n\nexport const encodeTaxRepresentativeParty = Effect.fn(function* (\n taxRepresentativeParty: PeppolTaxRepresentativeParty | undefined\n): Effect.fn.Return<XmlNode> {\n if (Predicate.isNullish(taxRepresentativeParty)) {\n return undefined;\n }\n return {\n 'cac:PartyName': { 'cbc:Name': taxRepresentativeParty.name },\n 'cac:PostalAddress': yield* encodeAddress(taxRepresentativeParty.postalAddress),\n 'cac:PartyTaxScheme': yield* encodePartyTaxScheme(taxRepresentativeParty.partyTaxScheme),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolTaxSubTotal } from '#/schemas/fields/peppol-tax-subtotal-schema.ts';\nimport type { PeppolTaxTotal } from '#/schemas/fields/peppol-tax-totals-base-schema.ts';\n\nimport { encodeAmount } from '#/decoders/fields/encode-amount.ts';\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\n\nexport const encodeTaxTotals = Effect.fn(function* (taxTotals: ReadonlyArray<PeppolTaxTotal>) {\n return yield* Effect.forEach(\n taxTotals,\n Effect.fn(function* (taxTotal: PeppolTaxTotal) {\n return { 'cbc:TaxAmount': yield* encodeAmount(taxTotal.taxAmount), 'cac:TaxSubtotal': yield* encodeTaxSubtotals(taxTotal.taxSubtotals) };\n })\n );\n});\n\nconst encodeTaxSubtotals = Effect.fn(function* (taxSubtotals: ReadonlyArray<PeppolTaxSubTotal> | undefined) {\n if (Predicate.isNullish(taxSubtotals)) return undefined;\n\n return yield* Effect.forEach(\n taxSubtotals,\n Effect.fn(function* (taxSubTotal: PeppolTaxSubTotal) {\n return {\n 'cbc:TaxableAmount': yield* encodeAmount(taxSubTotal.taxableAmount),\n 'cbc:TaxAmount': yield* encodeAmount(taxSubTotal.taxAmount),\n 'cac:TaxCategory': {\n 'cbc:ID': taxSubTotal.taxCategory.id,\n 'cbc:Percent': taxSubTotal.taxCategory.percent,\n 'cbc:TaxExemptionReasonCode': taxSubTotal.taxCategory.taxExemptionReasonCode,\n 'cbc:TaxExemptionReason': taxSubTotal.taxCategory.taxExemptionReason,\n 'cac:TaxScheme': yield* encodeSimpleIdentifier(taxSubTotal.taxCategory.taxSchemeId),\n },\n };\n })\n );\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolCreditNote } from '#/schemas/peppol-credit-note-schema.ts';\n\nimport { encodeAdditionalDocumentReferences } from '#/decoders/fields/encode-additional-document-references.ts';\nimport { encodeAllowanceCharges } from '#/decoders/fields/encode-allowance-charges.ts';\nimport { encodeBillingReferences } from '#/decoders/fields/encode-billing-references.ts';\nimport { encodeCreditNoteLines } from '#/decoders/fields/encode-credit-note-lines.ts';\nimport { encodeDelivery } from '#/decoders/fields/encode-delivery.ts';\nimport { encodeInvoicePeriod } from '#/decoders/fields/encode-invoice-period.ts';\nimport { encodeLegalMonetaryTotal } from '#/decoders/fields/encode-legal-monetary-total.ts';\nimport { encodeOrderReference } from '#/decoders/fields/encode-order-reference.ts';\nimport { encodeParty } from '#/decoders/fields/encode-party.ts';\nimport { encodePayeeParty } from '#/decoders/fields/encode-payee-party.ts';\nimport { encodePaymentMeans } from '#/decoders/fields/encode-payment-means.ts';\nimport { encodePaymentTerms } from '#/decoders/fields/encode-payment-terms.ts';\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\nimport { encodeTaxRepresentativeParty } from '#/decoders/fields/encode-tax-representative-party.ts';\nimport { encodeTaxTotals } from '#/decoders/fields/encode-tax-totals.ts';\n\nexport const encodeCreditNote = Effect.fn(function* (creditNote: PeppolCreditNote) {\n return {\n '?xml': { '@version': '1.0', '@encoding': 'UTF-8' },\n CreditNote: {\n '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n '@xsi:schemaLocation':\n import.meta.env['MODE'] === 'test'\n ? 'urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/maindoc/UBL-CreditNote-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonAggregateComponents-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonBasicComponents-2.4.xsd'\n : undefined,\n '@xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n '@xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n '@xmlns': 'urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2',\n 'cbc:CustomizationID': creditNote.customizationId,\n 'cbc:ProfileID': creditNote.profileId,\n 'cbc:ID': creditNote.id,\n 'cbc:IssueDate': creditNote.issueDate,\n 'cbc:CreditNoteTypeCode': creditNote.creditNoteTypeCode,\n 'cbc:Note': creditNote.note,\n 'cbc:TaxPointDate': creditNote.taxPointDate,\n 'cbc:DocumentCurrencyCode': creditNote.documentCurrencyCode,\n 'cbc:TaxCurrencyCode': creditNote.taxCurrencyCode,\n 'cbc:AccountingCost': creditNote.accountingCost,\n 'cbc:BuyerReference': creditNote.buyerReference,\n 'cac:InvoicePeriod': yield* encodeInvoicePeriod(creditNote.invoicePeriod),\n 'cac:OrderReference': yield* encodeOrderReference(creditNote.orderReference),\n 'cac:BillingReference': yield* encodeBillingReferences(creditNote.billingReferences),\n 'cac:DespatchDocumentReference': yield* encodeSimpleIdentifier(creditNote.despatchDocumentReference),\n 'cac:ReceiptDocumentReference': yield* encodeSimpleIdentifier(creditNote.receiptDocumentReference),\n 'cac:OriginatorDocumentReference': yield* encodeSimpleIdentifier(creditNote.originatorDocumentReference),\n 'cac:ContractDocumentReference': yield* encodeSimpleIdentifier(creditNote.contractDocumentReference),\n 'cac:AdditionalDocumentReference': yield* encodeAdditionalDocumentReferences(creditNote.additionalDocumentReferences),\n 'cac:AccountingSupplierParty': yield* encodeParty(creditNote.accountingSupplierParty),\n 'cac:AccountingCustomerParty': yield* encodeParty(creditNote.accountingCustomerParty),\n 'cac:PayeeParty': yield* encodePayeeParty(creditNote.payeeParty),\n 'cac:TaxRepresentativeParty': yield* encodeTaxRepresentativeParty(creditNote.taxRepresentativeParty),\n 'cac:Delivery': yield* encodeDelivery(creditNote.delivery),\n 'cac:PaymentMeans': yield* encodePaymentMeans(creditNote.paymentMeans),\n 'cac:PaymentTerms': yield* encodePaymentTerms(creditNote.paymentTerms),\n 'cac:AllowanceCharge': yield* encodeAllowanceCharges(creditNote.allowanceCharges),\n 'cac:TaxTotal': yield* encodeTaxTotals(creditNote.taxTotals),\n 'cac:LegalMonetaryTotal': yield* encodeLegalMonetaryTotal(creditNote.legalMonetaryTotal),\n 'cac:CreditNoteLine': yield* encodeCreditNoteLines(creditNote.creditNoteLines),\n },\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type { PeppolContact } from '#/schemas/fields/peppol-contact-schema.ts';\nimport type { PeppolIdentifier } from '#/schemas/fields/peppol-identifier-schema.ts';\nimport type { PeppolInvoiceDocumentResponseParty, PeppolInvoiceResponseParty } from '#/schemas/peppol-invoice-response-schema.ts';\nimport type { PeppolMessageLevelResponseParty } from '#/schemas/peppol-message-level-response-party-schema.ts';\n\nimport { encodeContact } from '#/decoders/fields/encode-contact.ts';\nimport { encodeIdentifier } from '#/decoders/fields/encode-identifier.ts';\nimport { encodePartyLegalEntity } from '#/decoders/fields/encode-party-legal-entity.ts';\n\ntype ResponseParty = PeppolMessageLevelResponseParty | PeppolInvoiceResponseParty | PeppolInvoiceDocumentResponseParty;\n\n/**\n * @description The response party union exposes different fields per variant; reading the optional ones through a shared view keeps the encoder branch-free.\n */\ninterface ResponsePartyFields {\n endpointId?: PeppolIdentifier | undefined;\n partyIdentification?: PeppolIdentifier | undefined;\n partyName?: { name: string } | undefined;\n partyLegalEntity?:\n | { registrationName?: string | undefined; companyId?: PeppolIdentifier | undefined; companyLegalForm?: string | undefined }\n | undefined;\n contact?: PeppolContact | undefined;\n}\n\nexport const encodeMessageParty = Effect.fn(function* (party?: ResponseParty) {\n if (Predicate.isNullish(party)) return undefined;\n const fields = party as ResponsePartyFields;\n return {\n 'cbc:EndpointID': yield* encodeIdentifier(fields.endpointId),\n 'cac:PartyIdentification': fields.partyIdentification ? { 'cbc:ID': yield* encodeIdentifier(fields.partyIdentification) } : undefined,\n 'cac:PartyName': fields.partyName ? { 'cbc:Name': fields.partyName.name } : undefined,\n 'cac:PartyLegalEntity': fields.partyLegalEntity ? yield* encodePartyLegalEntity(fields.partyLegalEntity) : undefined,\n 'cac:Contact': yield* encodeContact(fields.contact),\n };\n});\n","import { Effect, Predicate } from 'effect';\n\nimport type {\n PeppolInvoiceResponse,\n PeppolInvoiceResponseDocumentReference,\n PeppolInvoiceResponseDocumentResponse,\n} from '#/schemas/peppol-invoice-response-schema.ts';\n\nimport { encodeMessageParty } from '#/decoders/fields/encode-message-party.ts';\n\nexport const encodeInvoiceResponse = Effect.fn(function* (invoiceResponse: PeppolInvoiceResponse) {\n return {\n '?xml': { '@version': '1.0', '@encoding': 'UTF-8' },\n ApplicationResponse: {\n '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n '@xsi:schemaLocation':\n import.meta.env['MODE'] === 'test'\n ? 'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/maindoc/UBL-ApplicationResponse-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonAggregateComponents-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonBasicComponents-2.4.xsd'\n : undefined,\n '@xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n '@xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n '@xmlns': 'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2',\n 'cbc:CustomizationID': invoiceResponse.customizationId,\n 'cbc:ProfileID': invoiceResponse.profileId,\n 'cbc:ID': invoiceResponse.id,\n 'cbc:IssueDate': invoiceResponse.issueDate,\n 'cbc:IssueTime': invoiceResponse.issueTime,\n 'cbc:Note': invoiceResponse.note,\n 'cac:SenderParty': yield* encodeMessageParty(invoiceResponse.senderParty),\n 'cac:ReceiverParty': yield* encodeMessageParty(invoiceResponse.receiverParty),\n 'cac:DocumentResponse': yield* encodeDocumentResponse(invoiceResponse.documentResponse),\n },\n };\n});\n\nconst encodeDocumentResponse = Effect.fn(function* (documentResponse: PeppolInvoiceResponseDocumentResponse) {\n if (Predicate.isNullish(documentResponse)) {\n return undefined;\n }\n return {\n 'cac:Response': {\n 'cbc:ResponseCode': documentResponse.response.responseCode,\n 'cbc:EffectiveDate': documentResponse.response.effectiveDate,\n 'cac:Status': documentResponse.response.status?.map(status => ({\n 'cbc:StatusReasonCode': Predicate.isNotNullish(status.statusReasonCode)\n ? { '#text': status.statusReasonCode.value, '@listID': status.statusReasonCode.listId }\n : undefined,\n 'cbc:StatusReason': status.statusReason,\n 'cac:Condition': status.condition?.map(condition => ({ 'cbc:AttributeID': condition.attributeId, 'cbc:Description': condition.description })),\n })),\n },\n 'cac:DocumentReference': yield* encodeDocumentReference(documentResponse.documentReference),\n 'cac:IssuerParty': yield* encodeMessageParty(documentResponse.issuerParty),\n 'cac:RecipientParty': yield* encodeMessageParty(documentResponse.recipientParty),\n };\n});\n\nconst encodeDocumentReference = Effect.fn(function* (documentReference: PeppolInvoiceResponseDocumentReference) {\n if (Predicate.isNullish(documentReference)) return undefined;\n return { 'cbc:ID': documentReference.id, 'cbc:IssueDate': documentReference.issueDate, 'cbc:DocumentTypeCode': documentReference.documentTypeCode };\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolInvoiceLine } from '#/schemas/fields/peppol-invoice-line-schema.ts';\n\nimport { encodeLineShared } from '#/decoders/fields/encode-line-shared.ts';\n\nexport const encodeInvoiceLines = Effect.fn(function* (invoiceLines: ReadonlyArray<PeppolInvoiceLine>) {\n if (invoiceLines.length === 0) return undefined;\n\n return yield* Effect.forEach(invoiceLines, encodeLineShared);\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolInvoice } from '#/schemas/peppol-invoice-schema.ts';\n\nimport { encodeAdditionalDocumentReferences } from '#/decoders/fields/encode-additional-document-references.ts';\nimport { encodeAllowanceCharges } from '#/decoders/fields/encode-allowance-charges.ts';\nimport { encodeBillingReferences } from '#/decoders/fields/encode-billing-references.ts';\nimport { encodeDelivery } from '#/decoders/fields/encode-delivery.ts';\nimport { encodeInvoiceLines } from '#/decoders/fields/encode-invoice-lines.ts';\nimport { encodeInvoicePeriod } from '#/decoders/fields/encode-invoice-period.ts';\nimport { encodeLegalMonetaryTotal } from '#/decoders/fields/encode-legal-monetary-total.ts';\nimport { encodeOrderReference } from '#/decoders/fields/encode-order-reference.ts';\nimport { encodeParty } from '#/decoders/fields/encode-party.ts';\nimport { encodePayeeParty } from '#/decoders/fields/encode-payee-party.ts';\nimport { encodePaymentMeans } from '#/decoders/fields/encode-payment-means.ts';\nimport { encodePaymentTerms } from '#/decoders/fields/encode-payment-terms.ts';\nimport { encodeSimpleIdentifier } from '#/decoders/fields/encode-simple-identifier.ts';\nimport { encodeTaxRepresentativeParty } from '#/decoders/fields/encode-tax-representative-party.ts';\nimport { encodeTaxTotals } from '#/decoders/fields/encode-tax-totals.ts';\n\nexport const encodeInvoice = Effect.fn(function* (invoice: PeppolInvoice) {\n return {\n '?xml': { '@version': '1.0', '@encoding': 'UTF-8' },\n Invoice: {\n '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n '@xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n '@xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n '@xmlns': 'urn:oasis:names:specification:ubl:schema:xsd:Invoice-2',\n 'cbc:CustomizationID': invoice.customizationId,\n 'cbc:ProfileID': invoice.profileId,\n 'cbc:ID': invoice.id,\n 'cbc:IssueDate': invoice.issueDate,\n 'cbc:DueDate': invoice.dueDate,\n 'cbc:InvoiceTypeCode': invoice.invoiceTypeCode,\n 'cbc:Note': invoice.note,\n 'cbc:TaxPointDate': invoice.taxPointDate,\n 'cbc:DocumentCurrencyCode': invoice.documentCurrencyCode,\n 'cbc:TaxCurrencyCode': invoice.taxCurrencyCode,\n 'cbc:AccountingCost': invoice.accountingCost,\n 'cbc:BuyerReference': invoice.buyerReference,\n 'cac:InvoicePeriod': yield* encodeInvoicePeriod(invoice.invoicePeriod),\n 'cac:OrderReference': yield* encodeOrderReference(invoice.orderReference),\n 'cac:BillingReference': yield* encodeBillingReferences(invoice.billingReferences),\n 'cac:DespatchDocumentReference': yield* encodeSimpleIdentifier(invoice.despatchDocumentReference),\n 'cac:ReceiptDocumentReference': yield* encodeSimpleIdentifier(invoice.receiptDocumentReference),\n 'cac:OriginatorDocumentReference': yield* encodeSimpleIdentifier(invoice.originatorDocumentReference),\n 'cac:ContractDocumentReference': yield* encodeSimpleIdentifier(invoice.contractDocumentReference),\n 'cac:AdditionalDocumentReference': yield* encodeAdditionalDocumentReferences(invoice.additionalDocumentReferences),\n 'cac:ProjectReference': yield* encodeSimpleIdentifier(invoice.projectReference),\n 'cac:AccountingSupplierParty': yield* encodeParty(invoice.accountingSupplierParty),\n 'cac:AccountingCustomerParty': yield* encodeParty(invoice.accountingCustomerParty),\n 'cac:PayeeParty': yield* encodePayeeParty(invoice.payeeParty),\n 'cac:TaxRepresentativeParty': yield* encodeTaxRepresentativeParty(invoice.taxRepresentativeParty),\n 'cac:Delivery': yield* encodeDelivery(invoice.delivery),\n 'cac:PaymentMeans': yield* encodePaymentMeans(invoice.paymentMeans),\n 'cac:PaymentTerms': yield* encodePaymentTerms(invoice.paymentTerms),\n 'cac:AllowanceCharge': yield* encodeAllowanceCharges(invoice.allowanceCharges),\n 'cac:TaxTotal': yield* encodeTaxTotals(invoice.taxTotals),\n 'cac:LegalMonetaryTotal': yield* encodeLegalMonetaryTotal(invoice.legalMonetaryTotal),\n 'cac:InvoiceLine': yield* encodeInvoiceLines(invoice.invoiceLines),\n },\n };\n});\n","import { Effect } from 'effect';\n\nimport type { PeppolMessageLevelResponseDocumentResponse } from '#/schemas/peppol-message-level-response-document-response-schema.ts';\nimport type { PeppolMessageLevelResponse } from '#/schemas/peppol-message-level-response-schema.ts';\n\nimport { encodeMessageParty } from '#/decoders/fields/encode-message-party.ts';\n\nexport const encodeMessageLevelResponse = Effect.fn(function* (messageResponse: PeppolMessageLevelResponse) {\n return {\n '?xml': { '@version': '1.0', '@encoding': 'UTF-8' },\n ApplicationResponse: {\n '@xmlns:xsi': 'http://www.w3.org/2001/XMLSchema-instance',\n '@xsi:schemaLocation':\n import.meta.env['MODE'] === 'test'\n ? 'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/maindoc/UBL-ApplicationResponse-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonAggregateComponents-2.4.xsd urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2 https://docs.oasis-open.org/ubl/os-UBL-2.4/xsd/common/UBL-CommonBasicComponents-2.4.xsd'\n : undefined,\n '@xmlns:cac': 'urn:oasis:names:specification:ubl:schema:xsd:CommonAggregateComponents-2',\n '@xmlns:cbc': 'urn:oasis:names:specification:ubl:schema:xsd:CommonBasicComponents-2',\n '@xmlns': 'urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2',\n 'cbc:CustomizationID': messageResponse.customizationId,\n 'cbc:ProfileID': messageResponse.profileId,\n 'cbc:ID': messageResponse.id,\n 'cbc:IssueDate': messageResponse.issueDate,\n 'cbc:IssueTime': messageResponse.issueTime,\n 'cac:SenderParty': yield* encodeMessageParty(messageResponse.senderParty),\n 'cac:ReceiverParty': yield* encodeMessageParty(messageResponse.receiverParty),\n 'cac:DocumentResponse': yield* encodeMessageLevelDocumentResponse(messageResponse.documentResponse),\n },\n };\n});\n\nconst encodeMessageLevelDocumentResponse = Effect.fn(function* (documentResponse: PeppolMessageLevelResponseDocumentResponse) {\n return {\n 'cac:Response': { 'cbc:ResponseCode': documentResponse.response.responseCode, 'cbc:Description': documentResponse.response.description },\n 'cac:DocumentReference': {\n 'cbc:ID': documentResponse.documentReference.id,\n 'cbc:DocumentTypeCode': documentResponse.documentReference.documentTypeCode,\n 'cbc:VersionID': documentResponse.documentReference.versionId,\n },\n 'cac:LineResponse': documentResponse.lineResponse.map(line => ({\n 'cac:LineReference': { 'cbc:LineID': line.lineReference.lineId },\n 'cac:Response': {\n 'cbc:ResponseCode': line.response.responseCode,\n 'cbc:Description': line.response.description,\n 'cac:Status': { 'cbc:StatusReasonCode': line.response.status.statusReasonCode },\n },\n })),\n };\n});\n","import type { SchemaAST } from 'effect';\n\nimport { Effect, Predicate, Schema, SchemaGetter, SchemaIssue } from 'effect';\nimport XMLBuilder from 'fast-xml-builder';\n\nimport type { XmlNode } from '#/helpers/get-prop.ts';\nimport type { PeppolCreditNoteLine } from '#/schemas/fields/peppol-credit-note-line-schema.ts';\nimport type { PeppolInvoiceLine } from '#/schemas/fields/peppol-invoice-line-schema.ts';\n\nimport { INVOICE_RESPONSE_PROFILE_ID } from '#/constants/invoice-response-profile-id.ts';\nimport { MESSAGE_LEVEL_RESPONSE_PROFILE_ID } from '#/constants/message-level-response-profile-id.ts';\nimport { decodeCreditNote } from '#/decoders/decode-credit-note.ts';\nimport { decodeInvoiceResponse } from '#/decoders/decode-invoice-response.ts';\nimport { decodeInvoice } from '#/decoders/decode-invoice.ts';\nimport { decodeMessageLevelResponse } from '#/decoders/decode-message-level-response.ts';\nimport { encodeCreditNote } from '#/decoders/encode-credit-note.ts';\nimport { encodeInvoiceResponse } from '#/decoders/encode-invoice-response.ts';\nimport { encodeInvoice } from '#/decoders/encode-invoice.ts';\nimport { encodeMessageLevelResponse } from '#/decoders/encode-message-level-response.ts';\nimport { strOrUnd } from '#/helpers/str-or-und.ts';\nimport { PeppolCreditNote } from '#/schemas/peppol-credit-note-schema.ts';\nimport { PeppolInvoiceResponse } from '#/schemas/peppol-invoice-response-schema.ts';\nimport { PeppolInvoice } from '#/schemas/peppol-invoice-schema.ts';\nimport { PeppolMessageLevelResponse } from '#/schemas/peppol-message-level-response-schema.ts';\nimport { builderOptions } from '#/xml/builder-options.ts';\nimport { parseXmlNodable } from '#/xml/nodable-parser.ts';\n\n/**\n * @description Object representation of a PEPPOL document, before the member schemas normalise it (dates stay strings, enums stay loose). This is the shape\n * produced by the legacy `#/decoders/*` functions and consumed by their `#/decoders/encode-*` counterparts.\n */\nconst peppolDocumentObjectSchema = Schema.Union([PeppolInvoice, PeppolCreditNote, PeppolMessageLevelResponse, PeppolInvoiceResponse], {\n mode: 'oneOf',\n});\n\ntype PeppolDocumentObject = typeof peppolDocumentObjectSchema.Encoded;\n\nconst parseXml = (value: string): XmlNode => parseXmlNodable(value);\n\nexport const isPeppolInvoice = Schema.is(PeppolInvoice);\nexport const isPeppolCreditNote = Schema.is(PeppolCreditNote);\nexport const isPeppolMessageLevelResponse = Schema.is(PeppolMessageLevelResponse);\nexport const isPeppolInvoiceResponse = Schema.is(PeppolInvoiceResponse);\n\n/**\n * @description XML string -> loose document object. Dispatches on the root element; `ApplicationResponse` is further split by its `cbc:ProfileID`.\n */\nconst decodeDocumentXml = Effect.fn('decode-peppol-document-xml')(function* (value: string, options: SchemaAST.ParseOptions) {\n const parsed = parseXml(value);\n\n if (Predicate.isNotNullish(parsed.Invoice)) {\n return yield* decodeInvoice(parsed);\n }\n if (Predicate.isNotNullish(parsed.CreditNote)) {\n return yield* decodeCreditNote(parsed);\n }\n if (Predicate.isNotNullish(parsed.ApplicationResponse)) {\n const profileId = yield* strOrUnd(parsed.ApplicationResponse, 'cbc:ProfileID');\n if (profileId === MESSAGE_LEVEL_RESPONSE_PROFILE_ID) {\n return yield* decodeMessageLevelResponse(parsed);\n }\n if (profileId === INVOICE_RESPONSE_PROFILE_ID) {\n return yield* decodeInvoiceResponse(parsed);\n }\n }\n\n const rootNodes = Object.keys(parsed);\n return yield* Effect.fail(new SchemaIssue.InvalidValue({ message: `Unsupported document type: ${rootNodes.join(',')}` }, value, options));\n});\n\n/**\n * @description Loose document object -> XML string. Mirrors {@link decodeDocumentXml} by dispatching on the decoded discriminant.\n */\nconst encodeDocumentXml = Effect.fn('encode-peppol-document-xml')(function* (value: PeppolDocumentObject, options: SchemaAST.ParseOptions) {\n let content: unknown;\n\n if (isPeppolInvoice(value) || Predicate.hasProperty(value, 'invoiceLines')) {\n content = yield* encodeInvoice(value as never);\n } else if (isPeppolCreditNote(value) || Predicate.hasProperty(value, 'creditNoteLines')) {\n content = yield* encodeCreditNote(value as never);\n } else if (isPeppolMessageLevelResponse(value) || value.profileId === MESSAGE_LEVEL_RESPONSE_PROFILE_ID) {\n content = yield* encodeMessageLevelResponse(value as never);\n } else if (isPeppolInvoiceResponse(value) || value.profileId === INVOICE_RESPONSE_PROFILE_ID) {\n content = yield* encodeInvoiceResponse(value as never);\n } else {\n const rootNodes = Object.keys(value);\n console.log(value, isPeppolInvoice(value), isPeppolCreditNote(value), isPeppolMessageLevelResponse(value), isPeppolInvoiceResponse(value));\n return yield* Effect.fail(\n new SchemaIssue.InvalidValue({ message: `Unsupported document type: ${value.profileId}\\n${rootNodes.join(',')}` }, value, options)\n );\n }\n\n return new XMLBuilder(builderOptions).build(content) as string;\n});\n\n/**\n * @description Union of every supported PEPPOL business document. Members discriminate cleanly: invoice vs credit note via `invoiceLines`/`creditNoteLines`,\n * message-level vs invoice response via the `profileId` literal.\n */\nexport const peppolDocumentSchema = peppolDocumentObjectSchema.pipe(\n Schema.encodeTo(Schema.String, {\n encode: SchemaGetter.transformEffect((value, options) => encodeDocumentXml(value, options)),\n decode: SchemaGetter.transformEffect((value, options) => decodeDocumentXml(value, options)),\n })\n);\n\nexport type PeppolDocumentEncoded = Schema.Codec.Encoded<typeof peppolDocumentSchema>;\nexport type PeppolDocumentDecoded = Schema.Schema.Type<typeof peppolDocumentSchema>;\n\n/**\n * @description This defines the types of documents that are sent/received through the peppol network.\n */\nexport type PeppolDocument = PeppolInvoice | PeppolCreditNote;\n/**\n * @description This defines the types of message that are sent/received through the peppol network.\n */\nexport type PeppolMessage = PeppolMessageLevelResponse | PeppolInvoiceResponse;\nexport type PeppolAllDocuments = PeppolDocument | PeppolMessage;\nexport type PeppolDocumentLine = PeppolInvoiceLine | PeppolCreditNoteLine;\n","import { Schema } from 'effect';\n\nimport { opaque } from '#/schemas/utils/opaque.ts';\n\nclass PeppolReferenceId extends opaque<PeppolReferenceId>()(Schema.Struct({ id: Schema.String })) {}\n\nexport const peppolReferenceSchema = Schema.Union([PeppolReferenceId, Schema.Undefined]);\n\nexport type PeppolReferenceSchema = typeof peppolReferenceSchema.Type;\n","import type { PeppolQuantityUnitCode } from '#/schemas/values/quantity-unit-codes-schema.ts';\n\nexport type BaseIntlUnit =\n | 'acre'\n | 'bit'\n | 'byte'\n | 'celsius'\n | 'centimeter'\n | 'degree'\n | 'fahrenheit'\n | 'fluid-ounce'\n | 'foot'\n | 'gallon'\n | 'gigabit'\n | 'gigabyte'\n | 'gram'\n | 'hectare'\n | 'inch'\n | 'kilobit'\n | 'kilobyte'\n | 'kilogram'\n | 'kilometer'\n | 'liter'\n | 'megabit'\n | 'megabyte'\n | 'meter'\n | 'mile'\n | 'mile-scandinavian'\n | 'milliliter'\n | 'millimeter'\n | 'ounce'\n | 'percent'\n | 'petabyte'\n | 'pound'\n | 'stone'\n | 'terabit'\n | 'terabyte'\n | 'yard';\nexport type TimeIntlUnit = 'nanosecond' | 'microsecond' | 'millisecond' | 'second' | 'minute' | 'hour' | 'day' | 'week' | 'month' | 'year';\n\nexport type IntlUnit = BaseIntlUnit | TimeIntlUnit | `${BaseIntlUnit}-per-${TimeIntlUnit}`;\n\nexport const quantityToIntlUnitMap = {\n CMT: 'centimeter',\n MTR: 'meter',\n MMT: 'millimeter',\n KMT: 'kilometer',\n INH: 'inch',\n FOT: 'foot',\n YRD: 'yard',\n SMI: 'mile',\n F49: 'mile-scandinavian',\n ACR: 'acre',\n H18: 'hectare',\n LTR: 'liter',\n MLT: 'milliliter',\n GLI: 'gallon',\n GLL: 'gallon',\n OZA: 'fluid-ounce',\n GRM: 'gram',\n KGM: 'kilogram',\n LBR: 'pound',\n ONZ: 'ounce',\n STI: 'stone',\n STN: 'stone',\n SEC: 'second',\n MIN: 'minute',\n HUR: 'hour',\n DAY: 'day',\n WEE: 'week',\n MON: 'month',\n ANN: 'year',\n B98: 'microsecond',\n C26: 'millisecond',\n C47: 'nanosecond',\n CEL: 'celsius',\n FAH: 'fahrenheit',\n A99: 'bit',\n AD: 'byte',\n '2P': 'kilobyte',\n '4L': 'megabyte',\n E34: 'gigabyte',\n E35: 'terabyte',\n E36: 'petabyte',\n B68: 'gigabit',\n B80: 'gigabit',\n C21: 'kilobit',\n B10: 'bit',\n DD: 'degree',\n P1: 'percent',\n KMH: 'kilometer-per-hour',\n MTS: 'meter-per-second',\n HM: 'mile-per-hour',\n KNT: 'kilometer-per-hour',\n '2X': 'meter-per-minute',\n '40': 'milliliter-per-second',\n '41': 'milliliter-per-minute',\n '4G': 'milliliter',\n '4H': 'micrometer' as IntlUnit,\n A44: 'liter',\n A45: 'meter',\n A11: 'meter',\n A12: 'kilometer',\n B57: 'kilometer',\n '4U': 'pound-per-hour',\n '4M': 'gram-per-hour' as IntlUnit,\n} satisfies Partial<Record<string, IntlUnit>>;\n\nexport function quantityUnitCodeToIntlUnit(code: PeppolQuantityUnitCode | (string & {})): IntlUnit | undefined {\n return (quantityToIntlUnitMap as Record<string, IntlUnit>)[code];\n}\n","import { quantityToIntlUnitMap } from '#/schemas/utils/quantity-unit-code-to-intl-unit.ts';\nimport { quantityUnitCodes } from '#/values/quantity-unit-codes.generated';\n\nexport function formatQuantityWithUnit(\n value: number,\n code: string,\n locale: string = 'en-US',\n unitDisplay: 'short' | 'narrow' | 'long' = 'short'\n): string {\n const intlUnit = quantityToIntlUnitMap[code as keyof typeof quantityToIntlUnitMap];\n\n if (intlUnit) {\n try {\n return new Intl.NumberFormat(locale, { style: 'unit', unit: intlUnit, unitDisplay }).format(value);\n } catch {}\n }\n\n const formattedNumber = new Intl.NumberFormat(locale).format(value);\n const unitName = (quantityUnitCodes as Record<string, string>)[code];\n return `${formattedNumber} ${unitName}`;\n}\n","import type { PeppolCreditNoteTypeCode } from '#/schemas/values/credit-note-type-code-schema.ts';\n\nimport { creditNoteTypeCodes } from '#/values/credit-notes-type-codes.generated';\n\nexport function getCreditNoteTypeCodeDescription(code: PeppolCreditNoteTypeCode): string {\n return (creditNoteTypeCodes as Record<string, string>)[code] as string;\n}\n","import type { PeppolInvoiceTypeCode } from '#/schemas/values/invoice-type-code-schema.ts';\n\nimport { invoiceTypeCodes } from '#/values/invoice-type-codes.generated';\n\nexport function getInvoiceTypeCodeDescription(code: PeppolInvoiceTypeCode): string {\n return (invoiceTypeCodes as Record<string, string>)[code] as string;\n}\n","import type { PeppolCreditNoteTypeCode } from '#/schemas/values/credit-note-type-code-schema.ts';\n\nimport { creditNoteTypeCodes } from '#/values/credit-notes-type-codes.generated';\n\nexport function isValidCreditNoteTypeCode(code: string): code is PeppolCreditNoteTypeCode {\n return code in creditNoteTypeCodes;\n}\n","import type { PeppolInvoiceTypeCode } from '#/schemas/values/invoice-type-code-schema.ts';\n\nimport { invoiceTypeCodes } from '#/values/invoice-type-codes.generated';\n\nexport function isValidInvoiceTypeCode(code: string): code is PeppolInvoiceTypeCode {\n return code in invoiceTypeCodes;\n}\n","import type { PeppolProcesses } from '#/schemas/values/peppol-process-schema.ts';\n\nimport { processesList } from '#/values/processes.generated';\n\nexport function isValidProcess(code: string): code is PeppolProcesses {\n return processesList.includes(code);\n}\n","import { Schema } from 'effect';\n\nimport { isValidMod97_0208 } from '#/peppol-validations/is-valid-mod97-0208.ts';\n\n/**\n * @description Belgian VAT number (`BE` + 10 digits with mod 97-0208 check digits). Effect port of the `BE` member of `vatRegexSchema`: prefix, exact length,\n * pattern, and mod 97 check-digit validation share the original `'Invalid belgian vat number'` message.\n */\nconst belgianVat = Schema.String.check(\n Schema.isStartsWith('BE'),\n Schema.isLengthBetween(12, 12),\n Schema.isPattern(/^BE[01]\\d{9}$/),\n Schema.makeFilter((value: string) => isValidMod97_0208(value.substring(2)).success)\n).annotate({ message: 'Invalid belgian vat number' });\n\n/**\n * @description EU VAT identification number (one member per member-state prefix/pattern). Effect port of `vatRegexSchema` (`z.union([...])` of\n * `z.string().check(...)` members): each member keeps its original prefix + pattern checks as `Schema.String.check` filters.\n */\nexport const peppolVatRegexSchema = Schema.Union([\n belgianVat,\n Schema.String.check(Schema.isStartsWith('AT'), Schema.isPattern(/^ATU\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('BG'), Schema.isPattern(/^BG\\d{9,10}$/)),\n Schema.String.check(Schema.isStartsWith('CY'), Schema.isPattern(/^CY\\d{8}L$/)),\n Schema.String.check(Schema.isStartsWith('CZ'), Schema.isPattern(/^CZ\\d{8,10}$/)),\n Schema.String.check(Schema.isStartsWith('DE'), Schema.isPattern(/^DE\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('DK'), Schema.isPattern(/^DK\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('EE'), Schema.isPattern(/^EE\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('EL'), Schema.isPattern(/^EL\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('GR'), Schema.isPattern(/^GR\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('ES'), Schema.isPattern(/^ES[0-9A-Z]\\d{7}[0-9A-Z]$/)),\n Schema.String.check(Schema.isStartsWith('FI'), Schema.isPattern(/^FI\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('FR'), Schema.isPattern(/^FR[0-9A-Z]{2}\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('GB'), Schema.isPattern(/^GB(\\d{9}(\\d{3})?|[A-Z]{2}\\d{3})$/)),\n Schema.String.check(Schema.isStartsWith('HU'), Schema.isPattern(/^HU\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('IE'), Schema.isPattern(/^IE\\dS\\d{5}L$/)),\n Schema.String.check(Schema.isStartsWith('IT'), Schema.isPattern(/^IT\\d{11}$/)),\n Schema.String.check(Schema.isStartsWith('LT'), Schema.isPattern(/^LT(\\d{9}|\\d{12})$/)),\n Schema.String.check(Schema.isStartsWith('LU'), Schema.isPattern(/^LU\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('LV'), Schema.isPattern(/^LV\\d{11}$/)),\n Schema.String.check(Schema.isStartsWith('MT'), Schema.isPattern(/^MT\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('NL'), Schema.isPattern(/^NL\\d{9}B\\d{2}$/)),\n Schema.String.check(Schema.isStartsWith('PL'), Schema.isPattern(/^PL\\d{10}$/)),\n Schema.String.check(Schema.isStartsWith('PT'), Schema.isPattern(/^PT\\d{9}$/)),\n Schema.String.check(Schema.isStartsWith('RO'), Schema.isPattern(/^RO\\d{2,10}$/)),\n Schema.String.check(Schema.isStartsWith('SE'), Schema.isPattern(/^SE\\d{12}$/)),\n Schema.String.check(Schema.isStartsWith('SI'), Schema.isPattern(/^SI\\d{8}$/)),\n Schema.String.check(Schema.isStartsWith('SK'), Schema.isPattern(/^SK\\d{10}$/)),\n]);\n","import { Predicate, Schema } from 'effect';\n\nimport type { DocumentTypesTableKeys } from '#/values/document-type.generated';\n\nimport { documentTypesTable, documentTypesTableKeys } from '#/values/document-type.generated';\n\n/**\n * @description One of the PEPPOL document type schemes (e.g. `busdox-docid-qns`, `peppol-doctype-wildcard`).\n *\n * @see {@link documentTypesTable}\n */\nexport type PeppolDocumentType = typeof peppolDocumentTypeSchema.Type;\n\n/**\n * @description Validates a full PEPPOL document type identifier (`<scheme>::<value>`) against the known document type table. The scheme prefix must be a known key\n * and the full identifier must exist in the document type table (checked via a filter).\n *\n * @param error - The custom error message to use when validation fails. Defaults to `'invalid peppol document type'`.\n *\n * @returns An Effect schema that matches a valid `scheme::value` document type identifier.\n *\n * @see {@link documentTypesTable}\n */\nexport const peppolDocumentTypeSchema = Schema.TemplateLiteral([Schema.Literals(documentTypesTableKeys), Schema.Literal('::'), Schema.String]).check(\n Schema.makeFilter((val: string) => {\n const [prefix, ...suffix] = val.split('::');\n if (Predicate.isNullish(prefix) || !documentTypesTableKeys.includes(prefix as never)) return false;\n const info = documentTypesTable[prefix as DocumentTypesTableKeys];\n return Predicate.isNotNullish(info) && info.some(v => v === suffix.join('::'));\n })\n);\n","import { Schema } from 'effect';\n\nimport { documentTypesScheme } from '#/values/document-type.generated';\n\n/**\n * @description Validates a PEPPOL document type scheme (e.g. `busdox-docid-qns`, `peppol-doctype-wildcard`).\n *\n * @param error - The error message to use when validation fails. Defaults to `'invalid Peppol document type scheme'`.\n *\n * @returns An Effect schema that accepts only valid document type schemes.\n *\n * @see {@link documentTypesScheme}\n */\nexport const documentTypeSchemesSchema = Schema.Literals(documentTypesScheme as [string, ...Array<string>]);\n","import { Record, Schema } from 'effect';\n\nimport { documentTypesTable } from '#/values/document-type.generated';\n\nconst values = Record.values(documentTypesTable).flat();\n\n/**\n * @description Validates the value part of a PEPPOL document type identifier (the portion after the scheme prefix) against the known document type table.\n *\n * @param error - The error message to use when validation fails. Defaults to `'invalid Peppol document type value'`.\n *\n * @returns An Effect schema that accepts only valid document type values.\n *\n * @see {@link documentTypesTable}\n */\nexport const documentTypeValuesSchema = Schema.String.check(Schema.makeFilter((val: string) => values.includes(val as never)));\n","import { Schema } from 'effect';\n\nimport { invoiceStatusCodesKeys } from '#/values/invoice-status-codes.generated';\n\n/**\n * @description An invoice status code as defined by the PEPPOL subset of UNCL 4343 (T111).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4343-T111/\n */\nexport type PeppolInvoiceStatusCodes = typeof invoiceStatusCodeSchema.Type;\n\n/**\n * @description Validates an invoice status code against the PEPPOL subset of UNCL 4343 (T111).\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid invoice status codes.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/UNCL4343-T111/\n */\nexport const invoiceStatusCodeSchema = Schema.Literals(invoiceStatusCodesKeys).pipe(Schema.brand('PeppolInvoiceStatusCodes'));\n","import { Schema } from 'effect';\n\nimport { participantIdentifierSchemesKeys } from '#/values/participant-identifier-schemes.generated';\n\n/**\n * @description A PEPPOL participant identifier scheme, identifying the scheme of a participant identifier (e.g. EAS codes).\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/\n */\nexport type PeppolParticipantIdentifierCode = typeof participantIdentifierCodeSchema.Type;\n\n/**\n * @description Validates a PEPPOL participant identifier scheme against the participant identifier schemes list.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid participant identifier schemes.\n */\nexport const participantIdentifierCodeSchema = Schema.Literals(participantIdentifierSchemesKeys).pipe(\n Schema.brand('PeppolParticipantIdentifierCode')\n);\n","import { Schema } from 'effect';\n\nimport type { ProcessesKeys } from '#/values/processes.generated';\n\nimport { processes, processesKeys } from '#/values/processes.generated';\n\n/**\n * @description A PEPPOL business process identifier key as defined by the processes codelist.\n *\n * @see {@link processes}\n */\nexport type PeppolProcesses = typeof peppolProcessSchema.Encoded;\n\n/**\n * @description Validates a full PEPPOL business process identifier (`<scheme>::<value>`) against the known processes.\n *\n * @param error - The custom error message to use when validation fails. Defaults to `'invalid peppol process identifier'`.\n *\n * @returns An Effect schema that matches a valid `scheme::value` process identifier.\n *\n * @see {@link processes}\n */\nexport const peppolProcessSchema = Schema.TemplateLiteral([Schema.Literals(processesKeys), Schema.Literal('::'), Schema.String]).check(\n Schema.makeFilter((val: string) => {\n const [prefix, suffix] = val.split('::');\n if (prefix === undefined || suffix === undefined) return false;\n const info = processes[prefix as ProcessesKeys];\n return info !== undefined && info.some(v => v === suffix);\n })\n);\n","import { Schema } from 'effect';\n\nimport type { PeppolDocumentType } from '#/schemas/values/peppol-document-type-schema.ts';\n\nimport { peppolProcessSchema } from '#/schemas/values/peppol-process-schema.ts';\nimport { documentTypesProcessIds } from '#/values/document-type.generated';\n\n/**\n * @description Validates a business process identifier (`<scheme>::<value>`) against the processes allowed for a given document type.\n *\n * @param documentType - The PEPPOL document type scheme whose allowed processes should be used.\n * @param error - The custom error message to use when validation fails. Defaults to `'invalid process type for document type'`.\n *\n * @returns An Effect schema that matches only processes allowed for the given document type.\n *\n * @see {@link peppolProcessSchema}\n * @see {@link documentTypesProcessIds}\n */\nexport function processFromDocumentTypeSchema(documentType: PeppolDocumentType, error = 'invalid process type for document type') {\n const allowed = documentTypesProcessIds[documentType as keyof typeof documentTypesProcessIds];\n if (allowed === undefined) {\n return peppolProcessSchema;\n }\n const values = allowed.map(p => `${p.scheme}::${p.value}`);\n return Schema.String.check(Schema.makeFilter((val: string) => values.includes(val as never))).annotate({ message: error });\n}\n","import { Schema } from 'effect';\n\nimport { vatexCodesKeys } from '#/values/vatex-codes.generated';\n\n/**\n * @description A VAT exemption reason code as defined by the CEF VATEX codelist.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/vatex/\n */\nexport type PeppolVatexCode = typeof vatexCodeSchema.Type;\n\n/**\n * @description Validates a VAT exemption reason code against the CEF VATEX codelist.\n *\n * @param error - The custom error message to use when validation fails.\n *\n * @returns An Effect schema that accepts only valid VAT exemption reason codes.\n *\n * @validations\n * - BR-CL-22: VAT exemption reason code MUST be a valid CEF VATEX code.\n *\n * @see https://docs.peppol.eu/poacc/billing/3.0/codelist/vatex/\n */\nexport const vatexCodeSchema = Schema.Literals(vatexCodesKeys).pipe(Schema.brand('PeppolVatexCode'));\n"],"mappings":"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"}
|