@alexasomba/better-auth-paystack 1.1.2 → 1.2.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
@@ -10,7 +10,9 @@ A TypeScript-first plugin that integrates Paystack into [Better Auth](https://ww
10
10
  - [x] **Auto Customer Creation**: Optional Paystack customer creation on user sign up or organization creation.
11
11
  - [x] **Trial Management**: Configurable trial periods with built-in abuse prevention logic.
12
12
  - [x] **Organization Billing**: Associate subscriptions with organizations and authorize access via roles.
13
- - [x] **Enforced Limits**: Automatic enforcement of seat limits (members) and resource limits (teams).
13
+ - [x] **Enforced Limits & Seats**: Automatic enforcement of member seat upgrades and resource limits (teams).
14
+ - [x] **Scheduled Changes**: Defer subscription updates or cancellations to the end of the billing cycle.
15
+ - [x] **Proration**: Immediate mid-cycle prorated charges for seat and plan upgrades.
14
16
  - [x] **Popup Modal Flow**: Optional support for Paystack's inline checkout experience via `@alexasomba/paystack-browser`.
15
17
  - [x] **Webhook Security**: Pre-configured signature verification (HMAC-SHA512).
16
18
  - [x] **Transaction History**: Built-in support for listing and viewing local transaction records.
@@ -207,6 +209,25 @@ if (data?.accessCode) {
207
209
  }
208
210
  ```
209
211
 
212
+ ### Scheduled Changes & Cancellation
213
+
214
+ Defer changes to the end of the current billing cycle:
215
+ - **Upgrades**: Pass `scheduleAtPeriodEnd: true` in `initializeTransaction()`.
216
+ - **Cancellations**: Use `authClient.subscription.cancel({ atPeriodEnd: true })` to keep the subscription active until the period ends.
217
+
218
+ ### Mid-Cycle Proration (`prorateAndCharge`)
219
+
220
+ The plugin can dynamically calculate the cost difference for immediate mid-cycle upgrades (like adding more seats).
221
+ If the user has a saved Paystack authorization code, the plugin will execute a prorated charge for the remaining cycle days and immediately sync the new amount/seats.
222
+
223
+ ```ts
224
+ await authClient.paystack.transaction.initialize({
225
+ plan: "pro",
226
+ quantity: 5, // Upgrading seats
227
+ prorateAndCharge: true, // Will calculate and charge the prorated amount instantly
228
+ });
229
+ ```
230
+
210
231
  ### Trial Abuse Prevention
211
232
 
212
233
  The plugin checks the `referenceId` history. If a trial was ever used (active, expired, or trialing), it will not be granted again, preventing resubscribe-abuse.
@@ -514,7 +535,6 @@ Future features planned for upcoming versions:
514
535
  ### Future Considerations
515
536
 
516
537
  - [ ] Multi-currency support improvements
517
- - [ ] Proration for plan upgrades/downgrades
518
538
  - [ ] Invoice generation
519
539
  - [ ] Payment retry logic for failed renewals
520
540
 
package/dist/client.d.mts CHANGED
@@ -1,6 +1,5 @@
1
- import { c as Subscription, o as PaystackProduct, s as PaystackTransaction } from "./types-CMXvth6C.mjs";
2
- import { paystack } from "./index.mjs";
3
- import { BetterFetch, BetterFetchOption, BetterFetchResponse } from "@better-fetch/fetch";
1
+ import { a as PaystackProduct, n as paystack, o as PaystackTransaction, s as Subscription } from "./index-DoMJ9OLF.mjs";
2
+ import { BetterFetchOption, BetterFetchResponse } from "@better-fetch/fetch";
4
3
 
5
4
  //#region src/client.d.ts
6
5
  declare const paystackClient: <O extends {
@@ -8,7 +7,7 @@ declare const paystackClient: <O extends {
8
7
  }>(_options?: O) => {
9
8
  id: "paystack";
10
9
  $InferServerPlugin: ReturnType<typeof paystack>;
11
- getActions: ($fetch: BetterFetch) => {
10
+ getActions: ($fetch: unknown, _$store: unknown, _options: unknown) => {
12
11
  subscription: {
13
12
  /**
14
13
  * Initialize a transaction to upgrade or creating a subscription.
@@ -25,6 +24,9 @@ declare const paystackClient: <O extends {
25
24
  quantity?: number;
26
25
  referenceId?: string;
27
26
  product?: string;
27
+ scheduleAtPeriodEnd?: boolean;
28
+ cancelAtPeriodEnd?: boolean;
29
+ prorateAndCharge?: boolean;
28
30
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
29
31
  url: string;
30
32
  reference: string;
@@ -46,6 +48,9 @@ declare const paystackClient: <O extends {
46
48
  quantity?: number;
47
49
  referenceId?: string;
48
50
  product?: string;
51
+ scheduleAtPeriodEnd?: boolean;
52
+ cancelAtPeriodEnd?: boolean;
53
+ prorateAndCharge?: boolean;
49
54
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
50
55
  url: string;
51
56
  reference: string;
@@ -58,6 +63,7 @@ declare const paystackClient: <O extends {
58
63
  cancel: (data: {
59
64
  subscriptionCode: string;
60
65
  emailToken?: string;
66
+ atPeriodEnd?: boolean;
61
67
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
62
68
  status: string;
63
69
  }>>;
@@ -102,6 +108,7 @@ declare const paystackClient: <O extends {
102
108
  disable: (data: {
103
109
  subscriptionCode: string;
104
110
  emailToken?: string;
111
+ atPeriodEnd?: boolean;
105
112
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
106
113
  status: string;
107
114
  }>>;
@@ -126,6 +133,9 @@ declare const paystackClient: <O extends {
126
133
  quantity?: number;
127
134
  referenceId?: string;
128
135
  product?: string;
136
+ scheduleAtPeriodEnd?: boolean;
137
+ cancelAtPeriodEnd?: boolean;
138
+ prorateAndCharge?: boolean;
129
139
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
130
140
  url: string;
131
141
  reference: string;
@@ -158,6 +168,9 @@ declare const paystackClient: <O extends {
158
168
  quantity?: number;
159
169
  referenceId?: string;
160
170
  product?: string;
171
+ scheduleAtPeriodEnd?: boolean;
172
+ cancelAtPeriodEnd?: boolean;
173
+ prorateAndCharge?: boolean;
161
174
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
162
175
  url: string;
163
176
  reference: string;
@@ -176,6 +189,9 @@ declare const paystackClient: <O extends {
176
189
  quantity?: number;
177
190
  referenceId?: string;
178
191
  product?: string;
192
+ scheduleAtPeriodEnd?: boolean;
193
+ cancelAtPeriodEnd?: boolean;
194
+ prorateAndCharge?: boolean;
179
195
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
180
196
  url: string;
181
197
  reference: string;
@@ -185,6 +201,7 @@ declare const paystackClient: <O extends {
185
201
  cancel: (data: {
186
202
  subscriptionCode: string;
187
203
  emailToken?: string;
204
+ atPeriodEnd?: boolean;
188
205
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
189
206
  status: string;
190
207
  }>>;
@@ -217,6 +234,7 @@ declare const paystackClient: <O extends {
217
234
  disable: (data: {
218
235
  subscriptionCode: string;
219
236
  emailToken?: string;
237
+ atPeriodEnd?: boolean;
220
238
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
221
239
  status: string;
222
240
  }>>;
@@ -239,6 +257,9 @@ declare const paystackClient: <O extends {
239
257
  quantity?: number;
240
258
  referenceId?: string;
241
259
  product?: string;
260
+ scheduleAtPeriodEnd?: boolean;
261
+ cancelAtPeriodEnd?: boolean;
262
+ prorateAndCharge?: boolean;
242
263
  }, options?: BetterFetchOption) => Promise<BetterFetchResponse<{
243
264
  url: string;
244
265
  reference: string;
@@ -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
@@ -3,51 +3,52 @@ const paystackClient = (_options) => {
3
3
  return {
4
4
  id: "paystack",
5
5
  $InferServerPlugin: {},
6
- getActions: ($fetch) => {
6
+ getActions: ($fetch, _$store, _options) => {
7
+ const fetch = $fetch;
7
8
  const initializeTransaction = async (data, options) => {
8
- return $fetch("paystack/initialize-transaction", {
9
+ return fetch("paystack/initialize-transaction", {
9
10
  method: "POST",
10
11
  body: data,
11
12
  ...options
12
13
  });
13
14
  };
14
15
  const verifyTransaction = async (data, options) => {
15
- return $fetch("paystack/verify-transaction", {
16
+ return fetch("paystack/verify-transaction", {
16
17
  method: "POST",
17
18
  body: data,
18
19
  ...options
19
20
  });
20
21
  };
21
22
  const listTransactions = async (data = {}, options) => {
22
- return $fetch("paystack/list-transactions", {
23
+ return fetch("paystack/list-transactions", {
23
24
  method: "GET",
24
25
  query: data.query,
25
26
  ...options
26
27
  });
27
28
  };
28
29
  const listSubscriptions = async (data = {}, options) => {
29
- return $fetch("paystack/list-subscriptions", {
30
+ return fetch("paystack/list-subscriptions", {
30
31
  method: "GET",
31
32
  query: data.query,
32
33
  ...options
33
34
  });
34
35
  };
35
36
  const getSubscriptionManageLink = async (data, options) => {
36
- return $fetch("paystack/get-subscription-manage-link", {
37
+ return fetch("paystack/get-subscription-manage-link", {
37
38
  method: "GET",
38
39
  query: data,
39
40
  ...options
40
41
  });
41
42
  };
42
43
  const cancelSubscription = async (data, options) => {
43
- return $fetch("paystack/disable-subscription", {
44
+ return fetch("paystack/disable-subscription", {
44
45
  method: "POST",
45
46
  body: data,
46
47
  ...options
47
48
  });
48
49
  };
49
50
  const restoreSubscription = async (data, options) => {
50
- return $fetch("paystack/enable-subscription", {
51
+ return fetch("paystack/enable-subscription", {
51
52
  method: "POST",
52
53
  body: data,
53
54
  ...options
@@ -90,22 +91,22 @@ const paystackClient = (_options) => {
90
91
  listSubscriptions,
91
92
  getSubscriptionManageLink,
92
93
  getConfig: async () => {
93
- return $fetch("paystack/get-config", { method: "GET" });
94
+ return fetch("paystack/get-config", { method: "GET" });
94
95
  },
95
96
  syncProducts: async () => {
96
- return $fetch("paystack/sync-products", { method: "POST" });
97
+ return fetch("paystack/sync-products", { method: "POST" });
97
98
  },
98
99
  syncPlans: async () => {
99
- return $fetch("paystack/sync-plans", { method: "POST" });
100
+ return fetch("paystack/sync-plans", { method: "POST" });
100
101
  },
101
102
  listProducts: async (options) => {
102
- return $fetch("paystack/list-products", {
103
+ return fetch("paystack/list-products", {
103
104
  method: "GET",
104
105
  ...options
105
106
  });
106
107
  },
107
108
  listPlans: async (options) => {
108
- return $fetch("paystack/list-plans", {
109
+ return fetch("paystack/list-plans", {
109
110
  method: "GET",
110
111
  ...options
111
112
  });
@@ -115,7 +116,7 @@ const paystackClient = (_options) => {
115
116
  }
116
117
  };
117
118
  };
118
-
119
119
  //#endregion
120
120
  export { paystackClient };
121
+
121
122
  //# sourceMappingURL=client.mjs.map
@@ -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\";\n\nimport type { PaystackProduct, PaystackTransaction, Subscription } from \"./types\";\n\nimport type { paystack } from \"./index\";\n\nexport const paystackClient = <\n\tO extends {\n\t\tsubscription: boolean;\n\t},\n>(\n\t\t_options?: O,\n\t) => {\n\treturn {\n\t\tid: \"paystack\",\n\t\t$InferServerPlugin: {} as ReturnType<typeof paystack>,\n\t\tgetActions: ($fetch: BetterFetch) => {\n\t\t\tconst initializeTransaction = async (data: {\n\t\t\t\tplan?: string;\n\t\t\t\temail?: string;\n\t\t\t\tamount?: number;\n\t\t\t\treference?: string;\n\t\t\t\tmetadata?: Record<string, unknown>;\n\t\t\t\tcallbackUrl?: string;\n\t\t\t\tcallbackURL?: string;\n\t\t\t\tcurrency?: string;\n\t\t\t\tquantity?: number;\n\t\t\t\treferenceId?: string;\n\t\t\t\tproduct?: string;\n\t\t\t}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\turl: string;\n\t\t\t\treference: string;\n\t\t\t\taccessCode: string;\n\t\t\t\tredirect: boolean;\n\t\t\t}>> => {\n\t\t\t\treturn $fetch<{\n\t\t\t\t\turl: string;\n\t\t\t\t\treference: string;\n\t\t\t\t\taccessCode: string;\n\t\t\t\t\tredirect: boolean;\n\t\t\t\t}>(\"paystack/initialize-transaction\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst verifyTransaction = async (data: { reference: string }, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tstatus: string;\n\t\t\t\treference: string;\n\t\t\t\tdata: unknown;\n\t\t\t}>> => {\n\t\t\t\treturn $fetch<{\n\t\t\t\t\tstatus: string;\n\t\t\t\t\treference: string;\n\t\t\t\t\tdata: unknown;\n\t\t\t\t}>(\"paystack/verify-transaction\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst listTransactions = async (data: { query?: Record<string, unknown> } = {}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\ttransactions: PaystackTransaction[];\n\t\t\t}>> => {\n\t\t\t\treturn $fetch<{\n\t\t\t\t\ttransactions: PaystackTransaction[];\n\t\t\t\t}>(\"paystack/list-transactions\", {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst listSubscriptions = async (data: { query?: Record<string, unknown> } = {}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tsubscriptions: Subscription[];\n\t\t\t}>> => {\n\t\t\t\treturn $fetch<{\n\t\t\t\t\tsubscriptions: Subscription[];\n\t\t\t\t}>(\"paystack/list-subscriptions\", {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst getSubscriptionManageLink = async (data: { subscriptionCode: string }, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tlink: string;\n\t\t\t}>> => {\n\t\t\t\treturn $fetch<{\n\t\t\t\t\tlink: string;\n\t\t\t\t}>(\"paystack/get-subscription-manage-link\", {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\tquery: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst cancelSubscription = async (data: {\n\t\t\t\tsubscriptionCode: string;\n\t\t\t\temailToken?: string;\n\t\t\t}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tstatus: string;\n\t\t\t}>> => {\n\t\t\t\treturn $fetch<{\n\t\t\t\t\tstatus: string;\n\t\t\t\t}>(\"paystack/disable-subscription\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst restoreSubscription = async (data: {\n\t\t\t\tsubscriptionCode: string;\n\t\t\t\temailToken?: string;\n\t\t\t}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tstatus: string;\n\t\t\t}>> => {\n\t\t\t\treturn $fetch<{\n\t\t\t\t\tstatus: string;\n\t\t\t\t}>(\"paystack/enable-subscription\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\tsubscription: {\n\t\t\t\t\t/**\n * Initialize a transaction to upgrade or creating a subscription.\n */\n\t\t\t\t\tupgrade: initializeTransaction,\n\t\t\t\t\t/**\n * Initialize a payment to create a subscription.\n */\n\t\t\t\t\tcreate: initializeTransaction,\n\t\t\t\t\t/**\n * Disable a subscription.\n */\n\t\t\t\t\tcancel: cancelSubscription,\n\t\t\t\t\t/**\n * Enable a subscription.\n */\n\t\t\t\t\trestore: restoreSubscription,\n\t\t\t\t\t/**\n * List subscriptions for the user.\n */\n\t\t\t\t\tlist: listSubscriptions,\n\t\t\t\t\t/**\n * Get a link to manage the subscription on Paystack.\n */\n\t\t\t\t\tbillingPortal: getSubscriptionManageLink,\n\t\t\t\t\t/**\n * Aliases for legacy/demo usage.\n */\n\t\t\t\t\tlistLocal: listSubscriptions,\n\t\t\t\t\tmanageLink: getSubscriptionManageLink,\n\t\t\t\t\tdisable: cancelSubscription,\n\t\t\t\t\tenable: restoreSubscription,\n\t\t\t\t},\n\t\t\t\tpaystack: {\n\t\t\t\t\ttransaction: {\n\t\t\t\t\t\tinitialize: initializeTransaction,\n\t\t\t\t\t\tverify: verifyTransaction,\n\t\t\t\t\t\tlist: listTransactions,\n\t\t\t\t\t},\n\t\t\t\t\tsubscription: {\n\t\t\t\t\t\tcreate: initializeTransaction,\n\t\t\t\t\t\tupgrade: initializeTransaction,\n\t\t\t\t\t\tcancel: cancelSubscription,\n\t\t\t\t\t\trestore: restoreSubscription,\n\t\t\t\t\t\tlist: listSubscriptions,\n\t\t\t\t\t\tbillingPortal: getSubscriptionManageLink,\n\t\t\t\t\t\tlistLocal: listSubscriptions,\n\t\t\t\t\t\tmanageLink: getSubscriptionManageLink,\n\t\t\t\t\t\tdisable: cancelSubscription,\n\t\t\t\t\t\tenable: restoreSubscription,\n\t\t\t\t\t},\n\t\t\t\t\tinitializeTransaction,\n\t\t\t\t\tverifyTransaction,\n\t\t\t\t\tlistTransactions,\n\t\t\t\t\tlistSubscriptions,\n\t\t\t\t\tgetSubscriptionManageLink,\n\t\t\t\t\tgetConfig: async (): Promise<BetterFetchResponse<Record<string, unknown>>> => {\n\t\t\t\t\t\treturn $fetch<Record<string, unknown>>(\"paystack/get-config\", {\n\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tsyncProducts: async (): Promise<BetterFetchResponse<{ status: string; count: number }>> => {\n\t\t\t\t\t\treturn $fetch<{ status: string; count: number }>(\"paystack/sync-products\", {\n\t\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tsyncPlans: async (): Promise<BetterFetchResponse<{ status: string; count: number }>> => {\n\t\t\t\t\t\treturn $fetch<{ status: string; count: number }>(\"paystack/sync-plans\", {\n\t\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tlistProducts: async (options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\t\t\tproducts: PaystackProduct[];\n\t\t\t\t\t}>> => {\n\t\t\t\t\t\treturn $fetch<{\n\t\t\t\t\t\t\tproducts: PaystackProduct[];\n\t\t\t\t\t\t}>(\"paystack/list-products\", {\n\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tlistPlans: async (options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\t\t\tplans: unknown[];\n\t\t\t\t\t}>> => {\n\t\t\t\t\t\treturn $fetch<{\n\t\t\t\t\t\t\tplans: unknown[];\n\t\t\t\t\t\t}>(\"paystack/list-plans\", {\n\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t} satisfies BetterAuthClientPlugin;\n};\n"],"mappings":";AAOA,MAAa,kBAKX,aACI;AACL,QAAO;EACN,IAAI;EACJ,oBAAoB,EAAE;EACtB,aAAa,WAAwB;GACpC,MAAM,wBAAwB,OAAO,MAYlC,YAKI;AACN,WAAO,OAKJ,mCAAmC;KACrC,QAAQ;KACR,MAAM;KACN,GAAG;KACH,CAAC;;GAGH,MAAM,oBAAoB,OAAO,MAA6B,YAIvD;AACN,WAAO,OAIJ,+BAA+B;KACjC,QAAQ;KACR,MAAM;KACN,GAAG;KACH,CAAC;;GAGH,MAAM,mBAAmB,OAAO,OAA4C,EAAE,EAAE,YAEzE;AACN,WAAO,OAEJ,8BAA8B;KAChC,QAAQ;KACR,OAAO,KAAK;KACZ,GAAG;KACH,CAAC;;GAGH,MAAM,oBAAoB,OAAO,OAA4C,EAAE,EAAE,YAE1E;AACN,WAAO,OAEJ,+BAA+B;KACjC,QAAQ;KACR,OAAO,KAAK;KACZ,GAAG;KACH,CAAC;;GAGH,MAAM,4BAA4B,OAAO,MAAoC,YAEtE;AACN,WAAO,OAEJ,yCAAyC;KAC3C,QAAQ;KACR,OAAO;KACP,GAAG;KACH,CAAC;;GAGH,MAAM,qBAAqB,OAAO,MAG/B,YAEI;AACN,WAAO,OAEJ,iCAAiC;KACnC,QAAQ;KACR,MAAM;KACN,GAAG;KACH,CAAC;;GAGH,MAAM,sBAAsB,OAAO,MAGhC,YAEI;AACN,WAAO,OAEJ,gCAAgC;KAClC,QAAQ;KACR,MAAM;KACN,GAAG;KACH,CAAC;;AAGH,UAAO;IACN,cAAc;KAIb,SAAS;KAIT,QAAQ;KAIR,QAAQ;KAIR,SAAS;KAIT,MAAM;KAIN,eAAe;KAIf,WAAW;KACX,YAAY;KACZ,SAAS;KACT,QAAQ;KACR;IACD,UAAU;KACT,aAAa;MACZ,YAAY;MACZ,QAAQ;MACR,MAAM;MACN;KACD,cAAc;MACb,QAAQ;MACR,SAAS;MACT,QAAQ;MACR,SAAS;MACT,MAAM;MACN,eAAe;MACf,WAAW;MACX,YAAY;MACZ,SAAS;MACT,QAAQ;MACR;KACD;KACA;KACA;KACA;KACA;KACA,WAAW,YAAmE;AAC7E,aAAO,OAAgC,uBAAuB,EAC7D,QAAQ,OACR,CAAC;;KAEH,cAAc,YAA6E;AAC1F,aAAO,OAA0C,0BAA0B,EAC1E,QAAQ,QACR,CAAC;;KAEH,WAAW,YAA6E;AACvF,aAAO,OAA0C,uBAAuB,EACvE,QAAQ,QACR,CAAC;;KAEH,cAAc,OAAO,YAEd;AACN,aAAO,OAEJ,0BAA0B;OAC5B,QAAQ;OACR,GAAG;OACH,CAAC;;KAEH,WAAW,OAAO,YAEX;AACN,aAAO,OAEJ,uBAAuB;OACzB,QAAQ;OACR,GAAG;OACH,CAAC;;KAEH;IACD;;EAEF"}
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\";\n\nimport type { PaystackProduct, PaystackTransaction, Subscription } from \"./types\";\n\nimport type { paystack } from \"./index\";\n\nexport const paystackClient = <\n\tO extends {\n\t\tsubscription: boolean;\n\t},\n>(\n\t\t_options?: O,\n\t) => {\n\treturn {\n\t\tid: \"paystack\",\n\t\t$InferServerPlugin: {} as ReturnType<typeof paystack>,\n\t\tgetActions: ($fetch: unknown, _$store: unknown, _options: unknown) => {\n\t\t\tconst fetch = $fetch as BetterFetch;\n\t\t\tconst initializeTransaction = async (data: {\n\t\t\t\tplan?: string;\n\t\t\t\temail?: string;\n\t\t\t\tamount?: number;\n\t\t\t\treference?: string;\n\t\t\t\tmetadata?: Record<string, unknown>;\n\t\t\t\tcallbackUrl?: string;\n\t\t\t\tcallbackURL?: string;\n\t\t\t\tcurrency?: string;\n\t\t\t\tquantity?: number;\n\t\t\t\treferenceId?: string;\n\t\t\t\tproduct?: string;\n\t\t\t\tscheduleAtPeriodEnd?: boolean;\n\t\t\t\tcancelAtPeriodEnd?: boolean;\n\t\t\t\tprorateAndCharge?: boolean;\n\t\t\t}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\turl: string;\n\t\t\t\treference: string;\n\t\t\t\taccessCode: string;\n\t\t\t\tredirect: boolean;\n\t\t\t}>> => {\n\t\t\t\treturn fetch<{\n\t\t\t\t\turl: string;\n\t\t\t\t\treference: string;\n\t\t\t\t\taccessCode: string;\n\t\t\t\t\tredirect: boolean;\n\t\t\t\t}>(\"paystack/initialize-transaction\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst verifyTransaction = async (data: { reference: string }, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tstatus: string;\n\t\t\t\treference: string;\n\t\t\t\tdata: unknown;\n\t\t\t}>> => {\n\t\t\t\treturn fetch<{\n\t\t\t\t\tstatus: string;\n\t\t\t\t\treference: string;\n\t\t\t\t\tdata: unknown;\n\t\t\t\t}>(\"paystack/verify-transaction\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst listTransactions = async (data: { query?: Record<string, unknown> } = {}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\ttransactions: PaystackTransaction[];\n\t\t\t}>> => {\n\t\t\t\treturn fetch<{\n\t\t\t\t\ttransactions: PaystackTransaction[];\n\t\t\t\t}>(\"paystack/list-transactions\", {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst listSubscriptions = async (data: { query?: Record<string, unknown> } = {}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tsubscriptions: Subscription[];\n\t\t\t}>> => {\n\t\t\t\treturn fetch<{\n\t\t\t\t\tsubscriptions: Subscription[];\n\t\t\t\t}>(\"paystack/list-subscriptions\", {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\tquery: data.query,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst getSubscriptionManageLink = async (data: { subscriptionCode: string }, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tlink: string;\n\t\t\t}>> => {\n\t\t\t\treturn fetch<{\n\t\t\t\t\tlink: string;\n\t\t\t\t}>(\"paystack/get-subscription-manage-link\", {\n\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\tquery: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst cancelSubscription = async (data: {\n\t\t\t\tsubscriptionCode: string;\n\t\t\t\temailToken?: string;\n\t\t\t\tatPeriodEnd?: boolean;\n\t\t\t}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tstatus: string;\n\t\t\t}>> => {\n\t\t\t\treturn fetch<{\n\t\t\t\t\tstatus: string;\n\t\t\t\t}>(\"paystack/disable-subscription\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\tconst restoreSubscription = async (data: {\n\t\t\t\tsubscriptionCode: string;\n\t\t\t\temailToken?: string;\n\t\t\t}, options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\tstatus: string;\n\t\t\t}>> => {\n\t\t\t\treturn fetch<{\n\t\t\t\t\tstatus: string;\n\t\t\t\t}>(\"paystack/enable-subscription\", {\n\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\tbody: data,\n\t\t\t\t\t...options,\n\t\t\t\t});\n\t\t\t};\n\n\t\t\treturn {\n\t\t\t\tsubscription: {\n\t\t\t\t\t/**\n\t\t\t\t\t * Initialize a transaction to upgrade or creating a subscription.\n\t\t\t\t\t */\n\t\t\t\t\tupgrade: initializeTransaction,\n\t\t\t\t\t/**\n\t\t\t\t\t * Initialize a payment to create a subscription.\n\t\t\t\t\t */\n\t\t\t\t\tcreate: initializeTransaction,\n\t\t\t\t\t/**\n\t\t\t\t\t * Disable a subscription.\n\t\t\t\t\t */\n\t\t\t\t\tcancel: cancelSubscription,\n\t\t\t\t\t/**\n\t\t\t\t\t * Enable a subscription.\n\t\t\t\t\t */\n\t\t\t\t\trestore: restoreSubscription,\n\t\t\t\t\t/**\n\t\t\t\t\t * List subscriptions for the user.\n\t\t\t\t\t */\n\t\t\t\t\tlist: listSubscriptions,\n\t\t\t\t\t/**\n\t\t\t\t\t * Get a link to manage the subscription on Paystack.\n\t\t\t\t\t */\n\t\t\t\t\tbillingPortal: getSubscriptionManageLink,\n\t\t\t\t\t/**\n\t\t\t\t\t * Aliases for legacy/demo usage.\n\t\t\t\t\t */\n\t\t\t\t\tlistLocal: listSubscriptions,\n\t\t\t\t\tmanageLink: getSubscriptionManageLink,\n\t\t\t\t\tdisable: cancelSubscription,\n\t\t\t\t\tenable: restoreSubscription,\n\t\t\t\t},\n\t\t\t\tpaystack: {\n\t\t\t\t\ttransaction: {\n\t\t\t\t\t\tinitialize: initializeTransaction,\n\t\t\t\t\t\tverify: verifyTransaction,\n\t\t\t\t\t\tlist: listTransactions,\n\t\t\t\t\t},\n\t\t\t\t\tsubscription: {\n\t\t\t\t\t\tcreate: initializeTransaction,\n\t\t\t\t\t\tupgrade: initializeTransaction,\n\t\t\t\t\t\tcancel: cancelSubscription,\n\t\t\t\t\t\trestore: restoreSubscription,\n\t\t\t\t\t\tlist: listSubscriptions,\n\t\t\t\t\t\tbillingPortal: getSubscriptionManageLink,\n\t\t\t\t\t\tlistLocal: listSubscriptions,\n\t\t\t\t\t\tmanageLink: getSubscriptionManageLink,\n\t\t\t\t\t\tdisable: cancelSubscription,\n\t\t\t\t\t\tenable: restoreSubscription,\n\t\t\t\t\t},\n\t\t\t\t\tinitializeTransaction,\n\t\t\t\t\tverifyTransaction,\n\t\t\t\t\tlistTransactions,\n\t\t\t\t\tlistSubscriptions,\n\t\t\t\t\tgetSubscriptionManageLink,\n\t\t\t\t\tgetConfig: async (): Promise<BetterFetchResponse<Record<string, unknown>>> => {\n\t\t\t\t\t\treturn fetch<Record<string, unknown>>(\"paystack/get-config\", {\n\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tsyncProducts: async (): Promise<BetterFetchResponse<{ status: string; count: number }>> => {\n\t\t\t\t\t\treturn fetch<{ status: string; count: number }>(\"paystack/sync-products\", {\n\t\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tsyncPlans: async (): Promise<BetterFetchResponse<{ status: string; count: number }>> => {\n\t\t\t\t\t\treturn fetch<{ status: string; count: number }>(\"paystack/sync-plans\", {\n\t\t\t\t\t\t\tmethod: \"POST\",\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tlistProducts: async (options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\t\t\tproducts: PaystackProduct[];\n\t\t\t\t\t}>> => {\n\t\t\t\t\t\treturn fetch<{\n\t\t\t\t\t\t\tproducts: PaystackProduct[];\n\t\t\t\t\t\t}>(\"paystack/list-products\", {\n\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t\tlistPlans: async (options?: BetterFetchOption): Promise<BetterFetchResponse<{\n\t\t\t\t\t\tplans: unknown[];\n\t\t\t\t\t}>> => {\n\t\t\t\t\t\treturn fetch<{\n\t\t\t\t\t\t\tplans: unknown[];\n\t\t\t\t\t\t}>(\"paystack/list-plans\", {\n\t\t\t\t\t\t\tmethod: \"GET\",\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t});\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t} satisfies BetterAuthClientPlugin;\n};\n"],"mappings":";AAOA,MAAa,kBAKX,aACI;AACL,QAAO;EACN,IAAI;EACJ,oBAAoB,EAAE;EACtB,aAAa,QAAiB,SAAkB,aAAsB;GACrE,MAAM,QAAQ;GACd,MAAM,wBAAwB,OAAO,MAelC,YAKI;AACN,WAAO,MAKJ,mCAAmC;KACrC,QAAQ;KACR,MAAM;KACN,GAAG;KACH,CAAC;;GAGH,MAAM,oBAAoB,OAAO,MAA6B,YAIvD;AACN,WAAO,MAIJ,+BAA+B;KACjC,QAAQ;KACR,MAAM;KACN,GAAG;KACH,CAAC;;GAGH,MAAM,mBAAmB,OAAO,OAA4C,EAAE,EAAE,YAEzE;AACN,WAAO,MAEJ,8BAA8B;KAChC,QAAQ;KACR,OAAO,KAAK;KACZ,GAAG;KACH,CAAC;;GAGH,MAAM,oBAAoB,OAAO,OAA4C,EAAE,EAAE,YAE1E;AACN,WAAO,MAEJ,+BAA+B;KACjC,QAAQ;KACR,OAAO,KAAK;KACZ,GAAG;KACH,CAAC;;GAGH,MAAM,4BAA4B,OAAO,MAAoC,YAEtE;AACN,WAAO,MAEJ,yCAAyC;KAC3C,QAAQ;KACR,OAAO;KACP,GAAG;KACH,CAAC;;GAGH,MAAM,qBAAqB,OAAO,MAI/B,YAEI;AACN,WAAO,MAEJ,iCAAiC;KACnC,QAAQ;KACR,MAAM;KACN,GAAG;KACH,CAAC;;GAGH,MAAM,sBAAsB,OAAO,MAGhC,YAEI;AACN,WAAO,MAEJ,gCAAgC;KAClC,QAAQ;KACR,MAAM;KACN,GAAG;KACH,CAAC;;AAGH,UAAO;IACN,cAAc;KAIb,SAAS;KAIT,QAAQ;KAIR,QAAQ;KAIR,SAAS;KAIT,MAAM;KAIN,eAAe;KAIf,WAAW;KACX,YAAY;KACZ,SAAS;KACT,QAAQ;KACR;IACD,UAAU;KACT,aAAa;MACZ,YAAY;MACZ,QAAQ;MACR,MAAM;MACN;KACD,cAAc;MACb,QAAQ;MACR,SAAS;MACT,QAAQ;MACR,SAAS;MACT,MAAM;MACN,eAAe;MACf,WAAW;MACX,YAAY;MACZ,SAAS;MACT,QAAQ;MACR;KACD;KACA;KACA;KACA;KACA;KACA,WAAW,YAAmE;AAC7E,aAAO,MAA+B,uBAAuB,EAC5D,QAAQ,OACR,CAAC;;KAEH,cAAc,YAA6E;AAC1F,aAAO,MAAyC,0BAA0B,EACzE,QAAQ,QACR,CAAC;;KAEH,WAAW,YAA6E;AACvF,aAAO,MAAyC,uBAAuB,EACtE,QAAQ,QACR,CAAC;;KAEH,cAAc,OAAO,YAEd;AACN,aAAO,MAEJ,0BAA0B;OAC5B,QAAQ;OACR,GAAG;OACH,CAAC;;KAEH,WAAW,OAAO,YAEX;AACN,aAAO,MAEJ,uBAAuB;OACzB,QAAQ;OACR,GAAG;OACH,CAAC;;KAEH;IACD;;EAEF"}
@@ -1,6 +1,8 @@
1
- import { GenericEndpointContext as GenericEndpointContext$1, InferOptionSchema, Session, User } from "better-auth";
1
+ import * as _better_auth_core_utils_error_codes0 from "@better-auth/core/utils/error-codes";
2
+ import { AuthContext, GenericEndpointContext, InferOptionSchema, Session, User } from "better-auth";
2
3
  import { createPaystack } from "@alexasomba/paystack-node";
3
- import "@better-auth/core/db";
4
+ import { GenericEndpointContext as GenericEndpointContext$1 } from "@better-auth/core";
5
+ import * as _better_auth_core_db0 from "@better-auth/core/db";
4
6
 
5
7
  //#region src/schema.d.ts
6
8
  declare const subscriptions: {
@@ -72,6 +74,10 @@ declare const subscriptions: {
72
74
  type: "number";
73
75
  required: false;
74
76
  };
77
+ pendingPlan: {
78
+ type: "string";
79
+ required: false;
80
+ };
75
81
  };
76
82
  };
77
83
  };
@@ -142,12 +148,28 @@ type SubscriptionToggleInit = NonNullableInit<Parameters<PaystackNodeClient["sub
142
148
  type TransactionChargeAuthorizationInit = NonNullableInit<Parameters<PaystackNodeClient["transaction_chargeAuthorization"]>[0]>;
143
149
  type PaystackCustomerCreateInput = WithMetadataStringOrObject<ExtractBody<CustomerCreateInit>>;
144
150
  type PaystackCustomerUpdateInput = WithMetadataStringOrObject<WithEmail<ExtractBody<CustomerUpdateInit>>>;
145
- type PaystackTransactionInitializeInput = WithMetadataObject<ExtractBody<TransactionInitializeInit>>;
151
+ type PaystackTransactionInitializeInput = WithMetadataObject<ExtractBody<TransactionInitializeInit>> & {
152
+ scheduleAtPeriodEnd?: boolean;
153
+ cancelAtPeriodEnd?: boolean;
154
+ prorateAndCharge?: boolean;
155
+ };
146
156
  type PaystackTransactionChargeAuthorizationInput = WithMetadataObject<ExtractBody<TransactionChargeAuthorizationInit>>;
147
157
  type PaystackSubscriptionCreateInput = ExtractBody<SubscriptionCreateInit>;
148
158
  type PaystackSubscriptionToggleInput = ExtractBody<SubscriptionToggleInit>;
149
159
  type PaystackClientLike = Partial<PaystackNodeClient> & {
150
160
  subscription_manage_link?: PaystackNodeClient["subscription_manageLink"];
161
+ subscription_update?: (params: {
162
+ params: {
163
+ path: {
164
+ code: string;
165
+ };
166
+ };
167
+ body: {
168
+ plan?: string;
169
+ authorization?: string;
170
+ amount?: number;
171
+ };
172
+ }) => Promise<unknown>;
151
173
  customer?: {
152
174
  create?: (params: PaystackCustomerCreateInput) => Promise<unknown>;
153
175
  update?: (code: string, params: PaystackCustomerUpdateInput) => Promise<unknown>;
@@ -215,6 +237,10 @@ interface PaystackPlan<TLimits = Record<string, unknown>> {
215
237
  invoiceLimit?: number | undefined;
216
238
  /** Arbitrary limits (stored/consumed by your app). */
217
239
  limits?: TLimits | undefined;
240
+ /** Amount per seat (optional). */
241
+ seatAmount?: number | undefined;
242
+ /** Paystack plan code for seat (optional). */
243
+ seatPlanCode?: string | undefined;
218
244
  /** Optional free trial config, if your app supports it. */
219
245
  freeTrial?: {
220
246
  days: number;
@@ -287,6 +313,8 @@ interface Subscription {
287
313
  cancelAtPeriodEnd?: boolean | undefined;
288
314
  groupId?: string | undefined;
289
315
  seats?: number | undefined;
316
+ /** The plan that will be applied at the next billing cycle. */
317
+ pendingPlan?: string | undefined;
290
318
  }
291
319
  interface SubscriptionOptions<TMetadata = Record<string, unknown>, TLimits = Record<string, unknown>> {
292
320
  plans: PaystackPlan<TLimits>[] | (() => PaystackPlan<TLimits>[] | Promise<PaystackPlan<TLimits>[]>);
@@ -337,7 +365,7 @@ interface OrganizationOptions<TMetadata = Record<string, unknown>> {
337
365
  metadata?: TMetadata;
338
366
  }>) | undefined;
339
367
  }
340
- interface PaystackOptions<TPaystackClient extends PaystackClientLike = PaystackNodeClient, TMetadata = Record<string, unknown>, TLimits = Record<string, unknown>> {
368
+ interface PaystackOptions<TPaystackClient extends PaystackClientLike = PaystackNodeClient, TMetadata extends Record<string, unknown> = Record<string, unknown>, TLimits extends Record<string, unknown> = Record<string, unknown>> {
341
369
  /** Paystack SDK instance (recommended: `@alexasomba/paystack-node` via `createPaystack({ secretKey })`). */
342
370
  paystackClient: NoInfer<TPaystackClient>;
343
371
  /** Paystack webhook secret used to verify `x-paystack-signature`. */
@@ -364,5 +392,97 @@ interface PaystackOptions<TPaystackClient extends PaystackClientLike = PaystackN
364
392
  schema?: InferOptionSchema<typeof subscriptions & typeof user & typeof organization> | undefined;
365
393
  }
366
394
  //#endregion
367
- export { PaystackPlan as a, Subscription as c, PaystackOptions as i, SubscriptionOptions as l, PaystackClientLike as n, PaystackProduct as o, PaystackNodeClient as r, PaystackTransaction as s, InputPaystackProduct as t };
368
- //# sourceMappingURL=types-CMXvth6C.d.mts.map
395
+ //#region src/index.d.ts
396
+ declare const paystack: <TPaystackClient extends PaystackClientLike = PaystackNodeClient, TMetadata extends Record<string, unknown> = Record<string, unknown>, TLimits extends Record<string, unknown> = Record<string, unknown>, O extends PaystackOptions<TPaystackClient, TMetadata, TLimits> = PaystackOptions<TPaystackClient, TMetadata, TLimits>>(options: O) => {
397
+ id: string;
398
+ endpoints: {
399
+ initializeTransaction: StrictEndpoint<Path, Options, R>;
400
+ verifyTransaction: StrictEndpoint<Path, Options, R>;
401
+ listSubscriptions: StrictEndpoint<Path, Options, R>;
402
+ paystackWebhook: StrictEndpoint<Path, Options, R>;
403
+ listTransactions: StrictEndpoint<Path, Options, R>;
404
+ getConfig: StrictEndpoint<Path, Options, R>;
405
+ disableSubscription: StrictEndpoint<Path, Options, R>;
406
+ enableSubscription: StrictEndpoint<Path, Options, R>;
407
+ getSubscriptionManageLink: StrictEndpoint<Path, Options, R>;
408
+ subscriptionManageLink: StrictEndpoint<Path, Options, R>;
409
+ createSubscription: StrictEndpoint<Path, Options, R>;
410
+ upgradeSubscription: StrictEndpoint<Path, Options, R>;
411
+ cancelSubscription: StrictEndpoint<Path, Options, R>;
412
+ restoreSubscription: StrictEndpoint<Path, Options, R>;
413
+ chargeRecurringSubscription: StrictEndpoint<Path, Options, R>;
414
+ syncProducts: StrictEndpoint<Path, Options, R>;
415
+ listProducts: StrictEndpoint<Path, Options, R>;
416
+ syncPlans: StrictEndpoint<Path, Options, R>;
417
+ listPlans: StrictEndpoint<Path, Options, R>;
418
+ };
419
+ schema: _better_auth_core_db0.BetterAuthPluginDBSchema;
420
+ init: (ctx: AuthContext) => {
421
+ options: {
422
+ databaseHooks: {
423
+ user: {
424
+ create: {
425
+ after(user: {
426
+ id: string;
427
+ email?: string | null;
428
+ name?: string | null;
429
+ }, hookCtx?: GenericEndpointContext | null): Promise<void>;
430
+ };
431
+ };
432
+ organization: {
433
+ create: {
434
+ after(org: {
435
+ id: string;
436
+ name: string;
437
+ email?: string | null;
438
+ }, hookCtx: GenericEndpointContext | null): Promise<void>;
439
+ };
440
+ } | undefined;
441
+ };
442
+ member: {
443
+ create: {
444
+ before: (member: {
445
+ organizationId: string;
446
+ }, ctx: GenericEndpointContext | null | undefined) => Promise<void>;
447
+ after: (member: {
448
+ organizationId: string | undefined;
449
+ }, ctx: GenericEndpointContext | null | undefined) => Promise<void>;
450
+ };
451
+ delete: {
452
+ after: (member: {
453
+ organizationId: string | undefined;
454
+ }, ctx: GenericEndpointContext | null | undefined) => Promise<void>;
455
+ };
456
+ };
457
+ invitation: {
458
+ create: {
459
+ before: (invitation: {
460
+ organizationId: string;
461
+ }, ctx: GenericEndpointContext | null | undefined) => Promise<void>;
462
+ after: (invitation: {
463
+ organizationId: string | undefined;
464
+ }, ctx: GenericEndpointContext | null | undefined) => Promise<void>;
465
+ };
466
+ delete: {
467
+ after: (invitation: {
468
+ organizationId: string | undefined;
469
+ }, ctx: GenericEndpointContext | null | undefined) => Promise<void>;
470
+ };
471
+ };
472
+ team: {
473
+ create: {
474
+ before: (team: {
475
+ organizationId: string;
476
+ }, ctx: GenericEndpointContext | null | undefined) => Promise<void>;
477
+ };
478
+ };
479
+ };
480
+ };
481
+ $ERROR_CODES: {
482
+ [x: string]: _better_auth_core_utils_error_codes0.RawError<string>;
483
+ };
484
+ };
485
+ type PaystackPlugin<TPaystackClient extends PaystackClientLike = PaystackNodeClient, TMetadata extends Record<string, unknown> = Record<string, unknown>, TLimits extends Record<string, unknown> = Record<string, unknown>, O extends PaystackOptions<TPaystackClient, TMetadata, TLimits> = PaystackOptions<TPaystackClient, TMetadata, TLimits>> = ReturnType<typeof paystack<TPaystackClient, TMetadata, TLimits, O>>;
486
+ //#endregion
487
+ export { PaystackProduct as a, SubscriptionOptions as c, PaystackPlan as i, paystack as n, PaystackTransaction as o, PaystackOptions as r, Subscription as s, PaystackPlugin as t };
488
+ //# sourceMappingURL=index-DoMJ9OLF.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DoMJ9OLF.d.mts","names":["InferOptionSchema","Session","User","createPaystack","GenericEndpointContext","DBAdapter","organization","subscriptions","user","PaystackUser","paystackCustomerCode","PaystackNodeClient","ReturnType","PaystackCurrency","PaystackEvent","PaystackWebhookPayload","TData","TMetadata","Record","PaystackMetadata","event","data","metadata","key","PaystackCustomerResponse","customer_code","email","first_name","last_name","id","PaystackTransactionResponse","domain","status","reference","receipt_number","amount","message","gateway_response","helpdesk_link","paid_at","created_at","channel","currency","ip_address","custom_fields","authorization_url","access_code","customer","authorization","authorization_code","bin","last4","exp_month","exp_year","card_type","bank","country_code","brand","reusable","signature","account_name","PaystackProductResponse","name","description","product_code","price","quantity","quantity_sold","type","is_shippable","unlimited","active","createdAt","updatedAt","PaystackSubscriptionResponse","subscription_code","email_token","cron_expression","next_payment_date","open_invoice","cancelledAt","integration","plan","plan_code","interval","send_invoices","send_sms","PaystackOpenApiFetchResponse","T","Response","error","response","PaystackApiResult","Promise","NonNullableInit","Exclude","ExtractBody","body","B","WithMetadataStringOrObject","Omit","WithMetadataObject","WithEmail","CustomerCreateInit","Parameters","CustomerUpdateInit","TransactionInitializeInit","SubscriptionCreateInit","SubscriptionToggleInit","TransactionChargeAuthorizationInit","PaystackCustomerCreateInput","PaystackCustomerUpdateInput","PaystackTransactionInitializeInput","scheduleAtPeriodEnd","cancelAtPeriodEnd","prorateAndCharge","PaystackTransactionChargeAuthorizationInput","PaystackSubscriptionCreateInput","PaystackSubscriptionToggleInput","PaystackSubscriptionFetchInit","params","path","code","id_or_code","PaystackPlanResponse","PaystackClientLike","Partial","subscription_manage_link","subscription_update","create","update","transaction","initialize","verify","chargeAuthorization","subscription","fetch","idOrCode","disable","enable","manage","link","list","init","product","delete","product_list","product_fetch","product_create","product_update","product_delete","plan_list","plan_fetch","plan_create","plan_update","userId","organizationId","NoInfer","AuthSession","session","PaystackPlan","TLimits","Subscription","planCode","features","invoiceLimit","limits","seatAmount","seatPlanCode","freeTrial","days","onTrialStart","onTrialEnd","ctx","onTrialExpired","PaystackProduct","Date","paystackId","slug","InputPaystackProduct","PaystackTransaction","referenceId","InputPaystackTransaction","paystackSubscriptionCode","paystackTransactionReference","paystackAuthorizationCode","paystackEmailToken","periodStart","periodEnd","trialStart","trialEnd","groupId","seats","pendingPlan","InputSubscription","SubscriptionOptions","plans","requireEmailVerification","authorizeReference","action","onSubscriptionComplete","onSubscriptionUpdate","onSubscriptionCreated","onSubscriptionCancel","onSubscriptionDelete","ProductOptions","products","OrganizationOptions","enabled","createCustomerOnOrganizationCreate","onCustomerCreate","paystackCustomer","getCustomerCreateParams","PaystackOptions","TPaystackClient","paystackClient","paystackWebhookSecret","createCustomerOnSignUp","onEvent","schema","Organization","Member","role","AnyPaystackOptions"],"sources":["../src/schema.ts","../src/types.d.ts","../src/index.ts"],"mappings":"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"}