@plumbus/payments-stripe 0.2.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.
Files changed (57) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +60 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/catalog.d.ts +14 -0
  5. package/dist/catalog.d.ts.map +1 -0
  6. package/dist/catalog.js +286 -0
  7. package/dist/catalog.js.map +1 -0
  8. package/dist/charges.d.ts +64 -0
  9. package/dist/charges.d.ts.map +1 -0
  10. package/dist/charges.js +339 -0
  11. package/dist/charges.js.map +1 -0
  12. package/dist/config-rules.d.ts +7 -0
  13. package/dist/config-rules.d.ts.map +1 -0
  14. package/dist/config-rules.js +87 -0
  15. package/dist/config-rules.js.map +1 -0
  16. package/dist/diagnose.d.ts +17 -0
  17. package/dist/diagnose.d.ts.map +1 -0
  18. package/dist/diagnose.js +237 -0
  19. package/dist/diagnose.js.map +1 -0
  20. package/dist/errors.d.ts +4 -0
  21. package/dist/errors.d.ts.map +1 -0
  22. package/dist/errors.js +45 -0
  23. package/dist/errors.js.map +1 -0
  24. package/dist/events.d.ts +38 -0
  25. package/dist/events.d.ts.map +1 -0
  26. package/dist/events.js +167 -0
  27. package/dist/events.js.map +1 -0
  28. package/dist/index.d.ts +7 -0
  29. package/dist/index.d.ts.map +1 -0
  30. package/dist/index.js +10 -0
  31. package/dist/index.js.map +1 -0
  32. package/dist/mapping.d.ts +328 -0
  33. package/dist/mapping.d.ts.map +1 -0
  34. package/dist/mapping.js +437 -0
  35. package/dist/mapping.js.map +1 -0
  36. package/dist/provider.d.ts +33 -0
  37. package/dist/provider.d.ts.map +1 -0
  38. package/dist/provider.js +634 -0
  39. package/dist/provider.js.map +1 -0
  40. package/dist/resolve.d.ts +10 -0
  41. package/dist/resolve.d.ts.map +1 -0
  42. package/dist/resolve.js +171 -0
  43. package/dist/resolve.js.map +1 -0
  44. package/dist/secrets.d.ts +7 -0
  45. package/dist/secrets.d.ts.map +1 -0
  46. package/dist/secrets.js +33 -0
  47. package/dist/secrets.js.map +1 -0
  48. package/dist/testing/index.d.ts +54 -0
  49. package/dist/testing/index.d.ts.map +1 -0
  50. package/dist/testing/index.js +119 -0
  51. package/dist/testing/index.js.map +1 -0
  52. package/instructions/README.md +14 -0
  53. package/instructions/configure-stripe.md +69 -0
  54. package/instructions/framework.md +62 -0
  55. package/instructions/testing.md +41 -0
  56. package/instructions/webhooks.md +44 -0
  57. package/package.json +66 -0
