@fin.cx/einvoice 5.0.3 → 5.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (116) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/einvoice.d.ts +4 -8
  3. package/dist_ts/einvoice.js +46 -7
  4. package/dist_ts/formats/converters/xml-to-einvoice.converter.d.ts +21 -0
  5. package/dist_ts/formats/converters/xml-to-einvoice.converter.js +127 -0
  6. package/dist_ts/formats/semantic/bt-bg.model.d.ts +445 -0
  7. package/dist_ts/formats/semantic/bt-bg.model.js +12 -0
  8. package/dist_ts/formats/semantic/semantic.adapter.d.ts +87 -0
  9. package/dist_ts/formats/semantic/semantic.adapter.js +538 -0
  10. package/dist_ts/formats/semantic/semantic.validator.d.ts +48 -0
  11. package/dist_ts/formats/semantic/semantic.validator.js +596 -0
  12. package/dist_ts/formats/utils/currency.calculator.decimal.d.ts +98 -0
  13. package/dist_ts/formats/utils/currency.calculator.decimal.js +212 -0
  14. package/dist_ts/formats/utils/currency.utils.d.ts +99 -0
  15. package/dist_ts/formats/utils/currency.utils.js +250 -0
  16. package/dist_ts/formats/utils/decimal.d.ts +151 -0
  17. package/dist_ts/formats/utils/decimal.js +435 -0
  18. package/dist_ts/formats/validation/codelist.validator.d.ts +49 -0
  19. package/dist_ts/formats/validation/codelist.validator.js +188 -0
  20. package/dist_ts/formats/validation/conformance.harness.d.ts +99 -0
  21. package/dist_ts/formats/validation/conformance.harness.js +471 -0
  22. package/dist_ts/formats/validation/en16931.business-rules.validator.d.ts +58 -0
  23. package/dist_ts/formats/validation/en16931.business-rules.validator.js +459 -0
  24. package/dist_ts/formats/validation/facturx.validator.d.ts +75 -0
  25. package/dist_ts/formats/validation/facturx.validator.js +522 -0
  26. package/dist_ts/formats/validation/integrated.validator.d.ts +82 -0
  27. package/dist_ts/formats/validation/integrated.validator.js +311 -0
  28. package/dist_ts/formats/validation/peppol.validator.d.ts +77 -0
  29. package/dist_ts/formats/validation/peppol.validator.js +529 -0
  30. package/dist_ts/formats/validation/schematron.downloader.d.ts +71 -0
  31. package/dist_ts/formats/validation/schematron.downloader.js +254 -0
  32. package/dist_ts/formats/validation/schematron.integration.d.ts +60 -0
  33. package/dist_ts/formats/validation/schematron.integration.js +230 -0
  34. package/dist_ts/formats/validation/schematron.validator.d.ts +79 -0
  35. package/dist_ts/formats/validation/schematron.validator.js +288 -0
  36. package/dist_ts/formats/validation/schematron.worker.d.ts +50 -0
  37. package/dist_ts/formats/validation/schematron.worker.js +185 -0
  38. package/dist_ts/formats/validation/validation.types.d.ts +163 -0
  39. package/dist_ts/formats/validation/validation.types.js +181 -0
  40. package/dist_ts/formats/validation/vat-categories.validator.d.ts +87 -0
  41. package/dist_ts/formats/validation/vat-categories.validator.js +497 -0
  42. package/dist_ts/formats/validation/xrechnung.validator.d.ts +92 -0
  43. package/dist_ts/formats/validation/xrechnung.validator.js +417 -0
  44. package/dist_ts/interfaces/common.d.ts +1 -0
  45. package/dist_ts/interfaces/en16931-metadata.d.ts +83 -0
  46. package/dist_ts/interfaces/en16931-metadata.js +6 -0
  47. package/dist_ts/plugins.d.ts +3 -1
  48. package/dist_ts/plugins.js +7 -2
  49. package/dist_ts_install/download-schematron.d.ts +6 -0
  50. package/dist_ts_install/download-schematron.js +62 -0
  51. package/dist_ts_install/download-test-samples.d.ts +19 -0
  52. package/dist_ts_install/download-test-samples.js +169 -0
  53. package/dist_ts_install/download-xrechnung-rules.d.ts +7 -0
  54. package/dist_ts_install/download-xrechnung-rules.js +146 -0
  55. package/dist_ts_install/index.d.ts +8 -0
  56. package/dist_ts_install/index.js +246 -0
  57. package/package.json +9 -3
  58. package/readme.md +255 -810
  59. package/ts/00_commitinfo_data.ts +1 -1
  60. package/ts/einvoice.ts +63 -14
  61. package/ts/formats/converters/xml-to-einvoice.converter.ts +142 -0
  62. package/ts/formats/semantic/bt-bg.model.ts +524 -0
  63. package/ts/formats/semantic/semantic.adapter.ts +600 -0
  64. package/ts/formats/semantic/semantic.validator.ts +654 -0
  65. package/ts/formats/utils/currency.calculator.decimal.ts +323 -0
  66. package/ts/formats/utils/currency.utils.ts +299 -0
  67. package/ts/formats/utils/decimal.ts +509 -0
  68. package/ts/formats/validation/codelist.validator.ts +317 -0
  69. package/ts/formats/validation/conformance.harness.ts +591 -0
  70. package/ts/formats/validation/en16931.business-rules.validator.ts +694 -0
  71. package/ts/formats/validation/facturx.validator.ts +579 -0
  72. package/ts/formats/validation/integrated.validator.ts +405 -0
  73. package/ts/formats/validation/peppol.validator.ts +589 -0
  74. package/ts/formats/validation/schematron.downloader.ts +304 -0
  75. package/ts/formats/validation/schematron.integration.ts +285 -0
  76. package/ts/formats/validation/schematron.validator.ts +348 -0
  77. package/ts/formats/validation/schematron.worker.ts +221 -0
  78. package/ts/formats/validation/validation.types.ts +274 -0
  79. package/ts/formats/validation/vat-categories.validator.ts +845 -0
  80. package/ts/formats/validation/xrechnung.validator.ts +494 -0
  81. package/ts/interfaces/common.ts +1 -0
  82. package/ts/interfaces/en16931-metadata.ts +104 -0
  83. package/ts/plugins.ts +8 -0
  84. package/ts/tspublish.json +3 -0
  85. package/dist_ts/classes.decoder.d.ts +0 -40
  86. package/dist_ts/classes.decoder.js +0 -320
  87. package/dist_ts/classes.encoder.d.ts +0 -51
  88. package/dist_ts/classes.encoder.js +0 -293
  89. package/dist_ts/classes.xinvoice.d.ts +0 -136
  90. package/dist_ts/classes.xinvoice.js +0 -352
  91. package/dist_ts/formats/base.decoder.d.ts +0 -19
  92. package/dist_ts/formats/base.decoder.js +0 -130
  93. package/dist_ts/formats/base.validator.d.ts +0 -44
  94. package/dist_ts/formats/base.validator.js +0 -39
  95. package/dist_ts/formats/decoder.factory.d.ts +0 -15
  96. package/dist_ts/formats/decoder.factory.js +0 -46
  97. package/dist_ts/formats/factorx.decoder.d.ts +0 -18
  98. package/dist_ts/formats/factorx.decoder.js +0 -178
  99. package/dist_ts/formats/factorx.encoder.d.ts +0 -51
  100. package/dist_ts/formats/factorx.encoder.js +0 -293
  101. package/dist_ts/formats/facturx.decoder.d.ts +0 -18
  102. package/dist_ts/formats/facturx.decoder.js +0 -210
  103. package/dist_ts/formats/facturx.encoder.d.ts +0 -51
  104. package/dist_ts/formats/facturx.encoder.js +0 -293
  105. package/dist_ts/formats/facturx.validator.d.ts +0 -67
  106. package/dist_ts/formats/facturx.validator.js +0 -266
  107. package/dist_ts/formats/pdf/robust-pdf.extractor.d.ts +0 -40
  108. package/dist_ts/formats/pdf/robust-pdf.extractor.js +0 -324
  109. package/dist_ts/formats/ubl.validator.d.ts +0 -82
  110. package/dist_ts/formats/ubl.validator.js +0 -306
  111. package/dist_ts/formats/validator.factory.d.ts +0 -18
  112. package/dist_ts/formats/validator.factory.js +0 -78
  113. package/dist_ts/formats/xinvoice.decoder.d.ts +0 -28
  114. package/dist_ts/formats/xinvoice.decoder.js +0 -332
  115. package/dist_ts/formats/xinvoice.encoder.d.ts +0 -19
  116. package/dist_ts/formats/xinvoice.encoder.js +0 -282
