import type { Cashregister, HobexReceipt, Receipt, ReportMonth, StripeUrlSession } from '../models/index.js'; import { type CreateStripeLinkOptions, type StripeCaptureResult } from '../payments/stripe.js'; import { type HobexPayOptions, type HobexRefundOptions } from '../payments/hobex.js'; import { type TransportOptions } from './transport.js'; import { type CashregisterReportPeriod, type ReportV2, type ReportV2Options } from './reports.js'; import { type CashboxStatus, type SignatureStatus } from './status.js'; import { type ListedReceipt, type ListReceiptsOptions, type ListReceiptsPage, type ListReceiptsView } from './list-receipts.js'; import { type SendReceiptEmailOptions, type SendReceiptEmailResult, type LogReceiptOutputsOptions, type LogReceiptOutputsResult, type ListMyReceiptsOptions, type ReceiptList, type ReceiptWithCompany, type SellReceiptOptions, type CancelReceiptOptions, type CancelReceiptResult } from './receipts.js'; /** * Schlichte Factory ueber den Endpunkt-Funktionen: bindet einen Transport * einmal und liefert die Aufrufe ohne den wiederkehrenden ersten Parameter. * Bewusst **keine** Klasse und keine Vererbung — die Aufrufe sind freie * Funktionen (siehe receipts.ts) und bleiben einzeln importierbar; wer sie * lieber einzeln nimmt, verliert nichts. * * Hier stehen **alle** Endpunkt-Aufrufe des Pakets: Belege, Berichte, Status, * Zahlungen und die beiden Sitzungs-Aufrufe der Browser-Kasse. Was kein * Endpunkt-Aufruf ist (Druck, Beleg-Darstellung), gehoert nicht hierher. Der * Grund fuer die Vollstaendigkeit ist der Zweck der Fassade: ein **einziger** * Konstruktionsweg je Anmeldung. Fehlte eine Endpunkt-Familie, muesste ein * Aufrufer fuer sie zusaetzlich [createTransport] mit denselben Optionen bauen * und haette zwei Wege fuer dieselbe Anmeldung nebeneinander. * * **Eine Ausnahme, und sie folgt aus genau diesem Grund:** Kopplung, * Benutzerliste des Geraets und PIN-Anmeldung (`@kreiseck/kasseneck-api/register`) * stehen **nicht** hier. Diese Fassade wird mit einer Anmeldung gebaut, jene * drei laufen aber, **bevor** es eine gibt. Stuenden sie darin, sagte die * Fassade eine Anmeldung zu, die fuer sie nicht gilt: ein Aufrufer riefe * `pairRegisterDevice` an einer mit `apiKeyAuth` gebauten Fassade und glaubte, * der Schluessel haette dabei etwas zu sagen. Sie bringen ihre * Verbindungsangaben stattdessen selbst mit. */ export interface KasseneckApi { /** Normalbeleg (Verkauf). */ sellReceipt(options: SellReceiptOptions): Promise; /** Normalbeleg samt Firmen-/Druckdaten fuer den Belegdruck. */ sellReceiptWithCompany(options: SellReceiptOptions): Promise; /** Storno eines bestehenden Belegs — voll oder in Teilen, ueber den Storno-Endpunkt. */ cancelReceipt(options: CancelReceiptOptions): Promise; /** Nullbeleg (RKSV-Pruefbeleg). */ zeroReceipt(): Promise; /** Einzelnen Beleg holen. */ getReceipt(receiptId: string): Promise; /** Einzelnen Beleg samt Firmen-/Druckdaten holen. */ getReceiptWithCompany(receiptId: string): Promise; /** Verschluesselte Volltext-Belegnummer erzeugen. */ generateFullReceiptId(receiptId: string): Promise; /** Berichtsmonat des ersten Belegs (nicht fuer den Kassen-Benutzer-Weg). */ getFirstReceiptDate(): Promise; /** Beleg als Link auf die oeffentliche Belegseite per E-Mail schicken. */ sendReceiptEmail(options: SendReceiptEmailOptions): Promise; /** Drucke und Teilen eines Belegs an das Protokoll „Ausgaben“ melden (nur Kassenweg). */ logReceiptOutputs(options: LogReceiptOutputsOptions): Promise; /** Belegliste einer Kasse samt Kennzahlen (nur mit ID-Token, siehe receipts.ts). */ listMyReceipts(options: ListMyReceiptsOptions): Promise; /** Kassen des angemeldeten Benutzers (nur mit ID-Token, siehe cashregisters.ts). */ listMyCashregisters(): Promise; /** Rohdaten eines Zeitraums: Belege und Firmendaten (`getReportV2`). */ getReportV2(options: ReportV2Options): Promise; /** Eine Seite Belege eines Tages oder Zeitraums (`listReceipts`, hoechstens 31 Tage, blaetterbar). */ listReceipts(options: ListReceiptsOptions): Promise>; /** Alle Belege eines Tages oder Zeitraums, Seite fuer Seite geholt (hoechstens 100 Seiten). */ listAllReceipts(options: ListReceiptsOptions): AsyncGenerator, void, undefined>; /** Kassenbericht als PDF (v2): abgeschlossener Monat, Tag oder Zeitraum (Endpunkt `getCashregisterReport`). */ getCashregisterReport(options: CashregisterReportPeriod): Promise; /** @deprecated Since 1.10.0: use getCashregisterReport. Tagesbericht als PDF (Kalendertag nach Wiener Zeit). */ downloadDailyReport(date: Date): Promise; /** @deprecated Since 1.10.0: use getCashregisterReport. Monatsbericht als PDF (Endpunkt `downloadReport`). */ downloadMonthlyReport(reportMonth: ReportMonth): Promise; /** Betriebsstatus der Kasse bei FinanzOnline. */ getCashboxStatus(): Promise; /** Status der Signatureinheit bei FinanzOnline. */ getSignatureStatus(certificateSerialHex: string): Promise; /** Stripe-Zahlungslink erzeugen (Endpunkt `createPaymentLinkStripe`). */ createStripeLink(options: CreateStripeLinkOptions): Promise; /** Reservierte Stripe-Zahlung einziehen. */ stripeCaptureIntent(stripeSessionId: string): Promise; /** Karte ueber die Hobex-Cloud belasten. */ hobexPay(options: HobexPayOptions): Promise; /** Hobex-Cloud-Zahlung erstatten (ohne Rueckgabewert, siehe payments/hobex.ts). */ hobexRefund(options: HobexRefundOptions): Promise; /** Kassen-Sitzung verlaengern; liefert den neuen Ablauf (nur Kassen-Benutzer). */ renewRegisterSession(): Promise; /** Kassen-Sitzung beenden und den Lizenzplatz freigeben (nur Kassen-Benutzer). */ endRegisterSession(): Promise; } export declare function createKasseneckApi(options: TransportOptions): KasseneckApi;