UNPKG

@alexasomba/better-auth-paystack

Version:

Production-ready Paystack billing plugin for Better Auth. Supports subscriptions, one-time payments, organization billing, secure webhooks and more

151 lines 5.66 kB
import { A as PaystackPlan, C as parsePaystackMetadata, D as PaystackClientLike, F as Subscription, N as PaystackTransaction, O as PaystackInitializeResult, P as PaystackTransactionResponse, T as AnyPaystackOptions, h as PaystackMetadata, j as PaystackProduct, n as paystack$1 } from "./index-ZqRgI9wR.mjs"; import { BetterFetch, BetterFetchOption, BetterFetchResponse } from "@better-fetch/fetch"; import { BetterAuthClientPlugin } from "better-auth/client"; //#region src/client.d.ts /** * Helper type to handle the conditional return type based on 'throw' option. */ type FetchResult<T, O extends BetterFetchOption | undefined> = O extends { throw: true; } ? T : BetterFetchResponse<T>; /** * Paystack Client Action Definitions */ interface PaystackActions { /** * Initialize a transaction. */ initializeTransaction: <O extends BetterFetchOption | undefined = undefined>(data: Record<string, unknown> & { callbackUrl?: string; callbackURL?: string; product?: string; referenceId?: string; }, options?: O) => Promise<FetchResult<PaystackInitializeResult, O>>; /** * Verify a transaction by reference. */ verifyTransaction: <O extends BetterFetchOption | undefined = undefined>(data: { reference: string; }, options?: O) => Promise<FetchResult<{ status: string; reference: string; data: PaystackTransactionResponse; }, O>>; /** * List transactions for the current user/reference. */ listTransactions: <O extends BetterFetchOption | undefined = undefined>(data?: { query?: Record<string, unknown>; }, options?: O) => Promise<FetchResult<{ transactions: PaystackTransaction[]; }, O>>; /** * List subscriptions for the current user/reference. */ listSubscriptions: <O extends BetterFetchOption | undefined = undefined>(data?: { query?: Record<string, unknown>; }, options?: O) => Promise<FetchResult<{ subscriptions: Subscription[]; }, O>>; /** * Get a manage link/billing portal link for a subscription. */ getSubscriptionManageLink: <O extends BetterFetchOption | undefined = undefined>(data: { subscriptionCode: string; }, options?: O) => Promise<FetchResult<{ link: string; }, O>>; /** * Get the plugin configuration (plans and products). */ config: () => Promise<BetterFetchResponse<Record<string, unknown>>>; /** * List available products. */ listProducts: <O extends BetterFetchOption | undefined = undefined>(options?: O) => Promise<FetchResult<{ products: PaystackProduct[]; }, O>>; /** * List available plans. */ listPlans: <O extends BetterFetchOption | undefined = undefined>(options?: O) => Promise<FetchResult<{ plans: PaystackPlan[]; }, O>>; } /** * Paystack Client Plugin Actions including namespaces */ interface PaystackClientActions extends PaystackActions { transaction: { initialize: PaystackActions["initializeTransaction"]; verify: PaystackActions["verifyTransaction"]; list: PaystackActions["listTransactions"]; }; subscription: { upgrade: PaystackActions["initializeTransaction"]; create: PaystackActions["initializeTransaction"]; cancel: <O extends BetterFetchOption | undefined = undefined>(data: { subscriptionCode: string; emailToken?: string; atPeriodEnd?: boolean; }, options?: O) => Promise<FetchResult<{ status: string; }, O>>; restore: <O extends BetterFetchOption | undefined = undefined>(data: { subscriptionCode: string; emailToken?: string; }, options?: O) => Promise<FetchResult<{ status: string; }, O>>; list: PaystackActions["listSubscriptions"]; billingPortal: PaystackActions["getSubscriptionManageLink"]; manageLink: PaystackActions["getSubscriptionManageLink"]; /** * @deprecated Use `subscription.cancel` instead. */ disable: PaystackClientActions["subscription"]["cancel"]; /** * @deprecated Use `subscription.restore` instead. */ enable: PaystackClientActions["subscription"]["restore"]; }; paystack: PaystackClientActions; } declare module "better-auth/client" { interface BetterAuthClient { paystack: PaystackClientActions; subscription: PaystackClientActions["subscription"]; transaction: PaystackClientActions["transaction"]; } } declare module "better-auth" { interface BetterAuthClientPlugins { paystack: ReturnType<typeof paystackClient>; } } /** * The concrete shape returned by {@link paystackClient}. * * `id` and `$InferServerPlugin` are deliberately narrower than the * `BetterAuthClientPlugin` defaults: Better Auth keys its plugin merge on the *literal* * plugin id and reads the server plugin's endpoints off `$InferServerPlugin`. Widening * either one (e.g. by annotating this function as returning plain * `BetterAuthClientPlugin`) collapses the entire inferred auth client to `never`. */ type PaystackClientPluginInstance = Omit<BetterAuthClientPlugin, "id" | "$InferServerPlugin" | "getActions"> & { id: "paystack"; $InferServerPlugin: ReturnType<typeof paystack$1<PaystackClientLike, AnyPaystackOptions>>; getActions: ($fetch: BetterFetch, $store: unknown, options: unknown) => PaystackClientActions; }; /** * Better Auth Paystack Client Plugin */ declare const paystackClient: <O extends { subscription?: boolean; } = { subscription?: boolean; }>(_options?: O) => PaystackClientPluginInstance; declare const paystack: typeof paystackClient; //#endregion export { FetchResult, PaystackActions, PaystackClientActions, type PaystackMetadata, parsePaystackMetadata, paystack, paystackClient }; //# sourceMappingURL=client.d.mts.map