payweave 0.0.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/LICENSE +21 -0
- package/README.md +272 -0
- package/dist/_tsup-dts-rollup.d.ts +19470 -0
- package/dist/chunk-4R5OGOCC.js +94 -0
- package/dist/chunk-4R5OGOCC.js.map +1 -0
- package/dist/chunk-535Q3GUN.js +175 -0
- package/dist/chunk-535Q3GUN.js.map +1 -0
- package/dist/chunk-67NRYGRC.js +192 -0
- package/dist/chunk-67NRYGRC.js.map +1 -0
- package/dist/chunk-CGQ73I4I.js +568 -0
- package/dist/chunk-CGQ73I4I.js.map +1 -0
- package/dist/chunk-CJEYDHY6.js +18 -0
- package/dist/chunk-CJEYDHY6.js.map +1 -0
- package/dist/chunk-CR63JAAS.js +3 -0
- package/dist/chunk-CR63JAAS.js.map +1 -0
- package/dist/chunk-E633MKVX.js +1507 -0
- package/dist/chunk-E633MKVX.js.map +1 -0
- package/dist/chunk-FBPOCXRZ.js +1135 -0
- package/dist/chunk-FBPOCXRZ.js.map +1 -0
- package/dist/chunk-HTRGMZFH.js +267 -0
- package/dist/chunk-HTRGMZFH.js.map +1 -0
- package/dist/chunk-IUVGM3K7.js +765 -0
- package/dist/chunk-IUVGM3K7.js.map +1 -0
- package/dist/chunk-JD4OZHRI.js +326 -0
- package/dist/chunk-JD4OZHRI.js.map +1 -0
- package/dist/chunk-NV3MZF7L.js +139 -0
- package/dist/chunk-NV3MZF7L.js.map +1 -0
- package/dist/chunk-NXQBP35U.js +13 -0
- package/dist/chunk-NXQBP35U.js.map +1 -0
- package/dist/chunk-QJHXDZYC.js +412 -0
- package/dist/chunk-QJHXDZYC.js.map +1 -0
- package/dist/chunk-TWZK62TZ.js +83 -0
- package/dist/chunk-TWZK62TZ.js.map +1 -0
- package/dist/cli/index.js +35381 -0
- package/dist/core/index.d.ts +85 -0
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -0
- package/dist/db/drizzle/index.d.ts +6 -0
- package/dist/db/drizzle/index.js +1532 -0
- package/dist/db/drizzle/index.js.map +1 -0
- package/dist/db/index.d.ts +43 -0
- package/dist/db/index.js +3 -0
- package/dist/db/index.js.map +1 -0
- package/dist/db/mongodb/index.d.ts +3 -0
- package/dist/db/mongodb/index.js +934 -0
- package/dist/db/mongodb/index.js.map +1 -0
- package/dist/db/mysql/index.d.ts +1 -0
- package/dist/db/mysql/index.js +12 -0
- package/dist/db/mysql/index.js.map +1 -0
- package/dist/db/postgres/index.d.ts +5 -0
- package/dist/db/postgres/index.js +791 -0
- package/dist/db/postgres/index.js.map +1 -0
- package/dist/db/prisma/index.d.ts +1 -0
- package/dist/db/prisma/index.js +12 -0
- package/dist/db/prisma/index.js.map +1 -0
- package/dist/db/sqlite/index.d.ts +5 -0
- package/dist/db/sqlite/index.js +750 -0
- package/dist/db/sqlite/index.js.map +1 -0
- package/dist/express/index.d.ts +1 -0
- package/dist/express/index.js +3 -0
- package/dist/express/index.js.map +1 -0
- package/dist/fastify/index.d.ts +1 -0
- package/dist/fastify/index.js +3 -0
- package/dist/fastify/index.js.map +1 -0
- package/dist/flutterwave/index.d.ts +27 -0
- package/dist/flutterwave/index.js +9 -0
- package/dist/flutterwave/index.js.map +1 -0
- package/dist/index.d.ts +85 -0
- package/dist/index.js +3677 -0
- package/dist/index.js.map +1 -0
- package/dist/next/index.d.ts +1 -0
- package/dist/next/index.js +3 -0
- package/dist/next/index.js.map +1 -0
- package/dist/paystack/index.d.ts +33 -0
- package/dist/paystack/index.js +9 -0
- package/dist/paystack/index.js.map +1 -0
- package/dist/products/index.d.ts +22 -0
- package/dist/products/index.js +7 -0
- package/dist/products/index.js.map +1 -0
- package/dist/testing/index.d.ts +11 -0
- package/dist/testing/index.js +69 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/unified/index.d.ts +41 -0
- package/dist/unified/index.js +6 -0
- package/dist/unified/index.js.map +1 -0
- package/dist/webhooks/index.d.ts +8 -0
- package/dist/webhooks/index.js +8 -0
- package/dist/webhooks/index.js.map +1 -0
- package/package.json +164 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/paystack/types.ts","../src/paystack/schemas/transactions.ts","../src/paystack/resources/transactions.ts","../src/paystack/schemas/refunds.ts","../src/paystack/resources/refunds.ts","../src/paystack/schemas/customers.ts","../src/paystack/resources/customers.ts","../src/paystack/schemas/misc.ts","../src/paystack/resources/misc.ts","../src/paystack/schemas/transfers.ts","../src/paystack/resources/transfer-recipients.ts","../src/paystack/resources/transfers.ts","../src/paystack/schemas/plans.ts","../src/paystack/resources/plans.ts","../src/paystack/resources/subscriptions.ts","../src/paystack/client.ts"],"names":["z","ackRes"],"mappings":"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","file":"chunk-E633MKVX.js","sourcesContent":["/**\n * Shared Paystack schema primitives (envelope, pagination meta, metadata, list\n * query). Paystack wraps every response in `{ status: boolean, message: string,\n * data: ... }` (provider-reference §1). Response schemas are LOOSE\n * ({@link https://zod.dev | zod v4 `looseObject`}) so unknown provider fields\n * pass straight through — drift is logged by the HttpClient, never thrown.\n */\nimport { z } from \"zod\";\nimport { PayweaveValidationError } from \"../core/errors\";\n\n/**\n * Parse request input with a Zod schema, converting a {@link z.ZodError} into a\n * {@link PayweaveValidationError} so public methods only ever throw a\n * `PayweaveError` subclass. Runs BEFORE any network call.\n */\nexport function parseRequest<S extends z.ZodType>(schema: S, input: unknown): z.infer<S> {\n try {\n return schema.parse(input) as z.infer<S>;\n } catch (err) {\n if (err instanceof z.ZodError) {\n const detail = err.issues\n .map((i) => `${i.path.join(\".\") || \"(root)\"}: ${i.message}`)\n .join(\"; \");\n throw new PayweaveValidationError(`paystack request validation failed — ${detail}`, {\n provider: \"paystack\",\n cause: err,\n });\n }\n throw err;\n }\n}\n\n/**\n * Wrap a `data` schema in Paystack's standard response envelope.\n * `status` is a JSON boolean (NOT the string Flutterwave uses — quirk §5.5).\n */\nexport const paystackEnvelope = <T extends z.ZodTypeAny>(\n data: T,\n): z.ZodType<{ status: boolean; message: string; data: z.infer<T> }> =>\n z.looseObject({\n status: z.boolean(),\n message: z.string(),\n data,\n }) as unknown as z.ZodType<{ status: boolean; message: string; data: z.infer<T> }>;\n\n/**\n * Paystack pagination block (`GET` list endpoints). `perPage`/`page` come back\n * as numbers on most endpoints but the provider has been observed returning\n * strings — accept both (this is a response schema, loose by policy).\n */\nexport const paginationMeta = z.looseObject({\n total: z.union([z.number(), z.string()]).optional(),\n perPage: z.union([z.number(), z.string()]).optional(),\n page: z.union([z.number(), z.string()]).optional(),\n pageCount: z.union([z.number(), z.string()]).optional(),\n // Cursor pagination (e.g. `GET /bank`) uses next/previous instead of pageCount.\n next: z.string().nullable().optional(),\n previous: z.string().nullable().optional(),\n});\nexport type PaginationMeta = z.infer<typeof paginationMeta>;\n\n/** Envelope for list endpoints: `data` is an array plus a `meta` block. */\nexport const paystackListEnvelope = <T extends z.ZodTypeAny>(\n item: T,\n): z.ZodType<{\n status: boolean;\n message: string;\n data: z.infer<T>[];\n meta?: PaginationMeta;\n}> =>\n z.looseObject({\n status: z.boolean(),\n message: z.string(),\n data: z.array(item),\n meta: paginationMeta.optional(),\n }) as unknown as z.ZodType<{\n status: boolean;\n message: string;\n data: z.infer<T>[];\n meta?: PaginationMeta;\n }>;\n\n/**\n * Paystack `metadata`. The API accepts an object OR a JSON string on some flows\n * (quirk §5.7); the SDK ALWAYS sends an object, so the request schema only\n * accepts an object. Arbitrary custom fields are allowed.\n */\nexport const metadataSchema = z.record(z.string(), z.unknown());\n\n/** Fields shared by every paginated `GET` list request. */\nexport const listQueryFields = {\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n};\n\n/** Coerce a possibly-string pagination number to a number (or undefined). */\nexport function metaNumber(value: number | string | undefined): number | undefined {\n if (typeof value === \"number\") return value;\n if (typeof value === \"string\" && value.trim() !== \"\") {\n const n = Number(value);\n return Number.isFinite(n) ? n : undefined;\n }\n return undefined;\n}\n","/**\n * Zod schemas for the Paystack Transactions module. Request fields are sourced\n * verbatim from the official API reference:\n * - Initialize: https://paystack.com/docs/api/transaction/#initialize\n * - Verify: https://paystack.com/docs/api/transaction/#verify\n * - List: https://paystack.com/docs/api/transaction/#list\n * - Fetch: https://paystack.com/docs/api/transaction/#fetch\n * - Charge auth:https://paystack.com/docs/api/transaction/#charge-authorization\n * - Partial debit: https://paystack.com/docs/api/transaction/#partial-debit\n *\n * Amounts are in KOBO (minor units) and are passed through unchanged.\n */\nimport { z } from \"zod\";\nimport { metadataSchema } from \"../types\";\n\n/** Payment channels Paystack recognises (loose — provider may add more). */\nconst channelEnum = z.enum([\n \"card\",\n \"bank\",\n \"ussd\",\n \"qr\",\n \"mobile_money\",\n \"bank_transfer\",\n \"eft\",\n]);\n\n/** POST /transaction/initialize — request. */\nexport const initializeReq = z.object({\n /** Customer email. Required by Paystack. */\n email: z.string(),\n /** Amount in KOBO (minor units) — passed through unchanged (e.g. 500000 = ₦5,000). */\n amount: z.number().int().nonnegative(),\n currency: z.string().optional(),\n /** Your unique transaction reference. If omitted, Paystack generates one. */\n reference: z.string().optional(),\n callback_url: z.string().optional(),\n plan: z.string().optional(),\n invoice_limit: z.number().int().optional(),\n metadata: metadataSchema.optional(),\n channels: z.array(channelEnum).optional(),\n split_code: z.string().optional(),\n subaccount: z.string().optional(),\n transaction_charge: z.number().int().optional(),\n bearer: z.enum([\"account\", \"subaccount\"]).optional(),\n});\nexport type InitializeReq = z.input<typeof initializeReq>;\n\n/** POST /transaction/initialize — response data. */\nexport const initializeData = z.looseObject({\n authorization_url: z.string(),\n access_code: z.string(),\n reference: z.string(),\n});\n\n/**\n * A transaction object as returned by verify/list/fetch. Loose: only the\n * stable, documented top-level fields are named; everything else passes through.\n */\nexport const transaction = z.looseObject({\n id: z.number(),\n domain: z.string().optional(),\n status: z.string().optional(),\n reference: z.string().optional(),\n amount: z.number().optional(),\n message: z.string().nullable().optional(),\n gateway_response: z.string().nullable().optional(),\n paid_at: z.string().nullable().optional(),\n created_at: z.string().optional(),\n channel: z.string().nullable().optional(),\n currency: z.string().optional(),\n ip_address: z.string().nullable().optional(),\n metadata: z.unknown().optional(),\n customer: z.looseObject({}).optional(),\n authorization: z.looseObject({}).optional(),\n requested_amount: z.number().optional(),\n});\n\n/** GET /transaction — query params. */\nexport const listQuery = z.object({\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n customer: z.number().int().optional(),\n terminalid: z.string().optional(),\n status: z.enum([\"failed\", \"success\", \"abandoned\"]).optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n amount: z.number().int().optional(),\n});\nexport type ListQuery = z.input<typeof listQuery>;\n\n/** POST /transaction/charge_authorization — request. */\nexport const chargeAuthorizationReq = z.object({\n email: z.string(),\n amount: z.number().int().nonnegative(),\n /** Reusable authorization code (`AUTH_...`) from a prior charge. Required. */\n authorization_code: z.string(),\n currency: z.string().optional(),\n reference: z.string().optional(),\n metadata: metadataSchema.optional(),\n channels: z.array(channelEnum).optional(),\n subaccount: z.string().optional(),\n transaction_charge: z.number().int().optional(),\n bearer: z.enum([\"account\", \"subaccount\"]).optional(),\n queue: z.boolean().optional(),\n});\nexport type ChargeAuthorizationReq = z.input<typeof chargeAuthorizationReq>;\n\n/** POST /transaction/partial_debit — request. */\nexport const partialDebitReq = z.object({\n authorization_code: z.string(),\n /** Currency to debit — required by Paystack for partial debit. */\n currency: z.string(),\n amount: z.number().int().nonnegative(),\n email: z.string(),\n reference: z.string().optional(),\n at_least: z.number().int().optional(),\n});\nexport type PartialDebitReq = z.input<typeof partialDebitReq>;\n\n/** GET /transaction/totals — query params. */\nexport const totalsQuery = z.object({\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n});\nexport type TotalsQuery = z.input<typeof totalsQuery>;\n","/**\n * Paystack Transactions resource (Surface A). Every method validates its input\n * with a request schema (throws {@link PayweaveValidationError} before the\n * network call) and passes a loose response schema to the HttpClient (drift is\n * logged, never thrown). Amounts are KOBO minor units, passed through unchanged.\n *\n * Docs: https://paystack.com/docs/api/transaction/\n */\nimport { z } from \"zod\";\nimport type { HttpClient } from \"../../core/http\";\nimport { parseRequest, metaNumber, paystackEnvelope, paystackListEnvelope } from \"../types\";\nimport {\n chargeAuthorizationReq,\n initializeData,\n initializeReq,\n listQuery,\n partialDebitReq,\n totalsQuery,\n transaction,\n type ChargeAuthorizationReq,\n type InitializeReq,\n type ListQuery,\n type PartialDebitReq,\n type TotalsQuery,\n} from \"../schemas/transactions\";\n\nconst initializeRes = paystackEnvelope(initializeData);\nconst transactionRes = paystackEnvelope(transaction);\nconst transactionListRes = paystackListEnvelope(transaction);\n\n/** Validate a non-empty reference string, throwing PayweaveValidationError. */\nfunction refString(value: string): string {\n return parseRequest(z.string().min(1), value);\n}\n/** A permissive loose-object schema for endpoints whose data shape we don't pin. */\nfunction looseData() {\n return z.looseObject({});\n}\n\nexport class Transactions {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Initialize a transaction and get a hosted checkout URL. `amount` is in KOBO\n * (minor units) and is sent to Paystack unchanged.\n *\n * Docs: https://paystack.com/docs/api/transaction/#initialize\n *\n * @example\n * const res = await ps.paystack.transactions.initialize({\n * email: \"buyer@example.com\",\n * amount: 500000, // ₦5,000 in kobo\n * });\n * console.log(res.data.authorization_url);\n */\n async initialize(input: InitializeReq) {\n const body = parseRequest(initializeReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/transaction/initialize\",\n body,\n schema: initializeRes,\n });\n }\n\n /**\n * Verify a transaction by its `reference` (Paystack verifies by reference, not\n * numeric id). A 404 for an unknown reference surfaces as\n * {@link PayweaveNotFoundError}.\n *\n * Docs: https://paystack.com/docs/api/transaction/#verify\n *\n * @example\n * const res = await ps.paystack.transactions.verify(\"pwv_ref_001\");\n * if (res.data.status === \"success\") { }\n */\n async verify(reference: string) {\n const ref = refString(reference);\n return this.http.request({\n method: \"GET\",\n path: `/transaction/verify/${encodeURIComponent(ref)}`,\n schema: transactionRes,\n });\n }\n\n /**\n * List transactions on the integration.\n *\n * Docs: https://paystack.com/docs/api/transaction/#list\n *\n * @example\n * const page = await ps.paystack.transactions.list({ perPage: 50, status: \"success\" });\n */\n async list(query: ListQuery = {}) {\n const q = parseRequest(listQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/transaction\",\n query: q,\n schema: transactionListRes,\n });\n }\n\n /**\n * Async iterator over ALL transactions matching `query`, transparently walking\n * every page (`meta.pageCount`).\n *\n * Docs: https://paystack.com/docs/api/transaction/#list\n *\n * @example\n * for await (const tx of ps.paystack.transactions.iterate({ status: \"success\" })) {\n * console.log(tx.id);\n * }\n */\n async *iterate(query: ListQuery = {}) {\n const base = parseRequest(listQuery, query);\n const perPage = base.perPage ?? 50;\n let page = base.page ?? 1;\n for (;;) {\n const res = await this.http.request({\n method: \"GET\",\n path: \"/transaction\",\n query: { ...base, perPage, page },\n schema: transactionListRes,\n });\n for (const tx of res.data) yield tx;\n const pageCount = metaNumber(res.meta?.pageCount);\n if (pageCount !== undefined) {\n if (page >= pageCount) return;\n } else if (res.data.length < perPage) {\n return;\n }\n page += 1;\n }\n }\n\n /**\n * Fetch a single transaction by its numeric Paystack id.\n *\n * Docs: https://paystack.com/docs/api/transaction/#fetch\n *\n * @example\n * const res = await ps.paystack.transactions.fetch(123456789);\n */\n async fetch(id: number | string) {\n return this.http.request({\n method: \"GET\",\n path: `/transaction/${encodeURIComponent(String(id))}`,\n schema: transactionRes,\n });\n }\n\n /**\n * Charge a previously-authorized card using its reusable `authorization_code`.\n * `amount` is KOBO minor units, passed through unchanged.\n *\n * Docs: https://paystack.com/docs/api/transaction/#charge-authorization\n *\n * @example\n * const res = await ps.paystack.transactions.chargeAuthorization({\n * email: \"buyer@example.com\",\n * amount: 500000,\n * authorization_code: \"AUTH_example\",\n * });\n */\n async chargeAuthorization(input: ChargeAuthorizationReq) {\n const body = parseRequest(chargeAuthorizationReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/transaction/charge_authorization\",\n body,\n schema: transactionRes,\n });\n }\n\n /**\n * Retrieve the timeline (event log) of a transaction by id or reference.\n *\n * Docs: https://paystack.com/docs/api/transaction/#view-timeline\n *\n * @example\n * const res = await ps.paystack.transactions.timeline(\"pwv_ref_001\");\n */\n async timeline(idOrReference: number | string) {\n return this.http.request({\n method: \"GET\",\n path: `/transaction/timeline/${encodeURIComponent(String(idOrReference))}`,\n schema: paystackEnvelope(looseData()),\n });\n }\n\n /**\n * Total amount received on the integration over an optional date window.\n *\n * Docs: https://paystack.com/docs/api/transaction/#totals\n *\n * @example\n * const res = await ps.paystack.transactions.totals({ from: \"2024-01-01\" });\n */\n async totals(query: TotalsQuery = {}) {\n const q = parseRequest(totalsQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/transaction/totals\",\n query: q,\n schema: paystackEnvelope(looseData()),\n });\n }\n\n /**\n * Deduct a partial amount from a customer's authorization. `amount` is KOBO.\n *\n * Docs: https://paystack.com/docs/api/transaction/#partial-debit\n *\n * @example\n * const res = await ps.paystack.transactions.partialDebit({\n * authorization_code: \"AUTH_example\",\n * currency: \"NGN\",\n * amount: 200000,\n * email: \"buyer@example.com\",\n * });\n */\n async partialDebit(input: PartialDebitReq) {\n const body = parseRequest(partialDebitReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/transaction/partial_debit\",\n body,\n schema: transactionRes,\n });\n }\n}\n","/**\n * Zod schemas for the Paystack Refunds module.\n * Docs: https://paystack.com/docs/api/refund/\n */\nimport { z } from \"zod\";\n\n/** POST /refund — request. */\nexport const createRefundReq = z.object({\n /** Transaction id or reference to refund. Required. */\n transaction: z.union([z.string(), z.number().int()]),\n /** Amount in KOBO (minor units). Omit to refund the full amount. */\n amount: z.number().int().nonnegative().optional(),\n currency: z.string().optional(),\n customer_note: z.string().optional(),\n merchant_note: z.string().optional(),\n});\nexport type CreateRefundReq = z.input<typeof createRefundReq>;\n\n/** GET /refund — query. */\nexport const listRefundsQuery = z.object({\n transaction: z.union([z.string(), z.number().int()]).optional(),\n currency: z.string().optional(),\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n});\nexport type ListRefundsQuery = z.input<typeof listRefundsQuery>;\n\n/** A refund object (loose). */\nexport const refund = z.looseObject({\n id: z.number().optional(),\n transaction: z.union([z.number(), z.looseObject({})]).optional(),\n integration: z.number().optional(),\n amount: z.number().optional(),\n deducted_amount: z.number().nullable().optional(),\n currency: z.string().optional(),\n channel: z.string().nullable().optional(),\n status: z.string().optional(),\n refunded_by: z.string().nullable().optional(),\n customer_note: z.string().nullable().optional(),\n merchant_note: z.string().nullable().optional(),\n expected_at: z.string().nullable().optional(),\n created_at: z.string().optional(),\n updated_at: z.string().optional(),\n});\n","/**\n * Paystack Refunds resource. Docs: https://paystack.com/docs/api/refund/\n */\nimport { z } from \"zod\";\nimport type { HttpClient } from \"../../core/http\";\nimport { parseRequest, metaNumber, paystackEnvelope, paystackListEnvelope } from \"../types\";\nimport {\n createRefundReq,\n listRefundsQuery,\n refund,\n type CreateRefundReq,\n type ListRefundsQuery,\n} from \"../schemas/refunds\";\n\nconst refundRes = paystackEnvelope(refund);\nconst refundListRes = paystackListEnvelope(refund);\n\nexport class Refunds {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a refund for a transaction. `amount` is KOBO minor units; omit to\n * refund in full.\n *\n * Docs: https://paystack.com/docs/api/refund/#create\n *\n * @example\n * const res = await ps.paystack.refunds.create({ transaction: \"pwv_ref_001\", amount: 100000 });\n */\n async create(input: CreateRefundReq) {\n const body = parseRequest(createRefundReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/refund\",\n body,\n schema: refundRes,\n });\n }\n\n /**\n * List refunds.\n *\n * Docs: https://paystack.com/docs/api/refund/#list\n *\n * @example\n * const page = await ps.paystack.refunds.list({ perPage: 50 });\n */\n async list(query: ListRefundsQuery = {}) {\n const q = parseRequest(listRefundsQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/refund\",\n query: q,\n schema: refundListRes,\n });\n }\n\n /**\n * Async iterator over ALL refunds matching `query`.\n *\n * Docs: https://paystack.com/docs/api/refund/#list\n *\n * @example\n * for await (const r of ps.paystack.refunds.iterate()) console.log(r.id);\n */\n async *iterate(query: ListRefundsQuery = {}) {\n const base = parseRequest(listRefundsQuery, query);\n const perPage = base.perPage ?? 50;\n let page = base.page ?? 1;\n for (;;) {\n const res = await this.http.request({\n method: \"GET\",\n path: \"/refund\",\n query: { ...base, perPage, page },\n schema: refundListRes,\n });\n for (const r of res.data) yield r;\n const pageCount = metaNumber(res.meta?.pageCount);\n if (pageCount !== undefined) {\n if (page >= pageCount) return;\n } else if (res.data.length < perPage) {\n return;\n }\n page += 1;\n }\n }\n\n /**\n * Fetch a single refund by id.\n *\n * Docs: https://paystack.com/docs/api/refund/#fetch\n *\n * @example\n * const res = await ps.paystack.refunds.fetch(1234);\n */\n async fetch(id: number | string) {\n z.string().min(1).parse(String(id));\n return this.http.request({\n method: \"GET\",\n path: `/refund/${encodeURIComponent(String(id))}`,\n schema: refundRes,\n });\n }\n}\n","/**\n * Zod schemas for the Paystack Customers module.\n * Docs: https://paystack.com/docs/api/customer/\n */\nimport { z } from \"zod\";\nimport { metadataSchema } from \"../types\";\n\n/** POST /customer — request. */\nexport const createCustomerReq = z.object({\n /** Customer email. Required. */\n email: z.string(),\n first_name: z.string().optional(),\n last_name: z.string().optional(),\n phone: z.string().optional(),\n metadata: metadataSchema.optional(),\n});\nexport type CreateCustomerReq = z.input<typeof createCustomerReq>;\n\n/** PUT /customer/:code — request (update). */\nexport const updateCustomerReq = z.object({\n first_name: z.string().optional(),\n last_name: z.string().optional(),\n phone: z.string().optional(),\n metadata: metadataSchema.optional(),\n});\nexport type UpdateCustomerReq = z.input<typeof updateCustomerReq>;\n\n/** GET /customer — query. */\nexport const listCustomersQuery = z.object({\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n});\nexport type ListCustomersQuery = z.input<typeof listCustomersQuery>;\n\n/**\n * POST /customer/:code/identification — request (validate).\n * Docs: https://paystack.com/docs/api/customer/#validate\n */\nexport const validateCustomerReq = z.object({\n /** e.g. \"NG\". Required. */\n country: z.string(),\n /** Predefined type of identification, e.g. \"bank_account\". Required. */\n type: z.string(),\n account_number: z.string().optional(),\n bvn: z.string().optional(),\n bank_code: z.string().optional(),\n first_name: z.string().optional(),\n last_name: z.string().optional(),\n middle_name: z.string().optional(),\n value: z.string().optional(),\n});\nexport type ValidateCustomerReq = z.input<typeof validateCustomerReq>;\n\n/**\n * POST /customer/set_risk_action — request.\n * Docs: https://paystack.com/docs/api/customer/#whitelist-blacklist\n */\nexport const setRiskActionReq = z.object({\n /** Customer code or email. Required. */\n customer: z.string(),\n /** allow (whitelist), deny (blacklist), or default. Required. */\n risk_action: z.enum([\"default\", \"allow\", \"deny\"]),\n});\nexport type SetRiskActionReq = z.input<typeof setRiskActionReq>;\n\n/** A customer object (loose). */\nexport const customer = z.looseObject({\n id: z.number().optional(),\n integration: z.number().optional(),\n first_name: z.string().nullable().optional(),\n last_name: z.string().nullable().optional(),\n email: z.string().optional(),\n phone: z.string().nullable().optional(),\n customer_code: z.string().optional(),\n domain: z.string().optional(),\n risk_action: z.string().optional(),\n metadata: z.unknown().optional(),\n created_at: z.string().optional(),\n updated_at: z.string().optional(),\n});\n","/**\n * Paystack Customers resource. Docs: https://paystack.com/docs/api/customer/\n */\nimport { z } from \"zod\";\nimport type { HttpClient } from \"../../core/http\";\nimport { parseRequest, metaNumber, paystackEnvelope, paystackListEnvelope } from \"../types\";\nimport {\n createCustomerReq,\n customer,\n listCustomersQuery,\n setRiskActionReq,\n updateCustomerReq,\n validateCustomerReq,\n type CreateCustomerReq,\n type ListCustomersQuery,\n type SetRiskActionReq,\n type UpdateCustomerReq,\n type ValidateCustomerReq,\n} from \"../schemas/customers\";\n\nconst customerRes = paystackEnvelope(customer);\nconst customerListRes = paystackListEnvelope(customer);\n// NOTE(verify): validate/deactivate acknowledge asynchronously; Paystack returns\n// `{status,message}` with no stable `data` payload. Modelled as an ack envelope\n// with `data: unknown` (loose) so any future data field passes through.\nconst ackRes = paystackEnvelope(z.unknown());\n\nexport class Customers {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a customer.\n *\n * Docs: https://paystack.com/docs/api/customer/#create\n *\n * @example\n * const res = await ps.paystack.customers.create({ email: \"buyer@example.com\" });\n */\n async create(input: CreateCustomerReq) {\n const body = parseRequest(createCustomerReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/customer\",\n body,\n schema: customerRes,\n });\n }\n\n /**\n * List customers.\n *\n * Docs: https://paystack.com/docs/api/customer/#list\n *\n * @example\n * const page = await ps.paystack.customers.list({ perPage: 50 });\n */\n async list(query: ListCustomersQuery = {}) {\n const q = parseRequest(listCustomersQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/customer\",\n query: q,\n schema: customerListRes,\n });\n }\n\n /**\n * Async iterator over ALL customers.\n *\n * Docs: https://paystack.com/docs/api/customer/#list\n *\n * @example\n * for await (const c of ps.paystack.customers.iterate()) console.log(c.customer_code);\n */\n async *iterate(query: ListCustomersQuery = {}) {\n const base = parseRequest(listCustomersQuery, query);\n const perPage = base.perPage ?? 50;\n let page = base.page ?? 1;\n for (;;) {\n const res = await this.http.request({\n method: \"GET\",\n path: \"/customer\",\n query: { ...base, perPage, page },\n schema: customerListRes,\n });\n for (const c of res.data) yield c;\n const pageCount = metaNumber(res.meta?.pageCount);\n if (pageCount !== undefined) {\n if (page >= pageCount) return;\n } else if (res.data.length < perPage) {\n return;\n }\n page += 1;\n }\n }\n\n /**\n * Fetch a customer by email or customer code.\n *\n * Docs: https://paystack.com/docs/api/customer/#fetch\n *\n * @example\n * const res = await ps.paystack.customers.fetch(\"CUS_example\");\n */\n async fetch(emailOrCode: string) {\n const key = parseRequest(z.string().min(1), emailOrCode);\n return this.http.request({\n method: \"GET\",\n path: `/customer/${encodeURIComponent(key)}`,\n schema: customerRes,\n });\n }\n\n /**\n * Update a customer by customer code.\n *\n * Docs: https://paystack.com/docs/api/customer/#update\n *\n * @example\n * const res = await ps.paystack.customers.update(\"CUS_example\", { first_name: \"Ada\" });\n */\n async update(code: string, input: UpdateCustomerReq) {\n const key = parseRequest(z.string().min(1), code);\n const body = parseRequest(updateCustomerReq, input);\n return this.http.request({\n method: \"PUT\",\n path: `/customer/${encodeURIComponent(key)}`,\n body,\n schema: customerRes,\n });\n }\n\n /**\n * Validate a customer's identity (e.g. bank account). Paystack processes this\n * asynchronously and returns an acknowledgement envelope.\n *\n * Docs: https://paystack.com/docs/api/customer/#validate\n *\n * @example\n * await ps.paystack.customers.validate(\"CUS_example\", {\n * country: \"NG\", type: \"bank_account\",\n * account_number: \"0000000000\", bank_code: \"011\",\n * first_name: \"Ada\", last_name: \"Lovelace\",\n * });\n */\n async validate(code: string, input: ValidateCustomerReq) {\n const key = parseRequest(z.string().min(1), code);\n const body = parseRequest(validateCustomerReq, input);\n return this.http.request({\n method: \"POST\",\n path: `/customer/${encodeURIComponent(key)}/identification`,\n body,\n schema: ackRes,\n });\n }\n\n /**\n * Whitelist or blacklist a customer (set risk action).\n *\n * Docs: https://paystack.com/docs/api/customer/#whitelist-blacklist\n *\n * @example\n * await ps.paystack.customers.setRiskAction({ customer: \"CUS_example\", risk_action: \"allow\" });\n */\n async setRiskAction(input: SetRiskActionReq) {\n const body = parseRequest(setRiskActionReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/customer/set_risk_action\",\n body,\n schema: customerRes,\n });\n }\n\n /**\n * Deactivate a reusable authorization on a customer.\n *\n * Docs: https://paystack.com/docs/api/customer/#deactivate-authorization\n *\n * @example\n * await ps.paystack.customers.deactivateAuthorization(\"AUTH_example\");\n */\n async deactivateAuthorization(authorizationCode: string) {\n const code = parseRequest(z.string().min(1), authorizationCode);\n return this.http.request({\n method: \"POST\",\n path: \"/customer/deactivate_authorization\",\n body: { authorization_code: code },\n schema: ackRes,\n });\n }\n}\n","/**\n * Zod schemas for Paystack Verification + Miscellaneous endpoints.\n * Docs:\n * - Banks: https://paystack.com/docs/api/miscellaneous/#bank\n * - Countries: https://paystack.com/docs/api/miscellaneous/#country\n * - States (AVS): https://paystack.com/docs/api/miscellaneous/#avs-states\n * - Resolve account: https://paystack.com/docs/api/verification/#resolve-account\n * - Resolve card BIN: https://paystack.com/docs/api/verification/#resolve-card-bin\n */\nimport { z } from \"zod\";\n\n/** GET /bank — query. */\nexport const listBanksQuery = z.object({\n /** Country name, e.g. \"nigeria\" (lowercase, as Paystack documents). */\n country: z.string().optional(),\n use_cursor: z.boolean().optional(),\n perPage: z.number().int().positive().optional(),\n pay_with_bank_transfer: z.boolean().optional(),\n pay_with_bank: z.boolean().optional(),\n gateway: z.string().optional(),\n type: z.string().optional(),\n currency: z.string().optional(),\n next: z.string().optional(),\n previous: z.string().optional(),\n});\nexport type ListBanksQuery = z.input<typeof listBanksQuery>;\n\n/** A bank object (loose). */\nexport const bank = z.looseObject({\n id: z.number().optional(),\n name: z.string().optional(),\n slug: z.string().optional(),\n code: z.string().optional(),\n longcode: z.string().nullable().optional(),\n gateway: z.string().nullable().optional(),\n pay_with_bank: z.boolean().optional(),\n active: z.boolean().optional(),\n country: z.string().optional(),\n currency: z.string().optional(),\n type: z.string().optional(),\n});\n\n/** GET /bank/resolve — query. */\nexport const resolveAccountQuery = z.object({\n account_number: z.string(),\n bank_code: z.string(),\n});\nexport type ResolveAccountQuery = z.input<typeof resolveAccountQuery>;\n\n/** GET /bank/resolve — response data. */\nexport const resolvedAccount = z.looseObject({\n account_number: z.string(),\n account_name: z.string(),\n bank_id: z.number().optional(),\n});\n\n// NOTE(verify): the AVS \"list states\" endpoint path (`/address_verification/states`)\n// and its item shape (name/slug/abbreviation) are per the Miscellaneous docs; the\n// response schema is loose so any drift is logged, never thrown.\n/** GET /address_verification/states — query. */\nexport const listStatesQuery = z.object({\n /** Country code, e.g. \"CA\" or \"NG\". */\n country: z.string(),\n});\nexport type ListStatesQuery = z.input<typeof listStatesQuery>;\n\n/** A country object (loose). */\nexport const country = z.looseObject({\n id: z.number().optional(),\n name: z.string().optional(),\n iso_code: z.string().optional(),\n default_currency_code: z.string().optional(),\n});\n\n/** A state/AVS object (loose). */\nexport const avsState = z.looseObject({\n name: z.string().optional(),\n slug: z.string().optional(),\n abbreviation: z.string().optional(),\n});\n\n/** GET /decision/bin/:bin — response data. */\nexport const cardBin = z.looseObject({\n bin: z.string().optional(),\n brand: z.string().optional(),\n sub_brand: z.string().optional(),\n country_code: z.string().optional(),\n country_name: z.string().optional(),\n card_type: z.string().optional(),\n bank: z.string().optional(),\n linked_bank_id: z.number().optional(),\n});\n","/**\n * Paystack Verification + Miscellaneous resource (banks, account resolution,\n * countries, states, card BIN). These feed the unified layer later.\n * Docs: https://paystack.com/docs/api/verification/ and\n * https://paystack.com/docs/api/miscellaneous/\n */\nimport { z } from \"zod\";\nimport type { HttpClient } from \"../../core/http\";\nimport { parseRequest, paystackEnvelope, paystackListEnvelope } from \"../types\";\nimport {\n avsState,\n bank,\n cardBin,\n country,\n listBanksQuery,\n listStatesQuery,\n resolveAccountQuery,\n resolvedAccount,\n type ListBanksQuery,\n type ListStatesQuery,\n type ResolveAccountQuery,\n} from \"../schemas/misc\";\n\nconst bankListRes = paystackListEnvelope(bank);\nconst resolveRes = paystackEnvelope(resolvedAccount);\nconst countryListRes = paystackListEnvelope(country);\nconst stateListRes = paystackListEnvelope(avsState);\nconst cardBinRes = paystackEnvelope(cardBin);\n\nexport class Misc {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * List banks (and other financial channels) for a country.\n *\n * Docs: https://paystack.com/docs/api/miscellaneous/#bank\n *\n * @example\n * const res = await ps.paystack.misc.listBanks({ country: \"nigeria\" });\n */\n async listBanks(query: ListBanksQuery = {}) {\n const q = parseRequest(listBanksQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/bank\",\n query: q,\n schema: bankListRes,\n });\n }\n\n /**\n * Resolve an account number to an account name at a bank.\n *\n * Docs: https://paystack.com/docs/api/verification/#resolve-account\n *\n * @example\n * const res = await ps.paystack.misc.resolveAccountNumber({\n * account_number: \"0000000000\", bank_code: \"011\",\n * });\n * console.log(res.data.account_name);\n */\n async resolveAccountNumber(query: ResolveAccountQuery) {\n const q = parseRequest(resolveAccountQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/bank/resolve\",\n query: q,\n schema: resolveRes,\n });\n }\n\n /**\n * List countries Paystack currently supports.\n *\n * Docs: https://paystack.com/docs/api/miscellaneous/#country\n *\n * @example\n * const res = await ps.paystack.misc.listCountries();\n */\n async listCountries() {\n return this.http.request({\n method: \"GET\",\n path: \"/country\",\n schema: countryListRes,\n });\n }\n\n /**\n * List the states for a country's address verification.\n *\n * Docs: https://paystack.com/docs/api/miscellaneous/#avs-states\n *\n * @example\n * const res = await ps.paystack.misc.listStates({ country: \"CA\" });\n */\n async listStates(query: ListStatesQuery) {\n const q = parseRequest(listStatesQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/address_verification/states\",\n query: q,\n schema: stateListRes,\n });\n }\n\n /**\n * Resolve a card BIN (first 6 digits) to its issuer/brand.\n *\n * Docs: https://paystack.com/docs/api/verification/#resolve-card-bin\n *\n * @example\n * const res = await ps.paystack.misc.resolveCardBin(\"539983\");\n */\n async resolveCardBin(bin: string) {\n const value = parseRequest(z.string().min(1), bin);\n return this.http.request({\n method: \"GET\",\n path: `/decision/bin/${encodeURIComponent(value)}`,\n schema: cardBinRes,\n });\n }\n}\n","/**\n * Zod schemas for Paystack Transfer Recipients, Transfers, and Balance.\n * Docs:\n * - Transfer recipient: https://paystack.com/docs/api/transfer-recipient/\n * - Transfer: https://paystack.com/docs/api/transfer/\n * - Balance: https://paystack.com/docs/api/transfer/#balance\n */\nimport { z } from \"zod\";\nimport { metadataSchema } from \"../types\";\n\n/** POST /transferrecipient — request. */\nexport const createRecipientReq = z.object({\n /** Recipient type, e.g. \"nuban\", \"mobile_money\", \"basa\". Required. */\n type: z.string(),\n /** Recipient name. Required. */\n name: z.string(),\n account_number: z.string().optional(),\n bank_code: z.string().optional(),\n description: z.string().optional(),\n currency: z.string().optional(),\n authorization_code: z.string().optional(),\n metadata: metadataSchema.optional(),\n});\nexport type CreateRecipientReq = z.input<typeof createRecipientReq>;\n\n/** GET /transferrecipient — query. */\nexport const listRecipientsQuery = z.object({\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n});\nexport type ListRecipientsQuery = z.input<typeof listRecipientsQuery>;\n\n/** A transfer recipient object (loose). */\nexport const recipient = z.looseObject({\n id: z.number().optional(),\n integration: z.number().optional(),\n domain: z.string().optional(),\n type: z.string().optional(),\n currency: z.string().optional(),\n name: z.string().optional(),\n recipient_code: z.string().optional(),\n active: z.boolean().optional(),\n is_deleted: z.boolean().optional(),\n details: z.looseObject({}).optional(),\n created_at: z.string().optional(),\n updated_at: z.string().optional(),\n});\n\n/** POST /transfer — request. */\nexport const initiateTransferReq = z.object({\n /** Where to debit, currently only \"balance\". Required. */\n source: z.string(),\n /** Amount in KOBO (minor units). Required. */\n amount: z.number().int().nonnegative(),\n /** Recipient code (`RCP_...`). Required. */\n recipient: z.string(),\n reason: z.string().optional(),\n currency: z.string().optional(),\n reference: z.string().optional(),\n});\nexport type InitiateTransferReq = z.input<typeof initiateTransferReq>;\n\n/** GET /transfer — query. */\nexport const listTransfersQuery = z.object({\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n recipient: z.number().int().optional(),\n from: z.string().optional(),\n to: z.string().optional(),\n});\nexport type ListTransfersQuery = z.input<typeof listTransfersQuery>;\n\n/** A transfer object (loose). */\nexport const transfer = z.looseObject({\n id: z.number().optional(),\n integration: z.number().optional(),\n domain: z.string().optional(),\n amount: z.number().optional(),\n currency: z.string().optional(),\n source: z.string().optional(),\n reason: z.string().nullable().optional(),\n recipient: z.union([z.number(), z.looseObject({})]).optional(),\n status: z.string().optional(),\n transfer_code: z.string().optional(),\n reference: z.string().nullable().optional(),\n created_at: z.string().optional(),\n updated_at: z.string().optional(),\n});\n\n/** A single balance row (loose). */\nexport const balanceEntry = z.looseObject({\n currency: z.string().optional(),\n balance: z.number().optional(),\n});\n","/**\n * Paystack Transfer Recipients resource.\n * Docs: https://paystack.com/docs/api/transfer-recipient/\n */\nimport { z } from \"zod\";\nimport type { HttpClient } from \"../../core/http\";\nimport { parseRequest, metaNumber, paystackEnvelope, paystackListEnvelope } from \"../types\";\nimport {\n createRecipientReq,\n listRecipientsQuery,\n recipient,\n type CreateRecipientReq,\n type ListRecipientsQuery,\n} from \"../schemas/transfers\";\n\nconst recipientRes = paystackEnvelope(recipient);\nconst recipientListRes = paystackListEnvelope(recipient);\n\nexport class TransferRecipients {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a transfer recipient.\n *\n * Docs: https://paystack.com/docs/api/transfer-recipient/#create\n *\n * @example\n * const res = await ps.paystack.transferRecipients.create({\n * type: \"nuban\", name: \"Ada Lovelace\",\n * account_number: \"0000000000\", bank_code: \"011\",\n * });\n */\n async create(input: CreateRecipientReq) {\n const body = parseRequest(createRecipientReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/transferrecipient\",\n body,\n schema: recipientRes,\n });\n }\n\n /**\n * List transfer recipients.\n *\n * Docs: https://paystack.com/docs/api/transfer-recipient/#list\n *\n * @example\n * const page = await ps.paystack.transferRecipients.list({ perPage: 50 });\n */\n async list(query: ListRecipientsQuery = {}) {\n const q = parseRequest(listRecipientsQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/transferrecipient\",\n query: q,\n schema: recipientListRes,\n });\n }\n\n /**\n * Async iterator over ALL transfer recipients.\n *\n * Docs: https://paystack.com/docs/api/transfer-recipient/#list\n *\n * @example\n * for await (const r of ps.paystack.transferRecipients.iterate()) console.log(r.recipient_code);\n */\n async *iterate(query: ListRecipientsQuery = {}) {\n const base = parseRequest(listRecipientsQuery, query);\n const perPage = base.perPage ?? 50;\n let page = base.page ?? 1;\n for (;;) {\n const res = await this.http.request({\n method: \"GET\",\n path: \"/transferrecipient\",\n query: { ...base, perPage, page },\n schema: recipientListRes,\n });\n for (const r of res.data) yield r;\n const pageCount = metaNumber(res.meta?.pageCount);\n if (pageCount !== undefined) {\n if (page >= pageCount) return;\n } else if (res.data.length < perPage) {\n return;\n }\n page += 1;\n }\n }\n\n /**\n * Fetch a transfer recipient by id or recipient code.\n *\n * Docs: https://paystack.com/docs/api/transfer-recipient/#fetch\n *\n * @example\n * const res = await ps.paystack.transferRecipients.fetch(\"RCP_example\");\n */\n async fetch(idOrCode: string | number) {\n const key = z.string().min(1).parse(String(idOrCode));\n return this.http.request({\n method: \"GET\",\n path: `/transferrecipient/${encodeURIComponent(key)}`,\n schema: recipientRes,\n });\n }\n}\n","/**\n * Paystack Transfers + Balance resource.\n * Docs: https://paystack.com/docs/api/transfer/\n *\n * NOTE: POST /transfer is a money-moving call. Per TDD §6.2 the SDK never\n * auto-retries bare POSTs, so `initiate` is not retried on network errors.\n */\nimport { z } from \"zod\";\nimport type { HttpClient } from \"../../core/http\";\nimport { parseRequest, metaNumber, paystackEnvelope, paystackListEnvelope } from \"../types\";\nimport {\n balanceEntry,\n initiateTransferReq,\n listTransfersQuery,\n transfer,\n type InitiateTransferReq,\n type ListTransfersQuery,\n} from \"../schemas/transfers\";\n\nconst transferRes = paystackEnvelope(transfer);\nconst transferListRes = paystackListEnvelope(transfer);\nconst balanceRes = paystackEnvelope(z.array(balanceEntry));\n\nexport class Transfers {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Initiate a transfer to a recipient. `amount` is KOBO minor units.\n *\n * Docs: https://paystack.com/docs/api/transfer/#initiate\n *\n * @example\n * const res = await ps.paystack.transfers.initiate({\n * source: \"balance\", amount: 500000, recipient: \"RCP_example\",\n * });\n */\n async initiate(input: InitiateTransferReq) {\n const body = parseRequest(initiateTransferReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/transfer\",\n body,\n schema: transferRes,\n });\n }\n\n /**\n * List transfers.\n *\n * Docs: https://paystack.com/docs/api/transfer/#list\n *\n * @example\n * const page = await ps.paystack.transfers.list({ perPage: 50 });\n */\n async list(query: ListTransfersQuery = {}) {\n const q = parseRequest(listTransfersQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/transfer\",\n query: q,\n schema: transferListRes,\n });\n }\n\n /**\n * Async iterator over ALL transfers.\n *\n * Docs: https://paystack.com/docs/api/transfer/#list\n *\n * @example\n * for await (const t of ps.paystack.transfers.iterate()) console.log(t.transfer_code);\n */\n async *iterate(query: ListTransfersQuery = {}) {\n const base = parseRequest(listTransfersQuery, query);\n const perPage = base.perPage ?? 50;\n let page = base.page ?? 1;\n for (;;) {\n const res = await this.http.request({\n method: \"GET\",\n path: \"/transfer\",\n query: { ...base, perPage, page },\n schema: transferListRes,\n });\n for (const t of res.data) yield t;\n const pageCount = metaNumber(res.meta?.pageCount);\n if (pageCount !== undefined) {\n if (page >= pageCount) return;\n } else if (res.data.length < perPage) {\n return;\n }\n page += 1;\n }\n }\n\n /**\n * Fetch a transfer by id or transfer code.\n *\n * Docs: https://paystack.com/docs/api/transfer/#fetch\n *\n * @example\n * const res = await ps.paystack.transfers.fetch(\"TRF_example\");\n */\n async fetch(idOrCode: string | number) {\n const key = z.string().min(1).parse(String(idOrCode));\n return this.http.request({\n method: \"GET\",\n path: `/transfer/${encodeURIComponent(key)}`,\n schema: transferRes,\n });\n }\n\n /**\n * Verify a transfer by its reference.\n *\n * Docs: https://paystack.com/docs/api/transfer/#verify\n *\n * @example\n * const res = await ps.paystack.transfers.verify(\"pwv_transfer_ref\");\n */\n async verify(reference: string) {\n const ref = parseRequest(z.string().min(1), reference);\n return this.http.request({\n method: \"GET\",\n path: `/transfer/verify/${encodeURIComponent(ref)}`,\n schema: transferRes,\n });\n }\n\n /**\n * Fetch the balance(s) available on the integration.\n *\n * Docs: https://paystack.com/docs/api/transfer/#balance\n *\n * @example\n * const res = await ps.paystack.transfers.balance();\n * console.log(res.data[0]?.balance);\n */\n async balance() {\n return this.http.request({\n method: \"GET\",\n path: \"/balance\",\n schema: balanceRes,\n });\n }\n}\n","/**\n * Zod schemas for Paystack Plans + Subscriptions.\n * Docs:\n * - Plan: https://paystack.com/docs/api/plan/\n * - Subscription: https://paystack.com/docs/api/subscription/\n */\nimport { z } from \"zod\";\n\n/** Billing intervals Paystack documents for plans. */\nconst planInterval = z.enum([\n \"daily\",\n \"weekly\",\n \"monthly\",\n \"quarterly\",\n \"biannually\",\n \"annually\",\n]);\n\n/** POST /plan — request. */\nexport const createPlanReq = z.object({\n /** Plan name. Required. */\n name: z.string(),\n /** Amount in KOBO (minor units). Required. */\n amount: z.number().int().nonnegative(),\n /** Billing interval. Required. */\n interval: planInterval,\n description: z.string().optional(),\n send_invoices: z.boolean().optional(),\n send_sms: z.boolean().optional(),\n currency: z.string().optional(),\n invoice_limit: z.number().int().optional(),\n});\nexport type CreatePlanReq = z.input<typeof createPlanReq>;\n\n/** GET /plan — query. */\nexport const listPlansQuery = z.object({\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n status: z.string().optional(),\n interval: planInterval.optional(),\n amount: z.number().int().optional(),\n});\nexport type ListPlansQuery = z.input<typeof listPlansQuery>;\n\n/** A plan object (loose). */\nexport const plan = z.looseObject({\n id: z.number().optional(),\n name: z.string().optional(),\n plan_code: z.string().optional(),\n description: z.string().nullable().optional(),\n amount: z.number().optional(),\n interval: z.string().optional(),\n currency: z.string().optional(),\n send_invoices: z.boolean().optional(),\n send_sms: z.boolean().optional(),\n hosted_page: z.boolean().optional(),\n integration: z.number().optional(),\n domain: z.string().optional(),\n created_at: z.string().optional(),\n updated_at: z.string().optional(),\n});\n\n/** POST /subscription — request. */\nexport const createSubscriptionReq = z.object({\n /** Customer code or email. Required. */\n customer: z.string(),\n /** Plan code. Required. */\n plan: z.string(),\n /** Authorization code to charge (optional; defaults to the customer's). */\n authorization: z.string().optional(),\n start_date: z.string().optional(),\n});\nexport type CreateSubscriptionReq = z.input<typeof createSubscriptionReq>;\n\n/** GET /subscription — query. */\nexport const listSubscriptionsQuery = z.object({\n perPage: z.number().int().positive().optional(),\n page: z.number().int().positive().optional(),\n customer: z.number().int().optional(),\n plan: z.number().int().optional(),\n});\nexport type ListSubscriptionsQuery = z.input<typeof listSubscriptionsQuery>;\n\n/** POST /subscription/enable | /subscription/disable — request. */\nexport const toggleSubscriptionReq = z.object({\n /** Subscription code. Required. */\n code: z.string(),\n /** Email token from the subscription. Required. */\n token: z.string(),\n});\nexport type ToggleSubscriptionReq = z.input<typeof toggleSubscriptionReq>;\n\n/** A subscription object (loose). */\nexport const subscription = z.looseObject({\n id: z.number().optional(),\n subscription_code: z.string().optional(),\n email_token: z.string().optional(),\n status: z.string().optional(),\n amount: z.number().optional(),\n quantity: z.number().optional(),\n customer: z.union([z.number(), z.looseObject({})]).optional(),\n plan: z.union([z.number(), z.looseObject({})]).optional(),\n authorization: z.looseObject({}).optional(),\n start: z.number().optional(),\n next_payment_date: z.string().nullable().optional(),\n created_at: z.string().optional(),\n updated_at: z.string().optional(),\n});\n","/**\n * Paystack Plans resource. Docs: https://paystack.com/docs/api/plan/\n */\nimport { z } from \"zod\";\nimport type { HttpClient } from \"../../core/http\";\nimport { parseRequest, metaNumber, paystackEnvelope, paystackListEnvelope } from \"../types\";\nimport {\n createPlanReq,\n listPlansQuery,\n plan,\n type CreatePlanReq,\n type ListPlansQuery,\n} from \"../schemas/plans\";\n\nconst planRes = paystackEnvelope(plan);\nconst planListRes = paystackListEnvelope(plan);\n\nexport class Plans {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a plan. `amount` is KOBO minor units.\n *\n * Docs: https://paystack.com/docs/api/plan/#create\n *\n * @example\n * const res = await ps.paystack.plans.create({\n * name: \"Monthly\", amount: 500000, interval: \"monthly\",\n * });\n */\n async create(input: CreatePlanReq) {\n const body = parseRequest(createPlanReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/plan\",\n body,\n schema: planRes,\n });\n }\n\n /**\n * List plans.\n *\n * Docs: https://paystack.com/docs/api/plan/#list\n *\n * @example\n * const page = await ps.paystack.plans.list({ perPage: 50 });\n */\n async list(query: ListPlansQuery = {}) {\n const q = parseRequest(listPlansQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/plan\",\n query: q,\n schema: planListRes,\n });\n }\n\n /**\n * Async iterator over ALL plans.\n *\n * Docs: https://paystack.com/docs/api/plan/#list\n *\n * @example\n * for await (const p of ps.paystack.plans.iterate()) console.log(p.plan_code);\n */\n async *iterate(query: ListPlansQuery = {}) {\n const base = parseRequest(listPlansQuery, query);\n const perPage = base.perPage ?? 50;\n let page = base.page ?? 1;\n for (;;) {\n const res = await this.http.request({\n method: \"GET\",\n path: \"/plan\",\n query: { ...base, perPage, page },\n schema: planListRes,\n });\n for (const p of res.data) yield p;\n const pageCount = metaNumber(res.meta?.pageCount);\n if (pageCount !== undefined) {\n if (page >= pageCount) return;\n } else if (res.data.length < perPage) {\n return;\n }\n page += 1;\n }\n }\n\n /**\n * Fetch a plan by id or plan code.\n *\n * Docs: https://paystack.com/docs/api/plan/#fetch\n *\n * @example\n * const res = await ps.paystack.plans.fetch(\"PLN_example\");\n */\n async fetch(idOrCode: string | number) {\n const key = z.string().min(1).parse(String(idOrCode));\n return this.http.request({\n method: \"GET\",\n path: `/plan/${encodeURIComponent(key)}`,\n schema: planRes,\n });\n }\n}\n","/**\n * Paystack Subscriptions resource.\n * Docs: https://paystack.com/docs/api/subscription/\n */\nimport { z } from \"zod\";\nimport type { HttpClient } from \"../../core/http\";\nimport { parseRequest, metaNumber, paystackEnvelope, paystackListEnvelope } from \"../types\";\nimport {\n createSubscriptionReq,\n listSubscriptionsQuery,\n subscription,\n toggleSubscriptionReq,\n type CreateSubscriptionReq,\n type ListSubscriptionsQuery,\n type ToggleSubscriptionReq,\n} from \"../schemas/plans\";\n\nconst subscriptionRes = paystackEnvelope(subscription);\nconst subscriptionListRes = paystackListEnvelope(subscription);\nconst ackRes = paystackEnvelope(z.unknown());\n\nexport class Subscriptions {\n constructor(private readonly http: HttpClient) {}\n\n /**\n * Create a subscription binding a customer to a plan.\n *\n * Docs: https://paystack.com/docs/api/subscription/#create\n *\n * @example\n * const res = await ps.paystack.subscriptions.create({\n * customer: \"CUS_example\", plan: \"PLN_example\",\n * });\n */\n async create(input: CreateSubscriptionReq) {\n const body = parseRequest(createSubscriptionReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/subscription\",\n body,\n schema: subscriptionRes,\n });\n }\n\n /**\n * List subscriptions.\n *\n * Docs: https://paystack.com/docs/api/subscription/#list\n *\n * @example\n * const page = await ps.paystack.subscriptions.list({ perPage: 50 });\n */\n async list(query: ListSubscriptionsQuery = {}) {\n const q = parseRequest(listSubscriptionsQuery, query);\n return this.http.request({\n method: \"GET\",\n path: \"/subscription\",\n query: q,\n schema: subscriptionListRes,\n });\n }\n\n /**\n * Async iterator over ALL subscriptions.\n *\n * Docs: https://paystack.com/docs/api/subscription/#list\n *\n * @example\n * for await (const s of ps.paystack.subscriptions.iterate()) console.log(s.subscription_code);\n */\n async *iterate(query: ListSubscriptionsQuery = {}) {\n const base = parseRequest(listSubscriptionsQuery, query);\n const perPage = base.perPage ?? 50;\n let page = base.page ?? 1;\n for (;;) {\n const res = await this.http.request({\n method: \"GET\",\n path: \"/subscription\",\n query: { ...base, perPage, page },\n schema: subscriptionListRes,\n });\n for (const s of res.data) yield s;\n const pageCount = metaNumber(res.meta?.pageCount);\n if (pageCount !== undefined) {\n if (page >= pageCount) return;\n } else if (res.data.length < perPage) {\n return;\n }\n page += 1;\n }\n }\n\n /**\n * Fetch a subscription by id or subscription code.\n *\n * Docs: https://paystack.com/docs/api/subscription/#fetch\n *\n * @example\n * const res = await ps.paystack.subscriptions.fetch(\"SUB_example\");\n */\n async fetch(idOrCode: string | number) {\n const key = z.string().min(1).parse(String(idOrCode));\n return this.http.request({\n method: \"GET\",\n path: `/subscription/${encodeURIComponent(key)}`,\n schema: subscriptionRes,\n });\n }\n\n /**\n * Enable a subscription (`code` + email `token`).\n *\n * Docs: https://paystack.com/docs/api/subscription/#enable\n *\n * @example\n * await ps.paystack.subscriptions.enable({ code: \"SUB_example\", token: \"email_token\" });\n */\n async enable(input: ToggleSubscriptionReq) {\n const body = parseRequest(toggleSubscriptionReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/subscription/enable\",\n body,\n schema: ackRes,\n });\n }\n\n /**\n * Disable a subscription (`code` + email `token`).\n *\n * Docs: https://paystack.com/docs/api/subscription/#disable\n *\n * @example\n * await ps.paystack.subscriptions.disable({ code: \"SUB_example\", token: \"email_token\" });\n */\n async disable(input: ToggleSubscriptionReq) {\n const body = parseRequest(toggleSubscriptionReq, input);\n return this.http.request({\n method: \"POST\",\n path: \"/subscription/disable\",\n body,\n schema: ackRes,\n });\n }\n}\n","/**\n * PaystackClient — Surface A. Holds the shared {@link HttpClient} every Paystack\n * resource is built on and exposes each resource as a `public readonly` field.\n * The provider-narrowing facade wires `sdk.paystack` from these fields.\n */\nimport { HttpClient, bearer } from \"../core/http\";\nimport { defineProvider, readHeader, type ProviderAdapter } from \"../core/provider\";\nimport {\n PAYSTACK_BASE_URL,\n paystackProviderConfigSchema,\n inferEnvironment as inferEnvironmentFromKey,\n type ResolvedProviderConfig,\n} from \"../core/config\";\nimport { PayweaveConfigError } from \"../core/errors\";\nimport { verifyPaystack } from \"../webhooks/paystack\";\nimport { toUnifiedEventType } from \"../unified/mappings\";\nimport { Transactions } from \"./resources/transactions\";\nimport { Refunds } from \"./resources/refunds\";\nimport { Customers } from \"./resources/customers\";\nimport { Misc } from \"./resources/misc\";\nimport { TransferRecipients } from \"./resources/transfer-recipients\";\nimport { Transfers } from \"./resources/transfers\";\nimport { Plans } from \"./resources/plans\";\nimport { Subscriptions } from \"./resources/subscriptions\";\n\nexport class PaystackClient {\n /** Shared HTTP client every resource is constructed with. */\n readonly http: HttpClient;\n\n /** Transactions: initialize, verify, list/iterate, fetch, charge auth, etc. */\n readonly transactions: Transactions;\n /** Refunds: create, list, fetch. */\n readonly refunds: Refunds;\n /** Customers: create, list, fetch, update, validate, risk action. */\n readonly customers: Customers;\n /** Verification / misc: banks, resolve account, countries, states, card BIN. */\n readonly misc: Misc;\n /** Transfer recipients: create, list, fetch. */\n readonly transferRecipients: TransferRecipients;\n /** Transfers: initiate, list, fetch, verify, balance. */\n readonly transfers: Transfers;\n /** Plans: create, list, fetch. */\n readonly plans: Plans;\n /** Subscriptions: create, list, fetch, enable, disable. */\n readonly subscriptions: Subscriptions;\n\n constructor(http: HttpClient) {\n this.http = http;\n this.transactions = new Transactions(this.http);\n this.refunds = new Refunds(this.http);\n this.customers = new Customers(this.http);\n this.misc = new Misc(this.http);\n this.transferRecipients = new TransferRecipients(this.http);\n this.transfers = new Transfers(this.http);\n this.plans = new Plans(this.http);\n this.subscriptions = new Subscriptions(this.http);\n }\n}\n\n// ── Provider adapter contract v2 (PW-608, providers.md §4) ──────────────────\n// `paystackAdapter` is additive metadata: it does not (yet) replace the direct\n// wiring in `src/index.ts` (`createPayweave` still builds `PaystackClient`\n// straight from its resolved config, unchanged) — it PROVES the paystack\n// surface satisfies the v2 `ProviderAdapter` contract via `configKey` +\n// `configSchema`, so a config-key-registry style composition (unified-config.md\n// §7) can be built on top later without any core edits.\n\nfunction paystackHttp(cfg: ResolvedProviderConfig): HttpClient {\n if (!cfg.secretKey) {\n throw new PayweaveConfigError(\"Missing secret key for paystack.\", { provider: \"paystack\" });\n }\n return new HttpClient({\n baseUrl: cfg.baseUrl,\n auth: bearer(cfg.secretKey),\n provider: \"paystack\",\n timeoutMs: cfg.timeoutMs,\n maxRetries: cfg.maxRetries,\n fetch: cfg.fetch,\n logger: cfg.logger,\n });\n}\n\n/**\n * The Paystack v2 adapter descriptor. `unified`/`billing` are intentionally\n * left unset here: the real unified ops (`unified/paystack.ts`'s\n * `createPaystackUnified`) are HttpClient-BOUND factories wired directly by\n * `createPayweave`, and this static descriptor has no HttpClient instance to\n * bind them to; the billing slot is an unimplemented PW-803/804 placeholder.\n */\nexport const paystackAdapter: ProviderAdapter = defineProvider({\n id: \"paystack\",\n configKey: \"paystack\",\n configSchema: paystackProviderConfigSchema,\n environments: {\n // One host for both — Paystack's environment is key-derived, not host-derived.\n test: { baseUrl: PAYSTACK_BASE_URL },\n live: { baseUrl: PAYSTACK_BASE_URL },\n },\n inferEnvironment: (secretKey) => {\n try {\n return inferEnvironmentFromKey(\"paystack\", secretKey);\n } catch {\n return null;\n }\n },\n createHttp: paystackHttp,\n webhooks: {\n signatureHeader: \"x-paystack-signature\",\n verify: ({ rawBody, headers, secret }) =>\n verifyPaystack(rawBody, readHeader(headers, \"x-paystack-signature\"), secret),\n parse: (rawBody) => {\n const root = JSON.parse(rawBody) as Record<string, unknown>;\n return {\n type: typeof root.event === \"string\" ? root.event : \"unknown\",\n data: root.data,\n raw: root,\n };\n },\n toUnified: (e) => ({\n provider: \"paystack\",\n type: e.type,\n unifiedType: toUnifiedEventType(\"paystack\", undefined, e.type, e.data),\n data: e.data,\n raw: e.raw,\n }),\n },\n});\n"]}
|