UNPKG

@liberquack/utils

Version:
52 lines (51 loc) 2.38 kB
import type { PaymentCalculatedCheckout, PaymentCheckoutExecution, PaymentPartialCheckout, PaymentProviderData, PaymentUserData } from "./types.js"; import type { AbstractPaymentClientProvider, ProviderClientProviderData } from "./client-providers/abstract-payment-client-provider.js"; import type { Narrow } from "../utils.js"; declare type NarrowedCalculetedCheckout<P extends AbstractPaymentClientProvider = any, PN extends P["provider"] = any> = Narrow<PaymentCalculatedCheckout, { provider: PN; externalData: Narrow<PaymentProviderData, { provider: PN; data: ProviderClientProviderData<Extract<P, { provider: PN; }>>; }>; }>; /** * PaymentClient is the class for executing the checkout on front-end */ export declare abstract class AbstractPaymentClient<P extends AbstractPaymentClientProvider = any> { private inited; providers: P[]; providersInitializers: (() => P)[]; constructor(providers: (() => P)[]); init(): void; buildUi<PN extends P["provider"]>(calculatedCheckout: NarrowedCalculetedCheckout<P, PN>, opts: Parameters<Extract<P, { provider: PN; }>["buildUi"]>[1] & { onSuccess: (checkout: PaymentCheckoutExecution) => void; onError: (err: Error, checkout?: PaymentCheckoutExecution) => void; }): Promise<HTMLElement>; calculateCheckout<PN extends P["provider"]>(checkout: Narrow<PaymentPartialCheckout, { provider: PN; }>): Promise<NarrowedCalculetedCheckout<P, PN>>; checkout(checkout: PaymentCalculatedCheckout): Promise<PaymentCheckoutExecution>; private getProvider; private checkInited; cancelCheckout(checkout: PaymentCheckoutExecution, reason: string): Promise<PaymentUserData>; /** * Here you should send the checkout to the server * * @param checkout */ protected abstract sendCheckout(checkout: PaymentCalculatedCheckout): Promise<PaymentCheckoutExecution>; /** * Implement this method and send your partial checkout to the server, * then you will have ensured prices from your api * * @param checkout * @protected */ protected abstract sendCalculateCheckout(checkout: PaymentPartialCheckout): Promise<PaymentCalculatedCheckout>; protected abstract sendCancelCheckout(checkout: PaymentCheckoutExecution): Promise<PaymentUserData>; } export {};