@alexasomba/better-auth-paystack 2.2.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -15,6 +15,17 @@ A TypeScript-first plugin that integrates Paystack into [Better Auth](https://ww
15
15
 
16
16
  [**Live Demo (Tanstack Start)**](https://better-auth-paystack.gittech.workers.dev) | [**Source Code**](https://github.com/alexasomba/better-auth-paystack/tree/main/examples/tanstack)
17
17
 
18
+ ## AI Agent Skills
19
+
20
+ This package publishes [TanStack Intent](https://www.npmjs.com/package/@tanstack/intent) skills so AI coding agents can load package-specific guidance for setup, subscriptions, organization billing, and TanStack Start integration.
21
+
22
+ ```bash
23
+ npx @tanstack/intent@latest list
24
+ npx @tanstack/intent@latest load @alexasomba/better-auth-paystack#setup
25
+ ```
26
+
27
+ If you use an AI agent, run `npx @tanstack/intent@latest install` in your project so the agent knows how to discover package skills.
28
+
18
29
  ## Features
19
30
 
20
31
  - [x] **Billing Patterns**: Support for Paystack-native plans, local-managed subscriptions, and one-time payments (products/amounts).
@@ -115,10 +126,7 @@ import { paystackClient } from "@alexasomba/better-auth-paystack/client";
115
126
  import { adminClient } from "better-auth/client/plugins";
116
127
 
117
128
  export const client = createAuthClient({
118
- plugins: [
119
- adminClient(),
120
- paystackClient({ subscription: true })
121
- ],
129
+ plugins: [adminClient(), paystackClient({ subscription: true })],
122
130
  });
123
131
  ```
124
132
 
@@ -431,7 +439,16 @@ paystack({
431
439
 
432
440
  ## Client SDK Reference
433
441
 
434
- The client plugin exposes fully typed methods under `authClient.paystack` and `authClient.subscription`.
442
+ The client plugin exposes fully typed canonical methods under `authClient.paystack`, `authClient.transaction`, and `authClient.subscription`.
443
+
444
+ - `authClient.transaction.initialize`, `verify`, `list`
445
+ - `authClient.subscription.create`, `upgrade`, `cancel`, `restore`, `list`, `billingPortal`
446
+ - `authClient.paystack.config`, `listProducts`, `listPlans`, plus the transaction/subscription helpers above
447
+
448
+ Deprecated compatibility aliases remain available in `2.x` and are planned for removal in the clean `3.0.0` release:
449
+
450
+ - `authClient.subscription.disable(...)` -> use `authClient.subscription.cancel(...)`
451
+ - `authClient.subscription.enable(...)` -> use `authClient.subscription.restore(...)`
435
452
 
436
453
  ### `authClient.subscription.upgrade` / `create`
437
454
 
@@ -504,7 +521,7 @@ type initializeTransaction = {
504
521
 
505
522
  ### `authClient.subscription.list`
506
523
 
507
- List subscriptions for a user or organization.
524
+ List subscriptions for a user or organization. Organization-scoped billing actions require an owner/admin membership by default. To allow other roles or custom resources, configure `subscription.authorizeReference`.
508
525
 
509
526
  ```ts
510
527
  type listSubscriptions = {
package/dist/client.d.mts CHANGED
@@ -1,6 +1,6 @@
1
- import { d as Subscription, l as PaystackTransaction, o as PaystackPlan, s as PaystackProduct, u as PaystackTransactionResponse } from "./types-B5ZnlFrq.mjs";
2
- import { BetterAuthClientPlugin } from "better-auth";
1
+ import { d as Subscription, l as PaystackTransaction, o as PaystackPlan, s as PaystackProduct, u as PaystackTransactionResponse } from "./types-CNI2ur0p.mjs";
3
2
  import { BetterFetch, BetterFetchOption, BetterFetchResponse } from "@better-fetch/fetch";
3
+ import { BetterAuthClientPlugin } from "better-auth/client";
4
4
 
5
5
  //#region src/client.d.ts
6
6
  /**
@@ -106,7 +106,13 @@ interface PaystackClientActions extends PaystackActions {
106
106
  list: PaystackActions["listSubscriptions"];
107
107
  billingPortal: PaystackActions["getSubscriptionManageLink"];
108
108
  manageLink: PaystackActions["getSubscriptionManageLink"];
109
+ /**
110
+ * @deprecated Use `subscription.cancel` instead.
111
+ */
109
112
  disable: PaystackClientActions["subscription"]["cancel"];
113
+ /**
114
+ * @deprecated Use `subscription.restore` instead.
115
+ */
110
116
  enable: PaystackClientActions["subscription"]["restore"];
111
117
  };
112
118
  paystack: PaystackClientActions;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.mts","names":[],"sources":["../src/client.ts"],"mappings":"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"}
1
+ {"version":3,"file":"client.d.mts","names":[],"sources":["../src/client.ts"],"mappings":"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"}
package/dist/client.mjs CHANGED
@@ -1,3 +1,4 @@
1
+ import { t as PACKAGE_VERSION } from "./version-DpVME9MV.mjs";
1
2
  //#region src/client.ts
2
3
  /**
3
4
  * Better Auth Paystack Client Plugin
@@ -5,60 +6,70 @@
5
6
  const paystackClient = (_options) => {
6
7
  return {
7
8
  id: "paystack",
8
- version: "2.1.1",
9
+ version: PACKAGE_VERSION,
9
10
  $InferServerPlugin: {},
11
+ pathMethods: {
12
+ "/paystack/initialize-transaction": "POST",
13
+ "/paystack/verify-transaction": "POST",
14
+ "/paystack/disable-subscription": "POST",
15
+ "/paystack/enable-subscription": "POST",
16
+ "/paystack/create-subscription": "POST",
17
+ "/paystack/upgrade-subscription": "POST",
18
+ "/paystack/cancel-subscription": "POST",
19
+ "/paystack/restore-subscription": "POST"
20
+ },
10
21
  getActions: ($fetch, _store, _options) => {
11
22
  const fetch = $fetch;
12
23
  const actions = {
13
24
  transaction: {
14
- initialize: (data, options) => fetch("paystack/initialize-transaction", {
25
+ initialize: (data, options) => fetch("/paystack/initialize-transaction", {
15
26
  method: "POST",
16
27
  body: data,
17
28
  ...options
18
29
  }),
19
- verify: (data, options) => fetch("paystack/verify-transaction", {
30
+ verify: (data, options) => fetch("/paystack/verify-transaction", {
20
31
  method: "POST",
21
32
  body: data,
22
33
  ...options
23
34
  }),
24
- list: (data, options) => fetch("paystack/list-transactions", {
35
+ list: (data, options) => fetch("/paystack/list-transactions", {
25
36
  method: "GET",
26
37
  query: data?.query,
27
38
  ...options
28
39
  })
29
40
  },
30
41
  subscription: {
31
- upgrade: (data, options) => fetch("paystack/initialize-transaction", {
42
+ upgrade: (data, options) => fetch("/paystack/initialize-transaction", {
32
43
  method: "POST",
33
44
  body: data,
34
45
  ...options
35
46
  }),
36
- create: (data, options) => fetch("paystack/initialize-transaction", {
47
+ create: (data, options) => fetch("/paystack/initialize-transaction", {
37
48
  method: "POST",
38
49
  body: data,
39
50
  ...options
40
51
  }),
41
- cancel: (data, options) => fetch("paystack/disable-subscription", {
52
+ cancel: (data, options) => fetch("/paystack/disable-subscription", {
42
53
  method: "POST",
43
54
  body: data,
44
55
  ...options
45
56
  }),
46
- restore: (data, options) => fetch("paystack/enable-subscription", {
57
+ restore: (data, options) => fetch("/paystack/enable-subscription", {
47
58
  method: "POST",
48
59
  body: data,
49
60
  ...options
50
61
  }),
51
- list: (data, options) => fetch("paystack/list-subscriptions", {
62
+ list: (data, options) => fetch("/paystack/list-subscriptions", {
52
63
  method: "GET",
53
64
  query: data?.query,
54
65
  ...options
55
66
  }),
56
- billingPortal: (data, options) => fetch("paystack/subscription-manage-link", {
67
+ billingPortal: (data, options) => fetch("/paystack/subscription-manage-link", {
57
68
  method: "GET",
58
69
  query: data,
59
70
  ...options
60
71
  }),
61
- manageLink: (data, options) => fetch("paystack/subscription-manage-link", {
72
+ manageLink: (data, options) => fetch("/paystack/subscription-manage-link", {
62
73
  method: "GET",
63
74
  query: data,
64
75
  ...options
@@ -70,37 +81,37 @@ const paystackClient = (_options) => {
70
81
  return this.restore(data, options);
71
82
  }
72
83
  },
73
- initializeTransaction: (data, options) => fetch("paystack/initialize-transaction", {
84
+ initializeTransaction: (data, options) => fetch("/paystack/initialize-transaction", {
74
85
  method: "POST",
75
86
  body: data,
76
87
  ...options
77
88
  }),
78
- verifyTransaction: (data, options) => fetch("paystack/verify-transaction", {
89
+ verifyTransaction: (data, options) => fetch("/paystack/verify-transaction", {
79
90
  method: "POST",
80
91
  body: data,
81
92
  ...options
82
93
  }),
83
- listTransactions: (data, options) => fetch("paystack/list-transactions", {
94
+ listTransactions: (data, options) => fetch("/paystack/list-transactions", {
84
95
  method: "GET",
85
96
  query: data?.query,
86
97
  ...options
87
98
  }),
88
- listSubscriptions: (data, options) => fetch("paystack/list-subscriptions", {
99
+ listSubscriptions: (data, options) => fetch("/paystack/list-subscriptions", {
89
100
  method: "GET",
90
101
  query: data?.query,
91
102
  ...options
92
103
  }),
93
- getSubscriptionManageLink: (data, options) => fetch("paystack/subscription-manage-link", {
104
+ getSubscriptionManageLink: (data, options) => fetch("/paystack/subscription-manage-link", {
94
105
  method: "GET",
95
106
  query: data,
96
107
  ...options
97
108
  }),
98
109
  config: () => fetch("/paystack/config", { method: "GET" }),
99
- listProducts: (options) => fetch("paystack/list-products", {
110
+ listProducts: (options) => fetch("/paystack/list-products", {
100
111
  method: "GET",
101
112
  ...options
102
113
  }),
103
- listPlans: (options) => fetch("paystack/list-plans", {
114
+ listPlans: (options) => fetch("/paystack/list-plans", {
104
115
  method: "GET",
105
116
  ...options
106
117
  }),
@@ -1 +1 @@
1
- {"version":3,"file":"client.mjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["import type { BetterAuthClientPlugin } from \"better-auth\";\nimport type { BetterFetchResponse, BetterFetchOption, BetterFetch } from \"@better-fetch/fetch\";\nimport type {\n PaystackPlan,\n PaystackProduct,\n PaystackTransaction,\n PaystackTransactionResponse,\n Subscription,\n PaystackClientLike,\n AnyPaystackOptions,\n} from \"./types\";\n\nimport type { paystack as paystackServer } from \"./index\";\n\n/**\n * Helper type to handle the conditional return type based on 'throw' option.\n */\nexport type FetchResult<T, O extends BetterFetchOption | undefined> = O extends { throw: true }\n ? T\n : BetterFetchResponse<T>;\n\n/**\n * Paystack Client Action Definitions\n */\nexport interface PaystackActions {\n /**\n * Initialize a transaction.\n */\n initializeTransaction: <O extends BetterFetchOption | undefined = undefined>(\n data: Record<string, unknown> & {\n callbackUrl?: string;\n callbackURL?: string;\n product?: string;\n referenceId?: string;\n },\n options?: O,\n ) => Promise<\n FetchResult<\n {\n url: string;\n reference: string;\n accessCode: string;\n redirect: boolean;\n },\n O\n >\n >;\n /**\n * Verify a transaction by reference.\n */\n verifyTransaction: <O extends BetterFetchOption | undefined = undefined>(\n data: { reference: string },\n options?: O,\n ) => Promise<\n FetchResult<\n {\n status: string;\n reference: string;\n data: PaystackTransactionResponse;\n },\n O\n >\n >;\n /**\n * List transactions for the current user/reference.\n */\n listTransactions: <O extends BetterFetchOption | undefined = undefined>(\n data?: { query?: Record<string, unknown> },\n options?: O,\n ) => Promise<FetchResult<{ transactions: PaystackTransaction[] }, O>>;\n /**\n * List subscriptions for the current user/reference.\n */\n listSubscriptions: <O extends BetterFetchOption | undefined = undefined>(\n data?: { query?: Record<string, unknown> },\n options?: O,\n ) => Promise<FetchResult<{ subscriptions: Subscription[] }, O>>;\n /**\n * Get a manage link/billing portal link for a subscription.\n */\n getSubscriptionManageLink: <O extends BetterFetchOption | undefined = undefined>(\n data: { subscriptionCode: string },\n options?: O,\n ) => Promise<FetchResult<{ link: string }, O>>;\n /**\n * Get the plugin configuration (plans and products).\n */\n config: () => Promise<BetterFetchResponse<Record<string, unknown>>>;\n /**\n * List available products.\n */\n listProducts: <O extends BetterFetchOption | undefined = undefined>(\n options?: O,\n ) => Promise<FetchResult<{ products: PaystackProduct[] }, O>>;\n /**\n * List available plans.\n */\n listPlans: <O extends BetterFetchOption | undefined = undefined>(\n options?: O,\n ) => Promise<FetchResult<{ plans: PaystackPlan[] }, O>>;\n}\n\n/**\n * Paystack Client Plugin Actions including namespaces\n */\nexport interface PaystackClientActions extends PaystackActions {\n transaction: {\n initialize: PaystackActions[\"initializeTransaction\"];\n verify: PaystackActions[\"verifyTransaction\"];\n list: PaystackActions[\"listTransactions\"];\n };\n subscription: {\n upgrade: PaystackActions[\"initializeTransaction\"];\n create: PaystackActions[\"initializeTransaction\"];\n cancel: <O extends BetterFetchOption | undefined = undefined>(\n data: {\n subscriptionCode: string;\n emailToken?: string;\n atPeriodEnd?: boolean;\n },\n options?: O,\n ) => Promise<FetchResult<{ status: string }, O>>;\n restore: <O extends BetterFetchOption | undefined = undefined>(\n data: {\n subscriptionCode: string;\n emailToken?: string;\n },\n options?: O,\n ) => Promise<FetchResult<{ status: string }, O>>;\n list: PaystackActions[\"listSubscriptions\"];\n billingPortal: PaystackActions[\"getSubscriptionManageLink\"];\n manageLink: PaystackActions[\"getSubscriptionManageLink\"];\n disable: PaystackClientActions[\"subscription\"][\"cancel\"];\n enable: PaystackClientActions[\"subscription\"][\"restore\"];\n };\n paystack: PaystackClientActions;\n}\n\ndeclare module \"better-auth/client\" {\n interface BetterAuthClient {\n paystack: PaystackClientActions;\n subscription: PaystackClientActions[\"subscription\"];\n transaction: PaystackClientActions[\"transaction\"];\n }\n}\n\ndeclare module \"better-auth\" {\n interface BetterAuthClientPlugins {\n paystack: ReturnType<typeof paystackClient>;\n }\n}\n\n/**\n * Better Auth Paystack Client Plugin\n */\nexport const paystackClient = <\n O extends {\n subscription?: boolean;\n } = { subscription?: boolean },\n>(\n _options?: O,\n): BetterAuthClientPlugin & {\n getActions: ($fetch: BetterFetch, $store: unknown, options: unknown) => PaystackClientActions;\n} => {\n return {\n id: \"paystack\",\n version: \"2.1.1\",\n $InferServerPlugin: {} as ReturnType<\n typeof paystackServer<PaystackClientLike, AnyPaystackOptions>\n >,\n getActions: (\n $fetch: BetterFetch,\n _store: unknown,\n _options: unknown,\n ): PaystackClientActions => {\n const fetch = $fetch;\n\n const actions = {\n transaction: {\n initialize: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n verify: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/verify-transaction\", { method: \"POST\", body: data, ...options }),\n list: (data?: { query?: Record<string, unknown> }, options?: BetterFetchOption) =>\n fetch(\"paystack/list-transactions\", { method: \"GET\", query: data?.query, ...options }),\n },\n subscription: {\n upgrade: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n create: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n cancel: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/disable-subscription\", { method: \"POST\", body: data, ...options }),\n restore: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/enable-subscription\", { method: \"POST\", body: data, ...options }),\n list: (data?: { query?: Record<string, unknown> }, options?: BetterFetchOption) =>\n fetch(\"paystack/list-subscriptions\", { method: \"GET\", query: data?.query, ...options }),\n billingPortal: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n manageLink: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n disable: function (data: unknown, options?: BetterFetchOption) {\n return this.cancel(data, options);\n },\n enable: function (data: unknown, options?: BetterFetchOption) {\n return this.restore(data, options);\n },\n },\n initializeTransaction: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n verifyTransaction: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/verify-transaction\", { method: \"POST\", body: data, ...options }),\n listTransactions: (\n data?: { query?: Record<string, unknown> },\n options?: BetterFetchOption,\n ) => fetch(\"paystack/list-transactions\", { method: \"GET\", query: data?.query, ...options }),\n listSubscriptions: (\n data?: { query?: Record<string, unknown> },\n options?: BetterFetchOption,\n ) =>\n fetch(\"paystack/list-subscriptions\", { method: \"GET\", query: data?.query, ...options }),\n getSubscriptionManageLink: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n config: () => fetch(\"/paystack/config\", { method: \"GET\" }),\n listProducts: (options?: BetterFetchOption) =>\n fetch(\"paystack/list-products\", { method: \"GET\", ...options }),\n listPlans: (options?: BetterFetchOption) =>\n fetch(\"paystack/list-plans\", { method: \"GET\", ...options }),\n paystack: {} as unknown,\n } as unknown as PaystackClientActions;\n\n actions.paystack = actions;\n\n return actions;\n },\n } satisfies BetterAuthClientPlugin;\n};\n\nexport const paystack: typeof paystackClient = paystackClient;\n"],"mappings":";;;;AA2JA,MAAa,kBAKX,aAGG;AACH,QAAO;EACL,IAAI;EACJ,SAAS;EACT,oBAAoB,EAAE;EAGtB,aACE,QACA,QACA,aAC0B;GAC1B,MAAM,QAAQ;GAEd,MAAM,UAAU;IACd,aAAa;KACX,aAAa,MAAe,YAC1B,MAAM,mCAAmC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACtF,SAAS,MAAe,YACtB,MAAM,+BAA+B;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KAClF,OAAO,MAA4C,YACjD,MAAM,8BAA8B;MAAE,QAAQ;MAAO,OAAO,MAAM;MAAO,GAAG;MAAS,CAAC;KACzF;IACD,cAAc;KACZ,UAAU,MAAe,YACvB,MAAM,mCAAmC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACtF,SAAS,MAAe,YACtB,MAAM,mCAAmC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACtF,SAAS,MAAe,YACtB,MAAM,iCAAiC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACpF,UAAU,MAAe,YACvB,MAAM,gCAAgC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACnF,OAAO,MAA4C,YACjD,MAAM,+BAA+B;MAAE,QAAQ;MAAO,OAAO,MAAM;MAAO,GAAG;MAAS,CAAC;KACzF,gBAAgB,MAAe,YAC7B,MAAM,qCAAqC;MAAE,QAAQ;MAAO,OAAO;MAAM,GAAG;MAAS,CAAC;KACxF,aAAa,MAAe,YAC1B,MAAM,qCAAqC;MAAE,QAAQ;MAAO,OAAO;MAAM,GAAG;MAAS,CAAC;KACxF,SAAS,SAAU,MAAe,SAA6B;AAC7D,aAAO,KAAK,OAAO,MAAM,QAAQ;;KAEnC,QAAQ,SAAU,MAAe,SAA6B;AAC5D,aAAO,KAAK,QAAQ,MAAM,QAAQ;;KAErC;IACD,wBAAwB,MAAe,YACrC,MAAM,mCAAmC;KAAE,QAAQ;KAAQ,MAAM;KAAM,GAAG;KAAS,CAAC;IACtF,oBAAoB,MAAe,YACjC,MAAM,+BAA+B;KAAE,QAAQ;KAAQ,MAAM;KAAM,GAAG;KAAS,CAAC;IAClF,mBACE,MACA,YACG,MAAM,8BAA8B;KAAE,QAAQ;KAAO,OAAO,MAAM;KAAO,GAAG;KAAS,CAAC;IAC3F,oBACE,MACA,YAEA,MAAM,+BAA+B;KAAE,QAAQ;KAAO,OAAO,MAAM;KAAO,GAAG;KAAS,CAAC;IACzF,4BAA4B,MAAe,YACzC,MAAM,qCAAqC;KAAE,QAAQ;KAAO,OAAO;KAAM,GAAG;KAAS,CAAC;IACxF,cAAc,MAAM,oBAAoB,EAAE,QAAQ,OAAO,CAAC;IAC1D,eAAe,YACb,MAAM,0BAA0B;KAAE,QAAQ;KAAO,GAAG;KAAS,CAAC;IAChE,YAAY,YACV,MAAM,uBAAuB;KAAE,QAAQ;KAAO,GAAG;KAAS,CAAC;IAC7D,UAAU,EAAE;IACb;AAED,WAAQ,WAAW;AAEnB,UAAO;;EAEV;;AAGH,MAAa,WAAkC"}
1
+ {"version":3,"file":"client.mjs","names":[],"sources":["../src/client.ts"],"sourcesContent":["import type { BetterFetchResponse, BetterFetchOption, BetterFetch } from \"@better-fetch/fetch\";\nimport type { BetterAuthClientPlugin } from \"better-auth/client\";\nimport type {\n PaystackPlan,\n PaystackProduct,\n PaystackTransaction,\n PaystackTransactionResponse,\n Subscription,\n PaystackClientLike,\n AnyPaystackOptions,\n} from \"./types\";\n\nimport type { paystack as paystackServer } from \"./index\";\nimport { PACKAGE_VERSION } from \"./version\";\n\n/**\n * Helper type to handle the conditional return type based on 'throw' option.\n */\nexport type FetchResult<T, O extends BetterFetchOption | undefined> = O extends { throw: true }\n ? T\n : BetterFetchResponse<T>;\n\n/**\n * Paystack Client Action Definitions\n */\nexport interface PaystackActions {\n /**\n * Initialize a transaction.\n */\n initializeTransaction: <O extends BetterFetchOption | undefined = undefined>(\n data: Record<string, unknown> & {\n callbackUrl?: string;\n callbackURL?: string;\n product?: string;\n referenceId?: string;\n },\n options?: O,\n ) => Promise<\n FetchResult<\n {\n url: string;\n reference: string;\n accessCode: string;\n redirect: boolean;\n },\n O\n >\n >;\n /**\n * Verify a transaction by reference.\n */\n verifyTransaction: <O extends BetterFetchOption | undefined = undefined>(\n data: { reference: string },\n options?: O,\n ) => Promise<\n FetchResult<\n {\n status: string;\n reference: string;\n data: PaystackTransactionResponse;\n },\n O\n >\n >;\n /**\n * List transactions for the current user/reference.\n */\n listTransactions: <O extends BetterFetchOption | undefined = undefined>(\n data?: { query?: Record<string, unknown> },\n options?: O,\n ) => Promise<FetchResult<{ transactions: PaystackTransaction[] }, O>>;\n /**\n * List subscriptions for the current user/reference.\n */\n listSubscriptions: <O extends BetterFetchOption | undefined = undefined>(\n data?: { query?: Record<string, unknown> },\n options?: O,\n ) => Promise<FetchResult<{ subscriptions: Subscription[] }, O>>;\n /**\n * Get a manage link/billing portal link for a subscription.\n */\n getSubscriptionManageLink: <O extends BetterFetchOption | undefined = undefined>(\n data: { subscriptionCode: string },\n options?: O,\n ) => Promise<FetchResult<{ link: string }, O>>;\n /**\n * Get the plugin configuration (plans and products).\n */\n config: () => Promise<BetterFetchResponse<Record<string, unknown>>>;\n /**\n * List available products.\n */\n listProducts: <O extends BetterFetchOption | undefined = undefined>(\n options?: O,\n ) => Promise<FetchResult<{ products: PaystackProduct[] }, O>>;\n /**\n * List available plans.\n */\n listPlans: <O extends BetterFetchOption | undefined = undefined>(\n options?: O,\n ) => Promise<FetchResult<{ plans: PaystackPlan[] }, O>>;\n}\n\n/**\n * Paystack Client Plugin Actions including namespaces\n */\nexport interface PaystackClientActions extends PaystackActions {\n transaction: {\n initialize: PaystackActions[\"initializeTransaction\"];\n verify: PaystackActions[\"verifyTransaction\"];\n list: PaystackActions[\"listTransactions\"];\n };\n subscription: {\n upgrade: PaystackActions[\"initializeTransaction\"];\n create: PaystackActions[\"initializeTransaction\"];\n cancel: <O extends BetterFetchOption | undefined = undefined>(\n data: {\n subscriptionCode: string;\n emailToken?: string;\n atPeriodEnd?: boolean;\n },\n options?: O,\n ) => Promise<FetchResult<{ status: string }, O>>;\n restore: <O extends BetterFetchOption | undefined = undefined>(\n data: {\n subscriptionCode: string;\n emailToken?: string;\n },\n options?: O,\n ) => Promise<FetchResult<{ status: string }, O>>;\n list: PaystackActions[\"listSubscriptions\"];\n billingPortal: PaystackActions[\"getSubscriptionManageLink\"];\n manageLink: PaystackActions[\"getSubscriptionManageLink\"];\n /**\n * @deprecated Use `subscription.cancel` instead.\n */\n disable: PaystackClientActions[\"subscription\"][\"cancel\"];\n /**\n * @deprecated Use `subscription.restore` instead.\n */\n enable: PaystackClientActions[\"subscription\"][\"restore\"];\n };\n paystack: PaystackClientActions;\n}\n\ndeclare module \"better-auth/client\" {\n interface BetterAuthClient {\n paystack: PaystackClientActions;\n subscription: PaystackClientActions[\"subscription\"];\n transaction: PaystackClientActions[\"transaction\"];\n }\n}\n\ndeclare module \"better-auth\" {\n interface BetterAuthClientPlugins {\n paystack: ReturnType<typeof paystackClient>;\n }\n}\n\n/**\n * Better Auth Paystack Client Plugin\n */\nexport const paystackClient = <\n O extends {\n subscription?: boolean;\n } = { subscription?: boolean },\n>(\n _options?: O,\n): BetterAuthClientPlugin & {\n getActions: ($fetch: BetterFetch, $store: unknown, options: unknown) => PaystackClientActions;\n} => {\n return {\n id: \"paystack\",\n version: PACKAGE_VERSION,\n $InferServerPlugin: {} as ReturnType<\n typeof paystackServer<PaystackClientLike, AnyPaystackOptions>\n >,\n pathMethods: {\n \"/paystack/initialize-transaction\": \"POST\",\n \"/paystack/verify-transaction\": \"POST\",\n \"/paystack/disable-subscription\": \"POST\",\n \"/paystack/enable-subscription\": \"POST\",\n \"/paystack/create-subscription\": \"POST\",\n \"/paystack/upgrade-subscription\": \"POST\",\n \"/paystack/cancel-subscription\": \"POST\",\n \"/paystack/restore-subscription\": \"POST\",\n },\n getActions: (\n $fetch: BetterFetch,\n _store: unknown,\n _options: unknown,\n ): PaystackClientActions => {\n const fetch = $fetch;\n\n const actions = {\n transaction: {\n initialize: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n verify: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/verify-transaction\", { method: \"POST\", body: data, ...options }),\n list: (data?: { query?: Record<string, unknown> }, options?: BetterFetchOption) =>\n fetch(\"/paystack/list-transactions\", { method: \"GET\", query: data?.query, ...options }),\n },\n subscription: {\n upgrade: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n create: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n cancel: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/disable-subscription\", { method: \"POST\", body: data, ...options }),\n restore: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/enable-subscription\", { method: \"POST\", body: data, ...options }),\n list: (data?: { query?: Record<string, unknown> }, options?: BetterFetchOption) =>\n fetch(\"/paystack/list-subscriptions\", {\n method: \"GET\",\n query: data?.query,\n ...options,\n }),\n billingPortal: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n manageLink: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n disable: function (data: unknown, options?: BetterFetchOption) {\n return this.cancel(data, options);\n },\n enable: function (data: unknown, options?: BetterFetchOption) {\n return this.restore(data, options);\n },\n },\n initializeTransaction: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/initialize-transaction\", { method: \"POST\", body: data, ...options }),\n verifyTransaction: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/verify-transaction\", { method: \"POST\", body: data, ...options }),\n listTransactions: (\n data?: { query?: Record<string, unknown> },\n options?: BetterFetchOption,\n ) =>\n fetch(\"/paystack/list-transactions\", { method: \"GET\", query: data?.query, ...options }),\n listSubscriptions: (\n data?: { query?: Record<string, unknown> },\n options?: BetterFetchOption,\n ) =>\n fetch(\"/paystack/list-subscriptions\", { method: \"GET\", query: data?.query, ...options }),\n getSubscriptionManageLink: (data: unknown, options?: BetterFetchOption) =>\n fetch(\"/paystack/subscription-manage-link\", { method: \"GET\", query: data, ...options }),\n config: () => fetch(\"/paystack/config\", { method: \"GET\" }),\n listProducts: (options?: BetterFetchOption) =>\n fetch(\"/paystack/list-products\", { method: \"GET\", ...options }),\n listPlans: (options?: BetterFetchOption) =>\n fetch(\"/paystack/list-plans\", { method: \"GET\", ...options }),\n paystack: {} as unknown,\n } as unknown as PaystackClientActions;\n\n actions.paystack = actions;\n\n return actions;\n },\n } satisfies BetterAuthClientPlugin;\n};\n\nexport const paystack: typeof paystackClient = paystackClient;\n"],"mappings":";;;;;AAkKA,MAAa,kBAKX,aAGG;AACH,QAAO;EACL,IAAI;EACJ,SAAS;EACT,oBAAoB,EAAE;EAGtB,aAAa;GACX,oCAAoC;GACpC,gCAAgC;GAChC,kCAAkC;GAClC,iCAAiC;GACjC,iCAAiC;GACjC,kCAAkC;GAClC,iCAAiC;GACjC,kCAAkC;GACnC;EACD,aACE,QACA,QACA,aAC0B;GAC1B,MAAM,QAAQ;GAEd,MAAM,UAAU;IACd,aAAa;KACX,aAAa,MAAe,YAC1B,MAAM,oCAAoC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACvF,SAAS,MAAe,YACtB,MAAM,gCAAgC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACnF,OAAO,MAA4C,YACjD,MAAM,+BAA+B;MAAE,QAAQ;MAAO,OAAO,MAAM;MAAO,GAAG;MAAS,CAAC;KAC1F;IACD,cAAc;KACZ,UAAU,MAAe,YACvB,MAAM,oCAAoC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACvF,SAAS,MAAe,YACtB,MAAM,oCAAoC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACvF,SAAS,MAAe,YACtB,MAAM,kCAAkC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACrF,UAAU,MAAe,YACvB,MAAM,iCAAiC;MAAE,QAAQ;MAAQ,MAAM;MAAM,GAAG;MAAS,CAAC;KACpF,OAAO,MAA4C,YACjD,MAAM,gCAAgC;MACpC,QAAQ;MACR,OAAO,MAAM;MACb,GAAG;MACJ,CAAC;KACJ,gBAAgB,MAAe,YAC7B,MAAM,sCAAsC;MAAE,QAAQ;MAAO,OAAO;MAAM,GAAG;MAAS,CAAC;KACzF,aAAa,MAAe,YAC1B,MAAM,sCAAsC;MAAE,QAAQ;MAAO,OAAO;MAAM,GAAG;MAAS,CAAC;KACzF,SAAS,SAAU,MAAe,SAA6B;AAC7D,aAAO,KAAK,OAAO,MAAM,QAAQ;;KAEnC,QAAQ,SAAU,MAAe,SAA6B;AAC5D,aAAO,KAAK,QAAQ,MAAM,QAAQ;;KAErC;IACD,wBAAwB,MAAe,YACrC,MAAM,oCAAoC;KAAE,QAAQ;KAAQ,MAAM;KAAM,GAAG;KAAS,CAAC;IACvF,oBAAoB,MAAe,YACjC,MAAM,gCAAgC;KAAE,QAAQ;KAAQ,MAAM;KAAM,GAAG;KAAS,CAAC;IACnF,mBACE,MACA,YAEA,MAAM,+BAA+B;KAAE,QAAQ;KAAO,OAAO,MAAM;KAAO,GAAG;KAAS,CAAC;IACzF,oBACE,MACA,YAEA,MAAM,gCAAgC;KAAE,QAAQ;KAAO,OAAO,MAAM;KAAO,GAAG;KAAS,CAAC;IAC1F,4BAA4B,MAAe,YACzC,MAAM,sCAAsC;KAAE,QAAQ;KAAO,OAAO;KAAM,GAAG;KAAS,CAAC;IACzF,cAAc,MAAM,oBAAoB,EAAE,QAAQ,OAAO,CAAC;IAC1D,eAAe,YACb,MAAM,2BAA2B;KAAE,QAAQ;KAAO,GAAG;KAAS,CAAC;IACjE,YAAY,YACV,MAAM,wBAAwB;KAAE,QAAQ;KAAO,GAAG;KAAS,CAAC;IAC9D,UAAU,EAAE;IACb;AAED,WAAQ,WAAW;AAEnB,UAAO;;EAEV;;AAGH,MAAa,WAAkC"}