@kreiseck/kasseneck-api 0.31.0 → 1.0.0-rc.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 (712) hide show
  1. package/CHANGELOG.md +317 -0
  2. package/README.de.md +11 -7
  3. package/README.md +509 -126
  4. package/dist/cjs/client/api.d.ts +7 -6
  5. package/dist/cjs/client/api.js +2 -2
  6. package/dist/cjs/client/aufrufe.d.ts +29 -5
  7. package/dist/cjs/client/aufrufe.js +114 -2
  8. package/dist/cjs/client/auth.d.ts +2 -0
  9. package/dist/cjs/client/auth.js +17 -1
  10. package/dist/cjs/client/cashregisters.d.ts +1 -1
  11. package/dist/cjs/client/cashregisters.js +2 -2
  12. package/dist/cjs/client/errors.d.ts +94 -19
  13. package/dist/cjs/client/errors.js +132 -28
  14. package/dist/cjs/client/fehlercodes.d.ts +9 -0
  15. package/dist/cjs/client/fehlercodes.js +36 -0
  16. package/dist/cjs/client/index.d.ts +5 -5
  17. package/dist/cjs/client/index.js +11 -3
  18. package/dist/cjs/client/receipts.d.ts +131 -124
  19. package/dist/cjs/client/receipts.js +196 -137
  20. package/dist/cjs/client/reports.d.ts +26 -4
  21. package/dist/cjs/client/reports.js +37 -4
  22. package/dist/cjs/client/status.d.ts +3 -3
  23. package/dist/cjs/client/status.js +7 -7
  24. package/dist/cjs/client/transport.d.ts +56 -4
  25. package/dist/cjs/client/transport.js +234 -25
  26. package/dist/cjs/enums/vat-rate.d.ts +2 -2
  27. package/dist/cjs/enums/vat-rate.js +1 -1
  28. package/dist/cjs/index.d.ts +4 -3
  29. package/dist/cjs/index.js +42 -13
  30. package/dist/{esm/rechnung → cjs/invoice}/api.d.ts +18 -17
  31. package/dist/cjs/{rechnung → invoice}/api.js +6 -6
  32. package/dist/{esm/rechnung → cjs/invoice}/auth.d.ts +2 -2
  33. package/dist/cjs/{rechnung → invoice}/auth.js +5 -5
  34. package/dist/{esm/rechnung/rechnen.d.ts → cjs/invoice/calc.d.ts} +27 -27
  35. package/dist/cjs/{rechnung/rechnen.js → invoice/calc.js} +54 -54
  36. package/dist/{esm/rechnung → cjs/invoice}/endpunkte.d.ts +23 -21
  37. package/dist/cjs/{rechnung → invoice}/endpunkte.js +52 -42
  38. package/dist/cjs/invoice/fehler.d.ts +31 -0
  39. package/dist/cjs/invoice/fehler.js +39 -0
  40. package/dist/cjs/invoice/index.d.ts +21 -0
  41. package/dist/cjs/invoice/index.js +86 -0
  42. package/dist/cjs/{rechnung → invoice}/summen.d.ts +12 -12
  43. package/dist/cjs/{rechnung → invoice}/summen.js +14 -14
  44. package/dist/cjs/invoice/texte.d.ts +224 -0
  45. package/dist/cjs/invoice/texte.js +425 -0
  46. package/dist/{esm/rechnung → cjs/invoice}/typen.d.ts +32 -11
  47. package/dist/cjs/{rechnung → invoice}/vertrag.d.ts +97 -71
  48. package/dist/cjs/{rechnung → invoice}/vertrag.js +144 -82
  49. package/dist/cjs/models/cancellation.d.ts +43 -24
  50. package/dist/cjs/models/cancellation.js +94 -46
  51. package/dist/cjs/models/hobex-receipt.d.ts +3 -3
  52. package/dist/cjs/models/hobex-receipt.js +35 -35
  53. package/dist/cjs/models/index.d.ts +6 -5
  54. package/dist/cjs/models/index.js +22 -2
  55. package/dist/cjs/models/payment-errors.d.ts +32 -15
  56. package/dist/cjs/models/payment-errors.js +80 -32
  57. package/dist/cjs/models/receipt-company.d.ts +6 -5
  58. package/dist/cjs/models/receipt-company.js +4 -4
  59. package/dist/cjs/models/receipt-email.d.ts +32 -18
  60. package/dist/cjs/models/receipt-email.js +69 -24
  61. package/dist/cjs/models/receipt-errors.d.ts +39 -0
  62. package/dist/cjs/models/receipt-errors.js +94 -0
  63. package/dist/cjs/models/receipt-item.d.ts +9 -1
  64. package/dist/cjs/models/receipt-item.js +3 -0
  65. package/dist/cjs/models/receipt-summary.d.ts +10 -4
  66. package/dist/cjs/models/receipt-summary.js +10 -4
  67. package/dist/cjs/models/receipt.d.ts +31 -2
  68. package/dist/cjs/models/receipt.js +12 -1
  69. package/dist/cjs/models/voucher.d.ts +7 -6
  70. package/dist/cjs/models/voucher.js +2 -7
  71. package/dist/cjs/partner/ablauf.d.ts +10 -10
  72. package/dist/cjs/partner/ablauf.js +29 -29
  73. package/dist/cjs/partner/api.d.ts +26 -23
  74. package/dist/cjs/partner/api.js +11 -13
  75. package/dist/cjs/partner/auth.d.ts +1 -1
  76. package/dist/cjs/partner/auth.js +2 -2
  77. package/dist/cjs/partner/betrieb.d.ts +7 -7
  78. package/dist/cjs/partner/betrieb.js +10 -10
  79. package/dist/cjs/partner/endpunkte.d.ts +27 -14
  80. package/dist/cjs/partner/endpunkte.js +80 -39
  81. package/dist/cjs/partner/fehler.d.ts +60 -30
  82. package/dist/cjs/partner/fehler.js +99 -43
  83. package/dist/cjs/partner/index.d.ts +13 -12
  84. package/dist/cjs/partner/index.js +35 -22
  85. package/dist/cjs/partner/secret.d.ts +3 -3
  86. package/dist/cjs/partner/secret.js +6 -6
  87. package/dist/cjs/partner/typen.d.ts +129 -71
  88. package/dist/cjs/partner/typen.js +76 -3
  89. package/dist/cjs/partner/webhook-signatur.d.ts +2 -2
  90. package/dist/cjs/partner/webhook-signatur.js +12 -12
  91. package/dist/cjs/partner/webhooks.d.ts +60 -32
  92. package/dist/cjs/partner/webhooks.js +40 -34
  93. package/dist/cjs/payments/hobex.d.ts +11 -3
  94. package/dist/cjs/payments/hobex.js +17 -5
  95. package/dist/cjs/payments/stripe.d.ts +5 -2
  96. package/dist/cjs/payments/stripe.js +10 -5
  97. package/dist/cjs/pos/artikel.d.ts +90 -0
  98. package/dist/cjs/pos/artikel.js +89 -0
  99. package/dist/cjs/pos/client.d.ts +27 -0
  100. package/dist/cjs/pos/client.js +144 -0
  101. package/dist/cjs/pos/drucker.d.ts +86 -0
  102. package/dist/cjs/pos/drucker.js +78 -0
  103. package/dist/cjs/pos/errors.d.ts +36 -0
  104. package/dist/cjs/pos/errors.js +95 -0
  105. package/dist/cjs/pos/index.d.ts +15 -0
  106. package/dist/cjs/pos/index.js +102 -0
  107. package/dist/cjs/pos/settings.d.ts +313 -0
  108. package/dist/cjs/pos/settings.js +376 -0
  109. package/dist/cjs/pos/texte.d.ts +883 -0
  110. package/dist/cjs/pos/texte.js +489 -0
  111. package/dist/cjs/{kasse → pos}/trinkgeld.d.ts +1 -1
  112. package/dist/cjs/{kasse → pos}/trinkgeld.js +2 -2
  113. package/dist/cjs/printing/escpos.d.ts +29 -29
  114. package/dist/cjs/printing/escpos.js +61 -61
  115. package/dist/cjs/printing/index.d.ts +2 -2
  116. package/dist/cjs/printing/index.js +17 -17
  117. package/dist/cjs/printing/qr-groesse.d.ts +38 -38
  118. package/dist/cjs/printing/qr-groesse.js +47 -47
  119. package/dist/cjs/printing/webusb.d.ts +2 -2
  120. package/dist/cjs/printing/webusb.js +4 -4
  121. package/dist/cjs/react/index.d.ts +21 -21
  122. package/dist/cjs/react/index.js +40 -30
  123. package/dist/cjs/receipt/bild.d.ts +4 -4
  124. package/dist/cjs/receipt/bild.js +11 -11
  125. package/dist/cjs/receipt/blatt.d.ts +46 -46
  126. package/dist/cjs/receipt/blatt.js +59 -59
  127. package/dist/cjs/receipt/discount.d.ts +1 -1
  128. package/dist/cjs/receipt/discount.js +8 -8
  129. package/dist/cjs/receipt/due.d.ts +86 -0
  130. package/dist/cjs/receipt/due.js +261 -0
  131. package/dist/cjs/receipt/epos.d.ts +22 -22
  132. package/dist/cjs/receipt/epos.js +45 -45
  133. package/dist/cjs/receipt/grid.d.ts +10 -10
  134. package/dist/cjs/receipt/grid.js +20 -20
  135. package/dist/cjs/receipt/index.d.ts +9 -8
  136. package/dist/cjs/receipt/index.js +26 -23
  137. package/dist/cjs/receipt/layout-escpos.d.ts +24 -24
  138. package/dist/cjs/receipt/layout-escpos.js +49 -49
  139. package/dist/cjs/receipt/layout.d.ts +28 -23
  140. package/dist/cjs/receipt/layout.js +45 -21
  141. package/dist/cjs/receipt/marke-daten.d.ts +8 -8
  142. package/dist/cjs/receipt/marke-daten.js +8 -8
  143. package/dist/cjs/receipt/marke.d.ts +7 -7
  144. package/dist/cjs/receipt/marke.js +10 -10
  145. package/dist/cjs/register/errors.d.ts +61 -0
  146. package/dist/cjs/register/errors.js +112 -0
  147. package/dist/cjs/register/index.d.ts +14 -1
  148. package/dist/cjs/register/index.js +20 -1
  149. package/dist/cjs/register/pairing.d.ts +55 -36
  150. package/dist/cjs/register/pairing.js +33 -29
  151. package/dist/cjs/register/session.d.ts +5 -5
  152. package/dist/cjs/register/session.js +7 -7
  153. package/dist/cjs/stored/draht.d.ts +45 -0
  154. package/dist/cjs/stored/draht.js +220 -0
  155. package/dist/cjs/stored/einstellungen.d.ts +23 -0
  156. package/dist/cjs/stored/einstellungen.js +200 -0
  157. package/dist/cjs/stored/index.d.ts +109 -0
  158. package/dist/cjs/stored/index.js +225 -0
  159. package/dist/cjs/stored/vokabular.d.ts +18 -0
  160. package/dist/cjs/stored/vokabular.js +389 -0
  161. package/dist/cjs/version.d.ts +7 -0
  162. package/dist/cjs/version.js +10 -0
  163. package/dist/cjs/vienna-time.d.ts +1 -1
  164. package/dist/cjs/vienna-time.js +2 -2
  165. package/dist/esm/client/api.d.ts +7 -6
  166. package/dist/esm/client/api.js +4 -4
  167. package/dist/esm/client/aufrufe.d.ts +29 -5
  168. package/dist/esm/client/aufrufe.js +111 -1
  169. package/dist/esm/client/auth.d.ts +2 -0
  170. package/dist/esm/client/auth.js +16 -1
  171. package/dist/esm/client/cashregisters.d.ts +1 -1
  172. package/dist/esm/client/cashregisters.js +2 -2
  173. package/dist/esm/client/errors.d.ts +94 -19
  174. package/dist/esm/client/errors.js +129 -27
  175. package/dist/esm/client/fehlercodes.d.ts +9 -0
  176. package/dist/esm/client/fehlercodes.js +32 -0
  177. package/dist/esm/client/index.d.ts +5 -5
  178. package/dist/esm/client/index.js +5 -5
  179. package/dist/esm/client/receipts.d.ts +131 -124
  180. package/dist/esm/client/receipts.js +195 -140
  181. package/dist/esm/client/reports.d.ts +26 -4
  182. package/dist/esm/client/reports.js +36 -4
  183. package/dist/esm/client/status.d.ts +3 -3
  184. package/dist/esm/client/status.js +7 -7
  185. package/dist/esm/client/transport.d.ts +56 -4
  186. package/dist/esm/client/transport.js +233 -24
  187. package/dist/esm/enums/vat-rate.d.ts +2 -2
  188. package/dist/esm/enums/vat-rate.js +1 -1
  189. package/dist/esm/index.d.ts +4 -3
  190. package/dist/esm/index.js +4 -3
  191. package/dist/{cjs/rechnung → esm/invoice}/api.d.ts +18 -17
  192. package/dist/esm/{rechnung → invoice}/api.js +6 -6
  193. package/dist/{cjs/rechnung → esm/invoice}/auth.d.ts +2 -2
  194. package/dist/esm/{rechnung → invoice}/auth.js +4 -4
  195. package/dist/{cjs/rechnung/rechnen.d.ts → esm/invoice/calc.d.ts} +27 -27
  196. package/dist/esm/{rechnung/rechnen.js → invoice/calc.js} +45 -45
  197. package/dist/{cjs/rechnung → esm/invoice}/endpunkte.d.ts +23 -21
  198. package/dist/esm/{rechnung → invoice}/endpunkte.js +52 -42
  199. package/dist/esm/invoice/fehler.d.ts +31 -0
  200. package/dist/esm/invoice/fehler.js +33 -0
  201. package/dist/esm/invoice/index.d.ts +21 -0
  202. package/dist/esm/invoice/index.js +20 -0
  203. package/dist/esm/{rechnung → invoice}/summen.d.ts +12 -12
  204. package/dist/esm/{rechnung → invoice}/summen.js +12 -12
  205. package/dist/esm/invoice/texte.d.ts +224 -0
  206. package/dist/esm/invoice/texte.js +421 -0
  207. package/dist/{cjs/rechnung → esm/invoice}/typen.d.ts +32 -11
  208. package/dist/esm/{rechnung → invoice}/vertrag.d.ts +97 -71
  209. package/dist/esm/{rechnung → invoice}/vertrag.js +143 -81
  210. package/dist/esm/models/cancellation.d.ts +43 -24
  211. package/dist/esm/models/cancellation.js +90 -45
  212. package/dist/esm/models/hobex-receipt.d.ts +3 -3
  213. package/dist/esm/models/hobex-receipt.js +35 -35
  214. package/dist/esm/models/index.d.ts +6 -5
  215. package/dist/esm/models/index.js +6 -5
  216. package/dist/esm/models/payment-errors.d.ts +32 -15
  217. package/dist/esm/models/payment-errors.js +77 -32
  218. package/dist/esm/models/receipt-company.d.ts +6 -5
  219. package/dist/esm/models/receipt-company.js +4 -4
  220. package/dist/esm/models/receipt-email.d.ts +32 -18
  221. package/dist/esm/models/receipt-email.js +65 -23
  222. package/dist/esm/models/receipt-errors.d.ts +39 -0
  223. package/dist/esm/models/receipt-errors.js +87 -0
  224. package/dist/esm/models/receipt-item.d.ts +9 -1
  225. package/dist/esm/models/receipt-item.js +3 -0
  226. package/dist/esm/models/receipt-summary.d.ts +10 -4
  227. package/dist/esm/models/receipt-summary.js +9 -3
  228. package/dist/esm/models/receipt.d.ts +31 -2
  229. package/dist/esm/models/receipt.js +12 -2
  230. package/dist/esm/models/voucher.d.ts +7 -6
  231. package/dist/esm/models/voucher.js +2 -7
  232. package/dist/esm/partner/ablauf.d.ts +10 -10
  233. package/dist/esm/partner/ablauf.js +27 -27
  234. package/dist/esm/partner/api.d.ts +26 -23
  235. package/dist/esm/partner/api.js +13 -15
  236. package/dist/esm/partner/auth.d.ts +1 -1
  237. package/dist/esm/partner/auth.js +2 -2
  238. package/dist/esm/partner/betrieb.d.ts +7 -7
  239. package/dist/esm/partner/betrieb.js +8 -8
  240. package/dist/esm/partner/endpunkte.d.ts +27 -14
  241. package/dist/esm/partner/endpunkte.js +79 -39
  242. package/dist/esm/partner/fehler.d.ts +60 -30
  243. package/dist/esm/partner/fehler.js +91 -35
  244. package/dist/esm/partner/index.d.ts +13 -12
  245. package/dist/esm/partner/index.js +12 -11
  246. package/dist/esm/partner/secret.d.ts +3 -3
  247. package/dist/esm/partner/secret.js +5 -5
  248. package/dist/esm/partner/typen.d.ts +129 -71
  249. package/dist/esm/partner/typen.js +75 -2
  250. package/dist/esm/partner/webhook-signatur.d.ts +2 -2
  251. package/dist/esm/partner/webhook-signatur.js +12 -12
  252. package/dist/esm/partner/webhooks.d.ts +60 -32
  253. package/dist/esm/partner/webhooks.js +38 -32
  254. package/dist/esm/payments/hobex.d.ts +11 -3
  255. package/dist/esm/payments/hobex.js +18 -6
  256. package/dist/esm/payments/stripe.d.ts +5 -2
  257. package/dist/esm/payments/stripe.js +11 -6
  258. package/dist/esm/pos/artikel.d.ts +90 -0
  259. package/dist/esm/pos/artikel.js +79 -0
  260. package/dist/esm/pos/client.d.ts +27 -0
  261. package/dist/esm/pos/client.js +137 -0
  262. package/dist/esm/pos/drucker.d.ts +86 -0
  263. package/dist/esm/pos/drucker.js +71 -0
  264. package/dist/esm/pos/errors.d.ts +36 -0
  265. package/dist/esm/pos/errors.js +88 -0
  266. package/dist/esm/pos/index.d.ts +15 -0
  267. package/dist/esm/pos/index.js +20 -0
  268. package/dist/esm/pos/settings.d.ts +313 -0
  269. package/dist/esm/pos/settings.js +367 -0
  270. package/dist/esm/pos/texte.d.ts +883 -0
  271. package/dist/esm/pos/texte.js +481 -0
  272. package/dist/esm/{kasse → pos}/trinkgeld.d.ts +1 -1
  273. package/dist/esm/{kasse → pos}/trinkgeld.js +2 -2
  274. package/dist/esm/printing/escpos.d.ts +29 -29
  275. package/dist/esm/printing/escpos.js +56 -56
  276. package/dist/esm/printing/index.d.ts +2 -2
  277. package/dist/esm/printing/index.js +2 -2
  278. package/dist/esm/printing/qr-groesse.d.ts +38 -38
  279. package/dist/esm/printing/qr-groesse.js +42 -42
  280. package/dist/esm/printing/webusb.d.ts +2 -2
  281. package/dist/esm/printing/webusb.js +4 -4
  282. package/dist/esm/react/index.d.ts +21 -21
  283. package/dist/esm/react/index.js +39 -29
  284. package/dist/esm/receipt/bild.d.ts +4 -4
  285. package/dist/esm/receipt/bild.js +11 -11
  286. package/dist/esm/receipt/blatt.d.ts +46 -46
  287. package/dist/esm/receipt/blatt.js +55 -55
  288. package/dist/esm/receipt/discount.d.ts +1 -1
  289. package/dist/esm/receipt/discount.js +7 -7
  290. package/dist/esm/receipt/due.d.ts +86 -0
  291. package/dist/esm/receipt/due.js +257 -0
  292. package/dist/esm/receipt/epos.d.ts +22 -22
  293. package/dist/esm/receipt/epos.js +47 -47
  294. package/dist/esm/receipt/grid.d.ts +10 -10
  295. package/dist/esm/receipt/grid.js +18 -18
  296. package/dist/esm/receipt/index.d.ts +9 -8
  297. package/dist/esm/receipt/index.js +9 -8
  298. package/dist/esm/receipt/layout-escpos.d.ts +24 -24
  299. package/dist/esm/receipt/layout-escpos.js +51 -51
  300. package/dist/esm/receipt/layout.d.ts +28 -23
  301. package/dist/esm/receipt/layout.js +44 -20
  302. package/dist/esm/receipt/marke-daten.d.ts +8 -8
  303. package/dist/esm/receipt/marke-daten.js +7 -7
  304. package/dist/esm/receipt/marke.d.ts +7 -7
  305. package/dist/esm/receipt/marke.js +10 -10
  306. package/dist/esm/register/errors.d.ts +61 -0
  307. package/dist/esm/register/errors.js +104 -0
  308. package/dist/esm/register/index.d.ts +14 -1
  309. package/dist/esm/register/index.js +13 -0
  310. package/dist/esm/register/pairing.d.ts +55 -36
  311. package/dist/esm/register/pairing.js +33 -29
  312. package/dist/esm/register/session.d.ts +5 -5
  313. package/dist/esm/register/session.js +7 -7
  314. package/dist/esm/stored/draht.d.ts +45 -0
  315. package/dist/esm/stored/draht.js +208 -0
  316. package/dist/esm/stored/einstellungen.d.ts +23 -0
  317. package/dist/esm/stored/einstellungen.js +196 -0
  318. package/dist/esm/stored/index.d.ts +109 -0
  319. package/dist/esm/stored/index.js +217 -0
  320. package/dist/esm/stored/vokabular.d.ts +18 -0
  321. package/dist/esm/stored/vokabular.js +386 -0
  322. package/dist/esm/version.d.ts +7 -0
  323. package/dist/esm/version.js +7 -0
  324. package/dist/esm/vienna-time.d.ts +1 -1
  325. package/dist/esm/vienna-time.js +2 -2
  326. package/fixtures/{erwartet/storno-rabatt.lines.json → expected/cancellation-discount.lines.json} +2 -2
  327. package/fixtures/expected/cancellation-discount.sheet32.json +248 -0
  328. package/fixtures/{erwartet/storno-rabatt.blatt48.json → expected/cancellation-discount.sheet48.json} +119 -119
  329. package/fixtures/{erwartet/storno-voll.lines.json → expected/cancellation-full.lines.json} +2 -2
  330. package/fixtures/expected/cancellation-full.sheet32.json +218 -0
  331. package/fixtures/{erwartet/storno-voll.blatt48.json → expected/cancellation-full.sheet48.json} +107 -107
  332. package/fixtures/{erwartet/storno-teil.lines.json → expected/cancellation-partial.lines.json} +2 -2
  333. package/fixtures/expected/cancellation-partial.sheet32.json +206 -0
  334. package/fixtures/{erwartet/storno-teil.blatt48.json → expected/cancellation-partial.sheet48.json} +101 -101
  335. package/fixtures/{erwartet/storno-split-voll.lines.json → expected/cancellation-split-full.lines.json} +2 -2
  336. package/fixtures/expected/cancellation-split-full.sheet32.json +320 -0
  337. package/fixtures/{erwartet/storno-split-voll.blatt48.json → expected/cancellation-split-full.sheet48.json} +158 -158
  338. package/fixtures/{erwartet/storno-split-teil.lines.json → expected/cancellation-split-partial.lines.json} +2 -2
  339. package/fixtures/expected/cancellation-split-partial.sheet32.json +230 -0
  340. package/fixtures/{erwartet/storno-split-teil.blatt48.json → expected/cancellation-split-partial.sheet48.json} +113 -113
  341. package/fixtures/{erwartet/karte-eigener.lines.json → expected/card-custom.lines.json} +1 -1
  342. package/fixtures/expected/card-custom.sheet32.json +158 -0
  343. package/fixtures/{erwartet/karte-eigener.blatt48.json → expected/card-custom.sheet48.json} +80 -80
  344. package/fixtures/{erwartet/karte-gptom-ios.lines.json → expected/card-gptom-ios.lines.json} +1 -1
  345. package/fixtures/expected/card-gptom-ios.sheet32.json +230 -0
  346. package/fixtures/{erwartet/karte-gptom-ios.blatt48.json → expected/card-gptom-ios.sheet48.json} +116 -116
  347. package/fixtures/{erwartet/karte-gptom.lines.json → expected/card-gptom.lines.json} +1 -1
  348. package/fixtures/expected/card-gptom.sheet32.json +230 -0
  349. package/fixtures/{erwartet/karte-gptom.blatt48.json → expected/card-gptom.sheet48.json} +116 -116
  350. package/fixtures/{erwartet/karte-hobex-cloud.lines.json → expected/card-hobex-cloud.lines.json} +1 -1
  351. package/fixtures/expected/card-hobex-cloud.sheet32.json +200 -0
  352. package/fixtures/{erwartet/karte-hobex-cloud.blatt48.json → expected/card-hobex-cloud.sheet48.json} +101 -101
  353. package/fixtures/{erwartet/karte-hobex-hps.lines.json → expected/card-hobex-hps.lines.json} +1 -1
  354. package/fixtures/expected/card-hobex-hps.sheet32.json +224 -0
  355. package/fixtures/{erwartet/karte-hobex-hps.blatt48.json → expected/card-hobex-hps.sheet48.json} +113 -113
  356. package/fixtures/{erwartet/karte-mypos.lines.json → expected/card-mypos.lines.json} +1 -1
  357. package/fixtures/expected/card-mypos.sheet32.json +254 -0
  358. package/fixtures/{erwartet/karte-mypos.blatt48.json → expected/card-mypos.sheet48.json} +122 -122
  359. package/fixtures/{erwartet/karte-stripe-eps.lines.json → expected/card-stripe-eps.lines.json} +1 -1
  360. package/fixtures/expected/card-stripe-eps.sheet32.json +194 -0
  361. package/fixtures/{erwartet/karte-stripe-eps.blatt48.json → expected/card-stripe-eps.sheet48.json} +98 -98
  362. package/fixtures/{erwartet/karte-stripe.lines.json → expected/card-stripe.lines.json} +1 -1
  363. package/fixtures/expected/card-stripe.sheet32.json +212 -0
  364. package/fixtures/{erwartet/karte-stripe.blatt48.json → expected/card-stripe.sheet48.json} +107 -107
  365. package/fixtures/{erwartet/karte-sumup.lines.json → expected/card-sumup.lines.json} +1 -1
  366. package/fixtures/expected/card-sumup.sheet32.json +218 -0
  367. package/fixtures/{erwartet/karte-sumup.blatt48.json → expected/card-sumup.sheet48.json} +104 -104
  368. package/fixtures/{erwartet/rabattzeilen.lines.json → expected/discount-lines.lines.json} +1 -1
  369. package/fixtures/expected/discount-lines.sheet32.json +200 -0
  370. package/fixtures/{erwartet/rabattzeilen.blatt48.json → expected/discount-lines.sheet48.json} +98 -98
  371. package/fixtures/{erwartet/rabatt-chef-trinkgeld.lines.json → expected/discount-owner-tip.lines.json} +1 -1
  372. package/fixtures/expected/discount-owner-tip.sheet32.json +212 -0
  373. package/fixtures/{erwartet/rabatt-chef-trinkgeld.blatt48.json → expected/discount-owner-tip.sheet48.json} +104 -104
  374. package/fixtures/{erwartet/rabatt-einfach.lines.json → expected/discount-simple.lines.json} +1 -1
  375. package/fixtures/expected/discount-simple.sheet32.json +182 -0
  376. package/fixtures/{erwartet/rabatt-einfach.blatt48.json → expected/discount-simple.sheet48.json} +89 -89
  377. package/fixtures/{erwartet/rabatt-trinkgeld.lines.json → expected/discount-tip.lines.json} +1 -1
  378. package/fixtures/expected/discount-tip.sheet32.json +212 -0
  379. package/fixtures/{erwartet/rabatt-trinkgeld.blatt48.json → expected/discount-tip.sheet48.json} +104 -104
  380. package/fixtures/{erwartet/rabatt-wertgutschein.lines.json → expected/discount-value-voucher.lines.json} +1 -1
  381. package/fixtures/expected/discount-value-voucher.sheet32.json +218 -0
  382. package/fixtures/{erwartet/rabatt-wertgutschein.blatt48.json → expected/discount-value-voucher.sheet48.json} +107 -107
  383. package/fixtures/{erwartet/langer-artikelname.lines.json → expected/long-item-name.lines.json} +1 -1
  384. package/fixtures/expected/long-item-name.sheet32.json +176 -0
  385. package/fixtures/{erwartet/langer-artikelname.blatt48.json → expected/long-item-name.sheet48.json} +86 -86
  386. package/fixtures/{erwartet/verkauf-karte.lines.json → expected/sale-card.lines.json} +1 -1
  387. package/fixtures/expected/sale-card.sheet32.json +176 -0
  388. package/fixtures/{erwartet/verkauf-karte.blatt48.json → expected/sale-card.sheet48.json} +86 -86
  389. package/fixtures/{erwartet/verkauf-bar.lines.json → expected/sale-cash.lines.json} +1 -1
  390. package/fixtures/expected/sale-cash.sheet32.json +176 -0
  391. package/fixtures/{erwartet/verkauf-bar.blatt48.json → expected/sale-cash.sheet48.json} +86 -86
  392. package/fixtures/{erwartet/verkauf-kleinunternehmer.lines.json → expected/sale-small-business.lines.json} +1 -1
  393. package/fixtures/expected/sale-small-business.sheet32.json +182 -0
  394. package/fixtures/{erwartet/verkauf-kleinunternehmer.blatt48.json → expected/sale-small-business.sheet48.json} +89 -89
  395. package/fixtures/{erwartet/signaturausfall-verkauf.lines.json → expected/signature-outage-sale.lines.json} +1 -1
  396. package/fixtures/expected/signature-outage-sale.sheet32.json +194 -0
  397. package/fixtures/{erwartet/signaturausfall-verkauf.blatt48.json → expected/signature-outage-sale.sheet48.json} +92 -92
  398. package/fixtures/{erwartet/split-karte-karte-bar.lines.json → expected/split-card-card-cash.lines.json} +1 -1
  399. package/fixtures/expected/split-card-card-cash.sheet32.json +356 -0
  400. package/fixtures/{erwartet/split-karte-karte-bar.blatt48.json → expected/split-card-card-cash.sheet48.json} +170 -170
  401. package/fixtures/{erwartet/split-bar-rueckgeld.lines.json → expected/split-cash-change.lines.json} +1 -1
  402. package/fixtures/expected/split-cash-change.sheet32.json +194 -0
  403. package/fixtures/{erwartet/split-bar-rueckgeld.blatt48.json → expected/split-cash-change.sheet48.json} +92 -92
  404. package/fixtures/{erwartet/split-langer-betrag.lines.json → expected/split-long-amount.lines.json} +1 -1
  405. package/fixtures/expected/split-long-amount.sheet32.json +266 -0
  406. package/fixtures/{erwartet/split-langer-betrag.blatt48.json → expected/split-long-amount.sheet48.json} +131 -131
  407. package/fixtures/{erwartet/split-eine-karte-trinkgeld.lines.json → expected/split-one-card-tip.lines.json} +1 -1
  408. package/fixtures/expected/split-one-card-tip.sheet32.json +242 -0
  409. package/fixtures/{erwartet/split-eine-karte-trinkgeld.blatt48.json → expected/split-one-card-tip.sheet48.json} +113 -113
  410. package/fixtures/{erwartet/split-tischrunde-trinkgeld.lines.json → expected/split-table-round-tip.lines.json} +1 -1
  411. package/fixtures/expected/split-table-round-tip.sheet32.json +470 -0
  412. package/fixtures/{erwartet/split-tischrunde-trinkgeld.blatt48.json → expected/split-table-round-tip.sheet48.json} +218 -218
  413. package/fixtures/{erwartet/split-trinkgeld-karte.lines.json → expected/split-tip-card.lines.json} +1 -1
  414. package/fixtures/expected/split-tip-card.sheet32.json +272 -0
  415. package/fixtures/{erwartet/split-trinkgeld-karte.blatt48.json → expected/split-tip-card.sheet48.json} +128 -128
  416. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.lines.json → expected/split-two-cards-same-provider.lines.json} +1 -1
  417. package/fixtures/expected/split-two-cards-same-provider.sheet32.json +326 -0
  418. package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.blatt48.json → expected/split-two-cards-same-provider.sheet48.json} +149 -149
  419. package/fixtures/{erwartet/testkasse-verkauf.lines.json → expected/test-cashregister-sale.lines.json} +3 -3
  420. package/fixtures/expected/test-cashregister-sale.sheet32.json +224 -0
  421. package/fixtures/{erwartet/testkasse-verkauf.blatt48.json → expected/test-cashregister-sale.sheet48.json} +110 -110
  422. package/fixtures/{erwartet/testsignatur-verkauf.lines.json → expected/test-signature-sale.lines.json} +3 -3
  423. package/fixtures/expected/test-signature-sale.sheet32.json +236 -0
  424. package/fixtures/{erwartet/testsignatur-verkauf.blatt48.json → expected/test-signature-sale.sheet48.json} +110 -110
  425. package/fixtures/{erwartet → expected}/training.lines.json +2 -2
  426. package/fixtures/expected/training.sheet32.json +236 -0
  427. package/fixtures/{erwartet/training.blatt48.json → expected/training.sheet48.json} +110 -110
  428. package/fixtures/{erwartet/null-jahr.lines.json → expected/zero-annual.lines.json} +2 -2
  429. package/fixtures/expected/zero-annual.sheet32.json +212 -0
  430. package/fixtures/{erwartet/null-jahr.blatt48.json → expected/zero-annual.sheet48.json} +95 -95
  431. package/fixtures/{erwartet/null-schluss.lines.json → expected/zero-final.lines.json} +2 -2
  432. package/fixtures/expected/zero-final.sheet32.json +206 -0
  433. package/fixtures/{erwartet/null-schluss.blatt48.json → expected/zero-final.sheet48.json} +95 -95
  434. package/fixtures/{erwartet/null-pruef.lines.json → expected/zero-manual.lines.json} +2 -2
  435. package/fixtures/expected/zero-manual.sheet32.json +206 -0
  436. package/fixtures/{erwartet/null-pruef.blatt48.json → expected/zero-manual.sheet48.json} +95 -95
  437. package/fixtures/{erwartet/null-monat.lines.json → expected/zero-monthly.lines.json} +2 -2
  438. package/fixtures/expected/zero-monthly.sheet32.json +206 -0
  439. package/fixtures/{erwartet/null-monat.blatt48.json → expected/zero-monthly.sheet48.json} +95 -95
  440. package/fixtures/{erwartet/null-ausfall.lines.json → expected/zero-outage-end.lines.json} +2 -2
  441. package/fixtures/expected/zero-outage-end.sheet32.json +206 -0
  442. package/fixtures/{erwartet/null-ausfall.blatt48.json → expected/zero-outage-end.sheet48.json} +95 -95
  443. package/fixtures/{erwartet/null-start.lines.json → expected/zero-start.lines.json} +2 -2
  444. package/fixtures/expected/zero-start.sheet32.json +206 -0
  445. package/fixtures/{erwartet/null-start.blatt48.json → expected/zero-start.sheet48.json} +95 -95
  446. package/fixtures/hobex-hps-codes.json +12 -12
  447. package/fixtures/invoice-api-examples/brands-ok.json +8 -0
  448. package/fixtures/{rechnung-api-beispiele/credit-fehler-grund.json → invoice-api-examples/credit-error-reason.json} +6 -6
  449. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/credit-ok.json +6 -6
  450. package/fixtures/{rechnung-api-beispiele/customer-fehler-uid.json → invoice-api-examples/customer-error-vat-id.json} +4 -4
  451. package/fixtures/invoice-api-examples/customer-get-error-both.json +15 -0
  452. package/fixtures/{rechnung-api-beispiele → invoice-api-examples}/customer-ok.json +4 -4
  453. package/fixtures/{rechnung-api-beispiele/customer-search-fehler-leer.json → invoice-api-examples/customer-search-error-empty.json} +4 -4
  454. package/fixtures/{rechnung-api-beispiele/issue-rabatt.json → invoice-api-examples/issue-discount.json} +6 -6
  455. package/fixtures/{rechnung-api-beispiele/issue-englisch.json → invoice-api-examples/issue-english.json} +7 -7
  456. package/fixtures/{rechnung-api-beispiele/issue-fehler-cent.json → invoice-api-examples/issue-error-cent.json} +6 -6
  457. package/fixtures/{rechnung-api-beispiele/issue-fehler-sprache.json → invoice-api-examples/issue-error-language.json} +5 -5
  458. package/fixtures/{rechnung-api-beispiele/issue-fehler-negativ.json → invoice-api-examples/issue-error-negative.json} +6 -6
  459. package/fixtures/{rechnung-api-beispiele/issue-fehler-zahlungsart.json → invoice-api-examples/issue-error-payment-method.json} +8 -6
  460. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-beide.json → invoice-api-examples/issue-error-price-both.json} +6 -6
  461. package/fixtures/{rechnung-api-beispiele/issue-fehler-preis-fehlt.json → invoice-api-examples/issue-error-price-missing.json} +6 -6
  462. package/fixtures/{rechnung-api-beispiele/issue-fehler-menge.json → invoice-api-examples/issue-error-quantity.json} +6 -6
  463. package/fixtures/{rechnung-api-beispiele/issue-fehler-satz.json → invoice-api-examples/issue-error-rate.json} +6 -6
  464. package/fixtures/{rechnung-api-beispiele/issue-fehler-einheit.json → invoice-api-examples/issue-error-unit.json} +5 -5
  465. package/fixtures/{rechnung-api-beispiele/issue-fehler-unbekannt.json → invoice-api-examples/issue-error-unknown.json} +6 -6
  466. package/fixtures/{rechnung-api-beispiele/issue-brutto-20.json → invoice-api-examples/issue-gross-20.json} +6 -6
  467. package/fixtures/{rechnung-api-beispiele/issue-mikropreis.json → invoice-api-examples/issue-micro-price.json} +6 -6
  468. package/fixtures/{rechnung-api-beispiele/issue-gemischt.json → invoice-api-examples/issue-mixed.json} +6 -6
  469. package/fixtures/{rechnung-api-beispiele/issue-netto-20.json → invoice-api-examples/issue-net-20.json} +6 -6
  470. package/fixtures/{rechnung-api-beispiele/issue-bezahlt.json → invoice-api-examples/issue-paid.json} +7 -7
  471. package/fixtures/{rechnung-api-beispiele/issue-kleinunternehmer.json → invoice-api-examples/issue-small-business.json} +6 -6
  472. package/fixtures/invoice-api-examples/payment-error-on-site.json +17 -0
  473. package/fixtures/invoice-api-examples/payment-error-without-key.json +16 -0
  474. package/fixtures/invoice-api-examples/payment-recorded-later.json +14 -0
  475. package/fixtures/{rechnung-api-beispiele/setup-status-fehler-feld.json → invoice-api-examples/setup-status-error-field.json} +4 -4
  476. package/fixtures/invoice-api-examples/setup-status-ok.json +8 -0
  477. package/fixtures/{rechnung-api.schema.json → invoice-api.schema.json} +24 -24
  478. package/fixtures/{rechnung-rechnen-zufall.json → invoice-calc-random.json} +828 -828
  479. package/fixtures/{rechnung-rechnen.json → invoice-calc.json} +47 -47
  480. package/fixtures/invoice-texts.json +464 -0
  481. package/fixtures/{rechnung-summen.json → invoice-totals.json} +25 -25
  482. package/fixtures/{position-aus-euro.json → item-from-euro.json} +26 -26
  483. package/fixtures/manifest.json +252 -252
  484. package/fixtures/pos-message-cases.json +32 -0
  485. package/fixtures/pos-settings-defaults.json +149 -0
  486. package/fixtures/{kasse-texte.json → pos-texts.json} +416 -416
  487. package/fixtures/receipt-due-generated.json +1218 -0
  488. package/fixtures/{belege/storno-rabatt.json → receipts/cancellation-discount.json} +3 -3
  489. package/fixtures/{belege/storno-voll.json → receipts/cancellation-full.json} +3 -3
  490. package/fixtures/{belege/storno-teil.json → receipts/cancellation-partial.json} +3 -3
  491. package/fixtures/{belege/storno-split-voll.json → receipts/cancellation-split-full.json} +3 -3
  492. package/fixtures/{belege/storno-split-teil.json → receipts/cancellation-split-partial.json} +3 -3
  493. package/fixtures/{belege/karte-eigener.json → receipts/card-custom.json} +2 -2
  494. package/fixtures/{belege/karte-gptom-ios.json → receipts/card-gptom-ios.json} +2 -2
  495. package/fixtures/{belege/karte-gptom.json → receipts/card-gptom.json} +2 -2
  496. package/fixtures/{belege/karte-hobex-cloud.json → receipts/card-hobex-cloud.json} +2 -2
  497. package/fixtures/{belege/karte-hobex-hps.json → receipts/card-hobex-hps.json} +2 -2
  498. package/fixtures/{belege/karte-mypos.json → receipts/card-mypos.json} +2 -2
  499. package/fixtures/{belege/karte-stripe-eps.json → receipts/card-stripe-eps.json} +2 -2
  500. package/fixtures/{belege/karte-stripe.json → receipts/card-stripe.json} +2 -2
  501. package/fixtures/{belege/karte-sumup.json → receipts/card-sumup.json} +2 -2
  502. package/fixtures/{belege/rabattzeilen.json → receipts/discount-lines.json} +2 -2
  503. package/fixtures/{belege/rabatt-chef-trinkgeld.json → receipts/discount-owner-tip.json} +2 -2
  504. package/fixtures/{belege/rabatt-einfach.json → receipts/discount-simple.json} +2 -2
  505. package/fixtures/{belege/rabatt-trinkgeld.json → receipts/discount-tip.json} +2 -2
  506. package/fixtures/{belege/rabatt-wertgutschein.json → receipts/discount-value-voucher.json} +2 -2
  507. package/fixtures/{belege/langer-artikelname.json → receipts/long-item-name.json} +2 -2
  508. package/fixtures/{belege/verkauf-karte.json → receipts/sale-card.json} +2 -2
  509. package/fixtures/{belege/verkauf-bar.json → receipts/sale-cash.json} +2 -2
  510. package/fixtures/{belege/verkauf-kleinunternehmer.json → receipts/sale-small-business.json} +1 -1
  511. package/fixtures/{belege/signaturausfall-verkauf.json → receipts/signature-outage-sale.json} +2 -2
  512. package/fixtures/{belege/split-karte-karte-bar.json → receipts/split-card-card-cash.json} +2 -2
  513. package/fixtures/{belege/split-bar-rueckgeld.json → receipts/split-cash-change.json} +2 -2
  514. package/fixtures/{belege/split-langer-betrag.json → receipts/split-long-amount.json} +2 -2
  515. package/fixtures/{belege/split-eine-karte-trinkgeld.json → receipts/split-one-card-tip.json} +2 -2
  516. package/fixtures/{belege/split-tischrunde-trinkgeld.json → receipts/split-table-round-tip.json} +2 -2
  517. package/fixtures/{belege/split-trinkgeld-karte.json → receipts/split-tip-card.json} +2 -2
  518. package/fixtures/{belege/split-zwei-karten-gleicher-anbieter.json → receipts/split-two-cards-same-provider.json} +2 -2
  519. package/fixtures/{belege/testsignatur-verkauf.json → receipts/test-cashregister-sale.json} +3 -3
  520. package/fixtures/{belege/testkasse-verkauf.json → receipts/test-signature-sale.json} +3 -3
  521. package/fixtures/{belege → receipts}/training.json +2 -2
  522. package/fixtures/{belege/null-jahr.json → receipts/zero-annual.json} +5 -5
  523. package/fixtures/{belege/null-schluss.json → receipts/zero-final.json} +5 -5
  524. package/fixtures/{belege/null-pruef.json → receipts/zero-manual.json} +5 -5
  525. package/fixtures/{belege/null-monat.json → receipts/zero-monthly.json} +5 -5
  526. package/fixtures/{belege/null-ausfall.json → receipts/zero-outage-end.json} +5 -5
  527. package/fixtures/{belege/null-start.json → receipts/zero-start.json} +5 -5
  528. package/fixtures/renames-1.0.json +1490 -0
  529. package/fixtures/{kasse-settings-standard.json → stored/pos-settings-defaults.json} +7 -7
  530. package/fixtures/surface.json +877 -0
  531. package/fixtures/v3/README.md +125 -0
  532. package/fixtures/v3/antworten/belege.json +4738 -0
  533. package/fixtures/v3/antworten/belegmail.json +154 -0
  534. package/fixtures/v3/antworten/kasse-belege.json +4304 -0
  535. package/fixtures/v3/antworten/kasse.json +12716 -0
  536. package/fixtures/v3/antworten/rechnungen.json +1712 -0
  537. package/fixtures/v3/antworten/storno.json +737 -0
  538. package/fixtures/v3/stored/belege.json +502 -0
  539. package/fixtures/v3/stored/kasse.json +3461 -0
  540. package/fixtures/v3/stored/rechnungen.json +750 -0
  541. package/fixtures/v3/v3-vokabular.json +3375 -0
  542. package/fixtures/v3/zahlbetrag-faelle.json +794 -0
  543. package/package.json +32 -18
  544. package/dist/cjs/kasse/artikel.d.ts +0 -83
  545. package/dist/cjs/kasse/artikel.js +0 -79
  546. package/dist/cjs/kasse/client.d.ts +0 -10
  547. package/dist/cjs/kasse/client.js +0 -38
  548. package/dist/cjs/kasse/drucker.d.ts +0 -59
  549. package/dist/cjs/kasse/drucker.js +0 -50
  550. package/dist/cjs/kasse/index.d.ts +0 -13
  551. package/dist/cjs/kasse/index.js +0 -83
  552. package/dist/cjs/kasse/settings.d.ts +0 -229
  553. package/dist/cjs/kasse/settings.js +0 -172
  554. package/dist/cjs/kasse/texte.d.ts +0 -868
  555. package/dist/cjs/kasse/texte.js +0 -474
  556. package/dist/cjs/rechnung/fehler.d.ts +0 -21
  557. package/dist/cjs/rechnung/fehler.js +0 -44
  558. package/dist/cjs/rechnung/index.d.ts +0 -21
  559. package/dist/cjs/rechnung/index.js +0 -82
  560. package/dist/cjs/rechnung/texte.d.ts +0 -222
  561. package/dist/cjs/rechnung/texte.js +0 -425
  562. package/dist/esm/kasse/artikel.d.ts +0 -83
  563. package/dist/esm/kasse/artikel.js +0 -70
  564. package/dist/esm/kasse/client.d.ts +0 -10
  565. package/dist/esm/kasse/client.js +0 -33
  566. package/dist/esm/kasse/drucker.d.ts +0 -59
  567. package/dist/esm/kasse/drucker.js +0 -45
  568. package/dist/esm/kasse/index.d.ts +0 -13
  569. package/dist/esm/kasse/index.js +0 -18
  570. package/dist/esm/kasse/settings.d.ts +0 -229
  571. package/dist/esm/kasse/settings.js +0 -168
  572. package/dist/esm/kasse/texte.d.ts +0 -868
  573. package/dist/esm/kasse/texte.js +0 -466
  574. package/dist/esm/rechnung/fehler.d.ts +0 -21
  575. package/dist/esm/rechnung/fehler.js +0 -39
  576. package/dist/esm/rechnung/index.d.ts +0 -21
  577. package/dist/esm/rechnung/index.js +0 -20
  578. package/dist/esm/rechnung/texte.d.ts +0 -222
  579. package/dist/esm/rechnung/texte.js +0 -421
  580. package/fixtures/erwartet/karte-eigener.blatt32.json +0 -158
  581. package/fixtures/erwartet/karte-gptom-ios.blatt32.json +0 -230
  582. package/fixtures/erwartet/karte-gptom.blatt32.json +0 -230
  583. package/fixtures/erwartet/karte-hobex-cloud.blatt32.json +0 -200
  584. package/fixtures/erwartet/karte-hobex-hps.blatt32.json +0 -224
  585. package/fixtures/erwartet/karte-mypos.blatt32.json +0 -254
  586. package/fixtures/erwartet/karte-stripe-eps.blatt32.json +0 -194
  587. package/fixtures/erwartet/karte-stripe.blatt32.json +0 -212
  588. package/fixtures/erwartet/karte-sumup.blatt32.json +0 -218
  589. package/fixtures/erwartet/langer-artikelname.blatt32.json +0 -176
  590. package/fixtures/erwartet/null-ausfall.blatt32.json +0 -206
  591. package/fixtures/erwartet/null-jahr.blatt32.json +0 -212
  592. package/fixtures/erwartet/null-monat.blatt32.json +0 -206
  593. package/fixtures/erwartet/null-pruef.blatt32.json +0 -206
  594. package/fixtures/erwartet/null-schluss.blatt32.json +0 -206
  595. package/fixtures/erwartet/null-start.blatt32.json +0 -206
  596. package/fixtures/erwartet/rabatt-chef-trinkgeld.blatt32.json +0 -212
  597. package/fixtures/erwartet/rabatt-einfach.blatt32.json +0 -182
  598. package/fixtures/erwartet/rabatt-trinkgeld.blatt32.json +0 -212
  599. package/fixtures/erwartet/rabatt-wertgutschein.blatt32.json +0 -218
  600. package/fixtures/erwartet/rabattzeilen.blatt32.json +0 -200
  601. package/fixtures/erwartet/signaturausfall-verkauf.blatt32.json +0 -194
  602. package/fixtures/erwartet/split-bar-rueckgeld.blatt32.json +0 -194
  603. package/fixtures/erwartet/split-eine-karte-trinkgeld.blatt32.json +0 -242
  604. package/fixtures/erwartet/split-karte-karte-bar.blatt32.json +0 -356
  605. package/fixtures/erwartet/split-langer-betrag.blatt32.json +0 -266
  606. package/fixtures/erwartet/split-tischrunde-trinkgeld.blatt32.json +0 -470
  607. package/fixtures/erwartet/split-trinkgeld-karte.blatt32.json +0 -272
  608. package/fixtures/erwartet/split-zwei-karten-gleicher-anbieter.blatt32.json +0 -326
  609. package/fixtures/erwartet/storno-rabatt.blatt32.json +0 -248
  610. package/fixtures/erwartet/storno-split-teil.blatt32.json +0 -230
  611. package/fixtures/erwartet/storno-split-voll.blatt32.json +0 -320
  612. package/fixtures/erwartet/storno-teil.blatt32.json +0 -206
  613. package/fixtures/erwartet/storno-voll.blatt32.json +0 -218
  614. package/fixtures/erwartet/testkasse-verkauf.blatt32.json +0 -224
  615. package/fixtures/erwartet/testsignatur-verkauf.blatt32.json +0 -236
  616. package/fixtures/erwartet/training.blatt32.json +0 -236
  617. package/fixtures/erwartet/verkauf-bar.blatt32.json +0 -176
  618. package/fixtures/erwartet/verkauf-karte.blatt32.json +0 -176
  619. package/fixtures/erwartet/verkauf-kleinunternehmer.blatt32.json +0 -182
  620. package/fixtures/kasse-meldungen-faelle.json +0 -32
  621. package/fixtures/oberflaeche.json +0 -558
  622. package/fixtures/rechnung-api-beispiele/brands-ok.json +0 -8
  623. package/fixtures/rechnung-api-beispiele/customer-get-fehler-beide.json +0 -15
  624. package/fixtures/rechnung-api-beispiele/setup-status-ok.json +0 -8
  625. package/fixtures/rechnung-api-beispiele/zahlung-fehler-ohne-schluessel.json +0 -14
  626. package/fixtures/rechnung-api-beispiele/zahlung-fehler-vor-ort.json +0 -15
  627. package/fixtures/rechnung-api-beispiele/zahlung-nachtrag.json +0 -14
  628. package/fixtures/rechnung-texte.json +0 -464
  629. /package/dist/cjs/{rechnung → invoice}/typen.js +0 -0
  630. /package/dist/esm/{rechnung → invoice}/typen.js +0 -0
  631. /package/fixtures/{erwartet/storno-rabatt.grid32.txt → expected/cancellation-discount.grid32.txt} +0 -0
  632. /package/fixtures/{erwartet/storno-rabatt.grid48.txt → expected/cancellation-discount.grid48.txt} +0 -0
  633. /package/fixtures/{erwartet/storno-voll.grid32.txt → expected/cancellation-full.grid32.txt} +0 -0
  634. /package/fixtures/{erwartet/storno-voll.grid48.txt → expected/cancellation-full.grid48.txt} +0 -0
  635. /package/fixtures/{erwartet/storno-teil.grid32.txt → expected/cancellation-partial.grid32.txt} +0 -0
  636. /package/fixtures/{erwartet/storno-teil.grid48.txt → expected/cancellation-partial.grid48.txt} +0 -0
  637. /package/fixtures/{erwartet/storno-split-voll.grid32.txt → expected/cancellation-split-full.grid32.txt} +0 -0
  638. /package/fixtures/{erwartet/storno-split-voll.grid48.txt → expected/cancellation-split-full.grid48.txt} +0 -0
  639. /package/fixtures/{erwartet/storno-split-teil.grid32.txt → expected/cancellation-split-partial.grid32.txt} +0 -0
  640. /package/fixtures/{erwartet/storno-split-teil.grid48.txt → expected/cancellation-split-partial.grid48.txt} +0 -0
  641. /package/fixtures/{erwartet/karte-eigener.grid32.txt → expected/card-custom.grid32.txt} +0 -0
  642. /package/fixtures/{erwartet/karte-eigener.grid48.txt → expected/card-custom.grid48.txt} +0 -0
  643. /package/fixtures/{erwartet/karte-gptom-ios.grid32.txt → expected/card-gptom-ios.grid32.txt} +0 -0
  644. /package/fixtures/{erwartet/karte-gptom-ios.grid48.txt → expected/card-gptom-ios.grid48.txt} +0 -0
  645. /package/fixtures/{erwartet/karte-gptom.grid32.txt → expected/card-gptom.grid32.txt} +0 -0
  646. /package/fixtures/{erwartet/karte-gptom.grid48.txt → expected/card-gptom.grid48.txt} +0 -0
  647. /package/fixtures/{erwartet/karte-hobex-cloud.grid32.txt → expected/card-hobex-cloud.grid32.txt} +0 -0
  648. /package/fixtures/{erwartet/karte-hobex-cloud.grid48.txt → expected/card-hobex-cloud.grid48.txt} +0 -0
  649. /package/fixtures/{erwartet/karte-hobex-hps.grid32.txt → expected/card-hobex-hps.grid32.txt} +0 -0
  650. /package/fixtures/{erwartet/karte-hobex-hps.grid48.txt → expected/card-hobex-hps.grid48.txt} +0 -0
  651. /package/fixtures/{erwartet/karte-mypos.grid32.txt → expected/card-mypos.grid32.txt} +0 -0
  652. /package/fixtures/{erwartet/karte-mypos.grid48.txt → expected/card-mypos.grid48.txt} +0 -0
  653. /package/fixtures/{erwartet/karte-stripe-eps.grid32.txt → expected/card-stripe-eps.grid32.txt} +0 -0
  654. /package/fixtures/{erwartet/karte-stripe-eps.grid48.txt → expected/card-stripe-eps.grid48.txt} +0 -0
  655. /package/fixtures/{erwartet/karte-stripe.grid32.txt → expected/card-stripe.grid32.txt} +0 -0
  656. /package/fixtures/{erwartet/karte-stripe.grid48.txt → expected/card-stripe.grid48.txt} +0 -0
  657. /package/fixtures/{erwartet/karte-sumup.grid32.txt → expected/card-sumup.grid32.txt} +0 -0
  658. /package/fixtures/{erwartet/karte-sumup.grid48.txt → expected/card-sumup.grid48.txt} +0 -0
  659. /package/fixtures/{erwartet/rabattzeilen.grid32.txt → expected/discount-lines.grid32.txt} +0 -0
  660. /package/fixtures/{erwartet/rabattzeilen.grid48.txt → expected/discount-lines.grid48.txt} +0 -0
  661. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid32.txt → expected/discount-owner-tip.grid32.txt} +0 -0
  662. /package/fixtures/{erwartet/rabatt-chef-trinkgeld.grid48.txt → expected/discount-owner-tip.grid48.txt} +0 -0
  663. /package/fixtures/{erwartet/rabatt-einfach.grid32.txt → expected/discount-simple.grid32.txt} +0 -0
  664. /package/fixtures/{erwartet/rabatt-einfach.grid48.txt → expected/discount-simple.grid48.txt} +0 -0
  665. /package/fixtures/{erwartet/rabatt-trinkgeld.grid32.txt → expected/discount-tip.grid32.txt} +0 -0
  666. /package/fixtures/{erwartet/rabatt-trinkgeld.grid48.txt → expected/discount-tip.grid48.txt} +0 -0
  667. /package/fixtures/{erwartet/rabatt-wertgutschein.grid32.txt → expected/discount-value-voucher.grid32.txt} +0 -0
  668. /package/fixtures/{erwartet/rabatt-wertgutschein.grid48.txt → expected/discount-value-voucher.grid48.txt} +0 -0
  669. /package/fixtures/{erwartet/logo-probe-hoch.raster32.txt → expected/logo-sample-tall.raster32.txt} +0 -0
  670. /package/fixtures/{erwartet/logo-probe.raster32.txt → expected/logo-sample.raster32.txt} +0 -0
  671. /package/fixtures/{erwartet/langer-artikelname.grid32.txt → expected/long-item-name.grid32.txt} +0 -0
  672. /package/fixtures/{erwartet/langer-artikelname.grid48.txt → expected/long-item-name.grid48.txt} +0 -0
  673. /package/fixtures/{erwartet/verkauf-karte.grid32.txt → expected/sale-card.grid32.txt} +0 -0
  674. /package/fixtures/{erwartet/verkauf-karte.grid48.txt → expected/sale-card.grid48.txt} +0 -0
  675. /package/fixtures/{erwartet/verkauf-bar.grid32.txt → expected/sale-cash.grid32.txt} +0 -0
  676. /package/fixtures/{erwartet/verkauf-bar.grid48.txt → expected/sale-cash.grid48.txt} +0 -0
  677. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid32.txt → expected/sale-small-business.grid32.txt} +0 -0
  678. /package/fixtures/{erwartet/verkauf-kleinunternehmer.grid48.txt → expected/sale-small-business.grid48.txt} +0 -0
  679. /package/fixtures/{erwartet/signaturausfall-verkauf.grid32.txt → expected/signature-outage-sale.grid32.txt} +0 -0
  680. /package/fixtures/{erwartet/signaturausfall-verkauf.grid48.txt → expected/signature-outage-sale.grid48.txt} +0 -0
  681. /package/fixtures/{erwartet/split-karte-karte-bar.grid32.txt → expected/split-card-card-cash.grid32.txt} +0 -0
  682. /package/fixtures/{erwartet/split-karte-karte-bar.grid48.txt → expected/split-card-card-cash.grid48.txt} +0 -0
  683. /package/fixtures/{erwartet/split-bar-rueckgeld.grid32.txt → expected/split-cash-change.grid32.txt} +0 -0
  684. /package/fixtures/{erwartet/split-bar-rueckgeld.grid48.txt → expected/split-cash-change.grid48.txt} +0 -0
  685. /package/fixtures/{erwartet/split-langer-betrag.grid32.txt → expected/split-long-amount.grid32.txt} +0 -0
  686. /package/fixtures/{erwartet/split-langer-betrag.grid48.txt → expected/split-long-amount.grid48.txt} +0 -0
  687. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid32.txt → expected/split-one-card-tip.grid32.txt} +0 -0
  688. /package/fixtures/{erwartet/split-eine-karte-trinkgeld.grid48.txt → expected/split-one-card-tip.grid48.txt} +0 -0
  689. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid32.txt → expected/split-table-round-tip.grid32.txt} +0 -0
  690. /package/fixtures/{erwartet/split-tischrunde-trinkgeld.grid48.txt → expected/split-table-round-tip.grid48.txt} +0 -0
  691. /package/fixtures/{erwartet/split-trinkgeld-karte.grid32.txt → expected/split-tip-card.grid32.txt} +0 -0
  692. /package/fixtures/{erwartet/split-trinkgeld-karte.grid48.txt → expected/split-tip-card.grid48.txt} +0 -0
  693. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid32.txt → expected/split-two-cards-same-provider.grid32.txt} +0 -0
  694. /package/fixtures/{erwartet/split-zwei-karten-gleicher-anbieter.grid48.txt → expected/split-two-cards-same-provider.grid48.txt} +0 -0
  695. /package/fixtures/{erwartet/testkasse-verkauf.grid32.txt → expected/test-cashregister-sale.grid32.txt} +0 -0
  696. /package/fixtures/{erwartet/testkasse-verkauf.grid48.txt → expected/test-cashregister-sale.grid48.txt} +0 -0
  697. /package/fixtures/{erwartet/testsignatur-verkauf.grid32.txt → expected/test-signature-sale.grid32.txt} +0 -0
  698. /package/fixtures/{erwartet/testsignatur-verkauf.grid48.txt → expected/test-signature-sale.grid48.txt} +0 -0
  699. /package/fixtures/{erwartet → expected}/training.grid32.txt +0 -0
  700. /package/fixtures/{erwartet → expected}/training.grid48.txt +0 -0
  701. /package/fixtures/{erwartet/null-jahr.grid32.txt → expected/zero-annual.grid32.txt} +0 -0
  702. /package/fixtures/{erwartet/null-jahr.grid48.txt → expected/zero-annual.grid48.txt} +0 -0
  703. /package/fixtures/{erwartet/null-schluss.grid32.txt → expected/zero-final.grid32.txt} +0 -0
  704. /package/fixtures/{erwartet/null-schluss.grid48.txt → expected/zero-final.grid48.txt} +0 -0
  705. /package/fixtures/{erwartet/null-pruef.grid32.txt → expected/zero-manual.grid32.txt} +0 -0
  706. /package/fixtures/{erwartet/null-pruef.grid48.txt → expected/zero-manual.grid48.txt} +0 -0
  707. /package/fixtures/{erwartet/null-monat.grid32.txt → expected/zero-monthly.grid32.txt} +0 -0
  708. /package/fixtures/{erwartet/null-monat.grid48.txt → expected/zero-monthly.grid48.txt} +0 -0
  709. /package/fixtures/{erwartet/null-ausfall.grid32.txt → expected/zero-outage-end.grid32.txt} +0 -0
  710. /package/fixtures/{erwartet/null-ausfall.grid48.txt → expected/zero-outage-end.grid48.txt} +0 -0
  711. /package/fixtures/{erwartet/null-start.grid32.txt → expected/zero-start.grid32.txt} +0 -0
  712. /package/fixtures/{erwartet/null-start.grid48.txt → expected/zero-start.grid48.txt} +0 -0
