@kreiseck/kasseneck-api 0.6.7

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 (294) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +2 -0
  3. package/README.md +206 -0
  4. package/dist/cjs/client/api.d.ts +75 -0
  5. package/dist/cjs/client/api.js +40 -0
  6. package/dist/cjs/client/auth.d.ts +52 -0
  7. package/dist/cjs/client/auth.js +72 -0
  8. package/dist/cjs/client/cashregisters.d.ts +21 -0
  9. package/dist/cjs/client/cashregisters.js +36 -0
  10. package/dist/cjs/client/errors.d.ts +159 -0
  11. package/dist/cjs/client/errors.js +226 -0
  12. package/dist/cjs/client/index.d.ts +8 -0
  13. package/dist/cjs/client/index.js +44 -0
  14. package/dist/cjs/client/receipts.d.ts +245 -0
  15. package/dist/cjs/client/receipts.js +452 -0
  16. package/dist/cjs/client/reports.d.ts +43 -0
  17. package/dist/cjs/client/reports.js +73 -0
  18. package/dist/cjs/client/status.d.ts +43 -0
  19. package/dist/cjs/client/status.js +47 -0
  20. package/dist/cjs/client/transport.d.ts +117 -0
  21. package/dist/cjs/client/transport.js +312 -0
  22. package/dist/cjs/enums/credit-card-provider.d.ts +22 -0
  23. package/dist/cjs/enums/credit-card-provider.js +23 -0
  24. package/dist/cjs/enums/define-enum.d.ts +15 -0
  25. package/dist/cjs/enums/define-enum.js +16 -0
  26. package/dist/cjs/enums/index.d.ts +7 -0
  27. package/dist/cjs/enums/index.js +17 -0
  28. package/dist/cjs/enums/keck-payment-method.d.ts +57 -0
  29. package/dist/cjs/enums/keck-payment-method.js +23 -0
  30. package/dist/cjs/enums/receipt-type.d.ts +41 -0
  31. package/dist/cjs/enums/receipt-type.js +18 -0
  32. package/dist/cjs/enums/stripe-link-mode.d.ts +17 -0
  33. package/dist/cjs/enums/stripe-link-mode.js +18 -0
  34. package/dist/cjs/enums/vat-rate.d.ts +40 -0
  35. package/dist/cjs/enums/vat-rate.js +19 -0
  36. package/dist/cjs/enums/voucher-action.d.ts +10 -0
  37. package/dist/cjs/enums/voucher-action.js +11 -0
  38. package/dist/cjs/enums/voucher-type.d.ts +9 -0
  39. package/dist/cjs/enums/voucher-type.js +10 -0
  40. package/dist/cjs/index.d.ts +5 -0
  41. package/dist/cjs/index.js +97 -0
  42. package/dist/cjs/kasse/artikel.d.ts +83 -0
  43. package/dist/cjs/kasse/artikel.js +79 -0
  44. package/dist/cjs/kasse/client.d.ts +10 -0
  45. package/dist/cjs/kasse/client.js +38 -0
  46. package/dist/cjs/kasse/drucker.d.ts +54 -0
  47. package/dist/cjs/kasse/drucker.js +41 -0
  48. package/dist/cjs/kasse/index.d.ts +11 -0
  49. package/dist/cjs/kasse/index.js +38 -0
  50. package/dist/cjs/kasse/settings.d.ts +115 -0
  51. package/dist/cjs/kasse/settings.js +62 -0
  52. package/dist/cjs/models/cancellation.d.ts +51 -0
  53. package/dist/cjs/models/cancellation.js +45 -0
  54. package/dist/cjs/models/cashregister.d.ts +77 -0
  55. package/dist/cjs/models/cashregister.js +53 -0
  56. package/dist/cjs/models/enum-payload.d.ts +26 -0
  57. package/dist/cjs/models/enum-payload.js +50 -0
  58. package/dist/cjs/models/hobex-receipt.d.ts +63 -0
  59. package/dist/cjs/models/hobex-receipt.js +86 -0
  60. package/dist/cjs/models/index.d.ts +10 -0
  61. package/dist/cjs/models/index.js +46 -0
  62. package/dist/cjs/models/receipt-company.d.ts +71 -0
  63. package/dist/cjs/models/receipt-company.js +52 -0
  64. package/dist/cjs/models/receipt-item.d.ts +100 -0
  65. package/dist/cjs/models/receipt-item.js +108 -0
  66. package/dist/cjs/models/receipt-summary.d.ts +92 -0
  67. package/dist/cjs/models/receipt-summary.js +54 -0
  68. package/dist/cjs/models/receipt.d.ts +108 -0
  69. package/dist/cjs/models/receipt.js +119 -0
  70. package/dist/cjs/models/report-month.d.ts +32 -0
  71. package/dist/cjs/models/report-month.js +65 -0
  72. package/dist/cjs/models/stripe-url-session.d.ts +18 -0
  73. package/dist/cjs/models/stripe-url-session.js +20 -0
  74. package/dist/cjs/models/voucher.d.ts +41 -0
  75. package/dist/cjs/models/voucher.js +56 -0
  76. package/dist/cjs/money.d.ts +23 -0
  77. package/dist/cjs/money.js +35 -0
  78. package/dist/cjs/package.json +1 -0
  79. package/dist/cjs/payments/hobex.d.ts +87 -0
  80. package/dist/cjs/payments/hobex.js +167 -0
  81. package/dist/cjs/payments/index.d.ts +33 -0
  82. package/dist/cjs/payments/index.js +42 -0
  83. package/dist/cjs/payments/stripe.d.ts +61 -0
  84. package/dist/cjs/payments/stripe.js +157 -0
  85. package/dist/cjs/printing/escpos.d.ts +219 -0
  86. package/dist/cjs/printing/escpos.js +636 -0
  87. package/dist/cjs/printing/index.d.ts +3 -0
  88. package/dist/cjs/printing/index.js +33 -0
  89. package/dist/cjs/printing/printable.d.ts +27 -0
  90. package/dist/cjs/printing/printable.js +90 -0
  91. package/dist/cjs/printing/webusb.d.ts +89 -0
  92. package/dist/cjs/printing/webusb.js +110 -0
  93. package/dist/cjs/react/index.d.ts +46 -0
  94. package/dist/cjs/react/index.js +51 -0
  95. package/dist/cjs/receipt/discount.d.ts +12 -0
  96. package/dist/cjs/receipt/discount.js +54 -0
  97. package/dist/cjs/receipt/epos.d.ts +53 -0
  98. package/dist/cjs/receipt/epos.js +95 -0
  99. package/dist/cjs/receipt/grid.d.ts +47 -0
  100. package/dist/cjs/receipt/grid.js +122 -0
  101. package/dist/cjs/receipt/index.d.ts +4 -0
  102. package/dist/cjs/receipt/index.js +29 -0
  103. package/dist/cjs/receipt/layout-escpos.d.ts +35 -0
  104. package/dist/cjs/receipt/layout-escpos.js +67 -0
  105. package/dist/cjs/receipt/layout.d.ts +180 -0
  106. package/dist/cjs/receipt/layout.js +594 -0
  107. package/dist/cjs/register/index.d.ts +51 -0
  108. package/dist/cjs/register/index.js +61 -0
  109. package/dist/cjs/register/pairing.d.ts +248 -0
  110. package/dist/cjs/register/pairing.js +279 -0
  111. package/dist/cjs/register/session.d.ts +37 -0
  112. package/dist/cjs/register/session.js +52 -0
  113. package/dist/cjs/vienna-time.d.ts +23 -0
  114. package/dist/cjs/vienna-time.js +114 -0
  115. package/dist/esm/client/api.d.ts +75 -0
  116. package/dist/esm/client/api.js +37 -0
  117. package/dist/esm/client/auth.d.ts +52 -0
  118. package/dist/esm/client/auth.js +68 -0
  119. package/dist/esm/client/cashregisters.d.ts +21 -0
  120. package/dist/esm/client/cashregisters.js +33 -0
  121. package/dist/esm/client/errors.d.ts +159 -0
  122. package/dist/esm/client/errors.js +212 -0
  123. package/dist/esm/client/index.d.ts +8 -0
  124. package/dist/esm/client/index.js +8 -0
  125. package/dist/esm/client/receipts.d.ts +245 -0
  126. package/dist/esm/client/receipts.js +438 -0
  127. package/dist/esm/client/reports.d.ts +43 -0
  128. package/dist/esm/client/reports.js +69 -0
  129. package/dist/esm/client/status.d.ts +43 -0
  130. package/dist/esm/client/status.js +43 -0
  131. package/dist/esm/client/transport.d.ts +117 -0
  132. package/dist/esm/client/transport.js +307 -0
  133. package/dist/esm/enums/credit-card-provider.d.ts +22 -0
  134. package/dist/esm/enums/credit-card-provider.js +20 -0
  135. package/dist/esm/enums/define-enum.d.ts +15 -0
  136. package/dist/esm/enums/define-enum.js +13 -0
  137. package/dist/esm/enums/index.d.ts +7 -0
  138. package/dist/esm/enums/index.js +7 -0
  139. package/dist/esm/enums/keck-payment-method.d.ts +57 -0
  140. package/dist/esm/enums/keck-payment-method.js +20 -0
  141. package/dist/esm/enums/receipt-type.d.ts +41 -0
  142. package/dist/esm/enums/receipt-type.js +15 -0
  143. package/dist/esm/enums/stripe-link-mode.d.ts +17 -0
  144. package/dist/esm/enums/stripe-link-mode.js +15 -0
  145. package/dist/esm/enums/vat-rate.d.ts +40 -0
  146. package/dist/esm/enums/vat-rate.js +16 -0
  147. package/dist/esm/enums/voucher-action.d.ts +10 -0
  148. package/dist/esm/enums/voucher-action.js +8 -0
  149. package/dist/esm/enums/voucher-type.d.ts +9 -0
  150. package/dist/esm/enums/voucher-type.js +7 -0
  151. package/dist/esm/index.d.ts +5 -0
  152. package/dist/esm/index.js +5 -0
  153. package/dist/esm/kasse/artikel.d.ts +83 -0
  154. package/dist/esm/kasse/artikel.js +70 -0
  155. package/dist/esm/kasse/client.d.ts +10 -0
  156. package/dist/esm/kasse/client.js +33 -0
  157. package/dist/esm/kasse/drucker.d.ts +54 -0
  158. package/dist/esm/kasse/drucker.js +36 -0
  159. package/dist/esm/kasse/index.d.ts +11 -0
  160. package/dist/esm/kasse/index.js +13 -0
  161. package/dist/esm/kasse/settings.d.ts +115 -0
  162. package/dist/esm/kasse/settings.js +58 -0
  163. package/dist/esm/models/cancellation.d.ts +51 -0
  164. package/dist/esm/models/cancellation.js +40 -0
  165. package/dist/esm/models/cashregister.d.ts +77 -0
  166. package/dist/esm/models/cashregister.js +50 -0
  167. package/dist/esm/models/enum-payload.d.ts +26 -0
  168. package/dist/esm/models/enum-payload.js +44 -0
  169. package/dist/esm/models/hobex-receipt.d.ts +63 -0
  170. package/dist/esm/models/hobex-receipt.js +80 -0
  171. package/dist/esm/models/index.d.ts +10 -0
  172. package/dist/esm/models/index.js +10 -0
  173. package/dist/esm/models/receipt-company.d.ts +71 -0
  174. package/dist/esm/models/receipt-company.js +48 -0
  175. package/dist/esm/models/receipt-item.d.ts +100 -0
  176. package/dist/esm/models/receipt-item.js +101 -0
  177. package/dist/esm/models/receipt-summary.d.ts +92 -0
  178. package/dist/esm/models/receipt-summary.js +49 -0
  179. package/dist/esm/models/receipt.d.ts +108 -0
  180. package/dist/esm/models/receipt.js +113 -0
  181. package/dist/esm/models/report-month.d.ts +32 -0
  182. package/dist/esm/models/report-month.js +58 -0
  183. package/dist/esm/models/stripe-url-session.d.ts +18 -0
  184. package/dist/esm/models/stripe-url-session.js +16 -0
  185. package/dist/esm/models/voucher.d.ts +41 -0
  186. package/dist/esm/models/voucher.js +51 -0
  187. package/dist/esm/money.d.ts +23 -0
  188. package/dist/esm/money.js +31 -0
  189. package/dist/esm/payments/hobex.d.ts +87 -0
  190. package/dist/esm/payments/hobex.js +162 -0
  191. package/dist/esm/payments/index.d.ts +33 -0
  192. package/dist/esm/payments/index.js +33 -0
  193. package/dist/esm/payments/stripe.d.ts +61 -0
  194. package/dist/esm/payments/stripe.js +153 -0
  195. package/dist/esm/printing/escpos.d.ts +219 -0
  196. package/dist/esm/printing/escpos.js +616 -0
  197. package/dist/esm/printing/index.d.ts +3 -0
  198. package/dist/esm/printing/index.js +3 -0
  199. package/dist/esm/printing/printable.d.ts +27 -0
  200. package/dist/esm/printing/printable.js +87 -0
  201. package/dist/esm/printing/webusb.d.ts +89 -0
  202. package/dist/esm/printing/webusb.js +101 -0
  203. package/dist/esm/react/index.d.ts +46 -0
  204. package/dist/esm/react/index.js +47 -0
  205. package/dist/esm/receipt/discount.d.ts +12 -0
  206. package/dist/esm/receipt/discount.js +51 -0
  207. package/dist/esm/receipt/epos.d.ts +53 -0
  208. package/dist/esm/receipt/epos.js +86 -0
  209. package/dist/esm/receipt/grid.d.ts +47 -0
  210. package/dist/esm/receipt/grid.js +116 -0
  211. package/dist/esm/receipt/index.d.ts +4 -0
  212. package/dist/esm/receipt/index.js +4 -0
  213. package/dist/esm/receipt/layout-escpos.d.ts +35 -0
  214. package/dist/esm/receipt/layout-escpos.js +64 -0
  215. package/dist/esm/receipt/layout.d.ts +180 -0
  216. package/dist/esm/receipt/layout.js +583 -0
  217. package/dist/esm/register/index.d.ts +51 -0
  218. package/dist/esm/register/index.js +51 -0
  219. package/dist/esm/register/pairing.d.ts +248 -0
  220. package/dist/esm/register/pairing.js +270 -0
  221. package/dist/esm/register/session.d.ts +37 -0
  222. package/dist/esm/register/session.js +48 -0
  223. package/dist/esm/vienna-time.d.ts +23 -0
  224. package/dist/esm/vienna-time.js +110 -0
  225. package/fixtures/belege/langer-artikelname.json +43 -0
  226. package/fixtures/belege/null-ausfall.json +41 -0
  227. package/fixtures/belege/null-jahr.json +41 -0
  228. package/fixtures/belege/null-monat.json +41 -0
  229. package/fixtures/belege/null-pruef.json +41 -0
  230. package/fixtures/belege/null-schluss.json +41 -0
  231. package/fixtures/belege/null-start.json +40 -0
  232. package/fixtures/belege/rabattzeilen.json +61 -0
  233. package/fixtures/belege/signaturausfall-verkauf.json +49 -0
  234. package/fixtures/belege/storno-teil.json +48 -0
  235. package/fixtures/belege/storno-voll.json +54 -0
  236. package/fixtures/belege/testkasse-verkauf.json +50 -0
  237. package/fixtures/belege/testsignatur-verkauf.json +50 -0
  238. package/fixtures/belege/training.json +49 -0
  239. package/fixtures/belege/verkauf-bar.json +49 -0
  240. package/fixtures/belege/verkauf-karte.json +49 -0
  241. package/fixtures/belege/verkauf-kleinunternehmer.json +42 -0
  242. package/fixtures/erwartet/langer-artikelname.grid32.txt +25 -0
  243. package/fixtures/erwartet/langer-artikelname.grid48.txt +24 -0
  244. package/fixtures/erwartet/langer-artikelname.lines.json +216 -0
  245. package/fixtures/erwartet/null-ausfall.grid32.txt +28 -0
  246. package/fixtures/erwartet/null-ausfall.grid48.txt +25 -0
  247. package/fixtures/erwartet/null-ausfall.lines.json +220 -0
  248. package/fixtures/erwartet/null-jahr.grid32.txt +29 -0
  249. package/fixtures/erwartet/null-jahr.grid48.txt +25 -0
  250. package/fixtures/erwartet/null-jahr.lines.json +220 -0
  251. package/fixtures/erwartet/null-monat.grid32.txt +28 -0
  252. package/fixtures/erwartet/null-monat.grid48.txt +25 -0
  253. package/fixtures/erwartet/null-monat.lines.json +220 -0
  254. package/fixtures/erwartet/null-pruef.grid32.txt +28 -0
  255. package/fixtures/erwartet/null-pruef.grid48.txt +25 -0
  256. package/fixtures/erwartet/null-pruef.lines.json +220 -0
  257. package/fixtures/erwartet/null-schluss.grid32.txt +28 -0
  258. package/fixtures/erwartet/null-schluss.grid48.txt +25 -0
  259. package/fixtures/erwartet/null-schluss.lines.json +220 -0
  260. package/fixtures/erwartet/null-start.grid32.txt +28 -0
  261. package/fixtures/erwartet/null-start.grid48.txt +25 -0
  262. package/fixtures/erwartet/null-start.lines.json +220 -0
  263. package/fixtures/erwartet/rabattzeilen.grid32.txt +27 -0
  264. package/fixtures/erwartet/rabattzeilen.grid48.txt +26 -0
  265. package/fixtures/erwartet/rabattzeilen.lines.json +286 -0
  266. package/fixtures/erwartet/signaturausfall-verkauf.grid32.txt +28 -0
  267. package/fixtures/erwartet/signaturausfall-verkauf.grid48.txt +26 -0
  268. package/fixtures/erwartet/signaturausfall-verkauf.lines.json +266 -0
  269. package/fixtures/erwartet/storno-teil.grid32.txt +27 -0
  270. package/fixtures/erwartet/storno-teil.grid48.txt +26 -0
  271. package/fixtures/erwartet/storno-teil.lines.json +237 -0
  272. package/fixtures/erwartet/storno-voll.grid32.txt +29 -0
  273. package/fixtures/erwartet/storno-voll.grid48.txt +28 -0
  274. package/fixtures/erwartet/storno-voll.lines.json +277 -0
  275. package/fixtures/erwartet/testkasse-verkauf.grid32.txt +28 -0
  276. package/fixtures/erwartet/testkasse-verkauf.grid48.txt +27 -0
  277. package/fixtures/erwartet/testkasse-verkauf.lines.json +270 -0
  278. package/fixtures/erwartet/testsignatur-verkauf.grid32.txt +30 -0
  279. package/fixtures/erwartet/testsignatur-verkauf.grid48.txt +27 -0
  280. package/fixtures/erwartet/testsignatur-verkauf.lines.json +270 -0
  281. package/fixtures/erwartet/training.grid32.txt +33 -0
  282. package/fixtures/erwartet/training.grid48.txt +30 -0
  283. package/fixtures/erwartet/training.lines.json +277 -0
  284. package/fixtures/erwartet/verkauf-bar.grid32.txt +25 -0
  285. package/fixtures/erwartet/verkauf-bar.grid48.txt +24 -0
  286. package/fixtures/erwartet/verkauf-bar.lines.json +256 -0
  287. package/fixtures/erwartet/verkauf-karte.grid32.txt +25 -0
  288. package/fixtures/erwartet/verkauf-karte.grid48.txt +24 -0
  289. package/fixtures/erwartet/verkauf-karte.lines.json +256 -0
  290. package/fixtures/erwartet/verkauf-kleinunternehmer.grid32.txt +26 -0
  291. package/fixtures/erwartet/verkauf-kleinunternehmer.grid48.txt +25 -0
  292. package/fixtures/erwartet/verkauf-kleinunternehmer.lines.json +226 -0
  293. package/fixtures/manifest.json +107 -0
  294. package/package.json +135 -0
