UNPKG

@alexasomba/paystack-inline

Version:

A strongly-typed, Promise-based TypeScript wrapper for Paystack Popup (inline.js).

125 lines • 3.9 kB
//#region src/index.d.ts export interface PaystackPopGeneralOptions { key: string; amount: number; email: string; currency?: string; ref?: string; reference?: string; firstName?: string; firstname?: string; lastName?: string; lastname?: string; phone?: string; customerCode?: string; customer_code?: string; channels?: string[]; card?: boolean | string; bank?: boolean | string; paymentRequest?: string | number; payment_request?: string | number; paymentPage?: string | number; payment_page?: string | number; metadata?: Record<string, unknown>; label?: string; hash?: string; order_id?: string | number; transaction_type?: string; language?: string; connect_account?: string; } export interface PaystackPopCallbacks { onError?: (error: { message: string; }) => void; onCancel?: () => void; onLoad?: (response: { id: number; customer: unknown; accessCode: string; }) => void; onSuccess?: (response: { id: number; reference: string; message: string; }) => void; onClose?: () => void; callback?: (response: unknown) => void; onBankTransferConfirmationPending?: () => void; } export interface PaystackPopSplitOptions { subaccountCode?: string; subaccount?: string; split_code?: string; split?: Record<string, unknown>; connect_split?: string[]; bearer?: "account" | "subaccount"; transactionCharge?: string | number; transaction_charge?: string | number; } export interface PaystackPopSubscriptionOptions { planCode?: string; plan?: string; subscriptionCount?: number; quantity?: number; planInterval?: "hourly" | "daily" | "weekly" | "monthly" | "annually"; interval?: "hourly" | "daily" | "weekly" | "monthly" | "annually"; subscriptionLimit?: number | string; invoice_limit?: number | string; subscriptionStartDate?: string; start_date?: string; subscription?: string | number; } export interface PaystackPopNewTransactionOptions extends PaystackPopGeneralOptions, PaystackPopCallbacks, PaystackPopSplitOptions, PaystackPopSubscriptionOptions {} export interface PaystackPopCheckoutOptions extends PaystackPopNewTransactionOptions {} export interface PaystackPopPaymentRequestOptions extends PaystackPopNewTransactionOptions { container: string; loadPaystackCheckoutButton?: string; styles?: { theme?: "dark" | "light"; applePay?: { width?: string; height?: string; borderRadius?: string; type?: "plain" | "buy" | "donate"; locale?: string; }; }; onElementsMount?: (elements: unknown) => void; } export interface PopupTransactionStatus { status: "null" | "error" | "abandoned" | "auth" | "failed" | "success" | "pending"; id?: string; errors?: unknown[]; response?: unknown; checkoutUrl?: string; } export interface PopupTransaction { id: string; backgroundDiv: HTMLElement; checkoutIframe: HTMLElement; preCheckoutModal: HTMLElement | null; paymentRequestContainer: HTMLElement | null; getStatus(): PopupTransactionStatus; } export interface PaystackPopInstance { newTransaction(options: PaystackPopNewTransactionOptions): PopupTransaction; resumeTransaction(accessCode: string, callbacks?: PaystackPopCallbacks): PopupTransaction; cancelTransaction(idOrTransaction: string | PopupTransaction): void; preloadTransaction(options: PaystackPopNewTransactionOptions): () => void; checkout(options: PaystackPopCheckoutOptions): Promise<PopupTransaction>; paymentRequest(options: PaystackPopPaymentRequestOptions): Promise<PopupTransaction>; } declare global { interface Window { PaystackPop?: { new (): PaystackPopInstance; isLoaded(): boolean; }; } } /** * Dynamically loads the Paystack Popup script (inline.js) and returns the constructor class. */ export declare function loadPaystack(): Promise<NonNullable<Window["PaystackPop"]>>; //#endregion