@@ -6,20 +6,20 @@
6
6
  * einem, der sonst nichts von diesem Paket benutzt.
7
7
  */
8
8
  import type { InternerTransport } from '../client/aufrufe.js';
9
+ import type { CashregisterActivationStep, ContractKind, ContractSource, PartnerEnv } from './typen.js';
9
10
  import { type VerifyWebhookOptions, type WebhookVerifyReason } from './webhook-signatur.js';
10
11
  /**
11
- * Alle Ereignisse, die ein Webhook abonnieren **und proben** kann. Ein
12
+ * Alle Ereignisse, die ein Webhook abonnieren **und proben** kann, in der
13
+ * Reihenfolge des Backend-Katalogs (`listPartnerWebhooks().events`). Ein
12
14
  * Endpunkt bekommt ausschliesslich die, die in seiner `events`-Liste stehen.
13
15
  *
14
- * **Noch nicht in der Liste:** `customer.avv_accepted` und
15
- * `customer.terms_accepted`. Das Backend bietet sie inzwischen zum Abonnieren
16
- * an; die Liste wird mit dem Dart-Zwilling gemeinsam erweitert, weil beide
17
- * gegeneinander geprueft werden. Abonnieren geht trotzdem schon (`events`
18
- * nimmt jeden Namen), die Nutzlast beschreibt [ContractAcceptedEventData].
16
+ * Die Nutzlasten der Ereignisse, die `/v3` uebersetzt, beschreiben
17
+ * [ContractAcceptedEventData], [SignatureFailedEventData] und
18
+ * [CashregisterFailedEventData].
19
19
  */