@@ -0,0 +1,437 @@
1
+ // ── Stripe objects → neutral payments shapes ──
2
+ // Structural "…Like" types name only the fields this adapter reads, so the
3
+ // mapping is easy to test with plain fixtures and robust to SDK type churn.
4
+ export const idOf = (value) => value == null ? null : typeof value === 'string' ? value : value.id;
5
+ /** The expanded object, or null when the field holds only an id. */
6
+ const expanded = (value) => value && typeof value === 'object' ? value : null;
7
+ const fromUnix = (seconds) => seconds ? new Date(seconds * 1000) : null;
8
+ const sum = (entries) => entries ? entries.reduce((total, entry) => total + entry.amount, 0) : null;
9
+ export function toResponsibility(value) {
10
+ return value === 'stripe' ? 'provider' : 'platform';
11
+ }
12
+ export function fromResponsibility(value) {
13
+ return value === 'provider' ? 'stripe' : 'application';
14
+ }
15
+ function toDashboard(value) {
16
+ return value === 'express' || value === 'none' ? value : 'full';
17
+ }
18
+ export function mapAccount(account) {
19
+ const merchant = account.configuration?.merchant?.capabilities;
20
+ const recipient = account.configuration?.recipient?.capabilities?.stripe_balance;
21
+ const cards = merchant?.card_payments;
22
+ const transfers = recipient?.stripe_transfers;
23
+ const payouts = merchant?.stripe_balance?.payouts ?? recipient?.payouts;
24
+ const due = [];
25
+ const pastDue = [];
26
+ for (const entry of account.requirements?.entries ?? []) {
27
+ const status = entry.minimum_deadline?.status;
28
+ const label = entry.description ?? 'Additional information';
29
+ if (entry.awaiting_action_from === 'stripe')
30
+ continue;
31
+ if (status === 'currently_due' || status === 'past_due')
32
+ due.push(label);
33
+ if (status === 'past_due')
34
+ pastDue.push(label);
35
+ }
36
+ // The capability the seller is paid through: card payments, or transfers when that is all they have.
37
+ const main = cards ?? transfers;
38
+ const restricted = main?.status === 'restricted' || main?.status === 'unsupported';
39
+ return {
40
+ id: account.id,
41
+ dashboard: toDashboard(account.dashboard),
42
+ feesCollector: toResponsibility(account.defaults?.responsibilities?.fees_collector ?? 'stripe'),
43
+ lossesCollector: toResponsibility(account.defaults?.responsibilities?.losses_collector ?? 'stripe'),
44
+ country: account.identity?.country ? account.identity.country.toUpperCase() : null,
45
+ defaultCurrency: account.defaults?.currency ?? null,
46
+ chargesEnabled: cards?.status === 'active',
47
+ transfersEnabled: transfers?.status === 'active',
48
+ payoutsEnabled: payouts?.status === 'active',
49
+ requirementsDue: due,
50
+ requirementsPastDue: pastDue,
51
+ disabledReason: restricted ? (main?.status_details?.[0]?.code ?? main?.status ?? null) : null,
52
+ closed: account.closed === true,
53
+ livemode: account.livemode,
54
+ };
55
+ }
56
+ export function mapPaymentMethod(method) {
57
+ return {
58
+ id: method.id,
59
+ customerId: idOf(method.customer),
60
+ type: method.type,
61
+ brand: method.card?.brand ?? method.us_bank_account?.bank_name ?? null,
62
+ last4: method.card?.last4 ?? method.sepa_debit?.last4 ?? method.us_bank_account?.last4 ?? null,
63
+ expMonth: method.card?.exp_month ?? null,
64
+ expYear: method.card?.exp_year ?? null,
65
+ };
66
+ }
67
+ function failureCodeOf(intent) {
68
+ const error = intent?.last_payment_error;
69
+ return error ? (error.decline_code ?? error.code ?? null) : null;
70
+ }
71
+ /** Refunded so far: null when the read did not include the charge (the stored value is kept). */
72
+ function refundedOf(intent, hasPayment) {
73
+ if (!hasPayment)
74
+ return 0;
75
+ const latest = expanded(intent?.latest_charge);
76
+ if (latest)
77
+ return latest.amount_refunded ?? 0;
78
+ return intent && intent.latest_charge == null ? 0 : null;
79
+ }
80
+ function captureBeforeOf(intent) {
81
+ return fromUnix(expanded(intent?.latest_charge)?.payment_method_details?.card?.capture_before);
82
+ }
83
+ function paidAtOf(intent) {
84
+ return fromUnix(expanded(intent?.latest_charge)?.created);
85
+ }
86
+ /** The method a payment saved for later use, when it was saved on a customer. */
87
+ function savedMethodOf(intent) {
88
+ const method = expanded(intent?.payment_method);
89
+ if (!intent?.setup_future_usage || !method || !idOf(method.customer))
90
+ return null;
91
+ return mapPaymentMethod(method);
92
+ }
93
+ function sessionStatus(session, intent) {
94
+ if (session.status === 'expired')
95
+ return 'expired';
96
+ if (session.status !== 'complete')
97
+ return 'open';
98
+ if (intent?.status === 'requires_capture')
99
+ return 'authorized';
100
+ if (intent?.status === 'canceled')
101
+ return 'canceled';
102
+ if (intent?.status === 'succeeded')
103
+ return 'paid';
104
+ if (session.payment_status === 'paid' || session.payment_status === 'no_payment_required') {
105
+ return 'paid';
106
+ }
107
+ if (intent?.status === 'requires_payment_method')
108
+ return 'failed';
109
+ return 'processing';
110
+ }
111
+ /** A payment-mode Checkout Session (a charge's page, or one payment through a link). */
112
+ export function mapSession(session) {
113
+ const intent = expanded(session.payment_intent);
114
+ const status = sessionStatus(session, intent);
115
+ // A partial capture takes less than the page asked for.
116
+ const captured = intent?.status === 'succeeded' && intent.amount_received !== undefined
117
+ ? intent.amount_received
118
+ : null;
119
+ const open = status === 'open';
120
+ return {
121
+ id: session.id,
122
+ reference: session.client_reference_id ?? session.metadata?.plumbus_charge_id ?? null,
123
+ paymentId: idOf(session.payment_intent),
124
+ linkId: idOf(session.payment_link),
125
+ status,
126
+ currency: session.currency ?? '',
127
+ amountSubtotal: session.amount_subtotal ?? null,
128
+ amountTotal: captured !== null && session.amount_total != null
129
+ ? Math.min(captured, session.amount_total)
130
+ : (session.amount_total ?? null),
131
+ amountDiscount: session.total_details?.amount_discount ?? null,
132
+ amountTax: session.total_details?.amount_tax ?? null,
133
+ // Null = not in this read (no payment yet, or ids that were not expanded).
134
+ platformFeeAmount: intent ? (intent.application_fee_amount ?? 0) : null,
135
+ amountRefunded: refundedOf(intent, session.payment_intent != null),
136
+ amountCapturable: intent ? (intent.amount_capturable ?? 0) : null,
137
+ captureBefore: captureBeforeOf(intent),
138
+ url: open ? (session.url ?? null) : null,
139
+ clientSecret: open ? (session.client_secret ?? null) : null,
140
+ expiresAt: fromUnix(session.expires_at),
141
+ paidAt: status === 'paid' ? paidAtOf(intent) : null,
142
+ clientEmail: session.customer_details?.email ?? session.customer_email ?? null,
143
+ customerId: idOf(session.customer),
144
+ savedMethod: savedMethodOf(intent),
145
+ failureCode: failureCodeOf(intent),
146
+ livemode: session.livemode,
147
+ };
148
+ }
149
+ function intentStatus(intent) {
150
+ switch (intent.status) {
151
+ case 'succeeded':
152
+ return 'paid';
153
+ case 'requires_capture':
154
+ return 'authorized';
155
+ case 'processing':
156
+ return 'processing';
157
+ case 'canceled':
158
+ return 'canceled';
159
+ case 'requires_action':
160
+ case 'requires_confirmation':
161
+ return 'requires_action';
162
+ default:
163
+ // requires_payment_method: declined (failed), or the bank wants the client present.
164
+ if (!intent.last_payment_error)
165
+ return 'open';
166
+ return intent.last_payment_error.code === 'authentication_required'
167
+ ? 'requires_action'
168
+ : 'failed';
169
+ }
170
+ }
171
+ /** A PaymentIntent that is the charge itself (a saved method charged without the client). */
172
+ export function mapIntent(intent) {
173
+ const status = intentStatus(intent);
174
+ const amount = intent.amount ?? 0;
175
+ return {
176
+ id: intent.id,
177
+ reference: intent.metadata?.plumbus_charge_id ?? null,
178
+ paymentId: intent.id,
179
+ linkId: null,
180
+ status,
181
+ currency: intent.currency ?? '',
182
+ amountSubtotal: amount,
183
+ amountTotal: status === 'paid' ? (intent.amount_received ?? amount) : amount,
184
+ amountDiscount: null,
185
+ amountTax: null,
186
+ platformFeeAmount: intent.application_fee_amount ?? 0,
187
+ amountRefunded: refundedOf(intent, true),
188
+ amountCapturable: intent.amount_capturable ?? 0,
189
+ captureBefore: captureBeforeOf(intent),
190
+ url: null,
191
+ clientSecret: null,
192
+ expiresAt: null,
193
+ paidAt: status === 'paid' ? paidAtOf(intent) : null,
194
+ clientEmail: intent.receipt_email ?? null,
195
+ customerId: idOf(intent.customer),
196
+ savedMethod: null,
197
+ failureCode: failureCodeOf(intent),
198
+ livemode: intent.livemode ?? false,
199
+ };
200
+ }
201
+ /** The payment that settled (or is settling) an invoice. */
202
+ export function invoicePaymentId(invoice) {
203
+ const payments = invoice.payments?.data ?? [];
204
+ const chosen = payments.find((p) => p.status === 'paid') ?? payments[0];
205
+ return idOf(chosen?.payment?.payment_intent);
206
+ }
207
+ function invoiceChargeStatus(status) {
208
+ switch (status) {
209
+ case 'paid':
210
+ return 'paid';
211
+ case 'void':
212
+ return 'canceled';
213
+ case 'uncollectible':
214
+ return 'failed';
215
+ default:
216
+ return 'open';
217
+ }
218
+ }
219
+ /** A one-off invoice sent as a charge. */
220
+ export function mapInvoiceCharge(invoice) {
221
+ const status = invoiceChargeStatus(invoice.status);
222
+ return {
223
+ id: invoice.id,
224
+ reference: invoice.metadata?.plumbus_charge_id ?? null,
225
+ paymentId: invoicePaymentId(invoice),
226
+ linkId: null,
227
+ status,
228
+ currency: invoice.currency,
229
+ amountSubtotal: invoice.subtotal ?? null,
230
+ amountTotal: invoice.total ?? null,
231
+ amountDiscount: sum(invoice.total_discount_amounts),
232
+ amountTax: sum(invoice.total_taxes),
233
+ platformFeeAmount: invoice.application_fee_amount ?? 0,
234
+ amountRefunded: null,
235
+ amountCapturable: 0,
236
+ captureBefore: null,
237
+ url: status === 'open' ? (invoice.hosted_invoice_url ?? null) : null,
238
+ clientSecret: null,
239
+ expiresAt: null,
240
+ paidAt: status === 'paid' ? fromUnix(invoice.status_transitions?.paid_at) : null,
241
+ clientEmail: invoice.customer_email ?? null,
242
+ customerId: idOf(invoice.customer),
243
+ savedMethod: null,
244
+ failureCode: null,
245
+ livemode: invoice.livemode,
246
+ };
247
+ }
248
+ const INVOICE_STATUSES = new Set([
249
+ 'draft',
250
+ 'open',
251
+ 'paid',
252
+ 'void',
253
+ 'uncollectible',
254
+ ]);
255
+ export function mapInvoice(invoice) {
256
+ const status = (invoice.status && INVOICE_STATUSES.has(invoice.status) ? invoice.status : 'draft');
257
+ return {
258
+ id: invoice.id,
259
+ reference: invoice.metadata?.plumbus_charge_id ?? null,
260
+ subscriptionId: idOf(invoice.parent?.subscription_details?.subscription),
261
+ customerId: idOf(invoice.customer),
262
+ status,
263
+ currency: invoice.currency,
264
+ amountDue: invoice.amount_due ?? 0,
265
+ amountPaid: invoice.amount_paid ?? 0,
266
+ amountRemaining: invoice.amount_remaining ?? 0,
267
+ hostedUrl: invoice.hosted_invoice_url ?? null,
268
+ pdfUrl: invoice.invoice_pdf ?? null,
269
+ number: invoice.number ?? null,
270
+ dueDate: fromUnix(invoice.due_date),
271
+ paymentId: invoicePaymentId(invoice),
272
+ periodStart: fromUnix(invoice.period_start),
273
+ periodEnd: fromUnix(invoice.period_end),
274
+ billingReason: invoice.billing_reason ?? null,
275
+ attemptCount: invoice.attempt_count ?? 0,
276
+ livemode: invoice.livemode,
277
+ };
278
+ }
279
+ const INTERVALS = new Set(['day', 'week', 'month', 'year']);
280
+ function mapSubscriptionItem(item) {
281
+ const price = item.price;
282
+ const product = expanded(price.product);
283
+ const interval = price.recurring?.interval ?? 'month';
284
+ const metered = price.recurring?.usage_type === 'metered';
285
+ return {
286
+ id: item.id,
287
+ priceId: price.id,
288
+ lookupKey: price.lookup_key ?? null,
289
+ name: product?.name ?? price.lookup_key ?? price.id,
290
+ unitAmount: price.unit_amount ?? null,
291
+ currency: price.currency,
292
+ interval: (INTERVALS.has(interval) ? interval : 'month'),
293
+ intervalCount: price.recurring?.interval_count ?? 1,
294
+ quantity: metered ? 0 : (item.quantity ?? 1),
295
+ metered,
296
+ };
297
+ }
298
+ const SUBSCRIPTION_STATUSES = new Set([
299
+ 'incomplete',
300
+ 'incomplete_expired',
301
+ 'trialing',
302
+ 'active',
303
+ 'past_due',
304
+ 'unpaid',
305
+ 'paused',
306
+ 'canceled',
307
+ ]);
308
+ export function mapSubscription(subscription) {
309
+ const items = subscription.items.data;
310
+ const periodEnds = items
311
+ .map((item) => item.current_period_end)
312
+ .filter((end) => typeof end === 'number');
313
+ return {
314
+ id: subscription.id,
315
+ reference: subscription.metadata?.plumbus_subscription_id ?? null,
316
+ customerId: idOf(subscription.customer) ?? '',
317
+ status: (SUBSCRIPTION_STATUSES.has(subscription.status)
318
+ ? subscription.status
319
+ : 'incomplete'),
320
+ currency: subscription.currency,
321
+ items: items.map(mapSubscriptionItem),
322
+ currentPeriodEnd: periodEnds.length > 0 ? fromUnix(Math.max(...periodEnds)) : null,
323
+ cancelAtPeriodEnd: subscription.cancel_at_period_end === true,
324
+ canceledAt: fromUnix(subscription.canceled_at),
325
+ endedAt: fromUnix(subscription.ended_at),
326
+ trialEnd: fromUnix(subscription.trial_end),
327
+ latestInvoiceId: idOf(subscription.latest_invoice),
328
+ applicationFeePercent: subscription.application_fee_percent ?? null,
329
+ livemode: subscription.livemode,
330
+ };
331
+ }
332
+ const REFUND_STATUSES = new Set([
333
+ 'pending',
334
+ 'requires_action',
335
+ 'succeeded',
336
+ 'failed',
337
+ 'canceled',
338
+ ]);
339
+ export function mapRefund(refund) {
340
+ const status = (refund.status && REFUND_STATUSES.has(refund.status) ? refund.status : 'pending');
341
+ return {
342
+ id: refund.id,
343
+ reference: refund.metadata?.plumbus_refund_id ?? null,
344
+ paymentId: idOf(refund.payment_intent) ?? '',
345
+ amount: refund.amount,
346
+ currency: refund.currency,
347
+ status,
348
+ reason: refund.reason ?? null,
349
+ failureReason: refund.failure_reason ?? null,
350
+ };
351
+ }
352
+ export function toDisputeStatus(status) {
353
+ switch (status) {
354
+ case 'needs_response':
355
+ case 'warning_needs_response':
356
+ return 'needs_response';
357
+ case 'under_review':
358
+ case 'warning_under_review':
359
+ return 'under_review';
360
+ case 'won':
361
+ return 'won';
362
+ case 'lost':
363
+ return 'lost';
364
+ default:
365
+ return 'closed';
366
+ }
367
+ }
368
+ export function mapDispute(dispute) {
369
+ return {
370
+ id: dispute.id,
371
+ paymentId: idOf(dispute.payment_intent) ?? '',
372
+ amount: dispute.amount,
373
+ currency: dispute.currency,
374
+ status: toDisputeStatus(dispute.status),
375
+ providerStatus: dispute.status,
376
+ reason: dispute.reason ?? null,
377
+ evidenceDueBy: fromUnix(dispute.evidence_details?.due_by),
378
+ evidenceSubmitted: (dispute.evidence_details?.submission_count ?? 0) > 0,
379
+ };
380
+ }
381
+ export function mapTransfer(transfer) {
382
+ return {
383
+ id: transfer.id,
384
+ reference: transfer.metadata?.plumbus_transfer_id ?? null,
385
+ destinationAccountId: idOf(transfer.destination) ?? '',
386
+ amount: transfer.amount,
387
+ currency: transfer.currency,
388
+ amountReversed: transfer.amount_reversed ?? 0,
389
+ transferGroup: transfer.transfer_group ?? null,
390
+ sourcePaymentId: transfer.metadata?.plumbus_source_payment_id ?? null,
391
+ livemode: transfer.livemode,
392
+ };
393
+ }
394
+ const PAYOUT_STATUSES = new Set([
395
+ 'pending',
396
+ 'in_transit',
397
+ 'paid',
398
+ 'failed',
399
+ 'canceled',
400
+ ]);
401
+ export function mapPayout(payout) {
402
+ return {
403
+ id: payout.id,
404
+ amount: payout.amount,
405
+ currency: payout.currency,
406
+ status: (PAYOUT_STATUSES.has(payout.status) ? payout.status : 'pending'),
407
+ method: payout.method === 'instant' ? 'instant' : 'standard',
408
+ arrivalDate: fromUnix(payout.arrival_date),
409
+ failureCode: payout.failure_code ?? null,
410
+ livemode: payout.livemode,
411
+ };
412
+ }
413
+ const WEEKDAYS = new Set([
414
+ 'monday',
415
+ 'tuesday',
416
+ 'wednesday',
417
+ 'thursday',
418
+ 'friday',
419
+ ]);
420
+ export function mapPayoutSchedule(settings) {
421
+ const schedule = settings.payments?.payouts?.schedule;
422
+ const raw = schedule?.interval;
423
+ const interval = raw === 'manual' || raw === 'weekly' || raw === 'monthly' || raw === 'daily' ? raw : 'daily';
424
+ const result = { interval };
425
+ const delay = settings.payments?.settlement_timing?.delay_days;
426
+ if (typeof delay === 'number')
427
+ result.delayDays = delay;
428
+ const weekday = schedule?.weekly_payout_days?.[0];
429
+ if (interval === 'weekly' && weekday && WEEKDAYS.has(weekday)) {
430
+ result.weeklyAnchor = weekday;
431
+ }
432
+ const monthDay = schedule?.monthly_payout_days?.[0];
433
+ if (interval === 'monthly' && monthDay)
434
+ result.monthlyAnchor = monthDay;
435
+ return result;
436
+ }
437
+ //# sourceMappingURL=mapping.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapping.js","sourceRoot":"","sources":["../src/mapping.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { PaymentProvider } from '@plumbus/payments';
2
+ import Stripe from 'stripe';
3
+ import { STRIPE_API_VERSION, STRIPE_DESTINATION_NAMES } from './diagnose.js';
4
+ import { type SecretSource } from './secrets.js';
5
+ export { STRIPE_API_VERSION, STRIPE_DESTINATION_NAMES };
6
+ export interface StripeProviderOptions {
7
+ /** Secret (`sk_…`) or restricted (`rk_…`) key, or a function returning it. */
8
+ secretKey: SecretSource<string>;
9
+ /** Signing secrets of every event destination (and old ones during a rotation). */
10
+ webhookSecrets: SecretSource<readonly string[]>;
11
+ /** Publishable key for embedded payment pages and Connect embedded components. */
12
+ publishableKey?: string;
13
+ /** Seconds a signature timestamp may be old (default 300, Stripe's default). */
14
+ webhookToleranceSeconds?: number;
15
+ /** Automatic retries on network errors and 409/429/5xx (default 2). */
16
+ maxNetworkRetries?: number;
17
+ /** Request timeout in milliseconds (default Stripe's 80 000). */
18
+ timeoutMs?: number;
19
+ /** Advanced: point the SDK at another host, e.g. stripe-mock (`localhost`, 12111, http). */
20
+ api?: {
21
+ host?: string;
22
+ port?: number;
23
+ protocol?: 'http' | 'https';
24
+ };
25
+ /** Advanced/testing: a custom HTTP client (see @plumbus/payments-stripe/testing). */
26
+ httpClient?: Stripe.HttpClient;
27
+ }
28
+ export interface StripePaymentProvider extends PaymentProvider {
29
+ /** The configured Stripe client, for Stripe-only features the neutral API does not cover. */
30
+ client(): Promise<Stripe>;
31
+ }
32
+ export declare function stripeProvider(options: StripeProviderOptions): StripePaymentProvider;
33
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../src/provider.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAIV,eAAe,EAGhB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,MAAM,MAAM,QAAQ,CAAC;AAkB5B,OAAO,EAEL,kBAAkB,EAClB,wBAAwB,EAEzB,MAAM,eAAe,CAAC;AA4BvB,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,cAAc,CAAC;AAEtE,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,CAAC;AAUxD,MAAM,WAAW,qBAAqB;IACpC,8EAA8E;IAC9E,SAAS,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAChC,mFAAmF;IACnF,cAAc,EAAE,YAAY,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAChD,kFAAkF;IAClF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gFAAgF;IAChF,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4FAA4F;IAC5F,GAAG,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;IACpE,qFAAqF;IACrF,UAAU,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAChC;AAED,MAAM,WAAW,qBAAsB,SAAQ,eAAe;IAC5D,6FAA6F;IAC7F,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC3B;AA4BD,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,qBAAqB,CAgvBpF"}