@cheqi/sdk 0.1.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.
Files changed (335) hide show
  1. package/README.md +57 -0
  2. package/dist/cheqi-sdk.d.ts +98 -0
  3. package/dist/cheqi-sdk.js +134 -0
  4. package/dist/cheqi-sdk.js.map +1 -0
  5. package/dist/config.d.ts +23 -0
  6. package/dist/config.js +63 -0
  7. package/dist/config.js.map +1 -0
  8. package/dist/crypto.d.ts +9 -0
  9. package/dist/crypto.js +10 -0
  10. package/dist/crypto.js.map +1 -0
  11. package/dist/entity/index.d.ts +1 -0
  12. package/dist/entity/index.js +2 -0
  13. package/dist/entity/index.js.map +1 -0
  14. package/dist/errors.d.ts +40 -0
  15. package/dist/errors.js +48 -0
  16. package/dist/errors.js.map +1 -0
  17. package/dist/http/client.d.ts +32 -0
  18. package/dist/http/client.js +199 -0
  19. package/dist/http/client.js.map +1 -0
  20. package/dist/http/endpoints.d.ts +13 -0
  21. package/dist/http/endpoints.js +14 -0
  22. package/dist/http/endpoints.js.map +1 -0
  23. package/dist/http/retry.d.ts +30 -0
  24. package/dist/http/retry.js +74 -0
  25. package/dist/http/retry.js.map +1 -0
  26. package/dist/index.d.ts +21 -0
  27. package/dist/index.js +19 -0
  28. package/dist/index.js.map +1 -0
  29. package/dist/logger.d.ts +31 -0
  30. package/dist/logger.js +31 -0
  31. package/dist/logger.js.map +1 -0
  32. package/dist/models/domain.d.ts +366 -0
  33. package/dist/models/domain.js +467 -0
  34. package/dist/models/domain.js.map +1 -0
  35. package/dist/models/entity.d.ts +226 -0
  36. package/dist/models/entity.js +334 -0
  37. package/dist/models/entity.js.map +1 -0
  38. package/dist/models/generated/AccountIdentifierType.d.ts +24 -0
  39. package/dist/models/generated/AccountIdentifierType.js +43 -0
  40. package/dist/models/generated/AccountIdentifierType.js.map +1 -0
  41. package/dist/models/generated/AcknowledgeRequest.d.ts +32 -0
  42. package/dist/models/generated/AcknowledgeRequest.js +42 -0
  43. package/dist/models/generated/AcknowledgeRequest.js.map +1 -0
  44. package/dist/models/generated/AddressDTO.d.ts +74 -0
  45. package/dist/models/generated/AddressDTO.js +64 -0
  46. package/dist/models/generated/AddressDTO.js.map +1 -0
  47. package/dist/models/generated/AuthorizedCardDTO.d.ts +38 -0
  48. package/dist/models/generated/AuthorizedCardDTO.js +44 -0
  49. package/dist/models/generated/AuthorizedCardDTO.js.map +1 -0
  50. package/dist/models/generated/AuthorizedCompanyDTO.d.ts +64 -0
  51. package/dist/models/generated/AuthorizedCompanyDTO.js +54 -0
  52. package/dist/models/generated/AuthorizedCompanyDTO.js.map +1 -0
  53. package/dist/models/generated/AuthorizedEmailDTO.d.ts +38 -0
  54. package/dist/models/generated/AuthorizedEmailDTO.js +44 -0
  55. package/dist/models/generated/AuthorizedEmailDTO.js.map +1 -0
  56. package/dist/models/generated/AuthorizedPaymentAccountDTO.d.ts +70 -0
  57. package/dist/models/generated/AuthorizedPaymentAccountDTO.js +63 -0
  58. package/dist/models/generated/AuthorizedPaymentAccountDTO.js.map +1 -0
  59. package/dist/models/generated/AuthorizedResourcesResponse.d.ts +53 -0
  60. package/dist/models/generated/AuthorizedResourcesResponse.js +51 -0
  61. package/dist/models/generated/AuthorizedResourcesResponse.js.map +1 -0
  62. package/dist/models/generated/Barcode.d.ts +44 -0
  63. package/dist/models/generated/Barcode.js +46 -0
  64. package/dist/models/generated/Barcode.js.map +1 -0
  65. package/dist/models/generated/BarcodeType.d.ts +29 -0
  66. package/dist/models/generated/BarcodeType.js +48 -0
  67. package/dist/models/generated/BarcodeType.js.map +1 -0
  68. package/dist/models/generated/BuyerType.d.ts +25 -0
  69. package/dist/models/generated/BuyerType.js +44 -0
  70. package/dist/models/generated/BuyerType.js.map +1 -0
  71. package/dist/models/generated/CardDetails.d.ts +54 -0
  72. package/dist/models/generated/CardDetails.js +57 -0
  73. package/dist/models/generated/CardDetails.js.map +1 -0
  74. package/dist/models/generated/Charge.d.ts +44 -0
  75. package/dist/models/generated/Charge.js +48 -0
  76. package/dist/models/generated/Charge.js.map +1 -0
  77. package/dist/models/generated/CheqiCreditNote.d.ts +148 -0
  78. package/dist/models/generated/CheqiCreditNote.js +86 -0
  79. package/dist/models/generated/CheqiCreditNote.js.map +1 -0
  80. package/dist/models/generated/CheqiReceipt.d.ts +143 -0
  81. package/dist/models/generated/CheqiReceipt.js +85 -0
  82. package/dist/models/generated/CheqiReceipt.js.map +1 -0
  83. package/dist/models/generated/CompanyCreationRequest.d.ts +114 -0
  84. package/dist/models/generated/CompanyCreationRequest.js +80 -0
  85. package/dist/models/generated/CompanyCreationRequest.js.map +1 -0
  86. package/dist/models/generated/CompanyIdentifierDTO.d.ts +92 -0
  87. package/dist/models/generated/CompanyIdentifierDTO.js +73 -0
  88. package/dist/models/generated/CompanyIdentifierDTO.js.map +1 -0
  89. package/dist/models/generated/CompanyIdentifierRequirement.d.ts +63 -0
  90. package/dist/models/generated/CompanyIdentifierRequirement.js +53 -0
  91. package/dist/models/generated/CompanyIdentifierRequirement.js.map +1 -0
  92. package/dist/models/generated/CompanyIdentifierType.d.ts +29 -0
  93. package/dist/models/generated/CompanyIdentifierType.js +48 -0
  94. package/dist/models/generated/CompanyIdentifierType.js.map +1 -0
  95. package/dist/models/generated/CompanyReceiptDeliveryDeviceDto.d.ts +65 -0
  96. package/dist/models/generated/CompanyReceiptDeliveryDeviceDto.js +58 -0
  97. package/dist/models/generated/CompanyReceiptDeliveryDeviceDto.js.map +1 -0
  98. package/dist/models/generated/CompanyReceiptDeliverySettingsResponse.d.ts +39 -0
  99. package/dist/models/generated/CompanyReceiptDeliverySettingsResponse.js +45 -0
  100. package/dist/models/generated/CompanyReceiptDeliverySettingsResponse.js.map +1 -0
  101. package/dist/models/generated/CompanyResponseBody.d.ts +151 -0
  102. package/dist/models/generated/CompanyResponseBody.js +85 -0
  103. package/dist/models/generated/CompanyResponseBody.js.map +1 -0
  104. package/dist/models/generated/CompanyRole.d.ts +25 -0
  105. package/dist/models/generated/CompanyRole.js +44 -0
  106. package/dist/models/generated/CompanyRole.js.map +1 -0
  107. package/dist/models/generated/ContactDetailDto.d.ts +50 -0
  108. package/dist/models/generated/ContactDetailDto.js +48 -0
  109. package/dist/models/generated/ContactDetailDto.js.map +1 -0
  110. package/dist/models/generated/CreateChildCompanyRequest.d.ts +39 -0
  111. package/dist/models/generated/CreateChildCompanyRequest.js +45 -0
  112. package/dist/models/generated/CreateChildCompanyRequest.js.map +1 -0
  113. package/dist/models/generated/CreateStoreRequest.d.ts +63 -0
  114. package/dist/models/generated/CreateStoreRequest.js +59 -0
  115. package/dist/models/generated/CreateStoreRequest.js.map +1 -0
  116. package/dist/models/generated/CreditNoteContextEnvelope.d.ts +40 -0
  117. package/dist/models/generated/CreditNoteContextEnvelope.js +46 -0
  118. package/dist/models/generated/CreditNoteContextEnvelope.js.map +1 -0
  119. package/dist/models/generated/CreditNoteCreatedResponse.d.ts +50 -0
  120. package/dist/models/generated/CreditNoteCreatedResponse.js +48 -0
  121. package/dist/models/generated/CreditNoteCreatedResponse.js.map +1 -0
  122. package/dist/models/generated/CreditNoteTemplateGenerationRequest.d.ts +59 -0
  123. package/dist/models/generated/CreditNoteTemplateGenerationRequest.js +63 -0
  124. package/dist/models/generated/CreditNoteTemplateGenerationRequest.js.map +1 -0
  125. package/dist/models/generated/CreditNoteTemplateRequest.d.ts +128 -0
  126. package/dist/models/generated/CreditNoteTemplateRequest.js +98 -0
  127. package/dist/models/generated/CreditNoteTemplateRequest.js.map +1 -0
  128. package/dist/models/generated/CreditNoteTemplateResponse.d.ts +39 -0
  129. package/dist/models/generated/CreditNoteTemplateResponse.js +45 -0
  130. package/dist/models/generated/CreditNoteTemplateResponse.js.map +1 -0
  131. package/dist/models/generated/Discount.d.ts +44 -0
  132. package/dist/models/generated/Discount.js +48 -0
  133. package/dist/models/generated/Discount.js.map +1 -0
  134. package/dist/models/generated/DocumentType.d.ts +25 -0
  135. package/dist/models/generated/DocumentType.js +44 -0
  136. package/dist/models/generated/DocumentType.js.map +1 -0
  137. package/dist/models/generated/EmailReceiptRequest.d.ts +39 -0
  138. package/dist/models/generated/EmailReceiptRequest.js +49 -0
  139. package/dist/models/generated/EmailReceiptRequest.js.map +1 -0
  140. package/dist/models/generated/EncryptedCreditNote.d.ts +86 -0
  141. package/dist/models/generated/EncryptedCreditNote.js +72 -0
  142. package/dist/models/generated/EncryptedCreditNote.js.map +1 -0
  143. package/dist/models/generated/EncryptedCreditNoteDto.d.ts +102 -0
  144. package/dist/models/generated/EncryptedCreditNoteDto.js +85 -0
  145. package/dist/models/generated/EncryptedCreditNoteDto.js.map +1 -0
  146. package/dist/models/generated/EncryptedCreditNoteInitiationRequest.d.ts +50 -0
  147. package/dist/models/generated/EncryptedCreditNoteInitiationRequest.js +48 -0
  148. package/dist/models/generated/EncryptedCreditNoteInitiationRequest.js.map +1 -0
  149. package/dist/models/generated/EncryptedCreditNotesRequest.d.ts +51 -0
  150. package/dist/models/generated/EncryptedCreditNotesRequest.js +57 -0
  151. package/dist/models/generated/EncryptedCreditNotesRequest.js.map +1 -0
  152. package/dist/models/generated/EncryptedReceiptDto.d.ts +118 -0
  153. package/dist/models/generated/EncryptedReceiptDto.js +77 -0
  154. package/dist/models/generated/EncryptedReceiptDto.js.map +1 -0
  155. package/dist/models/generated/EncryptedReceiptRequest.d.ts +69 -0
  156. package/dist/models/generated/EncryptedReceiptRequest.js +63 -0
  157. package/dist/models/generated/EncryptedReceiptRequest.js.map +1 -0
  158. package/dist/models/generated/EncryptedReceiptsRequest.d.ts +45 -0
  159. package/dist/models/generated/EncryptedReceiptsRequest.js +53 -0
  160. package/dist/models/generated/EncryptedReceiptsRequest.js.map +1 -0
  161. package/dist/models/generated/IdentificationDetails.d.ts +71 -0
  162. package/dist/models/generated/IdentificationDetails.js +57 -0
  163. package/dist/models/generated/IdentificationDetails.js.map +1 -0
  164. package/dist/models/generated/Identifier.d.ts +38 -0
  165. package/dist/models/generated/Identifier.js +44 -0
  166. package/dist/models/generated/Identifier.js.map +1 -0
  167. package/dist/models/generated/KeyAlgorithm.d.ts +25 -0
  168. package/dist/models/generated/KeyAlgorithm.js +44 -0
  169. package/dist/models/generated/KeyAlgorithm.js.map +1 -0
  170. package/dist/models/generated/MatchedRecipient.d.ts +51 -0
  171. package/dist/models/generated/MatchedRecipient.js +49 -0
  172. package/dist/models/generated/MatchedRecipient.js.map +1 -0
  173. package/dist/models/generated/NotificationDisplayCode.d.ts +39 -0
  174. package/dist/models/generated/NotificationDisplayCode.js +49 -0
  175. package/dist/models/generated/NotificationDisplayCode.js.map +1 -0
  176. package/dist/models/generated/PartyAddress.d.ts +56 -0
  177. package/dist/models/generated/PartyAddress.js +50 -0
  178. package/dist/models/generated/PartyAddress.js.map +1 -0
  179. package/dist/models/generated/PaymentAccountDetails.d.ts +57 -0
  180. package/dist/models/generated/PaymentAccountDetails.js +55 -0
  181. package/dist/models/generated/PaymentAccountDetails.js.map +1 -0
  182. package/dist/models/generated/PaymentMeansEnvelope.d.ts +68 -0
  183. package/dist/models/generated/PaymentMeansEnvelope.js +54 -0
  184. package/dist/models/generated/PaymentMeansEnvelope.js.map +1 -0
  185. package/dist/models/generated/PaymentType.d.ts +26 -0
  186. package/dist/models/generated/PaymentType.js +45 -0
  187. package/dist/models/generated/PaymentType.js.map +1 -0
  188. package/dist/models/generated/Period.d.ts +44 -0
  189. package/dist/models/generated/Period.js +50 -0
  190. package/dist/models/generated/Period.js.map +1 -0
  191. package/dist/models/generated/PermanentFailureAcknowledgeRequest.d.ts +38 -0
  192. package/dist/models/generated/PermanentFailureAcknowledgeRequest.js +44 -0
  193. package/dist/models/generated/PermanentFailureAcknowledgeRequest.js.map +1 -0
  194. package/dist/models/generated/Product.d.ts +122 -0
  195. package/dist/models/generated/Product.js +94 -0
  196. package/dist/models/generated/Product.js.map +1 -0
  197. package/dist/models/generated/PublicKeyResponse.d.ts +51 -0
  198. package/dist/models/generated/PublicKeyResponse.js +49 -0
  199. package/dist/models/generated/PublicKeyResponse.js.map +1 -0
  200. package/dist/models/generated/ReceiptContextEnvelope.d.ts +40 -0
  201. package/dist/models/generated/ReceiptContextEnvelope.js +46 -0
  202. package/dist/models/generated/ReceiptContextEnvelope.js.map +1 -0
  203. package/dist/models/generated/ReceiptCreatedResponse.d.ts +44 -0
  204. package/dist/models/generated/ReceiptCreatedResponse.js +46 -0
  205. package/dist/models/generated/ReceiptCreatedResponse.js.map +1 -0
  206. package/dist/models/generated/ReceiptEnvelope.d.ts +52 -0
  207. package/dist/models/generated/ReceiptEnvelope.js +50 -0
  208. package/dist/models/generated/ReceiptEnvelope.js.map +1 -0
  209. package/dist/models/generated/ReceiptFormat.d.ts +27 -0
  210. package/dist/models/generated/ReceiptFormat.js +46 -0
  211. package/dist/models/generated/ReceiptFormat.js.map +1 -0
  212. package/dist/models/generated/ReceiptQueueDto.d.ts +137 -0
  213. package/dist/models/generated/ReceiptQueueDto.js +79 -0
  214. package/dist/models/generated/ReceiptQueueDto.js.map +1 -0
  215. package/dist/models/generated/ReceiptTemplateGenerationRequest.d.ts +59 -0
  216. package/dist/models/generated/ReceiptTemplateGenerationRequest.js +63 -0
  217. package/dist/models/generated/ReceiptTemplateGenerationRequest.js.map +1 -0
  218. package/dist/models/generated/ReceiptTemplateRequest.d.ts +141 -0
  219. package/dist/models/generated/ReceiptTemplateRequest.js +99 -0
  220. package/dist/models/generated/ReceiptTemplateRequest.js.map +1 -0
  221. package/dist/models/generated/ReceiptTemplateResponse.d.ts +52 -0
  222. package/dist/models/generated/ReceiptTemplateResponse.js +50 -0
  223. package/dist/models/generated/ReceiptTemplateResponse.js.map +1 -0
  224. package/dist/models/generated/ReceivingParty.d.ts +76 -0
  225. package/dist/models/generated/ReceivingParty.js +58 -0
  226. package/dist/models/generated/ReceivingParty.js.map +1 -0
  227. package/dist/models/generated/ReceivingPartyEnvelope.d.ts +39 -0
  228. package/dist/models/generated/ReceivingPartyEnvelope.js +45 -0
  229. package/dist/models/generated/ReceivingPartyEnvelope.js.map +1 -0
  230. package/dist/models/generated/RecipientResolutionResponse.d.ts +76 -0
  231. package/dist/models/generated/RecipientResolutionResponse.js +58 -0
  232. package/dist/models/generated/RecipientResolutionResponse.js.map +1 -0
  233. package/dist/models/generated/ReturnProcessingMode.d.ts +25 -0
  234. package/dist/models/generated/ReturnProcessingMode.js +44 -0
  235. package/dist/models/generated/ReturnProcessingMode.js.map +1 -0
  236. package/dist/models/generated/RoutingIdentifier.d.ts +39 -0
  237. package/dist/models/generated/RoutingIdentifier.js +45 -0
  238. package/dist/models/generated/RoutingIdentifier.js.map +1 -0
  239. package/dist/models/generated/RoutingIdentifierType.d.ts +27 -0
  240. package/dist/models/generated/RoutingIdentifierType.js +46 -0
  241. package/dist/models/generated/RoutingIdentifierType.js.map +1 -0
  242. package/dist/models/generated/SellingParty.d.ts +58 -0
  243. package/dist/models/generated/SellingParty.js +52 -0
  244. package/dist/models/generated/SellingParty.js.map +1 -0
  245. package/dist/models/generated/StoreDTO.d.ts +99 -0
  246. package/dist/models/generated/StoreDTO.js +69 -0
  247. package/dist/models/generated/StoreDTO.js.map +1 -0
  248. package/dist/models/generated/Tax.d.ts +56 -0
  249. package/dist/models/generated/Tax.js +56 -0
  250. package/dist/models/generated/Tax.js.map +1 -0
  251. package/dist/models/generated/UnitCode.d.ts +77 -0
  252. package/dist/models/generated/UnitCode.js +96 -0
  253. package/dist/models/generated/UnitCode.js.map +1 -0
  254. package/dist/models/generated/UpdateCompanyReceiptDeliveryPreferenceRequest.d.ts +32 -0
  255. package/dist/models/generated/UpdateCompanyReceiptDeliveryPreferenceRequest.js +44 -0
  256. package/dist/models/generated/UpdateCompanyReceiptDeliveryPreferenceRequest.js.map +1 -0
  257. package/dist/models/generated/UpdateStoreRequest.d.ts +63 -0
  258. package/dist/models/generated/UpdateStoreRequest.js +53 -0
  259. package/dist/models/generated/UpdateStoreRequest.js.map +1 -0
  260. package/dist/models/generated/UploadPublicKeyRequest.d.ts +39 -0
  261. package/dist/models/generated/UploadPublicKeyRequest.js +49 -0
  262. package/dist/models/generated/UploadPublicKeyRequest.js.map +1 -0
  263. package/dist/models/generated/VatMetadata.d.ts +70 -0
  264. package/dist/models/generated/VatMetadata.js +56 -0
  265. package/dist/models/generated/VatMetadata.js.map +1 -0
  266. package/dist/models/generated/VatRegime.d.ts +31 -0
  267. package/dist/models/generated/VatRegime.js +50 -0
  268. package/dist/models/generated/VatRegime.js.map +1 -0
  269. package/dist/models/generated/WebhookDTO.d.ts +62 -0
  270. package/dist/models/generated/WebhookDTO.js +52 -0
  271. package/dist/models/generated/WebhookDTO.js.map +1 -0
  272. package/dist/models/generated/WebhookEventDTO.d.ts +113 -0
  273. package/dist/models/generated/WebhookEventDTO.js +78 -0
  274. package/dist/models/generated/WebhookEventDTO.js.map +1 -0
  275. package/dist/models/generated/WebhookRequestBody.d.ts +55 -0
  276. package/dist/models/generated/WebhookRequestBody.js +56 -0
  277. package/dist/models/generated/WebhookRequestBody.js.map +1 -0
  278. package/dist/models/generated/WebhookResponse.d.ts +39 -0
  279. package/dist/models/generated/WebhookResponse.js +45 -0
  280. package/dist/models/generated/WebhookResponse.js.map +1 -0
  281. package/dist/models/generated/WebhookSecretRotationResponse.d.ts +56 -0
  282. package/dist/models/generated/WebhookSecretRotationResponse.js +50 -0
  283. package/dist/models/generated/WebhookSecretRotationResponse.js.map +1 -0
  284. package/dist/models/generated/index.d.ts +82 -0
  285. package/dist/models/generated/index.js +83 -0
  286. package/dist/models/generated/index.js.map +1 -0
  287. package/dist/models/generated/runtime.d.ts +182 -0
  288. package/dist/models/generated/runtime.js +330 -0
  289. package/dist/models/generated/runtime.js.map +1 -0
  290. package/dist/models/index.d.ts +3 -0
  291. package/dist/models/index.js +4 -0
  292. package/dist/models/index.js.map +1 -0
  293. package/dist/models.d.ts +51 -0
  294. package/dist/models.js +106 -0
  295. package/dist/models.js.map +1 -0
  296. package/dist/rfc8785.d.ts +1 -0
  297. package/dist/rfc8785.js +42 -0
  298. package/dist/rfc8785.js.map +1 -0
  299. package/dist/services/company.d.ts +7 -0
  300. package/dist/services/company.js +33 -0
  301. package/dist/services/company.js.map +1 -0
  302. package/dist/services/credit-note.d.ts +25 -0
  303. package/dist/services/credit-note.js +211 -0
  304. package/dist/services/credit-note.js.map +1 -0
  305. package/dist/services/decryption.d.ts +33 -0
  306. package/dist/services/decryption.js +145 -0
  307. package/dist/services/decryption.js.map +1 -0
  308. package/dist/services/encryption.d.ts +25 -0
  309. package/dist/services/encryption.js +94 -0
  310. package/dist/services/encryption.js.map +1 -0
  311. package/dist/services/matching.d.ts +7 -0
  312. package/dist/services/matching.js +32 -0
  313. package/dist/services/matching.js.map +1 -0
  314. package/dist/services/receipt.d.ts +17 -0
  315. package/dist/services/receipt.js +186 -0
  316. package/dist/services/receipt.js.map +1 -0
  317. package/dist/services/store.d.ts +16 -0
  318. package/dist/services/store.js +89 -0
  319. package/dist/services/store.js.map +1 -0
  320. package/dist/services/verification.d.ts +10 -0
  321. package/dist/services/verification.js +30 -0
  322. package/dist/services/verification.js.map +1 -0
  323. package/dist/types.d.ts +70 -0
  324. package/dist/types.js +2 -0
  325. package/dist/types.js.map +1 -0
  326. package/dist/utils.d.ts +11 -0
  327. package/dist/utils.js +54 -0
  328. package/dist/utils.js.map +1 -0
  329. package/dist/validators.d.ts +11 -0
  330. package/dist/validators.js +56 -0
  331. package/dist/validators.js.map +1 -0
  332. package/dist/xml.d.ts +2 -0
  333. package/dist/xml.js +11 -0
  334. package/dist/xml.js.map +1 -0
  335. package/package.json +56 -0
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # Cheqi TypeScript SDK
2
+
3
+ TypeScript-first Cheqi SDK for encrypted receipt and credit note processing.
4
+
5
+ ## Included
6
+
7
+ - SDK entrypoint with config and service wiring
8
+ - Customer matching
9
+ - Receipt processing flow: match -> template -> encrypt -> send/email fallback
10
+ - Credit note processing flow
11
+ - Hybrid RSA-OAEP + AES-256-GCM encryption/decryption
12
+ - Retry-capable HTTP client
13
+ - JSON canonical hashing and basic XML normalization hashing
14
+ - Company and store service wrappers
15
+ - Generated declarations from the TypeScript source
16
+
17
+ ## Install
18
+
19
+ ```bash
20
+ npm install
21
+ ```
22
+
23
+ ## Test
24
+
25
+ ```bash
26
+ npm test
27
+ ```
28
+
29
+ ## Usage
30
+
31
+ ```ts
32
+ import { CheqiSDK, Environment } from "@cheqi/sdk";
33
+
34
+ const sdk = CheqiSDK.builder()
35
+ .apiEndpoint(Environment.SANDBOX)
36
+ .apiKey("sk_test_...")
37
+ .build();
38
+
39
+ const result = await sdk.receiptService.processCompleteReceipt(
40
+ {
41
+ recipientEmail: "customer@example.com"
42
+ },
43
+ {
44
+ documentNumber: "INV-001",
45
+ currency: "EUR",
46
+ totalAmount: 12.1
47
+ }
48
+ );
49
+ ```
50
+
51
+ ## Notes
52
+
53
+ - Models are plain TypeScript object shapes with automatic camelCase serialization.
54
+ - The public service structure now includes Java-style `builder()` and `get*Service()` accessors.
55
+ - The package ships `.d.ts` declarations so it can be consumed directly from TypeScript.
56
+ - The full Java model class hierarchy is still not recreated as class-per-model; the payload contract is represented as typed object shapes instead.
57
+ - XML verification currently normalizes formatting whitespace and hashes the result. If strict XML C14N compatibility is required, that part should be hardened next.
@@ -0,0 +1,98 @@
1
+ import { CheqiSDKConfig } from "./config.js";
2
+ import { DefaultCheqiApiClient } from "./http/client.js";
3
+ import type { Logger } from "./logger.js";
4
+ import type { CheqiSDKOptions, DecryptedDeliveredCreditNote, EncryptedCreditNote, EncryptedReceipt } from "./types.js";
5
+ import { CompanyService } from "./services/company.js";
6
+ import { CreditNoteService } from "./services/credit-note.js";
7
+ import { DecryptionService } from "./services/decryption.js";
8
+ import { EncryptionService } from "./services/encryption.js";
9
+ import { MatchingService } from "./services/matching.js";
10
+ import { ReceiptService } from "./services/receipt.js";
11
+ import { StoreService } from "./services/store.js";
12
+ import { VerificationService } from "./services/verification.js";
13
+ /**
14
+ * Fluent builder for constructing a {@link CheqiSDK} instance.
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * const sdk = CheqiSDK.builder()
19
+ * .apiEndpoint("https://sandbox.api.cheqi.io")
20
+ * .apiKey("sk_test_abc123")
21
+ * .build();
22
+ * ```
23
+ */
24
+ export declare class CheqiSDKBuilder {
25
+ private readonly options;
26
+ /** Set the API endpoint (e.g. one of the {@link Environment} constants). */
27
+ apiEndpoint(apiEndpoint: string): this;
28
+ /** Set a custom API endpoint URL. Takes precedence over {@link apiEndpoint}. */
29
+ customApiEndpoint(customApiEndpoint: string): this;
30
+ /** Set the API key (typically starts with `sk_live_` or `sk_test_`). */
31
+ apiKey(apiKey: string): this;
32
+ /** Set the RSA private key (base64-encoded PKCS#8 DER) for decryption. */
33
+ privateKey(privateKey: string): this;
34
+ /** HTTP request timeout in seconds (default 30, max recommended 300). */
35
+ timeoutSeconds(timeoutSeconds: number): this;
36
+ /** Maximum number of retry attempts for transient failures (default 3). */
37
+ maxRetries(maxRetries: number): this;
38
+ /** Supply a custom logger (console, pino, winston, etc.). */
39
+ logger(logger: Logger): this;
40
+ /** Build and return a configured {@link CheqiSDK} instance. */
41
+ build(): CheqiSDK;
42
+ }
43
+ /**
44
+ * Main entry point for the Cheqi SDK.
45
+ *
46
+ * Provides access to all services: receipt processing, credit-note
47
+ * processing, customer matching, encryption/decryption, company
48
+ * provisioning, and store management.
49
+ *
50
+ * @example
51
+ * ```ts
52
+ * const sdk = CheqiSDK.builder()
53
+ * .apiEndpoint(Environment.SANDBOX)
54
+ * .apiKey("sk_test_abc123")
55
+ * .build();
56
+ *
57
+ * const result = await sdk.receiptService.processCompleteReceipt(
58
+ * identificationDetails,
59
+ * receiptRequest,
60
+ * accessToken
61
+ * );
62
+ * ```
63
+ */
64
+ export declare class CheqiSDK {
65
+ readonly config: CheqiSDKConfig;
66
+ readonly verificationService: VerificationService;
67
+ readonly decryptionService: DecryptionService;
68
+ readonly encryptionService: EncryptionService;
69
+ readonly apiClient: DefaultCheqiApiClient;
70
+ readonly matchingService: MatchingService;
71
+ readonly receiptService: ReceiptService;
72
+ readonly companyService: CompanyService;
73
+ readonly storeService: StoreService;
74
+ readonly creditNoteService: CreditNoteService;
75
+ /** Create a new {@link CheqiSDKBuilder}. */
76
+ static builder(): CheqiSDKBuilder;
77
+ constructor(options?: CheqiSDKOptions, apiClient?: DefaultCheqiApiClient | null);
78
+ /**
79
+ * Decrypt an encrypted receipt using the seller's private key.
80
+ * @param encryptedReceipt The encrypted receipt payload.
81
+ * @param privateKey Base64-encoded PKCS#8 DER private key.
82
+ */
83
+ processEncryptedReceipt(encryptedReceipt: EncryptedReceipt, privateKey: string): {
84
+ receiptContent: string;
85
+ customerDetails: string | null;
86
+ };
87
+ processEncryptedCreditNote(encryptedCreditNote: EncryptedCreditNote, privateKey: string): DecryptedDeliveredCreditNote;
88
+ getConfig(): CheqiSDKConfig;
89
+ getApiClient(): DefaultCheqiApiClient;
90
+ getEncryptionService(): EncryptionService;
91
+ getDecryptionService(): DecryptionService;
92
+ getMatchingService(): MatchingService;
93
+ getReceiptService(): ReceiptService;
94
+ getCreditNoteService(): CreditNoteService;
95
+ getCompanyService(): CompanyService;
96
+ getStoreService(): StoreService;
97
+ getVerificationService(): VerificationService;
98
+ }
@@ -0,0 +1,134 @@
1
+ import { CheqiSDKConfig } from "./config.js";
2
+ import { DefaultCheqiApiClient } from "./http/client.js";
3
+ import { CompanyService } from "./services/company.js";
4
+ import { CreditNoteService } from "./services/credit-note.js";
5
+ import { DecryptionService } from "./services/decryption.js";
6
+ import { EncryptionService } from "./services/encryption.js";
7
+ import { MatchingService } from "./services/matching.js";
8
+ import { ReceiptService } from "./services/receipt.js";
9
+ import { StoreService } from "./services/store.js";
10
+ import { VerificationService } from "./services/verification.js";
11
+ /**
12
+ * Fluent builder for constructing a {@link CheqiSDK} instance.
13
+ *
14
+ * @example
15
+ * ```ts
16
+ * const sdk = CheqiSDK.builder()
17
+ * .apiEndpoint("https://sandbox.api.cheqi.io")
18
+ * .apiKey("sk_test_abc123")
19
+ * .build();
20
+ * ```
21
+ */
22
+ export class CheqiSDKBuilder {
23
+ options = {};
24
+ /** Set the API endpoint (e.g. one of the {@link Environment} constants). */
25
+ apiEndpoint(apiEndpoint) {
26
+ this.options.environment = apiEndpoint;
27
+ return this;
28
+ }
29
+ /** Set a custom API endpoint URL. Takes precedence over {@link apiEndpoint}. */
30
+ customApiEndpoint(customApiEndpoint) {
31
+ this.options.customApiEndpoint = customApiEndpoint;
32
+ return this;
33
+ }
34
+ /** Set the API key (typically starts with `sk_live_` or `sk_test_`). */
35
+ apiKey(apiKey) {
36
+ this.options.apiKey = apiKey;
37
+ return this;
38
+ }
39
+ /** Set the RSA private key (base64-encoded PKCS#8 DER) for decryption. */
40
+ privateKey(privateKey) {
41
+ this.options.privateKey = privateKey;
42
+ return this;
43
+ }
44
+ /** HTTP request timeout in seconds (default 30, max recommended 300). */
45
+ timeoutSeconds(timeoutSeconds) {
46
+ this.options.timeoutSeconds = timeoutSeconds;
47
+ return this;
48
+ }
49
+ /** Maximum number of retry attempts for transient failures (default 3). */
50
+ maxRetries(maxRetries) {
51
+ this.options.maxRetries = maxRetries;
52
+ return this;
53
+ }
54
+ /** Supply a custom logger (console, pino, winston, etc.). */
55
+ logger(logger) {
56
+ this.options.logger = logger;
57
+ return this;
58
+ }
59
+ /** Build and return a configured {@link CheqiSDK} instance. */
60
+ build() {
61
+ return new CheqiSDK(this.options);
62
+ }
63
+ }
64
+ /**
65
+ * Main entry point for the Cheqi SDK.
66
+ *
67
+ * Provides access to all services: receipt processing, credit-note
68
+ * processing, customer matching, encryption/decryption, company
69
+ * provisioning, and store management.
70
+ *
71
+ * @example
72
+ * ```ts
73
+ * const sdk = CheqiSDK.builder()
74
+ * .apiEndpoint(Environment.SANDBOX)
75
+ * .apiKey("sk_test_abc123")
76
+ * .build();
77
+ *
78
+ * const result = await sdk.receiptService.processCompleteReceipt(
79
+ * identificationDetails,
80
+ * receiptRequest,
81
+ * accessToken
82
+ * );
83
+ * ```
84
+ */
85
+ export class CheqiSDK {
86
+ config;
87
+ verificationService;
88
+ decryptionService;
89
+ encryptionService;
90
+ apiClient;
91
+ matchingService;
92
+ receiptService;
93
+ companyService;
94
+ storeService;
95
+ creditNoteService;
96
+ /** Create a new {@link CheqiSDKBuilder}. */
97
+ static builder() {
98
+ return new CheqiSDKBuilder();
99
+ }
100
+ constructor(options = {}, apiClient = null) {
101
+ this.config = new CheqiSDKConfig(options);
102
+ this.verificationService = new VerificationService();
103
+ this.decryptionService = new DecryptionService();
104
+ this.encryptionService = new EncryptionService();
105
+ this.apiClient = apiClient ?? new DefaultCheqiApiClient(this.config);
106
+ this.matchingService = new MatchingService(this.apiClient);
107
+ this.receiptService = new ReceiptService(this.apiClient, this.encryptionService, this.matchingService);
108
+ this.companyService = new CompanyService(this.apiClient);
109
+ this.storeService = new StoreService(this.apiClient);
110
+ this.creditNoteService = new CreditNoteService(this.apiClient, this.encryptionService, this.matchingService, this.decryptionService);
111
+ }
112
+ /**
113
+ * Decrypt an encrypted receipt using the seller's private key.
114
+ * @param encryptedReceipt The encrypted receipt payload.
115
+ * @param privateKey Base64-encoded PKCS#8 DER private key.
116
+ */
117
+ processEncryptedReceipt(encryptedReceipt, privateKey) {
118
+ return this.decryptionService.decryptReceipt(encryptedReceipt, privateKey);
119
+ }
120
+ processEncryptedCreditNote(encryptedCreditNote, privateKey) {
121
+ return this.creditNoteService.decryptDeliveredCreditNote(encryptedCreditNote, privateKey);
122
+ }
123
+ getConfig() { return this.config; }
124
+ getApiClient() { return this.apiClient; }
125
+ getEncryptionService() { return this.encryptionService; }
126
+ getDecryptionService() { return this.decryptionService; }
127
+ getMatchingService() { return this.matchingService; }
128
+ getReceiptService() { return this.receiptService; }
129
+ getCreditNoteService() { return this.creditNoteService; }
130
+ getCompanyService() { return this.companyService; }
131
+ getStoreService() { return this.storeService; }
132
+ getVerificationService() { return this.verificationService; }
133
+ }
134
+ //# sourceMappingURL=cheqi-sdk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cheqi-sdk.js","sourceRoot":"","sources":["../src/cheqi-sdk.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { Logger } from "./logger.js";
2
+ import type { CheqiSDKOptions, Nullable } from "./types.js";
3
+ /** Well-known API environment base URLs. */
4
+ export declare const Environment: {
5
+ readonly SANDBOX: "https://sandbox.api.cheqi.io";
6
+ readonly TEST: "https://test.api.cheqi.io";
7
+ readonly PRODUCTION: "https://api.cheqi.io";
8
+ };
9
+ /**
10
+ * Validated, immutable configuration for the Cheqi SDK.
11
+ *
12
+ * Constructed from {@link CheqiSDKOptions} with sensible defaults and
13
+ * range-checked values.
14
+ */
15
+ export declare class CheqiSDKConfig {
16
+ readonly apiEndpoint: string;
17
+ readonly apiKey: Nullable<string>;
18
+ readonly privateKey: Nullable<string>;
19
+ readonly timeoutSeconds: number;
20
+ readonly maxRetries: number;
21
+ readonly logger: Logger;
22
+ constructor(options?: CheqiSDKOptions);
23
+ }
package/dist/config.js ADDED
@@ -0,0 +1,63 @@
1
+ import { ConsoleLogger } from "./logger.js";
2
+ /** Well-known API environment base URLs. */
3
+ export const Environment = {
4
+ SANDBOX: "https://sandbox.api.cheqi.io",
5
+ TEST: "https://test.api.cheqi.io",
6
+ PRODUCTION: "https://api.cheqi.io"
7
+ };
8
+ const MAX_TIMEOUT_SECONDS = 300;
9
+ const MAX_RETRIES = 10;
10
+ /**
11
+ * Validated, immutable configuration for the Cheqi SDK.
12
+ *
13
+ * Constructed from {@link CheqiSDKOptions} with sensible defaults and
14
+ * range-checked values.
15
+ */
16
+ export class CheqiSDKConfig {
17
+ apiEndpoint;
18
+ apiKey;
19
+ privateKey;
20
+ timeoutSeconds;
21
+ maxRetries;
22
+ logger;
23
+ constructor(options = {}) {
24
+ const { environment, customApiEndpoint, apiKey = null, privateKey = null, timeoutSeconds = 30, maxRetries = 3, logger = new ConsoleLogger() } = options;
25
+ this.logger = logger;
26
+ // --- endpoint ---
27
+ this.apiEndpoint = customApiEndpoint ?? environment ?? "";
28
+ if (!this.apiEndpoint) {
29
+ throw new Error("Either 'environment' or 'customApiEndpoint' must be provided");
30
+ }
31
+ // --- timeout ---
32
+ if (timeoutSeconds <= 0) {
33
+ throw new Error(`Timeout must be positive, got: ${timeoutSeconds}`);
34
+ }
35
+ if (timeoutSeconds > MAX_TIMEOUT_SECONDS) {
36
+ this.logger.warn(`Timeout ${timeoutSeconds}s exceeds recommended maximum of ${MAX_TIMEOUT_SECONDS}s`);
37
+ }
38
+ this.timeoutSeconds = timeoutSeconds;
39
+ // --- retries ---
40
+ if (maxRetries < 0) {
41
+ throw new Error(`Max retries cannot be negative, got: ${maxRetries}`);
42
+ }
43
+ if (maxRetries > MAX_RETRIES) {
44
+ this.logger.warn(`Max retries ${maxRetries} exceeds recommended maximum of ${MAX_RETRIES}`);
45
+ }
46
+ this.maxRetries = maxRetries;
47
+ // --- api key ---
48
+ if (apiKey && !isValidApiKeyFormat(apiKey)) {
49
+ this.logger.warn("API key does not match expected format (sk_live_* or sk_test_*)");
50
+ }
51
+ this.apiKey = apiKey;
52
+ // --- private key ---
53
+ if (!privateKey) {
54
+ this.logger.info("No private key configured — decryption features will not be available");
55
+ }
56
+ this.privateKey = privateKey;
57
+ this.logger.info(`SDK configured: endpoint=${this.apiEndpoint}, timeout=${this.timeoutSeconds}s, maxRetries=${this.maxRetries}`);
58
+ }
59
+ }
60
+ function isValidApiKeyFormat(key) {
61
+ return key.startsWith("sk_live_") || key.startsWith("sk_test_");
62
+ }
63
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,4CAA4C;AAC5C,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,OAAO,EAAE,8BAA8B;IACvC,IAAI,EAAE,2BAA2B;IACjC,UAAU,EAAE,sBAAsB;CAC1B,CAAC;AAEX,MAAM,mBAAmB,GAAG,GAAG,CAAC;AAChC,MAAM,WAAW,GAAG,EAAE,CAAC;AAEvB;;;;;GAKG;AACH,MAAM,OAAO,cAAc;IAChB,WAAW,CAAS;IACpB,MAAM,CAAmB;IACzB,UAAU,CAAmB;IAC7B,cAAc,CAAS;IACvB,UAAU,CAAS;IACnB,MAAM,CAAS;IAExB,YAAY,UAA2B,EAAE;QACvC,MAAM,EACJ,WAAW,EACX,iBAAiB,EACjB,MAAM,GAAG,IAAI,EACb,UAAU,GAAG,IAAI,EACjB,cAAc,GAAG,EAAE,EACnB,UAAU,GAAG,CAAC,EACd,MAAM,GAAG,IAAI,aAAa,EAAE,EAC7B,GAAG,OAAO,CAAC;QAEZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,mBAAmB;QACnB,IAAI,CAAC,WAAW,GAAG,iBAAiB,IAAI,WAAW,IAAI,EAAE,CAAC;QAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,kBAAkB;QAClB,IAAI,cAAc,IAAI,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,kCAAkC,cAAc,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,IAAI,cAAc,GAAG,mBAAmB,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,cAAc,oCAAoC,mBAAmB,GAAG,CAAC,CAAC;QACxG,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,kBAAkB;QAClB,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CAAC,wCAAwC,UAAU,EAAE,CAAC,CAAC;QACxE,CAAC;QACD,IAAI,UAAU,GAAG,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,UAAU,mCAAmC,WAAW,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,kBAAkB;QAClB,IAAI,MAAM,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,sBAAsB;QACtB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uEAAuE,CAAC,CAAC;QAC5F,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,IAAI,CAAC,WAAW,aAAa,IAAI,CAAC,cAAc,iBAAiB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;IACnI,CAAC;CACF;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;AAClE,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Shared cryptographic constants used by both encryption and decryption services.
3
+ */
4
+ /** AES-256 key length in bytes. */
5
+ export declare const AES_KEY_LENGTH = 32;
6
+ /** GCM initialization vector length in bytes. */
7
+ export declare const GCM_IV_LENGTH = 12;
8
+ /** GCM authentication tag length in bytes. */
9
+ export declare const GCM_TAG_LENGTH = 16;
package/dist/crypto.js ADDED
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared cryptographic constants used by both encryption and decryption services.
3
+ */
4
+ /** AES-256 key length in bytes. */
5
+ export const AES_KEY_LENGTH = 32;
6
+ /** GCM initialization vector length in bytes. */
7
+ export const GCM_IV_LENGTH = 12;
8
+ /** GCM authentication tag length in bytes. */
9
+ export const GCM_TAG_LENGTH = 16;
10
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../src/crypto.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,mCAAmC;AACnC,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,iDAAiD;AACjD,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAC;AAEhC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC"}
@@ -0,0 +1 @@
1
+ export * from "../models/entity.js";
@@ -0,0 +1,2 @@
1
+ export * from "../models/entity.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/entity/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC"}
@@ -0,0 +1,40 @@
1
+ export declare const ErrorCodes: {
2
+ readonly UNKNOWN_ERROR: "UNKNOWN_ERROR";
3
+ readonly VALIDATION_ERROR: "VALIDATION_ERROR";
4
+ readonly AUTHENTICATION_FAILED: "AUTHENTICATION_FAILED";
5
+ readonly AUTHORIZATION_FAILED: "AUTHORIZATION_FAILED";
6
+ readonly CUSTOMER_NOT_FOUND: "CUSTOMER_NOT_FOUND";
7
+ readonly RECEIPT_NOT_FOUND: "RECEIPT_NOT_FOUND";
8
+ readonly ENCRYPTION_ERROR: "ENCRYPTION_ERROR";
9
+ readonly DECRYPTION_ERROR: "DECRYPTION_ERROR";
10
+ readonly NETWORK_ERROR: "NETWORK_ERROR";
11
+ readonly RATE_LIMITED: "RATE_LIMITED";
12
+ readonly SERVER_ERROR: "SERVER_ERROR";
13
+ readonly INVALID_RESPONSE: "INVALID_RESPONSE";
14
+ };
15
+ export type ErrorCode = (typeof ErrorCodes)[keyof typeof ErrorCodes];
16
+ export interface CheqiErrorOptions {
17
+ errorCode?: ErrorCode;
18
+ httpStatusCode?: number;
19
+ correlationId?: string | null;
20
+ cause?: unknown;
21
+ }
22
+ export declare class CheqiSDKError extends Error {
23
+ readonly errorCode: ErrorCode;
24
+ readonly httpStatusCode: number;
25
+ readonly correlationId: string | null;
26
+ constructor(message: string, options?: CheqiErrorOptions);
27
+ }
28
+ export declare class CheqiApiError extends CheqiSDKError {
29
+ get isRetryable(): boolean;
30
+ }
31
+ export declare class EncryptionError extends CheqiSDKError {
32
+ constructor(message: string, options?: Omit<CheqiErrorOptions, "errorCode">);
33
+ }
34
+ export declare class DecryptionError extends CheqiSDKError {
35
+ constructor(message: string, options?: Omit<CheqiErrorOptions, "errorCode">);
36
+ }
37
+ export declare class ReceiptProcessingError extends CheqiSDKError {
38
+ }
39
+ export declare class CreditNoteProcessingError extends CheqiSDKError {
40
+ }
package/dist/errors.js ADDED
@@ -0,0 +1,48 @@
1
+ export const ErrorCodes = {
2
+ UNKNOWN_ERROR: "UNKNOWN_ERROR",
3
+ VALIDATION_ERROR: "VALIDATION_ERROR",
4
+ AUTHENTICATION_FAILED: "AUTHENTICATION_FAILED",
5
+ AUTHORIZATION_FAILED: "AUTHORIZATION_FAILED",
6
+ CUSTOMER_NOT_FOUND: "CUSTOMER_NOT_FOUND",
7
+ RECEIPT_NOT_FOUND: "RECEIPT_NOT_FOUND",
8
+ ENCRYPTION_ERROR: "ENCRYPTION_ERROR",
9
+ DECRYPTION_ERROR: "DECRYPTION_ERROR",
10
+ NETWORK_ERROR: "NETWORK_ERROR",
11
+ RATE_LIMITED: "RATE_LIMITED",
12
+ SERVER_ERROR: "SERVER_ERROR",
13
+ INVALID_RESPONSE: "INVALID_RESPONSE"
14
+ };
15
+ export class CheqiSDKError extends Error {
16
+ errorCode;
17
+ httpStatusCode;
18
+ correlationId;
19
+ constructor(message, options = {}) {
20
+ super(message, { cause: options.cause });
21
+ this.name = new.target.name;
22
+ this.errorCode = options.errorCode ?? ErrorCodes.UNKNOWN_ERROR;
23
+ this.httpStatusCode = options.httpStatusCode ?? 0;
24
+ this.correlationId = options.correlationId ?? null;
25
+ }
26
+ }
27
+ export class CheqiApiError extends CheqiSDKError {
28
+ get isRetryable() {
29
+ return this.httpStatusCode === 408 ||
30
+ this.httpStatusCode === 429 ||
31
+ (this.httpStatusCode >= 500 && this.httpStatusCode < 600);
32
+ }
33
+ }
34
+ export class EncryptionError extends CheqiSDKError {
35
+ constructor(message, options = {}) {
36
+ super(message, { ...options, errorCode: ErrorCodes.ENCRYPTION_ERROR });
37
+ }
38
+ }
39
+ export class DecryptionError extends CheqiSDKError {
40
+ constructor(message, options = {}) {
41
+ super(message, { ...options, errorCode: ErrorCodes.DECRYPTION_ERROR });
42
+ }
43
+ }
44
+ export class ReceiptProcessingError extends CheqiSDKError {
45
+ }
46
+ export class CreditNoteProcessingError extends CheqiSDKError {
47
+ }
48
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,aAAa,EAAE,eAAe;IAC9B,gBAAgB,EAAE,kBAAkB;IACpC,qBAAqB,EAAE,uBAAuB;IAC9C,oBAAoB,EAAE,sBAAsB;IAC5C,kBAAkB,EAAE,oBAAoB;IACxC,iBAAiB,EAAE,mBAAmB;IACtC,gBAAgB,EAAE,kBAAkB;IACpC,gBAAgB,EAAE,kBAAkB;IACpC,aAAa,EAAE,eAAe;IAC9B,YAAY,EAAE,cAAc;IAC5B,YAAY,EAAE,cAAc;IAC5B,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC;AAWX,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,SAAS,CAAY;IACrB,cAAc,CAAS;IACvB,aAAa,CAAgB;IAEtC,YAAY,OAAe,EAAE,UAA6B,EAAE;QAC1D,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,UAAU,CAAC,aAAa,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC;IACrD,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,aAAa;IAC9C,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,cAAc,KAAK,GAAG;YAChC,IAAI,CAAC,cAAc,KAAK,GAAG;YAC3B,CAAC,IAAI,CAAC,cAAc,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,CAAC;IAC9D,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAChD,YAAY,OAAe,EAAE,UAAgD,EAAE;QAC7E,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzE,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,aAAa;IAChD,YAAY,OAAe,EAAE,UAAgD,EAAE;QAC7E,KAAK,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzE,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,aAAa;CAAG;AAE5D,MAAM,OAAO,yBAA0B,SAAQ,aAAa;CAAG"}
@@ -0,0 +1,32 @@
1
+ import { CheqiSDKConfig } from "../config.js";
2
+ import type { CheqiApiClient, CreateStoreRequest, CreditNoteTemplateGenerationRequest, CreditNoteTemplateResponse, EncryptedCreditNote, EncryptedReceiptRequest, FetchLike, IdentificationDetails, ReceiptTemplateGenerationRequest, ReceiptTemplateResponse, RecipientResolutionResponse, ProvisionCompanyRequest } from "../types.js";
3
+ /**
4
+ * Default HTTP implementation of {@link CheqiApiClient}.
5
+ *
6
+ * Uses the global `fetch` (or an injected implementation) with automatic
7
+ * retry, bearer-token auth, and structured logging.
8
+ */
9
+ export declare class DefaultCheqiApiClient implements CheqiApiClient {
10
+ private readonly config;
11
+ private readonly fetchImpl;
12
+ private readonly retryHandler;
13
+ private readonly userAgent;
14
+ private readonly logger;
15
+ constructor(config: CheqiSDKConfig, fetchImpl?: FetchLike);
16
+ generateReceiptTemplate(request: ReceiptTemplateGenerationRequest, accessToken?: string | null): Promise<ReceiptTemplateResponse>;
17
+ generateCreditNoteTemplate(request: CreditNoteTemplateGenerationRequest, accessToken?: string | null): Promise<CreditNoteTemplateResponse>;
18
+ matchCustomer(request: IdentificationDetails, accessToken?: string | null): Promise<RecipientResolutionResponse>;
19
+ sendEncryptedReceipts(matchId: string, encryptedReceipts: EncryptedReceiptRequest[], templateHash: string, accessToken?: string | null): Promise<Record<string, unknown>>;
20
+ sendEncryptedCreditNotes(matchId: string, parentCheqiReceiptId: string, encryptedCreditNotes: EncryptedCreditNote[], templateHash: string, accessToken?: string | null): Promise<Record<string, unknown>>;
21
+ sendReceiptViaEmail(customerEmail: string, receipt: Record<string, unknown> | string, accessToken?: string | null): Promise<void>;
22
+ provisionCompany(request: ProvisionCompanyRequest): Promise<Record<string, unknown>>;
23
+ createStore(companyId: string, request: CreateStoreRequest, accessToken?: string | null): Promise<Record<string, unknown>>;
24
+ getStores(companyId: string, activeOnly?: boolean, accessToken?: string | null): Promise<Record<string, unknown>>;
25
+ getStore(companyId: string, storeId: string, accessToken?: string | null): Promise<Record<string, unknown>>;
26
+ updateStore(companyId: string, storeId: string, request: CreateStoreRequest, accessToken?: string | null): Promise<Record<string, unknown>>;
27
+ deleteStore(companyId: string, storeId: string, accessToken?: string | null): Promise<void>;
28
+ activateStore(companyId: string, storeId: string, accessToken?: string | null): Promise<void>;
29
+ deactivateStore(companyId: string, storeId: string, accessToken?: string | null): Promise<void>;
30
+ private authHeaders;
31
+ private request;
32
+ }