20
- export declare const PARTNER_WEBHOOK_EVENTS: readonly ["customer.created", "customer.updated", "customer.status_changed", "customer.fon_verified", "customer.live_enabled", "signature.requested", "signature.ready", "signature.failed", "cashregister.created", "cashregister.live", "cashregister.failed", "app.version.accepted", "app.version.rejected", "webhook.test"];
20
+ export declare const PARTNER_WEBHOOK_EVENTS: readonly ["customer.created", "customer.updated", "customer.status_changed", "customer.fon_verified", "customer.live_enabled", "customer.avv_accepted", "customer.terms_accepted", "signature.requested", "signature.ready", "signature.failed", "cashregister.created", "cashregister.live", "cashregister.failed", "app.version.accepted", "app.version.rejected", "webhook.test"];
21
21
  export type PartnerWebhookEventType = typeof PARTNER_WEBHOOK_EVENTS[number];
22
- export declare function istPartnerWebhookEvent(wert: unknown): wert is PartnerWebhookEventType;
22
+ export declare function isPartnerWebhookEvent(value: unknown): value is PartnerWebhookEventType;
23
23
  /**
24
24
  * Die Felder des Umschlags, so wie er auf der Leitung liegt.
25
25
  *
@@ -27,7 +27,7 @@ export declare function istPartnerWebhookEvent(wert: unknown): wert is PartnerWe
27
27
  * genau ein solches Feld verschwindet sonst auf einer Seite, ohne dass etwas
28
28
  * rot wird.
29
29
  */
