import { KasseneckApiError } from '../client/errors.js'; /** * Mehrere Zahlungen je Beleg: Fehlercodes unter `/v3` (Vokabular * `errorCodes.payments`, gleiche Codes, gleiche Reihenfolge). * * `createReceipt` und `cancelReceipt` legen sie bei jedem Fehler rund um * `payments` als `code` neben die Meldung; das Paket reicht sie als * [KasseneckApiError.code] durch. **Entscheide am Code, nie am Text:** die * deutsche Meldung darf sich aendern, der Code nicht. * * `payments_sum_mismatch` traegt den Zahlbetrag des Servers in * `details.expectedCents` (siehe [paymentsExpectedCents]). Der Fehler * verbraucht keine Belegnummer; das Paket wiederholt trotzdem nie selbst, * denn eine Kartenzahlung ist schon belastet. * * Dahinter (ab 1.0) die Codes, die Anmeldung und Rand auf diesem Endpunkt * erzeugen koennen: `errorCodes.auth` ohne die sieben des Partner-Zugangs und * `errorCodes.edge` (`not_found`, `dialect_mismatch`, `response_translation_failed` * ...) und zuletzt `route_missing` (Code des Pakets). Ein Code ausserhalb * bleibt ueber `KasseneckApiError.code` lesbar. */ export declare const PAYMENT_ERROR_CODES: readonly ["payments_invalid", "payment_method_invalid", "payment_amount_invalid", "payment_tendered_invalid", "payment_provider_invalid", "payment_provider_not_allowed", "payments_sum_mismatch", "payments_due_negative", "payments_not_allowed", "payments_conflict", "payments_required", "payment_method_not_supported", "tip_payment_method_invalid", "tip_payment_method_required", "tip_exceeds_payment", "payment_refund_not_allowed", "payment_tip_invalid", "tip_conflict", "account_not_found", "action_confirmation_required", "admin_required", "api_not_approved", "app_check_invalid", "app_check_missing", "cashregister_not_assigned", "cashregister_not_found", "cashregister_token_invalid", "cashregister_token_missing", "dialect_mismatch", "internal_translation_error", "live_not_enabled", "method_not_allowed", "mfa_required", "not_found", "password_change_required", "register_user_no_business", "register_user_not_allowed", "register_user_not_found", "response_translation_failed", "second_factor_required", "session_expired", "session_other_cashregister", "unauthorized", "user_disabled", "user_verification_failed", "validation", "route_missing"]; export type PaymentErrorCode = (typeof PAYMENT_ERROR_CODES)[number]; /** Erkennt einen Code aus [PAYMENT_ERROR_CODES], exakt (klein, wie unter `/v3`). */ export declare function isPaymentErrorCode(value: unknown): value is PaymentErrorCode; /** Der Code eines geworfenen Fehlers, wenn er in [PAYMENT_ERROR_CODES] steht; sonst `undefined`. */ export declare function paymentErrorCode(error: unknown): PaymentErrorCode | undefined; /** * Kurzform fuer `catch (e) { if (isPaymentError(e, 'payments_sum_mismatch')) … }`. * Ohne `code`: traegt der Fehler ueberhaupt einen Code aus [PAYMENT_ERROR_CODES]? */ export declare function isPaymentError(error: unknown, code?: PaymentErrorCode): error is KasseneckApiError; /** Ein Feldfehler aus `data.errors[]` einer `validation`-Antwort von `payments[]`. */ export interface PaymentFieldError { field: string; message: string; } /** Die Feldfehler einer `validation`-Antwort; leer, wenn es keine sind. */ export declare function paymentFieldErrors(error: unknown): PaymentFieldError[];