@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
text/typescript
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