@alexasomba/better-auth-paystack 2.2.0 → 2.4.0

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
@@ -115,10 +115,7 @@ import { paystackClient } from "@alexasomba/better-auth-paystack/client";
115
115
  import { adminClient } from "better-auth/client/plugins";
116
116
 
117
117
  export const client = createAuthClient({
118
- plugins: [
119
- adminClient(),
120
- paystackClient({ subscription: true })
121
- ],
118
+ plugins: [adminClient(), paystackClient({ subscription: true })],
122
119
  });
123
120
  ```
124
121
 
@@ -431,7 +428,16 @@ paystack({
431
428
 
432
429
  ## Client SDK Reference
433
430
 
434
- The client plugin exposes fully typed methods under `authClient.paystack` and `authClient.subscription`.
431
+ The client plugin exposes fully typed canonical methods under `authClient.paystack`, `authClient.transaction`, and `authClient.subscription`.
432
+
433
+ - `authClient.transaction.initialize`, `verify`, `list`
434
+ - `authClient.subscription.create`, `upgrade`, `cancel`, `restore`, `list`, `billingPortal`
435
+ - `authClient.paystack.config`, `listProducts`, `listPlans`, plus the transaction/subscription helpers above
436
+
437
+ Deprecated compatibility aliases remain available in `2.x` and are planned for removal in the clean `3.0.0` release:
438
+
439
+ - `authClient.subscription.disable(...)` -> use `authClient.subscription.cancel(...)`
440
+ - `authClient.subscription.enable(...)` -> use `authClient.subscription.restore(...)`
435
441
 
436
442
  ### `authClient.subscription.upgrade` / `create`
437
443
 
@@ -504,7 +510,7 @@ type initializeTransaction = {
504
510
 
505
511
  ### `authClient.subscription.list`
506
512
 
507
- List subscriptions for a user or organization.
513
+ 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
514
 
509
515
  ```ts
510
516
  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-C_50YiuM.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"}