30
- export declare const WEBHOOK_UMSCHLAG_FELDER: readonly ["id", "type", "createdAt", "partnerId", "test", "data"];
30
+ export declare const WEBHOOK_ENVELOPE_FIELDS: readonly ["id", "type", "createdAt", "partnerId", "test", "data"];
31
31
  /**
32
32
  * Die Huelle jeder Zustellung. `type` bleibt bewusst offen fuer unbekannte
33
33
  * Werte (`(string & {})`): ein spaeter ergaenztes Ereignis soll einen
@@ -69,14 +69,6 @@ export interface PartnerWebhookEvent<T = Record<string, unknown>> {
69
69
  * Webhook hat.
70
70
  */
71
71
  export type WebhookApiVersion = 'v1' | 'v3';
72
- /** Art des Vertrags in `customer.avv_accepted` / `customer.terms_accepted`. */
73
- export type ContractKind = 'avv' | 'terms';
74
- /**
75
- * Wo der Betrieb bestaetigt hat. Unter `v1` hiessen die ersten fuenf
76
- * `einrichten`, `prozess`, `partner_vollmacht`, `admin_papier`,
77
- * `papier_upload`; `app` und `portal` sind in beiden Sprachen gleich.
78
- */
79
- export type ContractSource = 'setup_link' | 'process_link' | 'partner_power_of_attorney' | 'admin_paper' | 'paper_upload' | 'app' | 'portal' | (string & {});
80
72
  /**
81
73
  * Nutzlast von `customer.avv_accepted` und `customer.terms_accepted` in der
82
74
  * Sprache `v3`. Ein Webhook mit `apiVersion: 'v1'` schickt hier weiter
@@ -90,6 +82,41 @@ export interface ContractAcceptedEventData {
90
82
  confirmedAt: number;
91
83
  source: ContractSource;
92
84
  }
85
+ /**
86
+ * Nutzlast von `signature.failed` in der Sprache `v3`. `code` ist immer
87
+ * `signature_failed` (FinanzOnline hat die Registrierung abgelehnt, `rc`
88
+ * nennt den Rueckgabecode); die Ursache im Einzelnen steht am Antrag
89
+ * (`getCustomerSignatureStatus`, `requests[].error.code`, siehe
90
+ * [SIGNATURE_ERROR_CODES]). `message` ist ein Text fuer Menschen.
91
+ */
92
+ export interface SignatureFailedEventData {
93
+ customerId: string;
94
+ companyName: string;
95
+ requestId: string;
96
+ code: 'signature_failed' | (string & {});
97
+ /** Rueckgabecode von FinanzOnline, falls es einen gab. */
98
+ rc: string | null;
99
+ message: string;
100
+ }
101
+ /**
102
+ * Nutzlast von `cashregister.failed` in der Sprache `v3`: an welchem Schritt
103
+ * die Inbetriebnahme stehen blieb und mit welchem Code. Der Server feuert das
104
+ * Ereignis mit `signature_not_ready`, `fon_missing` oder `activation_failed`.
105
+ * Fehlende Vertraege (`contracts_pending`) loesen **kein** Ereignis aus: das
106
+ * meldet `activateCashregister` als Fehler, die Freigabe melden
107
+ * `customer.avv_accepted` und `customer.terms_accepted`.
108
+ */
109
+ export interface CashregisterFailedEventData {
110
+ customerId: string;
111
+ companyName: string;
112
+ cashregisterId: string;
113
+ step: CashregisterActivationStep | null;
114
+ code: 'signature_not_ready' | 'fon_missing' | 'activation_failed' | (string & {});
115
+ /** Rueckgabecode von FinanzOnline, falls es einen gab. */
116
+ rc: string | null;
117
+ message: string;
118
+ env: PartnerEnv;
119
+ }
93
120
  export type WebhookEventResult = {
94
121
  ok: true;
95
122
  event: PartnerWebhookEvent;
@@ -113,9 +140,10 @@ export type WebhookEventResult = {
113
140
  * Eine ausbleibende Antwort wird bis zu fuenfmal wiederholt (1 min, 5 min,
114
141
  * 30 min, 2 h, 12 h) und gilt dann als fehlgeschlagen.
115
142
  */
116
- export declare function parseWebhookEvent(optionen: VerifyWebhookOptions): Promise<WebhookEventResult>;
117
- /** Stand einer Zustellung; `/v1` sagte `offen`, `zugestellt`, `fehlgeschlagen`, `verworfen`. */
118
- export type WebhookDeliveryStatus = 'pending' | 'delivered' | 'failed' | 'dropped';
143
+ export declare function parseWebhookEvent(options: VerifyWebhookOptions): Promise<WebhookEventResult>;
144
+ /** Staende einer Zustellung; `/v1` sagte `offen`, `zugestellt`, `fehlgeschlagen`, `verworfen`. */
145
+ export declare const WEBHOOK_DELIVERY_STATUSES: readonly ["pending", "delivered", "failed", "dropped"];
146
+ export type WebhookDeliveryStatus = typeof WEBHOOK_DELIVERY_STATUSES[number];
119
147
  export interface PartnerWebhook {
120
148
  webhookId: string;
121
149
  /** Sprache der Nutzlast; fehlt sie in der Antwort, ist es ein Bestands-Webhook und damit `v1`. */
@@ -173,7 +201,7 @@ export interface DeleteWebhookResult {
173
201
  /** Unter `/v1` hiess das Feld `geloescht`. */
174
202
  deleted: boolean;
175
203
  }
176
- export interface WebhookListe {
204
+ export interface WebhookList {
177
205
  webhooks: PartnerWebhook[];
178
206
  /** Der Katalog: Ereignisname und deutscher Text, so wie das Panel ihn zeigt. */
179
207
  events: {
@@ -181,7 +209,7 @@ export interface WebhookListe {
181
209
  text: string;
182
210
  }[];
183
211
  }
184
- export interface WebhookZustellung {
212
+ export interface WebhookDelivery {
185
213
  deliveryId: string;
186
214
  webhookId: string;
187
215
  event: string;
@@ -203,7 +231,7 @@ export interface WebhookZustellung {
203
231
  * **Das Secret in der Antwort ist der einzige Weg dazu.** Es sofort dorthin
204
232
  * schreiben, wo der Empfaenger es liest — nicht in ein Protokoll.
205
233
  */
206
- export declare function createPartnerWebhook(rufen: InternerTransport, optionen: CreateWebhookOptions): Promise<CreateWebhookResult>;
234
+ export declare function createPartnerWebhook(transport: InternerTransport, options: CreateWebhookOptions): Promise<CreateWebhookResult>;
207
235
  /**
208
236
  * Ein neues Secret fuer denselben Endpunkt.
209
237
  *
@@ -214,22 +242,22 @@ export declare function createPartnerWebhook(rufen: InternerTransport, optionen:
214
242
  * Das alte Secret gilt ab der Antwort NICHT mehr: die naechste Zustellung ist
215
243
  * schon mit dem neuen signiert. Erst speichern, dann weiterarbeiten.
216
244
  */
217
- export declare function rotatePartnerWebhookSecret(rufen: InternerTransport, webhookId: string): Promise<CreateWebhookResult>;
245
+ export declare function rotatePartnerWebhookSecret(transport: InternerTransport, webhookId: string): Promise<CreateWebhookResult>;
218
246
  /** Die Webhook-Endpunkte dieses Partners samt Ereignis-Katalog. */
219
- export declare function listPartnerWebhooks(rufen: InternerTransport): Promise<WebhookListe>;
247
+ export declare function listPartnerWebhooks(transport: InternerTransport): Promise<WebhookList>;
220
248
  /**
221
249
  * Aendert einen Endpunkt. Nur die genannten Felder — ein leeres `patch` lehnt
222
250
  * das Backend ab (`validation`, Feld `patch`), statt stillschweigend nichts zu
223
251
  * tun.
224
252
  */
225
- export declare function updatePartnerWebhook(rufen: InternerTransport, webhookId: string, patch: WebhookPatch): Promise<PartnerWebhook>;
253
+ export declare function updatePartnerWebhook(transport: InternerTransport, webhookId: string, patch: WebhookPatch): Promise<PartnerWebhook>;
226
254
  /**
227
255
  * Loescht einen Endpunkt. Danach kommt dort nichts mehr an; offene
228
256
  * Zustellungen werden verworfen (`dropped`).
229
257
  */
230
- export declare function deletePartnerWebhook(rufen: InternerTransport, webhookId: string): Promise<DeleteWebhookResult>;
258
+ export declare function deletePartnerWebhook(transport: InternerTransport, webhookId: string): Promise<DeleteWebhookResult>;
231
259
  /** Eine Zustellung der Probe, so wie `sendPartnerWebhookTest` sie meldet. */
232
- export interface WebhookTestZustellung {
260
+ export interface WebhookTestDelivery {
233
261
  deliveryId: string;
234
262
  webhookId: string;
235
263
  status: WebhookDeliveryStatus | (string & {});
@@ -239,7 +267,7 @@ export interface WebhookTestResult {
239
267
  eventId: string;
240
268
  /** Welches Ereignis geprobt wurde — ohne Angabe `webhook.test`. */
241
269
  event: string;
242
- deliveries: WebhookTestZustellung[];
270
+ deliveries: WebhookTestDelivery[];
243
271
  }
244
272
  /**
245
273
  * Schickt eine Probe an genau diesen Endpunkt.
@@ -261,13 +289,13 @@ export interface WebhookTestResult {
261
289
  * den Namen bei, damit ein Leser der Doku und ein Leser des Codes dasselbe
262
290
  * suchen.
263
291
  */
264
- export declare function sendPartnerWebhookTest(rufen: InternerTransport, webhookId: string, event?: PartnerWebhookEventType | (string & {})): Promise<WebhookTestResult>;
292
+ export declare function sendPartnerWebhookTest(transport: InternerTransport, webhookId: string, event?: PartnerWebhookEventType | (string & {})): Promise<WebhookTestResult>;
265
293
  /**
266
294
  * Die letzten Zustellversuche — mit `webhookId` fuer einen Endpunkt, ohne ihn
267
295
  * fuer alle. Die Stelle, an der sich „mein Server bekommt nichts" klaeren
268
296
  * laesst, ohne bei Kasseneck nachzufragen.
269
297
  */
270
- export declare function listPartnerWebhookDeliveries(rufen: InternerTransport, optionen?: {
298
+ export declare function listPartnerWebhookDeliveries(transport: InternerTransport, options?: {
271
299
  webhookId?: string;
272
300
  limit?: number;
273
- }): Promise<WebhookZustellung[]>;
301
+ }): Promise<WebhookDelivery[]>;
@@ -11,14 +11,13 @@ import { verifyWebhookSignature, } from './webhook-signatur.js';
11
11
  // Ereignisse
12
12
  // ---------------------------------------------------------------------------
13
13
  /**
14
- * Alle Ereignisse, die ein Webhook abonnieren **und proben** kann. Ein
14
+ * Alle Ereignisse, die ein Webhook abonnieren **und proben** kann, in der
15
+ * Reihenfolge des Backend-Katalogs (`listPartnerWebhooks().events`). Ein
15
16
  * Endpunkt bekommt ausschliesslich die, die in seiner `events`-Liste stehen.
16
17
  *
17
- * **Noch nicht in der Liste:** `customer.avv_accepted` und
18
- * `customer.terms_accepted`. Das Backend bietet sie inzwischen zum Abonnieren
19
- * an; die Liste wird mit dem Dart-Zwilling gemeinsam erweitert, weil beide
20
- * gegeneinander geprueft werden. Abonnieren geht trotzdem schon (`events`
21
- * nimmt jeden Namen), die Nutzlast beschreibt [ContractAcceptedEventData].
18
+ * Die Nutzlasten der Ereignisse, die `/v3` uebersetzt, beschreiben
19
+ * [ContractAcceptedEventData], [SignatureFailedEventData] und
20
+ * [CashregisterFailedEventData].
22
21
  */
23
22
  export const PARTNER_WEBHOOK_EVENTS = [
24
23
  'customer.created',
@@ -26,6 +25,8 @@ export const PARTNER_WEBHOOK_EVENTS = [
26
25
  'customer.status_changed',
27
26
  'customer.fon_verified',
28
27
  'customer.live_enabled',
28
+ 'customer.avv_accepted',
29
+ 'customer.terms_accepted',
29
30
  'signature.requested',
30
31
  'signature.ready',
31
32
  'signature.failed',
@@ -36,8 +37,8 @@ export const PARTNER_WEBHOOK_EVENTS = [
36
37
  'app.version.rejected',
37
38
  'webhook.test',
38
39
  ];
39
- export function istPartnerWebhookEvent(wert) {
40
- return typeof wert === 'string' && PARTNER_WEBHOOK_EVENTS.includes(wert);
40
+ export function isPartnerWebhookEvent(value) {
41
+ return typeof value === 'string' && PARTNER_WEBHOOK_EVENTS.includes(value);
41
42
  }
42
43
  /**
43
44
  * Die Felder des Umschlags, so wie er auf der Leitung liegt.
@@ -46,7 +47,7 @@ export function istPartnerWebhookEvent(wert) {
46
47
  * genau ein solches Feld verschwindet sonst auf einer Seite, ohne dass etwas
47
48
  * rot wird.
48
49
  */
49
- export const WEBHOOK_UMSCHLAG_FELDER = ['id', 'type', 'createdAt', 'partnerId', 'test', 'data'];
50
+ export const WEBHOOK_ENVELOPE_FIELDS = ['id', 'type', 'createdAt', 'partnerId', 'test', 'data'];
50
51
  /**
51
52
  * Prueft die Signatur **und** liest das Ereignis — in dieser Reihenfolge. Wer
52
53
  * zuerst parst und dann prueft, hat den fremden Rumpf schon durch seinen Code
@@ -62,11 +63,11 @@ export const WEBHOOK_UMSCHLAG_FELDER = ['id', 'type', 'createdAt', 'partnerId',
62
63
  * Eine ausbleibende Antwort wird bis zu fuenfmal wiederholt (1 min, 5 min,
63
64
  * 30 min, 2 h, 12 h) und gilt dann als fehlgeschlagen.
64
65
  */
65
- export async function parseWebhookEvent(optionen) {
66
- const geprueft = await verifyWebhookSignature(optionen);
66
+ export async function parseWebhookEvent(options) {
67
+ const geprueft = await verifyWebhookSignature(options);
67
68
  if (!geprueft.ok)
68
69
  return { ok: false, reason: geprueft.reason };
69
- const text = typeof optionen.body === 'string' ? optionen.body : new TextDecoder('utf-8').decode(optionen.body);
70
+ const text = typeof options.body === 'string' ? options.body : new TextDecoder('utf-8').decode(options.body);
70
71
  let roh;
71
72
  try {
72
73
  roh = JSON.parse(text);
@@ -97,6 +98,11 @@ export async function parseWebhookEvent(optionen) {
97
98
  },
98
99
  };
99
100
  }
101
+ // ---------------------------------------------------------------------------
102
+ // Endpunkte verwalten
103
+ // ---------------------------------------------------------------------------
104
+ /** Staende einer Zustellung; `/v1` sagte `offen`, `zugestellt`, `fehlgeschlagen`, `verworfen`. */
105
+ export const WEBHOOK_DELIVERY_STATUSES = ['pending', 'delivered', 'failed', 'dropped'];
100
106
  function objekt(wert) {
101
107
  return wert !== null && typeof wert === 'object' && !Array.isArray(wert) ? wert : {};
102
108
  }
@@ -134,18 +140,18 @@ function webhook(eintrag) {
134
140
  * **Das Secret in der Antwort ist der einzige Weg dazu.** Es sofort dorthin
135
141
  * schreiben, wo der Empfaenger es liest — nicht in ein Protokoll.
136
142
  */
137
- export async function createPartnerWebhook(rufen, optionen) {
138
- const url = typeof optionen?.url === 'string' ? optionen.url.trim() : '';
143
+ export async function createPartnerWebhook(transport, options) {
144
+ const url = typeof options?.url === 'string' ? options.url.trim() : '';
139
145
  if (!url)
140
146
  throw new KasseneckValidationError('createPartnerWebhook', 'url fehlt', 'request');
141
- if (!Array.isArray(optionen.events) || optionen.events.length === 0) {
147
+ if (!Array.isArray(options.events) || options.events.length === 0) {
142
148
  throw new KasseneckValidationError('createPartnerWebhook', 'events ist leer — ein Endpunkt ohne Ereignis bekaeme nie etwas', 'request');
143
149
  }
144
- const daten = objekt(await rufen('createPartnerWebhook', {
150
+ const daten = objekt(await transport('createPartnerWebhook', {
145
151
  url,
146
- events: optionen.events,
147
- description: optionen.description,
148
- active: optionen.active,
152
+ events: options.events,
153
+ description: options.description,
154
+ active: options.active,
149
155
  }));
150
156
  const secret = daten['secret'];
151
157
  if (typeof secret !== 'string' || !secret) {
@@ -163,11 +169,11 @@ export async function createPartnerWebhook(rufen, optionen) {
163
169
  * Das alte Secret gilt ab der Antwort NICHT mehr: die naechste Zustellung ist
164
170
  * schon mit dem neuen signiert. Erst speichern, dann weiterarbeiten.
165
171
  */
166
- export async function rotatePartnerWebhookSecret(rufen, webhookId) {
172
+ export async function rotatePartnerWebhookSecret(transport, webhookId) {
167
173
  const id = typeof webhookId === 'string' ? webhookId.trim() : '';
168
174
  if (!id)
169
175
  throw new KasseneckValidationError('rotatePartnerWebhookSecret', 'webhookId fehlt', 'request');
170
- const daten = objekt(await rufen('rotatePartnerWebhookSecret', { webhookId: id }));
176
+ const daten = objekt(await transport('rotatePartnerWebhookSecret', { webhookId: id }));
171
177
  const secret = daten['secret'];
172
178
  if (typeof secret !== 'string' || !secret) {
173
179
  throw new KasseneckValidationError('rotatePartnerWebhookSecret', 'Antwort enthaelt kein secret — dann waere der Wechsel nicht nachvollziehbar', 'response');
@@ -175,8 +181,8 @@ export async function rotatePartnerWebhookSecret(rufen, webhookId) {
175
181
  return { webhook: webhook(daten['webhook']), secret };
176
182
  }
177
183
  /** Die Webhook-Endpunkte dieses Partners samt Ereignis-Katalog. */
178
- export async function listPartnerWebhooks(rufen) {
179
- const daten = objekt(await rufen('listPartnerWebhooks'));
184
+ export async function listPartnerWebhooks(transport) {
185
+ const daten = objekt(await transport('listPartnerWebhooks'));
180
186
  return {
181
187
  webhooks: (Array.isArray(daten['webhooks']) ? daten['webhooks'] : []).map(webhook),
182
188
  events: (Array.isArray(daten['events']) ? daten['events'] : []).map((e) => ({
@@ -190,25 +196,25 @@ export async function listPartnerWebhooks(rufen) {
190
196
  * das Backend ab (`validation`, Feld `patch`), statt stillschweigend nichts zu
191
197
  * tun.
192
198
  */
193
- export async function updatePartnerWebhook(rufen, webhookId, patch) {
199
+ export async function updatePartnerWebhook(transport, webhookId, patch) {
194
200
  const id = typeof webhookId === 'string' ? webhookId.trim() : '';
195
201
  if (!id)
196
202
  throw new KasseneckValidationError('updatePartnerWebhook', 'webhookId fehlt', 'request');
197
203
  if (patch === null || typeof patch !== 'object' || Object.keys(patch).length === 0) {
198
204
  throw new KasseneckValidationError('updatePartnerWebhook', 'patch nennt keine Aenderung', 'request');
199
205
  }
200
- const daten = objekt(await rufen('updatePartnerWebhook', { webhookId: id, patch }));
206
+ const daten = objekt(await transport('updatePartnerWebhook', { webhookId: id, patch }));
201
207
  return webhook(daten['webhook']);
202
208
  }
203
209
  /**
204
210
  * Loescht einen Endpunkt. Danach kommt dort nichts mehr an; offene
205
211
  * Zustellungen werden verworfen (`dropped`).
206
212
  */
207
- export async function deletePartnerWebhook(rufen, webhookId) {
213
+ export async function deletePartnerWebhook(transport, webhookId) {
208
214
  const id = typeof webhookId === 'string' ? webhookId.trim() : '';
209
215
  if (!id)
210
216
  throw new KasseneckValidationError('deletePartnerWebhook', 'webhookId fehlt', 'request');
211
- const daten = objekt(await rufen('deletePartnerWebhook', { webhookId: id }));
217
+ const daten = objekt(await transport('deletePartnerWebhook', { webhookId: id }));
212
218
  return {
213
219
  webhookId: typeof daten['webhookId'] === 'string' ? daten['webhookId'] : id,
214
220
  deleted: daten['deleted'] === true,
@@ -234,12 +240,12 @@ export async function deletePartnerWebhook(rufen, webhookId) {
234
240
  * den Namen bei, damit ein Leser der Doku und ein Leser des Codes dasselbe
235
241
  * suchen.
236
242
  */
237
- export async function sendPartnerWebhookTest(rufen, webhookId, event) {
243
+ export async function sendPartnerWebhookTest(transport, webhookId, event) {
238
244
  const id = typeof webhookId === 'string' ? webhookId.trim() : '';
239
245
  if (!id)
240
246
  throw new KasseneckValidationError('sendPartnerWebhookTest', 'webhookId fehlt', 'request');
241
247
  const ereignis = typeof event === 'string' ? event.trim() : '';
242
- const daten = objekt(await rufen('sendPartnerWebhookTest', { webhookId: id, event: ereignis || undefined }));
248
+ const daten = objekt(await transport('sendPartnerWebhookTest', { webhookId: id, event: ereignis || undefined }));
243
249
  return {
244
250
  eventId: typeof daten['eventId'] === 'string' ? daten['eventId'] : '',
245
251
  event: typeof daten['event'] === 'string' ? daten['event'] : ereignis || 'webhook.test',
@@ -259,11 +265,11 @@ export async function sendPartnerWebhookTest(rufen, webhookId, event) {
259
265
  * fuer alle. Die Stelle, an der sich „mein Server bekommt nichts" klaeren
260
266
  * laesst, ohne bei Kasseneck nachzufragen.
261
267
  */
262
- export async function listPartnerWebhookDeliveries(rufen, optionen = {}) {
263
- if (optionen.limit !== undefined && (!Number.isInteger(optionen.limit) || optionen.limit < 1 || optionen.limit > 200)) {
268
+ export async function listPartnerWebhookDeliveries(transport, options = {}) {
269
+ if (options.limit !== undefined && (!Number.isInteger(options.limit) || options.limit < 1 || options.limit > 200)) {
264
270
  throw new KasseneckValidationError('listPartnerWebhookDeliveries', 'limit muss zwischen 1 und 200 liegen', 'request');
265
271
  }
266
- const daten = objekt(await rufen('listPartnerWebhookDeliveries', { webhookId: optionen.webhookId, limit: optionen.limit }));
272
+ const daten = objekt(await transport('listPartnerWebhookDeliveries', { webhookId: options.webhookId, limit: options.limit }));
267
273
  return (Array.isArray(daten['deliveries']) ? daten['deliveries'] : []).map((eintrag) => {
268
274
  const z = objekt(eintrag);
269
275
  const zahl = (wert) => (typeof wert === 'number' && Number.isFinite(wert) ? wert : null);
@@ -45,8 +45,12 @@ export interface HobexTransactionIdOptions {
45
45
  *
46
46
  * **Der Endpunkt heisst `hobexPayApi`** — mit Suffix; ohne ihn gibt es ihn
47
47
  * nicht.
48
+ *
49
+ * **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx,
50
+ * unlesbare Antwort) kann die Karte belastet sein: den Stand ueber die
51
+ * Transaktionskennung nachlesen, nicht ein zweites Mal belasten.
48
52
  */
49
- export declare function hobexPay(rufen: InternerTransport, options: HobexPayOptions): Promise<HobexReceipt>;
53
+ export declare function hobexPay(transport: InternerTransport, options: HobexPayOptions): Promise<HobexReceipt>;
50
54
  /**
51
55
  * Erstattet eine zuvor ueber die Hobex-Cloud getaetigte Zahlung. Das Backend
52
56
  * storniert zuerst (Void, solange der Tagesabschluss aussteht) und erstattet
@@ -57,11 +61,15 @@ export declare function hobexPay(rufen: InternerTransport, options: HobexPayOpti
57
61
  * schon im Transport, sobald der Status nicht ausdruecklich Erfolg ist. Ein
58
62
  * Wahrheitswert waere hier also immer `true` — eine Luege ueber den
59
63
  * Informationsgehalt, an der ein Aufrufer ein `if` aufhaengt, das nie greift.
60
- * Misserfolg kommt als geworfener Fehler.
64
+ * Misserfolg kommt als geworfener Fehler: eine Fehlerhuelle als
65
+ * [KasseneckApiError] mit Code, Netz, Zeitlimit, HTTP 5xx und eine unlesbare
66
+ * Erfolgsantwort mit `outcome: 'unknown'` (die Erstattung kann gelaufen sein).
67
+ * Ein `false` an dieser Stelle luede zum zweiten Versuch ein, also zur
68
+ * doppelten Erstattung. **Nie wiederholen**, sondern den Stand nachlesen.
61
69
  *
62
70
  * **Der Endpunkt heisst `hobexRefundApi`** — mit Suffix.
63
71
  */
64
- export declare function hobexRefund(rufen: InternerTransport, options: HobexRefundOptions): Promise<void>;
72
+ export declare function hobexRefund(transport: InternerTransport, options: HobexRefundOptions): Promise<void>;
65
73
  /**
66
74
  * Erzeugt eine neue Hobex-Transaktionskennung: 19 Ziffern aus Zeitanteil und
67
75
  * Zufall (Zwilling von `newHobexTransactionId` im Vorbild, Zeile 522).
@@ -1,5 +1,5 @@
1
1
  import { fromHobexReceiptPayload } from '../models/index.js';
2
- import { KasseneckValidationError } from '../client/errors.js';
2
+ import { KasseneckValidationError, signiertGelesen } from '../client/errors.js';
3
3
  import { toViennaWallClock } from '../vienna-time.js';
4
4
  import { centsToEuro } from '../money.js';
5
5
  /**
@@ -36,14 +36,22 @@ const ENDPUNKT_REFUND = 'hobexRefundApi';
36
36
  *
37
37
  * **Der Endpunkt heisst `hobexPayApi`** — mit Suffix; ohne ihn gibt es ihn
38
38
  * nicht.
39
+ *
40
+ * **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx,
41
+ * unlesbare Antwort) kann die Karte belastet sein: den Stand ueber die
42
+ * Transaktionskennung nachlesen, nicht ein zweites Mal belasten.
39
43
  */
40
- export async function hobexPay(rufen, options) {
44
+ export async function hobexPay(transport, options) {
41
45
  const params = zahlungsNutzlast(ENDPUNKT_PAY, options);
42
46
  // `reference` steht im Vorbild **unbedingt** in der Nutzlast: ohne Angabe
43
47
  // geht sie als null raus, nicht gar nicht. Der Transport wirft nur
44
48
  // `undefined` weg, `null` bleibt erhalten — genau diese Unterscheidung.
45
49
  params['reference'] = options.reference ?? null;
46
- return belegAusNutzlast(await rufen(ENDPUNKT_PAY, params));
50
+ const daten = await transport(ENDPUNKT_PAY, params);
51
+ // Erfolg gemeldet heisst: die Karte ist belastet. Ist der Beleg dann
52
+ // unlesbar, bleibt der Ausgang unklar (`response_unreadable`), damit keine
53
+ // App ein zweites Mal belastet.
54
+ return signiertGelesen(ENDPUNKT_PAY, () => belegAusNutzlast(daten));
47
55
  }
48
56
  /**
49
57
  * Erstattet eine zuvor ueber die Hobex-Cloud getaetigte Zahlung. Das Backend
@@ -55,13 +63,17 @@ export async function hobexPay(rufen, options) {
55
63
  * schon im Transport, sobald der Status nicht ausdruecklich Erfolg ist. Ein
56
64
  * Wahrheitswert waere hier also immer `true` — eine Luege ueber den
57
65
  * Informationsgehalt, an der ein Aufrufer ein `if` aufhaengt, das nie greift.
58
- * Misserfolg kommt als geworfener Fehler.
66
+ * Misserfolg kommt als geworfener Fehler: eine Fehlerhuelle als
67
+ * [KasseneckApiError] mit Code, Netz, Zeitlimit, HTTP 5xx und eine unlesbare
68
+ * Erfolgsantwort mit `outcome: 'unknown'` (die Erstattung kann gelaufen sein).
69
+ * Ein `false` an dieser Stelle luede zum zweiten Versuch ein, also zur
70
+ * doppelten Erstattung. **Nie wiederholen**, sondern den Stand nachlesen.
59
71
  *
60
72
  * **Der Endpunkt heisst `hobexRefundApi`** — mit Suffix.
61
73
  */
62
- export async function hobexRefund(rufen, options) {
74
+ export async function hobexRefund(transport, options) {
63
75
  // Anders als die Zahlung sendet der Refund im Vorbild **keine** reference.
64
- await rufen(ENDPUNKT_REFUND, zahlungsNutzlast(ENDPUNKT_REFUND, options));
76
+ await transport(ENDPUNKT_REFUND, zahlungsNutzlast(ENDPUNKT_REFUND, options));
65
77
  }
66
78
  /**
67
79
  * Erzeugt eine neue Hobex-Transaktionskennung: 19 Ziffern aus Zeitanteil und
@@ -50,12 +50,15 @@ export interface StripeCaptureResult {
50
50
  * Methodenname und Endpunktname fallen wie schon beim Monatsbericht
51
51
  * auseinander (siehe client/reports.ts).
52
52
  */
53
- export declare function createStripeLink(rufen: InternerTransport, options: CreateStripeLinkOptions): Promise<StripeUrlSession>;
53
+ export declare function createStripeLink(transport: InternerTransport, options: CreateStripeLinkOptions): Promise<StripeUrlSession>;
54
54
  /**
55
55
  * Zieht die zuvor nur reservierte Zahlung einer `authorization`-Sitzung ein.
56
56
  *
57
57
  * **Der Parameter heisst `stripe_sessions_id`** — mit "sessions" im Plural, so
58
58
  * das Vorbild und so das Backend. Der naheliegende Singular waere ein fehlender
59
59
  * Pflichtparameter.
60
+ *
61
+ * **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx,
62
+ * unlesbare Antwort) kann der Einzug gelaufen sein: den Stand nachlesen.
60
63
  */
61
- export declare function stripeCaptureIntent(rufen: InternerTransport, stripeSessionId: string): Promise<StripeCaptureResult>;
64
+ export declare function stripeCaptureIntent(transport: InternerTransport, stripeSessionId: string): Promise<StripeCaptureResult>;
@@ -1,6 +1,6 @@
1
1
  import { StripeLinkMode } from '../enums/index.js';
2
2
  import { fromStripeUrlSessionPayload, toReceiptItemPayload, receiptItemIsValid, } from '../models/index.js';
3
- import { KasseneckValidationError } from '../client/errors.js';
3
+ import { KasseneckValidationError, signiertGelesen } from '../client/errors.js';
4
4
  /**
5
5
  * Stripe-Zahlungslinks — Zwilling der Stripe-Aufrufe in
6
6
  * kasseneck_api/lib/kasseneck_api.dart (Zeilen 443-484).
@@ -25,7 +25,7 @@ const ENDPUNKT_CAPTURE = 'stripeCaptureIntent';
25
25
  * Methodenname und Endpunktname fallen wie schon beim Monatsbericht
26
26
  * auseinander (siehe client/reports.ts).
27
27
  */
28
- export async function createStripeLink(rufen, options) {
28
+ export async function createStripeLink(transport, options) {
29
29
  const { items } = options;
30
30
  // Vor dem Senden pruefen: ein Zahlungslink ist zwar folgenlos wiederholbar,
31
31
  // eine abgewiesene Anfrage aber eine unnoetige Runde ueber das Netz — und der
@@ -60,7 +60,7 @@ export async function createStripeLink(rufen, options) {
60
60
  if (options.customerEmail != null) {
61
61
  params['customer_email'] = options.customerEmail;
62
62
  }
63
- return sitzungAusNutzlast(await rufen(ENDPUNKT_LINK, params));
63
+ return sitzungAusNutzlast(await transport(ENDPUNKT_LINK, params));
64
64
  }
65
65
  /**
66
66
  * Zieht die zuvor nur reservierte Zahlung einer `authorization`-Sitzung ein.
@@ -68,13 +68,18 @@ export async function createStripeLink(rufen, options) {
68
68
  * **Der Parameter heisst `stripe_sessions_id`** — mit "sessions" im Plural, so
69
69
  * das Vorbild und so das Backend. Der naheliegende Singular waere ein fehlender
70
70
  * Pflichtparameter.
71
+ *
72
+ * **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx,
73
+ * unlesbare Antwort) kann der Einzug gelaufen sein: den Stand nachlesen.
71
74
  */
72
- export async function stripeCaptureIntent(rufen, stripeSessionId) {
75
+ export async function stripeCaptureIntent(transport, stripeSessionId) {
73
76
  if (typeof stripeSessionId !== 'string' || !stripeSessionId.trim()) {
74
77
  throw eingabefehler(ENDPUNKT_CAPTURE, 'stripeSessionId fehlt');
75
78
  }
76
- const daten = await rufen(ENDPUNKT_CAPTURE, { stripe_sessions_id: stripeSessionId });
77
- return einzugAusNutzlast(daten);
79
+ const daten = await transport(ENDPUNKT_CAPTURE, { stripe_sessions_id: stripeSessionId });
80
+ // Erfolg gemeldet heisst: eingezogen. Eine unlesbare Nutzlast bleibt
81
+ // Ausgang unklar (`response_unreadable`), nie ein gewoehnlicher Lesefehler.
82
+ return signiertGelesen(ENDPUNKT_CAPTURE, () => einzugAusNutzlast(daten));
78
83
  }
79
84
  /**
80
85
  * Positionen in ihre Nutzlast wandeln und dabei die strenge Schreibpfad-
@@ -0,0 +1,90 @@
1
+ import type { InternerTransport } from '../client/aufrufe.js';
2
+ /**
3
+ * Artikelgruppen (Kategorien der Kachel-Kasse) und Artikel in der Form, die
4
+ * die Kacheln brauchen, Backend: `article-endpoints.js`
5
+ * (`listMyArticleGroups`, `listMyArticles` mit `groupId`/`tile`).
6
+ */
7
+ export interface ArticleGroup {
8
+ id: string;
9
+ name: string;
10
+ /** #RRGGBB */
11
+ color: string;
12
+ /** Kategorie-Symbol (Emoji, hoechstens zwei Zeichen) oder null. */
13
+ symbol: string | null;
14
+ sort: number;
15
+ vatRate: number | null;
16
+ }
17
+ export interface ArticleGroupPayload {
18
+ id?: string | null;
19
+ name?: string | null;
20
+ color?: string | null;
21
+ symbol?: string | null;
22
+ sort?: number | null;
23
+ vatRate?: number | null;
24
+ }
25
+ export declare function fromArticleGroupPayload(p: ArticleGroupPayload): ArticleGroup;
26
+ /**
27
+ * Mengenregel eines Artikels (Draht `quantityRule`): `piece` = ganze Stueck
28
+ * (1, 2, 3 ...), `decimal` = Kommamenge in der Einheit (0,250 kg, 1,5 m).
29
+ * Beleg und DEP bleiben ganzzahlig: eine Kommamenge wird an der Kasse als EINE
30
+ * Position mit ausgerechnetem Betrag gebucht, die Bezeichnung traegt die Menge
31
+ * („Wurst 0,250 kg“). Siehe [quantityRuleForUnit] fuer die Vorgabe je Einheit.
32
+ */
33
+ export declare const QUANTITY_RULES: readonly ["piece", "decimal"];
34
+ export type QuantityRule = typeof QUANTITY_RULES[number];
35
+ export interface QuantityDefaults {
36
+ rule: QuantityRule;
37
+ /** Kasse fragt beim Antippen nach der Menge (Wurst nach Gewicht: ja; Semmel: nein). */
38
+ ask: boolean;
39
+ /** Nachkommastellen bei `decimal`. */
40
+ decimals: number;
41
+ }
42
+ /** Vorgabe je Einheit: was der Betrieb bei einem neuen Artikel bekommt und aendern darf. */
43
+ export declare function quantityRuleForUnit(unit: string | null | undefined): QuantityDefaults;
44
+ /** Wirksame Regel eines Artikels: gespeicherte Angabe schlaegt die Vorgabe der Einheit. */
45
+ export declare function quantityDefaults(a: Pick<PosArticle, 'unit' | 'quantityRule' | 'askQuantity'>): QuantityDefaults;
46
+ /** Artikel, wie ihn die Kasse fuer Kacheln und Belegpositionen braucht. */
47
+ export interface PosArticle {
48
+ id: string;
49
+ name: string;
50
+ unitPriceCents: number | null;
51
+ vatRate: number | null;
52
+ unit: string;
53
+ groupId: string | null;
54
+ /** Erloesgruppe (Buchhaltung); null = keine. */
55
+ revenueGroupId: string | null;
56
+ /** Kachel sichtbar (Draht `tile.visible`, fehlt = sichtbar). */
57
+ visible: boolean;
58
+ /** Reihenfolge der Kachel (Draht `tile.sort`). */
59
+ sort: number;
60
+ active: boolean;
61
+ /** Gespeicherte Mengenregel; null = Vorgabe der Einheit. */
62
+ quantityRule: QuantityRule | null;
63
+ /** Gespeichert: Kasse fragt nach der Menge; null = Vorgabe der Einheit. */
64
+ askQuantity: boolean | null;
65
+ /** Hoechstmenge je Beleg (bei kg/l/m auch Kommazahl); null = keine Grenze. */
66
+ maxQuantity: number | null;
67
+ }
68
+ /** Deckelt eine gewuenschte Menge an der Hoechstmenge des Artikels (null = keine Grenze). */
69
+ export declare function allowedQuantity(a: Pick<PosArticle, 'maxQuantity'>, wanted: number): number;
70
+ /** Ein Artikel am Draht `/api/v3` (`listMyArticles`), soweit dieses Paket ihn liest. */
71
+ export interface PosArticlePayload {
72
+ id?: string | null;
73
+ name?: string | null;
74
+ unitPriceCents?: number | null;
75
+ vatRate?: number | null;
76
+ unit?: string | null;
77
+ groupId?: string | null;
78
+ revenueGroupId?: string | null;
79
+ tile?: {
80
+ visible?: boolean | null;
81
+ sort?: number | null;
82
+ } | null;
83
+ active?: boolean | null;
84
+ quantityRule?: string | null;
85
+ askQuantity?: boolean | null;
86
+ maxQuantity?: number | null;
87
+ }
88
+ export declare function fromPosArticlePayload(p: PosArticlePayload): PosArticle;
89
+ export declare function listMyArticleGroups(transport: InternerTransport): Promise<ArticleGroup[]>;
90
+ export declare function listMyArticles(transport: InternerTransport): Promise<PosArticle[]>;