import { StripeLinkMode, type StripeLinkModeKey } from '../enums/index.js'; import { type ReceiptItem, type StripeUrlSession } from '../models/index.js'; import type { InternerTransport } from '../client/aufrufe.js'; export interface CreateStripeLinkOptions { /** Positionen des Zahlungslinks; mindestens eine, alle gueltig. */ items: ReceiptItem[]; /** Soll das Backend nach bezahltem Link selbsttaetig einen Beleg erzeugen? */ createReceiptAfterPayment: boolean; /** Sofort einziehen (`payment`) oder nur reservieren (`authorization`). */ mode: StripeLinkMode | StripeLinkModeKey; /** Eigener Bezeichner fuer den Zahlungs-Webhook des Aufrufers. */ webhookId?: string; /** Telefonnummer des Gasts (landet in den Stripe-Metadaten). */ customerPhone?: string; /** E-Mail des Gasts (Stripe schickt die Zahlungsbestaetigung dorthin). */ customerEmail?: string; } /** * Ergebnis von [stripeCaptureIntent] — das eingezogene Zahlungsversprechen * (Stripe PaymentIntent), **nicht** noch einmal die Zahlungslink-Sitzung. * * Das ist eine bewusste Abweichung vom Dart-Vorbild: dort steht * `StripeUrlSession.fromJson(resJson['data'])`, das Backend antwortet an dieser * Stelle aber mit `{id, status, amount_received, currency}` (successResponse in * functions/payment-endpoints.js). Weder `url` noch `shorten_payment_url` noch * `expires_at` sind darin — die Sitzungs-Lesart kann hier gar nicht gelingen. */ export interface StripeCaptureResult { /** Bezeichner des PaymentIntent (`pi_…`), nicht der der Sitzung (`cs_…`). */ id: string; /** Stripe-Status des Einzugs, z. B. `succeeded`. */ status: string; /** * Tatsaechlich eingezogener Betrag in Cent. Stripe fuehrt Betraege in der * kleinsten Waehrungseinheit; der Name unterstellt damit eine * zweistellige Waehrung. Fuer diese Anlage stimmt das — das Backend legt * `currency: 'eur'` fest (functions/payment-endpoints.js). Bei einer * nullstelligen Waehrung (JPY) waere „Cent" der falsche Name; dann gehoert * die Einheit aus `currency` abgeleitet und nicht in den Feldnamen. */ amountReceivedCents: number; /** Waehrungscode, wie Stripe ihn fuehrt (klein geschrieben, z. B. `eur`). */ currency: string; } /** * Erzeugt einen Stripe-Zahlungslink fuer [items] (Fernzahlung: Link per * Nachricht, QR-Code oder Kurzlink). * * **Der Endpunkt heisst `createPaymentLinkStripe`**, nicht wie diese Funktion — * Methodenname und Endpunktname fallen wie schon beim Monatsbericht * auseinander (siehe client/reports.ts). */ export declare function createStripeLink(transport: InternerTransport, options: CreateStripeLinkOptions): Promise; /** * Zieht die zuvor nur reservierte Zahlung einer `authorization`-Sitzung ein. * * **Der Parameter heisst `stripe_sessions_id`** — mit "sessions" im Plural, so * das Vorbild und so das Backend. Der naheliegende Singular waere ein fehlender * Pflichtparameter. * * **Nie wiederholen.** Bei `isOutcomeUnknown(e)` (Netz, Zeitlimit, HTTP 5xx, * unlesbare Antwort, Fehlerhuelle ohne Code oder mit einem Code ausserhalb * der Ablehnungscodes, README `outcome`) kann der Einzug gelaufen sein: den Stand * nachlesen. */ export declare function stripeCaptureIntent(transport: InternerTransport, stripeSessionId: string): Promise;