@@ -0,0 +1,212 @@
1
+ /**
2
+ * Die fuenf Fehlerarten des Kasseneck-Clients — bewusst getrennt, weil ein
3
+ * Aufrufer auf jede anders reagieren muss:
4
+ *
5
+ * - `KasseneckValidationError` — die **Form** stimmt nicht: entweder ging
6
+ * mangels brauchbarer Eingabe gar keine Anfrage raus, oder die Antwort war
7
+ * nicht verwertbar. `scope` trennt die beiden Richtungen. `'request'`: die
8
+ * Eingabe des Aufrufers verletzt eine Regel, die dieses Paket schon vor dem
9
+ * Senden kennt (Beleg ohne Positionen, unmoegliche Gutscheinkombination) —
10
+ * das ist ein Programmierfehler im Aufrufer, kein Betriebszustand.
11
+ * `'response'`: das Backend meldete Erfolg, die Nutzlast enthielt aber
12
+ * nicht, was der Aufruf zusagt.
13
+ *
14
+ * - `KasseneckApiError` — **fachlicher** Fehler. Das Backend antwortet immer
15
+ * mit HTTP 200 und legt Erfolg/Misserfolg in den Rumpf
16
+ * (`{status:'success'|'error', message, data}`, siehe `successResponse`/
17
+ * `errorResponse` im Backend). Ein `status:'error'` heisst: die Anfrage kam
18
+ * an und wurde abgelehnt (gesperrte Kasse, fehlendes Modul, ungueltiger
19
+ * Parameter). Wiederholen hilft nicht.
20
+ * - `KasseneckHttpError` — die Antwort war **keine** verwertbare Huelle:
21
+ * HTTP 500/404, leerer Rumpf, oder HTTP 200 mit HTML statt JSON (typisch,
22
+ * wenn ein Aufruf mangels Rewrite auf der Single-Page-App landet). Beim
23
+ * Bericht-Download gelten dieselben Gruende fuer alles, was kein PDF ist.
24
+ * `reason` trennt die Faelle maschinenlesbar.
25
+ * - `KasseneckNetworkError` — die Antwort kam gar nicht: Netz weg, DNS,
26
+ * abgebrochene Verbindung oder Zeitueberschreitung (`timedOut`).
27
+ * - `KasseneckAuthError` — es kam nicht einmal zur Anfrage, weil die Anmeldung
28
+ * scheiterte (fehlende Zugangsdaten, oder der Token-/Sitzungsgeber warf).
29
+ * In der Browser-Kasse mit ihrer 90-Sekunden-Sitzung ist das Alltag, kein
30
+ * Sonderfall.
31
+ *
32
+ * **Geheimnisse gehoeren in keinen dieser Fehler.** Fehlermeldungen landen in
33
+ * Protokollen und Fehlerdiensten; weder `api_key`, Kassen-Token, Firebase-
34
+ * ID-Token noch Sitzungsbezeichner duerfen dorthin. Deshalb tragen die Fehler
35
+ * ausschliesslich Funktionsname, HTTP-Status/Inhaltstyp, den vom Paket
36
+ * formulierten Grund und die vom Backend formulierte Meldung — nie Kopfzeilen,
37
+ * nie den gesendeten Rumpf und auch nicht den empfangenen Rumpf (der koennte
38
+ * bei einem fremden Proxy alles Moegliche zurueckspiegeln).
39
+ *
40
+ * Aus demselben Grund haengt **keine fremde Ursache** als `cause` an diesen
41
+ * Fehlern: `console.error(err)` und `util.inspect` drucken die Ursachenkette
42
+ * mit, und fremde HTTP-Bibliotheken haengen ihre Anfrage an ihre Fehler (axios
43
+ * `config.headers`, got `options.headers`) — mit dem Bearer-Schluessel darin.
44
+ * Statt der Ursache selbst traegt `KasseneckNetworkError` ihre **verdichtete**
45
+ * Form: `causeName`/`causeCode`, beide nur, wenn sie wie ein Bezeichner
46
+ * aussehen **und** mit keinem der gesendeten Geheimnisse ueberlappen (siehe
47
+ * `causeDigest`).
48
+ *
49
+ * Der Formfilter allein traegt diese Zusage naemlich nicht: der
50
+ * Sitzungsbezeichner der Browser-Kasse ist selbst bezeichner-foermig und kaeme
51
+ * durch. Verdichtet werden darf nur, wo die gesendeten Geheimnisse bekannt
52
+ * sind — also nach dem Bauen der Anfrage. `KasseneckAuthError` traegt darum
53
+ * **gar keine** Ursachen-Verdichtung: dort ist noch nichts gesendet, es gibt
54
+ * keine Liste zum Abgleichen, und Diagnose ist an dieser Stelle weniger wert
55
+ * als die Zusage.
56
+ */
57
+ // Bezeichner-artig: Buchstabe vorn, danach nur Bezeichnerzeichen, hoechstens
58
+ // 64 Zeichen. Das laesst `TypeError`, `ECONNREFUSED` und `auth/internal-error`
59
+ // durch, aber keinen Freitext und kein Firebase-ID-Token (~900 Zeichen).
60
+ const BEZEICHNER = /^[A-Za-z][A-Za-z0-9_./-]{0,63}$/;
61
+ /**
62
+ * Reduziert eine fremde Ursache auf Name und Code — und verwirft beides, wenn
63
+ * es kein Bezeichner ist oder mit einem der uebergebenen Geheimnisse
64
+ * ueberlappt (ein Sitzungsbezeichner sieht durchaus bezeichner-artig aus).
65
+ *
66
+ * `geheimnisse` hat bewusst **keinen** Vorgabewert: eine Verdichtung ohne
67
+ * Abgleichliste waere nur ein Formfilter und damit keine Zusage. Wo die
68
+ * gesendeten Werte nicht bekannt sind, wird gar nicht verdichtet.
69
+ */
70
+ export function causeDigest(ursache, geheimnisse) {
71
+ const roh = ursache;
72
+ return {
73
+ causeName: unbedenklich(roh?.name, geheimnisse),
74
+ causeCode: unbedenklich(roh?.code, geheimnisse),
75
+ };
76
+ }
77
+ function unbedenklich(wert, geheimnisse) {
78
+ if (typeof wert !== 'string' || !BEZEICHNER.test(wert)) {
79
+ return undefined;
80
+ }
81
+ for (const geheim of geheimnisse) {
82
+ if (geheim && (geheim.includes(wert) || wert.includes(geheim))) {
83
+ return undefined;
84
+ }
85
+ }
86
+ return wert;
87
+ }
88
+ /** Fachlicher Fehler: HTTP 200, aber `status: 'error'` im Rumpf. */
89
+ export class KasseneckApiError extends Error {
90
+ name = 'KasseneckApiError';
91
+ /** Aufgerufene Backend-Funktion, z. B. `createReceipt`. */
92
+ functionName;
93
+ /** Meldung des Backends, unveraendert (`message` aus der Huelle). */
94
+ serverMessage;
95
+ constructor(functionName, serverMessage) {
96
+ super(`${functionName} fehlgeschlagen: ${serverMessage}`);
97
+ this.functionName = functionName;
98
+ this.serverMessage = serverMessage;
99
+ }
100
+ }
101
+ const GRUND_TEXT = {
102
+ 'server-error': 'Server-Fehler',
103
+ 'empty-body': 'leere Antwort',
104
+ 'not-json': 'Antwort ist kein JSON',
105
+ 'missing-status': 'Antwort ohne Statusfeld',
106
+ };
107
+ /** Antwort ohne verwertbare Huelle (HTTP-Fehler, leerer Rumpf, HTML statt JSON). */
108
+ export class KasseneckHttpError extends Error {
109
+ name = 'KasseneckHttpError';
110
+ functionName;
111
+ /** HTTP-Statuscode der Antwort (bei HTML-statt-JSON durchaus 200). */
112
+ statusCode;
113
+ /** Inhaltstyp der Antwort, falls die Gegenstelle einen gesetzt hat. */
114
+ contentType;
115
+ /** Maschinenlesbarer Grund — trennt den Rewrite-Fall vom 500er ohne Textparsen. */
116
+ reason;
117
+ constructor(functionName, statusCode, contentType, reason) {
118
+ const typHinweis = contentType ? `, Inhaltstyp ${contentType}` : '';
119
+ super(`${functionName} fehlgeschlagen: ${GRUND_TEXT[reason]} (HTTP ${statusCode}${typHinweis})`);
120
+ this.functionName = functionName;
121
+ this.statusCode = statusCode;
122
+ this.contentType = contentType;
123
+ this.reason = reason;
124
+ }
125
+ }
126
+ /** Es kam keine Antwort: Netzfehler oder Zeitueberschreitung. */
127
+ export class KasseneckNetworkError extends Error {
128
+ name = 'KasseneckNetworkError';
129
+ functionName;
130
+ /** true = das Zeitlimit lief ab und die Anfrage wurde abgebrochen. */
131
+ timedOut;
132
+ /** Das geltende Zeitlimit in Millisekunden. */
133
+ timeoutMs;
134
+ /** Name der zugrunde liegenden Ursache, sofern unbedenklich (s. `causeDigest`). */
135
+ causeName;
136
+ /** Code der zugrunde liegenden Ursache, sofern unbedenklich (z. B. `ECONNREFUSED`). */
137
+ causeCode;
138
+ constructor(functionName, timedOut, timeoutMs, ursache = {}) {
139
+ const grund = timedOut ? `Zeitueberschreitung nach ${timeoutMs} ms` : 'Netzwerkfehler';
140
+ const codeHinweis = ursache.causeCode ? ` (${ursache.causeCode})` : '';
141
+ super(`${functionName} fehlgeschlagen: ${grund}${codeHinweis}`);
142
+ this.functionName = functionName;
143
+ this.timedOut = timedOut;
144
+ this.timeoutMs = timeoutMs;
145
+ this.causeName = ursache.causeName;
146
+ this.causeCode = ursache.causeCode;
147
+ }
148
+ }
149
+ /**
150
+ * Die Anmeldung scheiterte — es ging keine Anfrage raus.
151
+ *
152
+ * Dieser Fehler traegt **nichts** aus der fremden Ursache: weder ihre Meldung
153
+ * (ein Token-Geber fuehrt gern den Token mit, den er gerade nicht erneuern
154
+ * konnte) noch eine Verdichtung ihres Namens/Codes. Zum Zeitpunkt des
155
+ * Anmeldefehlers ist noch nichts gesendet, es gibt also keine Liste der
156
+ * Geheimnisse, gegen die verdichtete Werte geprueft werden koennten — und ein
157
+ * reiner Formfilter laesst genau die Form durch, die ein Sitzungsbezeichner
158
+ * hat.
159
+ */
160
+ export class KasseneckAuthError extends Error {
161
+ name = 'KasseneckAuthError';
162
+ /** Betroffene Backend-Funktion, falls der Fehler bei einem Aufruf entstand. */
163
+ functionName;
164
+ /** Vom Paket formulierter Grund — geheimnisfrei, anders als fremde Meldungen. */
165
+ reason;
166
+ constructor(reason, options = {}) {
167
+ super(options.functionName ? `${options.functionName} fehlgeschlagen: ${reason}` : reason);
168
+ this.functionName = options.functionName;
169
+ this.reason = reason;
170
+ }
171
+ }
172
+ /**
173
+ * Die Form stimmt nicht — bei `scope: 'request'` ging deshalb keine Anfrage
174
+ * raus, bei `scope: 'response'` kam eine unbrauchbare zurueck.
175
+ *
176
+ * Es gilt dieselbe Zusage wie fuer die uebrigen Fehlerarten: `reason` ist vom
177
+ * Paket formuliert und geheimnisfrei. Bei `'response'` wird insbesondere
178
+ * **nichts aus der Antwort** uebernommen — ein fremder Proxy koennte dort
179
+ * alles Moegliche zurueckspiegeln.
180
+ */
181
+ export class KasseneckValidationError extends Error {
182
+ name = 'KasseneckValidationError';
183
+ /**
184
+ * Betroffener Vorgang — meist die Backend-Funktion, bei Pruefungen ohne
185
+ * Aufruf der Name der Paketfunktion (z. B. `buildReceiptLayout`).
186
+ */
187
+ functionName;
188
+ /** Vom Paket formulierter Grund. */
189
+ reason;
190
+ scope;
191
+ constructor(functionName, reason, scope) {
192
+ super(`${functionName} fehlgeschlagen: ${reason}`);
193
+ this.functionName = functionName;
194
+ this.reason = reason;
195
+ this.scope = scope;
196
+ }
197
+ }
198
+ export function isKasseneckApiError(fehler) {
199
+ return fehler instanceof KasseneckApiError;
200
+ }
201
+ export function isKasseneckHttpError(fehler) {
202
+ return fehler instanceof KasseneckHttpError;
203
+ }
204
+ export function isKasseneckNetworkError(fehler) {
205
+ return fehler instanceof KasseneckNetworkError;
206
+ }
207
+ export function isKasseneckAuthError(fehler) {
208
+ return fehler instanceof KasseneckAuthError;
209
+ }
210
+ export function isKasseneckValidationError(fehler) {
211
+ return fehler instanceof KasseneckValidationError;
212
+ }
@@ -0,0 +1,8 @@
1
+ export { type AuthCredentials, type KasseneckAuth, type ApiKeyAuthOptions, type RegisterUserAuthOptions, apiKeyAuth, registerUserAuth, } from './auth.js';
2
+ export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, type HttpResponseLike, type HttpRequestInit, type FetchLike, type TransportOptions, type TransportBodyFields, type KasseneckTransport, type KasseneckBinaryTransport, createTransport, createBinaryTransport, } from './transport.js';
3
+ export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, type ValidationScope, type KasseneckError, type HttpFailureReason, type CauseDigest, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, } from './errors.js';
4
+ export { type ReceiptCommonOptions, type SellReceiptOptions, type CancelReceiptOptions, type CreateCancelReceiptOptions, type ReceiptWithCompany, sellReceipt, sellReceiptWithCompany, cancelReceipt, type CancelReceiptResult, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, type ListMyReceiptsOptions, type ReceiptList, type ReceiptListStats, checkVoucherCombinationError, } from './receipts.js';
5
+ export { listMyCashregisters } from './cashregisters.js';
6
+ export { downloadDailyReport, downloadMonthlyReport } from './reports.js';
7
+ export { type CashboxStatus, type SignatureStatus, getCashboxStatus, getSignatureStatus, } from './status.js';
8
+ export { type KasseneckApi, createKasseneckApi } from './api.js';
@@ -0,0 +1,8 @@
1
+ export { apiKeyAuth, registerUserAuth, } from './auth.js';
2
+ export { DEFAULT_BASE_URL, DEFAULT_TIMEOUT_MS, createTransport, createBinaryTransport, } from './transport.js';
3
+ export { KasseneckApiError, KasseneckAuthError, KasseneckHttpError, KasseneckNetworkError, KasseneckValidationError, isKasseneckApiError, isKasseneckAuthError, isKasseneckHttpError, isKasseneckNetworkError, isKasseneckValidationError, } from './errors.js';
4
+ export { sellReceipt, sellReceiptWithCompany, cancelReceipt, createCancelReceipt, zeroReceipt, getReceipt, getReceiptWithCompany, generateFullReceiptId, getFirstReceiptDate, listMyReceipts, checkVoucherCombinationError, } from './receipts.js';
5
+ export { listMyCashregisters } from './cashregisters.js';
6
+ export { downloadDailyReport, downloadMonthlyReport } from './reports.js';
7
+ export { getCashboxStatus, getSignatureStatus, } from './status.js';
8
+ export { createKasseneckApi } from './api.js';
@@ -0,0 +1,245 @@
1
+ import { ReceiptType, type ReceiptTypeKey, KeckPaymentMethod, type KeckPaymentMethodKey, CreditCardProvider } from '../enums/index.js';
2
+ import { type Receipt, type ReceiptCompany, type ReceiptItem, type Voucher, type ReceiptSummary, type ReportMonth, type CancellationItem, type CancellationOf, type CancellationReason } from '../models/index.js';
3
+ import type { KasseneckTransport } from './transport.js';
4
+ import type { Pruefangaben, ReceiptLayout } from '../receipt/layout.js';
5
+ /**
6
+ * Beleg-Endpunkte — Zwilling der Beleg-Aufrufe in
7
+ * kasseneck_api/lib/kasseneck_api.dart.
8
+ *
9
+ * **Verkauf, freier Storno und Nullbeleg laufen ueber einen einzigen
10
+ * Backend-Endpunkt `createReceipt`.** `sellReceipt`, `createCancelReceipt` und
11
+ * `zeroReceipt` sind — wie im Flutter-Vorbild — benannte Bequemlichkeits-
12
+ * schichten ueber [createReceipt]; sie legen den Belegtyp fest und reichen den
13
+ * Rest durch. **[cancelReceipt] geht an den eigenen Endpunkt `cancelReceipt`**:
14
+ * der Server negiert die Positionen des Originals, prueft Restmengen und
15
+ * Rechte und verkettet beide Belege (Storno-API).
16
+ *
17
+ * **Kein Wiederholen fehlgeschlagener Aufrufe** (siehe transport.ts): ein
18
+ * Beleg ist nicht folgenlos wiederholbar.
19
+ *
20
+ * **Kassen-Benutzer-Weg (`registerUserAuth`, Browser-Kasse):** Von den
21
+ * Endpunkten dieser Datei setzen [listMyReceipts], [getReceipt],
22
+ * [createReceipt] und [generateFullReceiptId] ein `allowRegisterUser` — der
23
+ * Browser-Kasse steht hier also alles offen ausser [getFirstReceiptDate];
24
+ * siehe den Hinweis dort. Dieses Paket bildet das **nicht** nach — wer darf,
25
+ * entscheidet allein das Backend. Der Hinweis steht hier, damit ein Leser
26
+ * nicht raten muss.
27
+ */
28
+ /** Gemeinsame Zusatzangaben aller Belegarten (Nutzlast von `createReceipt`). */
29
+ export interface ReceiptCommonOptions {
30
+ /** Kundendaten fuer den Belegkopf; gehen als `\n`-verbundene Zeichenkette raus. */
31
+ customerDetails?: string[];
32
+ /** Rechtshinweise (z. B. Reverse Charge); gehen als `\n`-verbundene Zeichenkette raus. */
33
+ legalMessage?: string[];
34
+ /** Kartenanbieter; ohne Angabe gilt `custom`. */
35
+ creditCardProvider?: CreditCardProvider;
36
+ /** Transaktionsbezeichner der Kartenzahlung. */
37
+ cardPaymentId?: string;
38
+ /** Freier Bezeichner des Aufrufers (Projekt, Auftrag, Schicht). */
39
+ customProjectId?: string;
40
+ /** Rohdaten der Kartenzahlung (Terminal-/Anbieterantwort). */
41
+ cardPaymentData?: Record<string, unknown>;
42
+ }
43
+ /** Belegtyp und Inhalt — die vollstaendige Eingabe von [createReceipt]. */
44
+ export interface CreateReceiptOptions extends ReceiptCommonOptions {
45
+ receiptType: ReceiptType | ReceiptTypeKey;
46
+ /** Zahlungsart des Aufrufers — wird vor dem Senden geprueft. */
47
+ paymentMethod?: KeckPaymentMethod | KeckPaymentMethodKey;
48
+ /**
49
+ * Zahlungsart, die aus einer **Serverantwort** stammt (Storno eines
50
+ * gelesenen Belegs). Geht ungeprueft hinaus: der
51
+ * Server hat den Wert selbst vergeben und weist unbekannte selbst ab —
52
+ * ergaenzt er eine Zahlungsart vor dem naechsten Paket-Update, waeren sonst
53
+ * alle Belege damit unstornierbar. Nur fuer diesen einen Weg gedacht; eine
54
+ * ausdruecklich uebergebene `paymentMethod` sticht.
55
+ */
56
+ paymentMethodFromServer?: string;
57
+ items?: ReceiptItem[];
58
+ vouchers?: Voucher[];
59
+ }
60
+ export interface SellReceiptOptions extends ReceiptCommonOptions {
61
+ paymentMethod: KeckPaymentMethod | KeckPaymentMethodKey;
62
+ items?: ReceiptItem[];
63
+ vouchers?: Voucher[];
64
+ }
65
+ /**
66
+ * `customerDetails` fehlt hier absichtlich (wie im Flutter-Vorbild): die
67
+ * Kundendaten des Stornos sind die des stornierten Belegs, sonst stimmten
68
+ * Beleg und Storno nicht mehr ueberein.
69
+ */
70
+ /**
71
+ * Storno ueber den Endpunkt `cancelReceipt` (Backend: storno-endpoints.js).
72
+ * Der Server negiert die Positionen, prueft Restmengen und Rechte, verkettet
73
+ * Original und Storno-Beleg. Bezug entweder als Beleg-Objekt (`receipt`) oder
74
+ * als Kasse + Beleg-ID.
75
+ */
76
+ export type CancelReceiptOptions = {
77
+ /** Grund aus dem Katalog — Pflicht, nur der Anzeigetext landet am Bon. */
78
+ reason: CancellationReason;
79
+ /** Teilstorno: Positionen (Index im Original) und Mengen. Fehlt = Vollstorno der Restmengen. */
80
+ items?: CancellationItem[];
81
+ /** Interne Anmerkung (≤ 200 Zeichen), wird gespeichert, nie gedruckt. */
82
+ note?: string;
83
+ /** Rueckzahlweg; ohne Angabe die Zahlungsart des stornierten Belegs. */
84
+ paymentMethod?: KeckPaymentMethod | KeckPaymentMethodKey;
85
+ } & ({
86
+ receipt: Receipt;
87
+ cashregisterId?: string;
88
+ originalReceiptId?: string;
89
+ } | {
90
+ receipt?: undefined;
91
+ cashregisterId: string;
92
+ originalReceiptId: string;
93
+ });
94
+ /** Antwort von [cancelReceipt]: Storno-Beleg, Bezug, Restmengen des Originals danach. */
95
+ export interface CancelReceiptResult {
96
+ receipt: Receipt;
97
+ cancellationOf: CancellationOf;
98
+ remaining: number[];
99
+ }
100
+ export interface CreateCancelReceiptOptions extends ReceiptCommonOptions {
101
+ paymentMethod: KeckPaymentMethod | KeckPaymentMethodKey;
102
+ /** Positionen, wie sie auf dem Storno stehen sollen — **nicht** negiert. */
103
+ items: ReceiptItem[];
104
+ }
105
+ /**
106
+ * Beleg **und** die Firmen-/Druckdaten derselben Antwort — das Ergebnis der
107
+ * `…WithCompany`-Varianten. Das Backend liefert beides in einem Aufruf
108
+ * (functions/index.js); wer den Beleg drucken oder anzeigen will, braucht
109
+ * beides und soll dafuer keinen zweiten Aufruf machen muessen.
110
+ */
111
+ export interface ReceiptWithCompany {
112
+ receipt: Receipt;
113
+ /** Kopf/Fuss, wie sie fuer DIESEN Beleg gelten (eingefrorene Version des Backends). */
114
+ company: ReceiptCompany;
115
+ /** Beleg einer Testumgebung (Aufdruck TESTKASSE). */
116
+ testKasse: boolean;
117
+ /** Produktionskonto mit Test-Signatureinheit (Aufdruck TESTSIGNATUR). */
118
+ testSignatur: boolean;
119
+ /** Kennung der Kopf-Version; null bei altem Backend/Altbeleg ohne Zuordnung. */
120
+ kopfId: string | null;
121
+ /** Vom Backend gebautes Zeilenmodell (Regelwerk des Belegs); null, wenn nicht mitgeliefert. */
122
+ layout: ReceiptLayout | null;
123
+ /**
124
+ * Registrierdaten fuer den Block „Prüfangaben“ (Nullbelege, Regelwerk 2) --
125
+ * fuer Clients, die das Layout selbst bauen; null bei altem Backend.
126
+ */
127
+ pruefangaben: Pruefangaben | null;
128
+ }
129
+ /**
130
+ * Gemeinsame Umsetzung aller Belegarten (Zwilling von `_createReceipt`).
131
+ * Bewusst **nicht** Teil der Paketoberflaeche: der Belegtyp gehoert nicht in
132
+ * die Hand des Aufrufers, sondern zu einem der benannten Aufrufe darunter.
133
+ */
134
+ export declare function createReceipt(rufen: KasseneckTransport, options: CreateReceiptOptions): Promise<Receipt>;
135
+ /** Normalbeleg (Verkauf) nach RKSV. */
136
+ export declare function sellReceipt(rufen: KasseneckTransport, options: SellReceiptOptions): Promise<Receipt>;
137
+ /**
138
+ * Normalbeleg wie [sellReceipt], liefert zusaetzlich die Firmen-/Druckdaten
139
+ * aus derselben Antwort — alles, was ein Belegdruck braucht, in einem Aufruf.
140
+ */
141
+ export declare function sellReceiptWithCompany(rufen: KasseneckTransport, options: SellReceiptOptions): Promise<ReceiptWithCompany>;
142
+ /**
143
+ * Storno-Beleg zu einem bestehenden Beleg — voll oder in Teilen. Prueft die
144
+ * Eingabe, bevor etwas hinausgeht; der Server haelt die Restmengen und die
145
+ * Reichweite des Rechts (eigene/alle) und antwortet mit dem fertigen,
146
+ * signierten Storno-Beleg. Gutscheine des Originals wandern nicht mit.
147
+ */
148
+ export declare function cancelReceipt(rufen: KasseneckTransport, options: CancelReceiptOptions): Promise<CancelReceiptResult>;
149
+ /**
150
+ * Stornobeleg aus frei uebergebenen Positionen — fuer den Fall, dass der
151
+ * Originalbeleg nicht als Objekt vorliegt. Die Positionen gehen **unveraendert**
152
+ * hinaus; das Vorzeichen setzt der Aufrufer.
153
+ */
154
+ export declare function createCancelReceipt(rufen: KasseneckTransport, options: CreateCancelReceiptOptions): Promise<Receipt>;
155
+ /** Nullbeleg (RKSV-Pruefbeleg) — ohne Positionen und ohne Zahlungsart. */
156
+ export declare function zeroReceipt(rufen: KasseneckTransport): Promise<Receipt>;
157
+ /** Belegliste einer Kasse samt der Kennzahlen, die dieselbe Antwort mitliefert. */
158
+ export interface ReceiptList {
159
+ /** Letzte Belege, neueste zuerst (Backend: nach `counter` absteigend). */
160
+ receipts: ReceiptSummary[];
161
+ stats: ReceiptListStats;
162
+ }
163
+ /**
164
+ * Kennzahlen zur Kasse, die `listMyReceipts` neben der Liste liefert. Sie
165
+ * kommen aus den Tages-Aggregaten des Backends, nicht aus den gelisteten
166
+ * Belegen — die Reihe umfasst sieben Tage, die Liste nur die letzten `limit`
167
+ * Belege.
168
+ */
169
+ export interface ReceiptListStats {
170
+ /** Heutiger Umsatz in Cent und Belegzahl (Wiener Kalendertag). */
171
+ today: {
172
+ revenueCents: number;
173
+ count: number;
174
+ };
175
+ /** Veraenderung gegenueber gestern in Prozent; `null`, wenn gestern 0 war. */
176
+ trendPercent: number | null;
177
+ /** Sieben Tage, aeltester zuerst; `date` als `YYYY-MM-DD` (Wiener Kalender). */
178
+ days: Array<{
179
+ date: string;
180
+ revenueCents: number;
181
+ }>;
182
+ }
183
+ export interface ListMyReceiptsOptions {
184
+ /**
185
+ * Kasse, deren Belege gelistet werden. Geht als Parameter **`cashregisterid`**
186
+ * hinaus — klein geschrieben, anders als das `cashregisterId` der Anmeldung:
187
+ * so heisst der Pflichtparameter dieses Endpunkts im Backend, und ein
188
+ * Tippfehler faellt sonst erst im Betrieb auf.
189
+ */
190
+ cashregisterId: string;
191
+ /**
192
+ * Anzahl Belege; ohne Angabe nimmt das Backend 50. Es begrenzt den Wert
193
+ * selbst auf 1 bis 200 — ein groesserer Wunsch wird still gekappt.
194
+ */
195
+ limit?: number;
196
+ /** Zeitfenster (Wiener Wanduhr, `YYYY-MM-DD` oder voller Zeitstempel); der Server deckelt auf 90 Tage. */
197
+ from?: string;
198
+ to?: string;
199
+ }
200
+ /**
201
+ * Belege einer Kasse auflisten — die Grundlage jeder Belegliste in der
202
+ * Browser-Kasse (Nachdruck, Storno, Tagesuebersicht).
203
+ *
204
+ * Die Eintraege sind **Zusammenfassungen**, keine vollstaendigen Belege (siehe
205
+ * [ReceiptSummary]); fuer Nachdruck oder Storno gehoert der Beleg ueber
206
+ * [getReceipt] bzw. [getReceiptWithCompany] einzeln geholt.
207
+ *
208
+ * **Anmeldeweg:** Der Endpunkt laeuft im Backend unter
209
+ * `checkRequest(req, 'customer', …, {allowRegisterUser: true})`, der Bearer
210
+ * muss also ein Firebase-ID-Token sein — mit `apiKeyAuth` ist er nicht
211
+ * erreichbar. Ausserdem prueft das Backend die Kassenzuweisung hier im Rumpf
212
+ * (der Endpunkt laeuft mit `checkCashRegister: false`), ein Kassen-Benutzer
213
+ * bekommt also nur die ihm zugewiesenen Kassen.
214
+ */
215
+ export declare function listMyReceipts(rufen: KasseneckTransport, options: ListMyReceiptsOptions): Promise<ReceiptList>;
216
+ /** Einzelnen Beleg der angemeldeten Kasse holen. */
217
+ export declare function getReceipt(rufen: KasseneckTransport, receiptId: string): Promise<Receipt>;
218
+ /**
219
+ * Wie [getReceipt], liefert zusaetzlich die Firmen-/Druckdaten aus derselben
220
+ * Antwort (Firma, Anschrift, Steuernummer, UID, Fusszeilen, Logo-Adresse,
221
+ * Kleinunternehmer-Kennzeichen) — die Angaben, die ein Beleg im Kopf und Fuss
222
+ * traegt (siehe models/receipt-company.ts).
223
+ */
224
+ export declare function getReceiptWithCompany(rufen: KasseneckTransport, receiptId: string): Promise<ReceiptWithCompany>;
225
+ /**
226
+ * Verschluesselte Volltext-Belegnummer erzeugen — der Bezeichner, unter dem der
227
+ * Beleg oeffentlich abrufbar ist (Beleg-Download, Pruefportal).
228
+ */
229
+ export declare function generateFullReceiptId(rufen: KasseneckTransport, receiptId: string): Promise<string>;
230
+ /**
231
+ * Berichtsmonat des allerersten Belegs dieser Kasse — die untere Grenze aller
232
+ * Monatsberichte.
233
+ *
234
+ * **Nicht fuer den Kassen-Benutzer-Weg (`registerUserAuth`):** dieser Endpunkt
235
+ * fuehrt kein `allowRegisterUser`, das Backend weist die Browser-Kasse hier ab
236
+ * (siehe Modulkommentar oben). Mit `apiKeyAuth` ist er offen.
237
+ */
238
+ export declare function getFirstReceiptDate(rufen: KasseneckTransport): Promise<ReportMonth>;
239
+ /**
240
+ * Prueft die Gutschein-Kombination eines Belegs und liefert den ersten
241
+ * Regelverstoss als Text (oder `null`) — Zwilling von
242
+ * `checkVoucherCombinationError`. Bewusst als Rueckgabewert statt als Fehler:
243
+ * eine Kassenoberflaeche will das pruefen, **bevor** sie den Beleg abschickt.
244
+ */
245
+ export declare function checkVoucherCombinationError(vouchers: Voucher[], items: ReceiptItem[]): string | null;