/** * Fassade ueber den Partner-Aufrufen: Schluessel einmal binden, dann rufen. * * Wie [createKasseneckApi] bewusst **keine** Klasse — die Aufrufe sind freie * Funktionen und bleiben einzeln importierbar. */ import { type FetchLike } from '../client/transport.js'; import { type CreateWebhookOptions, type CreateWebhookResult, type DeleteWebhookResult, type PartnerWebhook, type WebhookList, type PartnerWebhookEventType, type WebhookPatch, type WebhookTestResult, type WebhookDelivery } from './webhooks.js'; import type { ActivateCashregisterResult, CreateCashregisterOptions, CreateCashregisterResult, CreateCustomerOptions, CreateCustomerResult, CustomerCredentials, FonLinkResult, CustomerCashregisterList, PartnerCustomer, PartnerCustomerList, ListCustomersOptions, PartnerInfo, ReportCustomerContractOptions, ReportCustomerContractResult, RequestSignatureOptions, RequestSignatureResult, CustomerSignatureStatus } from './typen.js'; /** * Die Basis-URL der Partner-API: `/v3`, die englische Fassung, dieselbe wie * [DEFAULT_BASE_URL]. Die 1.x-Linie spricht nur noch `/v3`; die * Partner-Endpunkte unter `/v1` antworten weiter, deutsch und abgekuendigt * (Kopfzeilen `Deprecation`/`Sunset`), dieser Client spricht sie nicht. */ export declare const PARTNER_BASE_URL = "https://api.kasseneck.at/v3"; export interface PartnerApiOptions { /** Partner-Schluessel `pk_test_…` / `pk_live_…`. Gehoert auf einen Server. */ partnerKey: string; /** * Abweichende Basis-URL; Vorgabe [PARTNER_BASE_URL] * (`https://api.kasseneck.at/v3`). Die Antworten werden in der Form der * `/v3` gelesen: eine `/v1`-Adresse hier liefert deutsche Werte, die diese * Typen nicht beschreiben. */ baseUrl?: string; /** Zeitlimit je Aufruf in Millisekunden. */ timeoutMs?: number; /** Eigene `fetch`-Umsetzung (Tests, Proxys). */ fetch?: FetchLike; } export interface PartnerApi { getPartnerInfo(): Promise; createPartnerCustomer(options: CreateCustomerOptions): Promise; listPartnerCustomers(options?: ListCustomersOptions): Promise; getPartnerCustomer(customerId: string): Promise; sendPartnerCustomerFonLink(customerId: string): Promise; requestCustomerSignature(customerId: string, options?: RequestSignatureOptions): Promise; getCustomerSignatureStatus(customerId: string): Promise; createCustomerCashregister(options: CreateCashregisterOptions): Promise; activateCashregister(customerId: string, cashregisterId: string): Promise; listCustomerCashregisters(customerId: string): Promise; /** Geheimnisse des Betriebs — siehe `getCustomerCredentials` in endpunkte.ts. */ getCustomerCredentials(customerId: string): Promise; /** * Ist diese Adresse als Kasseneck-Zugang noch frei? Nur noetig, wenn der * Betrieb einen eigenen Login bekommen soll — sonst faellt `email_taken` * erst nach dem ganzen Formular auf. */ checkPartnerCustomerEmail(email: string): Promise; /** * Meldet eine in Vollmacht eingeholte Zustimmung des Betriebs (nur AVV); * siehe `reportCustomerContract` in endpunkte.ts. */ reportCustomerContract(options: ReportCustomerContractOptions): Promise; createPartnerWebhook(options: CreateWebhookOptions): Promise; listPartnerWebhooks(): Promise; updatePartnerWebhook(webhookId: string, patch: WebhookPatch): Promise; deletePartnerWebhook(webhookId: string): Promise; /** * Neues Secret fuer denselben Endpunkt — dieselbe `webhookId`, dieselben * Ereignisse. Das alte gilt ab der Antwort nicht mehr. */ rotatePartnerWebhookSecret(webhookId: string): Promise; /** * Eine Probe an einen Endpunkt — ohne `event` die Leitungsprobe * `webhook.test`, mit `event` genau der Fall, den der Empfaenger behandeln * soll. Jede Probe traegt `test: true` im Umschlag. */ sendPartnerWebhookTest(webhookId: string, event?: PartnerWebhookEventType | (string & {})): Promise; listPartnerWebhookDeliveries(options?: { webhookId?: string; limit?: number; }): Promise; /** * Der Handlungssatz zu einem beliebigen Fehlercode der Partner-API. Gehoert * in die eigene Fehlermeldung, damit ein Anwender nicht in der Doku * nachschlagen muss. Fuer einen unbekannten Code kommt ein Rueckfallsatz, * nie `undefined` und nie ein Wurf. */ errorAdvice(code: string): string; } export declare function createPartnerApi(options: PartnerApiOptions): PartnerApi;