@@ -0,0 +1,163 @@
1
+ /**
2
+ * Enhanced validation types for EN16931 compliance
3
+ */
4
+ export interface ValidationResult {
5
+ ruleId: string;
6
+ source: string;
7
+ severity: 'error' | 'warning' | 'info';
8
+ message: string;
9
+ btReference?: string;
10
+ bgReference?: string;
11
+ semanticPath?: string;
12
+ syntaxPath?: string;
13
+ field?: string;
14
+ value?: any;
15
+ expected?: any;
16
+ tolerance?: number;
17
+ profile?: string;
18
+ codeList?: {
19
+ name: string;
20
+ version: string;
21
+ };
22
+ hint?: string;
23
+ remediation?: string;
24
+ }
25
+ export interface ValidationOptions {
26
+ profile?: 'EN16931' | 'PEPPOL_BIS_3.0' | 'XRECHNUNG_3.0' | 'FACTURX_BASIC' | 'FACTURX_EN16931';
27
+ formatHint?: 'UBL' | 'CII';
28
+ checkCalculations?: boolean;
29
+ checkVAT?: boolean;
30
+ checkAllowances?: boolean;
31
+ checkCodeLists?: boolean;
32
+ checkCardinality?: boolean;
33
+ tolerance?: number;
34
+ currencyMinorUnits?: Map<string, number>;
35
+ strictMode?: boolean;
36
+ reportOnly?: boolean;
37
+ featureFlags?: string[];
38
+ }
39
+ export interface ValidationReport {
40
+ valid: boolean;
41
+ profile: string;
42
+ timestamp: string;
43
+ validatorVersion: string;
44
+ rulesetVersion: string;
45
+ results: ValidationResult[];
46
+ errorCount: number;
47
+ warningCount: number;
48
+ infoCount: number;
49
+ rulesChecked: number;
50
+ rulesTotal: number;
51
+ coverage: number;
52
+ validationTime: number;
53
+ documentId?: string;
54
+ documentType?: string;
55
+ format?: string;
56
+ }
57
+ export declare const CodeLists: {
58
+ ISO4217: {
59
+ version: string;
60
+ codes: Set<string>;
61
+ };
62
+ ISO3166: {
63
+ version: string;
64
+ codes: Set<string>;
65
+ };
66
+ UNCL5305: {
67
+ version: string;
68
+ codes: Map<string, string>;
69
+ };
70
+ UNCL1001: {
71
+ version: string;
72
+ codes: Map<string, string>;
73
+ };
74
+ UNCL4461: {
75
+ version: string;
76
+ codes: Map<string, string>;
77
+ };
78
+ UNECERec20: {
79
+ version: string;
80
+ codes: Map<string, string>;
81
+ };
82
+ };
83
+ export declare const SemanticModel: {
84
+ BT1: string;
85
+ BT2: string;
86
+ BT3: string;
87
+ BT5: string;
88
+ BT6: string;
89
+ BT7: string;
90
+ BT8: string;
91
+ BT9: string;
92
+ BT10: string;
93
+ BT11: string;
94
+ BT12: string;
95
+ BT13: string;
96
+ BT14: string;
97
+ BT15: string;
98
+ BT16: string;
99
+ BT17: string;
100
+ BT18: string;
101
+ BT19: string;
102
+ BT20: string;
103
+ BT21: string;
104
+ BT22: string;
105
+ BT23: string;
106
+ BT24: string;
107
+ BT27: string;
108
+ BT28: string;
109
+ BT29: string;
110
+ BT30: string;
111
+ BT31: string;
112
+ BT32: string;
113
+ BT33: string;
114
+ BT34: string;
115
+ BT44: string;
116
+ BT45: string;
117
+ BT46: string;
118
+ BT47: string;
119
+ BT48: string;
120
+ BT49: string;
121
+ BT106: string;
122
+ BT107: string;
123
+ BT108: string;
124
+ BT109: string;
125
+ BT110: string;
126
+ BT111: string;
127
+ BT112: string;
128
+ BT113: string;
129
+ BT114: string;
130
+ BT115: string;
131
+ BG1: string;
132
+ BG2: string;
133
+ BG3: string;
134
+ BG4: string;
135
+ BG5: string;
136
+ BG6: string;
137
+ BG7: string;
138
+ BG8: string;
139
+ BG9: string;
140
+ BG10: string;
141
+ BG11: string;
142
+ BG12: string;
143
+ BG13: string;
144
+ BG14: string;
145
+ BG15: string;
146
+ BG16: string;
147
+ BG17: string;
148
+ BG18: string;
149
+ BG19: string;
150
+ BG20: string;
151
+ BG21: string;
152
+ BG22: string;
153
+ BG23: string;
154
+ BG24: string;
155
+ BG25: string;
156
+ BG26: string;
157
+ BG27: string;
158
+ BG28: string;
159
+ BG29: string;
160
+ BG30: string;
161
+ BG31: string;
162
+ BG32: string;
163
+ };
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Enhanced validation types for EN16931 compliance
3
+ */
4
+ // Code list definitions
5
+ export const CodeLists = {
6
+ // ISO 4217 Currency codes
7
+ ISO4217: {
8
+ version: '2021',
9
+ codes: new Set([
10
+ 'EUR', 'USD', 'GBP', 'CHF', 'SEK', 'NOK', 'DKK', 'PLN', 'CZK', 'HUF',
11
+ 'RON', 'BGN', 'HRK', 'TRY', 'ISK', 'JPY', 'CNY', 'AUD', 'CAD', 'NZD'
12
+ ])
13
+ },
14
+ // ISO 3166-1 alpha-2 Country codes
15
+ ISO3166: {
16
+ version: '2020',
17
+ codes: new Set([
18
+ 'DE', 'FR', 'IT', 'ES', 'NL', 'BE', 'AT', 'CH', 'GB', 'IE', 'PT', 'GR',
19
+ 'SE', 'NO', 'DK', 'FI', 'PL', 'CZ', 'HU', 'RO', 'BG', 'HR', 'SI', 'SK',
20
+ 'LT', 'LV', 'EE', 'LU', 'MT', 'CY', 'US', 'CA', 'AU', 'NZ', 'JP', 'CN'
21
+ ])
22
+ },
23
+ // UNCL5305 Tax category codes
24
+ UNCL5305: {
25
+ version: 'D16B',
26
+ codes: new Map([
27
+ ['S', 'Standard rate'],
28
+ ['Z', 'Zero rated'],
29
+ ['E', 'Exempt from tax'],
30
+ ['AE', 'VAT Reverse Charge'],
31
+ ['K', 'VAT exempt for EEA intra-community supply'],
32
+ ['G', 'Free export outside EU'],
33
+ ['O', 'Services outside scope of tax'],
34
+ ['L', 'Canary Islands general indirect tax'],
35
+ ['M', 'Tax for production, services and importation in Ceuta and Melilla']
36
+ ])
37
+ },
38
+ // UNCL1001 Document type codes
39
+ UNCL1001: {
40
+ version: 'D16B',
41
+ codes: new Map([
42
+ ['380', 'Commercial invoice'],
43
+ ['381', 'Credit note'],
44
+ ['383', 'Debit note'],
45
+ ['384', 'Corrected invoice'],
46
+ ['389', 'Self-billed invoice'],
47
+ ['751', 'Invoice information for accounting purposes']
48
+ ])
49
+ },
50
+ // UNCL4461 Payment means codes
51
+ UNCL4461: {
52
+ version: 'D16B',
53
+ codes: new Map([
54
+ ['1', 'Instrument not defined'],
55
+ ['10', 'In cash'],
56
+ ['20', 'Cheque'],
57
+ ['30', 'Credit transfer'],
58
+ ['31', 'Debit transfer'],
59
+ ['42', 'Payment to bank account'],
60
+ ['48', 'Bank card'],
61
+ ['49', 'Direct debit'],
62
+ ['58', 'SEPA credit transfer'],
63
+ ['59', 'SEPA direct debit']
64
+ ])
65
+ },
66
+ // UNECE Rec 20 Unit codes (subset)
67
+ UNECERec20: {
68
+ version: '2021',
69
+ codes: new Map([
70
+ ['C62', 'One (unit)'],
71
+ ['DAY', 'Day'],
72
+ ['HAR', 'Hectare'],
73
+ ['HUR', 'Hour'],
74
+ ['KGM', 'Kilogram'],
75
+ ['KTM', 'Kilometre'],
76
+ ['KWH', 'Kilowatt hour'],
77
+ ['LS', 'Lump sum'],
78
+ ['LTR', 'Litre'],
79
+ ['MIN', 'Minute'],
80
+ ['MMT', 'Millimetre'],
81
+ ['MON', 'Month'],
82
+ ['MTK', 'Square metre'],
83
+ ['MTQ', 'Cubic metre'],
84
+ ['MTR', 'Metre'],
85
+ ['NAR', 'Number of articles'],
86
+ ['NPR', 'Number of pairs'],
87
+ ['P1', 'Percent'],
88
+ ['SET', 'Set'],
89
+ ['TNE', 'Tonne (metric ton)'],
90
+ ['WEE', 'Week']
91
+ ])
92
+ }
93
+ };
94
+ // Business Term (BT) and Business Group (BG) mappings
95
+ export const SemanticModel = {
96
+ // Document level BTs
97
+ BT1: 'Invoice number',
98
+ BT2: 'Invoice issue date',
99
+ BT3: 'Invoice type code',
100
+ BT5: 'Invoice currency code',
101
+ BT6: 'VAT accounting currency code',
102
+ BT7: 'Value added tax point date',
103
+ BT8: 'Value added tax point date code',
104
+ BT9: 'Payment due date',
105
+ BT10: 'Buyer reference',
106
+ BT11: 'Project reference',
107
+ BT12: 'Contract reference',
108
+ BT13: 'Purchase order reference',
109
+ BT14: 'Sales order reference',
110
+ BT15: 'Receiving advice reference',
111
+ BT16: 'Despatch advice reference',
112
+ BT17: 'Tender or lot reference',
113
+ BT18: 'Invoiced object identifier',
114
+ BT19: 'Buyer accounting reference',
115
+ BT20: 'Payment terms',
116
+ BT21: 'Seller note',
117
+ BT22: 'Buyer note',
118
+ BT23: 'Business process',
119
+ BT24: 'Specification identifier',
120
+ // Seller BTs (BG-4)
121
+ BT27: 'Seller name',
122
+ BT28: 'Seller trading name',
123
+ BT29: 'Seller identifier',
124
+ BT30: 'Seller legal registration identifier',
125
+ BT31: 'Seller VAT identifier',
126
+ BT32: 'Seller tax registration identifier',
127
+ BT33: 'Seller additional legal information',
128
+ BT34: 'Seller electronic address',
129
+ // Buyer BTs (BG-7)
130
+ BT44: 'Buyer name',
131
+ BT45: 'Buyer trading name',
132
+ BT46: 'Buyer identifier',
133
+ BT47: 'Buyer legal registration identifier',
134
+ BT48: 'Buyer VAT identifier',
135
+ BT49: 'Buyer electronic address',
136
+ // Monetary totals (BG-22)
137
+ BT106: 'Sum of Invoice line net amount',
138
+ BT107: 'Sum of allowances on document level',
139
+ BT108: 'Sum of charges on document level',
140
+ BT109: 'Invoice total amount without VAT',
141
+ BT110: 'Invoice total VAT amount',
142
+ BT111: 'Invoice total VAT amount in accounting currency',
143
+ BT112: 'Invoice total amount with VAT',
144
+ BT113: 'Paid amount',
145
+ BT114: 'Rounding amount',
146
+ BT115: 'Amount due for payment',
147
+ // Business Groups
148
+ BG1: 'Invoice note',
149
+ BG2: 'Process control',
150
+ BG3: 'Preceding Invoice reference',
151
+ BG4: 'Seller',
152
+ BG5: 'Seller postal address',
153
+ BG6: 'Seller contact',
154
+ BG7: 'Buyer',
155
+ BG8: 'Buyer postal address',
156
+ BG9: 'Buyer contact',
157
+ BG10: 'Payee',
158
+ BG11: 'Seller tax representative',
159
+ BG12: 'Seller tax representative postal address',
160
+ BG13: 'Delivery information',
161
+ BG14: 'Delivery or invoice period',
162
+ BG15: 'Deliver to address',
163
+ BG16: 'Payment instructions',
164
+ BG17: 'Credit transfer',
165
+ BG18: 'Payment card information',
166
+ BG19: 'Direct debit',
167
+ BG20: 'Document level allowances',
168
+ BG21: 'Document level charges',
169
+ BG22: 'Document totals',
170
+ BG23: 'VAT breakdown',
171
+ BG24: 'Additional supporting documents',
172
+ BG25: 'Invoice line',
173
+ BG26: 'Invoice line period',
174
+ BG27: 'Invoice line allowances',
175
+ BG28: 'Invoice line charges',
176
+ BG29: 'Price details',
177
+ BG30: 'Line VAT information',
178
+ BG31: 'Item information',
179
+ BG32: 'Item attributes'
180
+ };
181
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi50eXBlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL2Zvcm1hdHMvdmFsaWRhdGlvbi92YWxpZGF0aW9uLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBcUZILHdCQUF3QjtBQUN4QixNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUc7SUFDdkIsMEJBQTBCO0lBQzFCLE9BQU8sRUFBRTtRQUNQLE9BQU8sRUFBRSxNQUFNO1FBQ2YsS0FBSyxFQUFFLElBQUksR0FBRyxDQUFDO1lBQ2IsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSztZQUNwRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxLQUFLO1NBQ3JFLENBQUM7S0FDSDtJQUVELG1DQUFtQztJQUNuQyxPQUFPLEVBQUU7UUFDUCxPQUFPLEVBQUUsTUFBTTtRQUNmLEtBQUssRUFBRSxJQUFJLEdBQUcsQ0FBQztZQUNiLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSTtZQUN0RSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUk7WUFDdEUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLElBQUksRUFB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
@@ -0,0 +1,87 @@
1
+ import type { EInvoice } from '../../einvoice.js';
2
+ import type { ValidationResult } from './validation.types.js';
3
+ /**
4
+ * VAT Category codes according to UNCL5305
5
+ */
6
+ export declare enum VATCategory {
7
+ S = "S",// Standard rate
8
+ Z = "Z",// Zero rated
9
+ E = "E",// Exempt from tax
10
+ AE = "AE",// VAT Reverse Charge
11
+ K = "K",// VAT exempt for EEA intra-community supply
12
+ G = "G",// Free export outside EU
13
+ O = "O",// Services outside scope of tax
14
+ L = "L",// Canary Islands general indirect tax
15
+ M = "M"
16
+ }
17
+ /**
18
+ * Extended VAT information for EN16931
19
+ */
20
+ export interface VATBreakdown {
21
+ category: VATCategory;
22
+ rate: number;
23
+ taxableAmount: number;
24
+ taxAmount: number;
25
+ exemptionReason?: string;
26
+ exemptionReasonCode?: string;
27
+ }
28
+ /**
29
+ * Comprehensive VAT Category Rules Validator
30
+ * Implements all EN16931 VAT category-specific business rules
31
+ */
32
+ export declare class VATCategoriesValidator {
33
+ private results;
34
+ private currencyCalculator?;
35
+ /**
36
+ * Validate VAT categories according to EN16931
37
+ */
38
+ validate(invoice: EInvoice): ValidationResult[];
39
+ /**
40
+ * Validate Standard Rate VAT (BR-S-*)
41
+ */
42
+ private validateStandardRate;
43
+ /**
44
+ * Validate Zero Rated VAT (BR-Z-*)
45
+ */
46
+ private validateZeroRated;
47
+ /**
48
+ * Validate Exempt from Tax (BR-E-*)
49
+ */
50
+ private validateExempt;
51
+ /**
52
+ * Validate VAT Reverse Charge (BR-AE-*)
53
+ */
54
+ private validateReverseCharge;
55
+ /**
56
+ * Validate Intra-Community Supply (BR-K-*)
57
+ */
58
+ private validateIntraCommunity;
59
+ /**
60
+ * Validate Export Outside EU (BR-G-*)
61
+ */
62
+ private validateExport;
63
+ /**
64
+ * Validate Out of Scope Services (BR-O-*)
65
+ */
66
+ private validateOutOfScope;
67
+ /**
68
+ * Cross-category validation rules
69
+ */
70
+ private validateCrossCategoryRules;
71
+ private groupItemsByVATCategory;
72
+ private groupBreakdownsByCategory;
73
+ private determineVATCategory;
74
+ private inferCategoryFromRate;
75
+ private calculateTaxableAmount;
76
+ private calculateVATAmount;
77
+ private areAmountsEqual;
78
+ private isEUCountry;
79
+ private isReverseChargeService;
80
+ private addError;
81
+ private addWarning;
82
+ private getBTReference;
83
+ }
84
+ /**
85
+ * Get VAT category name
86
+ */
87
+ export declare function getVATCategoryName(category: VATCategory): string;