@agent-cards/checkout 0.9.1 → 0.11.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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "catalog_version": "2026-09-11.2",
3
+ "catalog_version": "2026-09-14.1",
4
4
  "scope": "preflight_hint",
5
5
  "integration_version_note": "bundled describes the capabilities accompanying this helper, not a claim about another installed SDK version.",
6
6
  "limits": {
@@ -1964,6 +1964,17 @@
1964
1964
  "status": "supported",
1965
1965
  "mode": "token",
1966
1966
  "operations": [
1967
+ {
1968
+ "id": "stripe.device_checkout_confirm.v1",
1969
+ "path_pattern": "^/v1/payment_pages/cs_(?:test|live)_[A-Za-z0-9]+/confirm$",
1970
+ "effect": "payment_confirmation",
1971
+ "amount_binding": "expected_amount_test_evidence_currency_unqualified",
1972
+ "psp": "stripe",
1973
+ "version": 1,
1974
+ "mode": "token",
1975
+ "autopilot_eligible": false,
1976
+ "requires": "reviewed_final_payment_and_continuation_evidence"
1977
+ },
1967
1978
  {
1968
1979
  "id": "stripe.tokenization",
1969
1980
  "path_pattern": "^/v1/(?:payment_methods|tokens)$",
@@ -3420,7 +3431,8 @@
3420
3431
  },
3421
3432
  "limitations": [
3422
3433
  "Only the listed request format is recognized; a recognized processor is not verified merchant coverage.",
3423
- "The adapter covers the normal XHR POST new-card tokenization path on Recurly US and EU endpoints."
3434
+ "The adapter covers the normal XHR POST new-card tokenization path on Recurly US and EU endpoints.",
3435
+ "Prepare approval before submitting a timed native card form. Both regions require the shared environment because test and live keys use the same endpoints."
3424
3436
  ],
3425
3437
  "unsupported_variants": [
3426
3438
  {
@@ -3434,6 +3446,24 @@
3434
3446
  "status": "unsupported",
3435
3447
  "constraint": "direct_sdk",
3436
3448
  "reason": "Bank-account and alternative-payment token routes are outside the new-card path."
3449
+ },
3450
+ {
3451
+ "variant": "card_bound_risk_preflight",
3452
+ "status": "unsupported",
3453
+ "constraint": "direct_sdk",
3454
+ "reason": "Worldpay and Cybersource risk sessions can depend on the original card. Prepared requests refuse those results until collection can use the approved card."
3455
+ },
3456
+ {
3457
+ "variant": "prepared_co_badged_network_choice",
3458
+ "status": "unsupported",
3459
+ "constraint": "direct_sdk",
3460
+ "reason": "A prepared request cannot reuse the original card’s network preference without checking the selected card’s supported networks."
3461
+ },
3462
+ {
3463
+ "variant": "proactive_authentication",
3464
+ "status": "unsupported",
3465
+ "constraint": "direct_sdk",
3466
+ "reason": "Card-bearing risk authentication and proactive 3-D Secure action tokens require separate support."
3437
3467
  }
3438
3468
  ],
3439
3469
  "processor_amount": "none",
@@ -3711,7 +3741,7 @@
3711
3741
  "direct_sdk_profile": {
3712
3742
  "schema_version": 1,
3713
3743
  "profile_version": "preflight-2",
3714
- "catalog_version": "2026-09-11.2",
3744
+ "catalog_version": "2026-09-14.1",
3715
3745
  "integration": {
3716
3746
  "id": "direct_sdk",
3717
3747
  "version": "bundled"
@@ -3870,7 +3900,7 @@
3870
3900
  "kernel_profile_template": {
3871
3901
  "schema_version": 1,
3872
3902
  "profile_version": "kernel-template-1",
3873
- "catalog_version": "2026-09-11.2",
3903
+ "catalog_version": "2026-09-14.1",
3874
3904
  "integration": {
3875
3905
  "id": "kernel_native",
3876
3906
  "version": "REPLACE-WITH-ADAPTER-VERSION"
@@ -162,7 +162,7 @@
162
162
  "pattern": "^[A-Za-z0-9][A-Za-z0-9._+-]{0,119}$"
163
163
  },
164
164
  "catalog_version": {
165
- "const": "2026-09-11.2"
165
+ "const": "2026-09-14.1"
166
166
  },
167
167
  "integration": {
168
168
  "type": "object",
@@ -358,7 +358,7 @@
358
358
  "const": 1
359
359
  },
360
360
  "catalog_version": {
361
- "const": "2026-09-11.2"
361
+ "const": "2026-09-14.1"
362
362
  },
363
363
  "signals": {
364
364
  "type": "array",
@@ -550,7 +550,7 @@
550
550
  "pattern": "^[A-Za-z0-9][A-Za-z0-9._+-]{0,119}$"
551
551
  },
552
552
  "catalog_version": {
553
- "const": "2026-09-11.2"
553
+ "const": "2026-09-14.1"
554
554
  },
555
555
  "integration": {
556
556
  "type": "object",
@@ -753,7 +753,7 @@
753
753
  "const": 1
754
754
  },
755
755
  "catalog_version": {
756
- "const": "2026-09-11.2"
756
+ "const": "2026-09-14.1"
757
757
  },
758
758
  "integration": {
759
759
  "type": "object",
@@ -1,6 +1,6 @@
1
1
  /** Advisory page discovery. These rules never admit a payment destination. */
2
2
  export declare const CHECKOUT_PREFLIGHT_VERSION = "1";
3
- export declare const CHECKOUT_PREFLIGHT_CATALOG_VERSION = "2026-09-11.2";
3
+ export declare const CHECKOUT_PREFLIGHT_CATALOG_VERSION = "2026-09-14.1";
4
4
  export declare const CHECKOUT_PREFLIGHT_LIMITS: Readonly<{
5
5
  frames: 64;
6
6
  signals: 2048;
@@ -195,6 +195,16 @@ export declare function getCheckoutPreflightCatalog(): {
195
195
  readonly status: "supported";
196
196
  readonly mode: "token";
197
197
  readonly operations: readonly [{
198
+ readonly id: "stripe.device_checkout_confirm.v1";
199
+ readonly path_pattern: "^/v1/payment_pages/cs_(?:test|live)_[A-Za-z0-9]+/confirm$";
200
+ readonly effect: "payment_confirmation";
201
+ readonly amount_binding: "expected_amount_test_evidence_currency_unqualified";
202
+ readonly psp: "stripe";
203
+ readonly version: 1;
204
+ readonly mode: "token";
205
+ readonly autopilot_eligible: false;
206
+ readonly requires: "reviewed_final_payment_and_continuation_evidence";
207
+ }, {
198
208
  readonly id: "stripe.tokenization";
199
209
  readonly path_pattern: "^/v1/(?:payment_methods|tokens)$";
200
210
  readonly effect: "token_or_method_creation";
@@ -1137,7 +1147,7 @@ export declare function getCheckoutPreflightCatalog(): {
1137
1147
  readonly requirements: readonly ["verify_merchant_billing"];
1138
1148
  };
1139
1149
  };
1140
- readonly limitations: readonly ["Only the listed request format is recognized; a recognized processor is not verified merchant coverage.", "The adapter covers the normal XHR POST new-card tokenization path on Recurly US and EU endpoints."];
1150
+ readonly limitations: readonly ["Only the listed request format is recognized; a recognized processor is not verified merchant coverage.", "The adapter covers the normal XHR POST new-card tokenization path on Recurly US and EU endpoints.", "Prepare approval before submitting a timed native card form. Both regions require the shared environment because test and live keys use the same endpoints."];
1141
1151
  readonly unsupported_variants: readonly [{
1142
1152
  readonly variant: "legacy_jsonp_get";
1143
1153
  readonly status: "unsupported";
@@ -1148,6 +1158,21 @@ export declare function getCheckoutPreflightCatalog(): {
1148
1158
  readonly status: "unsupported";
1149
1159
  readonly constraint: "direct_sdk";
1150
1160
  readonly reason: "Bank-account and alternative-payment token routes are outside the new-card path.";
1161
+ }, {
1162
+ readonly variant: "card_bound_risk_preflight";
1163
+ readonly status: "unsupported";
1164
+ readonly constraint: "direct_sdk";
1165
+ readonly reason: "Worldpay and Cybersource risk sessions can depend on the original card. Prepared requests refuse those results until collection can use the approved card.";
1166
+ }, {
1167
+ readonly variant: "prepared_co_badged_network_choice";
1168
+ readonly status: "unsupported";
1169
+ readonly constraint: "direct_sdk";
1170
+ readonly reason: "A prepared request cannot reuse the original card’s network preference without checking the selected card’s supported networks.";
1171
+ }, {
1172
+ readonly variant: "proactive_authentication";
1173
+ readonly status: "unsupported";
1174
+ readonly constraint: "direct_sdk";
1175
+ readonly reason: "Card-bearing risk authentication and proactive 3-D Secure action tokens require separate support.";
1151
1176
  }];
1152
1177
  readonly processor_amount: "none";
1153
1178
  readonly challenge_surface: "merchant_browser";
@@ -1,9 +1,9 @@
1
1
  // Generated from @agent-cards/payment-core. Do not edit.
2
- // source-sha256: ced5aecd22684c680a53b9e33dff1c5333cd36823f6fe3b4b8e84f10f6f73c53
2
+ // source-sha256: 69919c5fe4133b090eddae027fb12c5ad7c51a8c63e8719325c174aeee78c30a
3
3
  import { CHECKOUT_PREFLIGHT_CAPABILITIES } from './preflight-capabilities.generated.js';
4
4
  /** Advisory page discovery. These rules never admit a payment destination. */
5
5
  export const CHECKOUT_PREFLIGHT_VERSION = '1';
6
- export const CHECKOUT_PREFLIGHT_CATALOG_VERSION = '2026-09-11.2';
6
+ export const CHECKOUT_PREFLIGHT_CATALOG_VERSION = '2026-09-14.1';
7
7
  export const CHECKOUT_PREFLIGHT_LIMITS = Object.freeze({ frames: 64, signals: 2048, snapshot_bytes: 262144, url_length: 4096 });
8
8
  // Identification-only IDs, checked against the canonical catalog by the core tests.
9
9
  // No card destination, request method, or request body pattern lives here.
@@ -20,6 +20,8 @@ export class PreparationGate {
20
20
  lifecycle.abort.signal.addEventListener('abort', () => this.invalidate('cancelled'), { once: true });
21
21
  }
22
22
  async prepare(options) {
23
+ if (this.opts.stripeCheckout)
24
+ throw new CheckoutPreparationError(null, 'unsupported_processor');
23
25
  options = { ...options };
24
26
  if (this.state !== 'unused' || this.observedRequest || this.lifecycle.getState().status !== 'idle' || this.lifecycle.isBlocked()) {
25
27
  // A late opt-in cannot turn the next native retry into ordinary approval.
@@ -1,4 +1,4 @@
1
- export type PreparationProcessor = 'square' | 'braintree' | 'worldpay' | 'bambora' | 'mercado_pago';
1
+ export type PreparationProcessor = 'square' | 'braintree' | 'worldpay' | 'bambora' | 'mercado_pago' | 'recurly';
2
2
  export type PreparationEnvironment = 'production' | 'sandbox' | 'shared';
3
3
  /** Shared endpoint processors cannot attest test/live mode from their URL or key prefix. */
4
4
  export declare function validPreparationEnvironment(psp: string, environment: string): boolean;
@@ -1,7 +1,8 @@
1
1
  import { braintreeEnvironment, isPreparedBraintreeRequest, readTokenizationJson } from './braintree.js';
2
+ import { isPreparedRecurlyRequest } from './recurly.generated.js';
2
3
  /** Shared endpoint processors cannot attest test/live mode from their URL or key prefix. */
3
4
  export function validPreparationEnvironment(psp, environment) {
4
- if (psp === 'bambora' || psp === 'mercado_pago')
5
+ if (psp === 'bambora' || psp === 'mercado_pago' || psp === 'recurly')
5
6
  return environment === 'shared';
6
7
  return ['square', 'braintree', 'worldpay'].includes(psp) && ['production', 'sandbox'].includes(environment);
7
8
  }
@@ -12,6 +13,8 @@ export function preparationEndpoint(psp, environment) {
12
13
  return 'https://api.bam.shift4api.net/scripts/tokenization/tokens';
13
14
  if (psp === 'mercado_pago')
14
15
  return 'https://api.mercadopago.com/v1/card_tokens';
16
+ if (psp === 'recurly')
17
+ return 'https://api.recurly.com/js/v1/token';
15
18
  if (psp === 'worldpay')
16
19
  return environment === 'production'
17
20
  ? 'https://access.worldpay.com/sessions/card' : 'https://try.access.worldpay.com/sessions/card';
@@ -70,6 +73,9 @@ export function matchesPreparedRequest(psp, environment, requestUrl, method, bod
70
73
  const request = new URL(requestUrl), endpoint = new URL(preparationEndpoint(psp, environment));
71
74
  if (request.username || request.password || request.hash)
72
75
  return false;
76
+ if (psp === 'recurly')
77
+ return [endpoint.href, 'https://api.eu.recurly.com/js/v1/token'].includes(requestUrl)
78
+ && isPreparedRecurlyRequest(body ?? null);
73
79
  if (psp === 'bambora') {
74
80
  if (![endpoint.href, 'https://api.na.bambora.com/scripts/tokenization/tokens'].includes(requestUrl))
75
81
  return false;
@@ -0,0 +1 @@
1
+ export declare function isPreparedRecurlyRequest(body: string | null): boolean;
@@ -0,0 +1,87 @@
1
+ // Generated from @agent-cards/payment-core. Do not edit.
2
+ // source-sha256: 6a1932841621aca1a7371165e0b54a161c4dd5bb077acc190a0c5399229fa350
3
+ /** Normal Recurly.js 4 new-card POST, before it consumes an approval.
4
+ * Native fields and indexed form serialization: recurly/recurly-js commit
5
+ * 7cd9a2b131bf12d7cebfbc7eea1ba86aa54c60e7, lib/recurly/{token,request,fraud}.js
6
+ * and risk/{risk,three-d-secure/three-d-secure}.js. Worldpay and Cybersource
7
+ * risk sessions depend on the original card; proactive Braintree also produces
8
+ * another token type. All nonempty risk results are refused until collection
9
+ * can use the approved card. This function never rewrites the body.
10
+ */
11
+ const SCALARS = new Set(['number', 'month', 'year', 'cvv', 'type', 'key', 'version', 'deviceId', 'sessionId', 'instanceId',
12
+ 'first_name', 'last_name', 'address1', 'address2', 'company', 'country', 'city', 'state', 'postal_code', 'phone',
13
+ 'vat_number', 'tax_identifier', 'tax_identifier_type', 'fraud_session_id', 'card_network_preference']);
14
+ const BROWSER = new Set(['color_depth', 'java_enabled', 'language', 'referrer_url', 'screen_height', 'screen_width', 'time_zone_offset', 'user_agent']);
15
+ const FRAUD_PROCESSORS = new Set(['kount', 'litle_threat_metrix', 'braintree', 'fraudnet']);
16
+ const contiguous = (values) => [...values.keys()].sort((a, b) => Number(a) - Number(b)).every((value, index) => value === String(index));
17
+ export function isPreparedRecurlyRequest(body) {
18
+ if (typeof body !== 'string' || !body || body.length > 65536)
19
+ return false;
20
+ const chunks = body.split('&');
21
+ if (chunks.length > 200)
22
+ return false;
23
+ const fields = new Map();
24
+ const fraud = new Map();
25
+ try {
26
+ for (const chunk of chunks) {
27
+ const separator = chunk.indexOf('=');
28
+ if (separator < 1)
29
+ return false;
30
+ const name = decodeURIComponent(chunk.slice(0, separator).replace(/\+/g, ' '));
31
+ const value = decodeURIComponent(chunk.slice(separator + 1).replace(/\+/g, ' '));
32
+ if (fields.has(name) || value.length > 4096 || /[\u0000-\u001f\u007f]/.test(value))
33
+ return false;
34
+ fields.set(name, value);
35
+ if (SCALARS.has(name))
36
+ continue;
37
+ const browser = /^browser\[([a-z_]+)\]$/.exec(name);
38
+ if (browser && BROWSER.has(browser[1]))
39
+ continue;
40
+ const structured = /^fraud\[([0-9]|1[0-9])\]\[(.+)\]$/.exec(name);
41
+ if (!structured)
42
+ return false;
43
+ const [, index, leaf] = structured;
44
+ if (!['processor', 'session_id'].includes(leaf) && !/^udf\]\[([0-9]|1[0-9])\]\[(label|value)$/.test(leaf))
45
+ return false;
46
+ if (!fraud.has(index))
47
+ fraud.set(index, new Map());
48
+ fraud.get(index).set(leaf, value);
49
+ }
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ const number = fields.get('number') ?? '', month = fields.get('month') ?? '', year = fields.get('year') ?? '';
55
+ if (!/^[0-9]{12,19}$/.test(number) || !/^[0-9]{1,2}$/.test(month) || Number(month) < 1 || Number(month) > 12
56
+ || !/^(?:[0-9]{2}|20[0-9]{2})$/.test(year))
57
+ return false;
58
+ if (fields.has('cvv') && fields.get('cvv') !== '' && !/^[0-9]{3,4}$/.test(fields.get('cvv')))
59
+ return false;
60
+ if (fields.has('type') && fields.get('type') !== 'credit_card')
61
+ return false;
62
+ // A co-badged network choice belongs to the entered card's supported brands.
63
+ if (fields.get('card_network_preference'))
64
+ return false;
65
+ if (fields.has('key') && !fields.get('key')?.trim())
66
+ return false;
67
+ if (!contiguous(fraud))
68
+ return false;
69
+ for (const item of fraud.values()) {
70
+ if (!FRAUD_PROCESSORS.has(item.get('processor') ?? '') || !item.get('session_id'))
71
+ return false;
72
+ const udf = new Map();
73
+ for (const key of item.keys()) {
74
+ const field = /^udf\]\[([0-9]|1[0-9])\]\[(label|value)$/.exec(key);
75
+ if (!field)
76
+ continue;
77
+ if (item.get('processor') !== 'kount')
78
+ return false;
79
+ if (!udf.has(field[1]))
80
+ udf.set(field[1], new Set());
81
+ udf.get(field[1]).add(field[2]);
82
+ }
83
+ if (!contiguous(udf) || [...udf.values()].some(keys => keys.size !== 2))
84
+ return false;
85
+ }
86
+ return true;
87
+ }
@@ -0,0 +1,77 @@
1
+ import type { PausedRequest } from './client.js';
2
+ /** Test by default. Production requires explicit opt-in and an independently admitted live grant. */
3
+ export interface StripeCheckoutOptions {
4
+ environment?: 'test' | 'production';
5
+ sessionId: string;
6
+ publishableKey: string;
7
+ }
8
+ type StubResponse = {
9
+ status: number;
10
+ headers: Record<string, string>;
11
+ body: string;
12
+ };
13
+ type Step = {
14
+ phase: 'tokenization';
15
+ response: StubResponse;
16
+ } | {
17
+ phase: 'final';
18
+ request: PausedRequest;
19
+ };
20
+ type Phase = Step['phase'] | 'unknown';
21
+ type GateState = 'fresh' | 'stubbed' | 'submitted' | 'stopped';
22
+ export type StripeCheckoutBlockStage = 'request_read' | 'classification' | 'claim' | 'readiness' | 'document' | 'stub_response';
23
+ type ReadinessReason = 'attachment_not_ready' | 'cancelled' | 'checkout_inactive' | 'approval_pending' | 'request_inactive';
24
+ export type StripeCheckoutBlockReason = ReadinessReason | 'request_unavailable' | 'request_validation_failed' | 'context_already_present' | 'duplicate_tokenization' | 'duplicate_confirmation' | 'preparation_unavailable' | 'preparation_missing' | 'claim_invalidated' | 'document_changed' | 'document_unavailable' | 'readiness_unavailable' | 'stub_response_failed';
25
+ /** Native pre-authorization refusal metadata. Never contains request or exception text.
26
+ * Classification failures intentionally do not guess which shared-core predicate rejected.
27
+ * gate_state is observed before the adapter retires a failed claim. A preserved duplicate
28
+ * belongs to a competing request: consumers must not cancel the active checkout for it.
29
+ */
30
+ export interface StripeCheckoutBlockedDetail {
31
+ version: 1;
32
+ processor: 'stripe';
33
+ endpoint_family: 'payment_methods' | 'payment_page_confirm' | 'other';
34
+ phase: Phase;
35
+ stage: StripeCheckoutBlockStage;
36
+ reason: StripeCheckoutBlockReason;
37
+ gate_state: GateState;
38
+ disposition: 'active_claim_preserved' | 'checkout_stopped';
39
+ }
40
+ declare class StripeCheckoutRejectionError extends Error {
41
+ readonly stage: StripeCheckoutBlockStage;
42
+ readonly reason: StripeCheckoutBlockReason;
43
+ readonly phase?: Phase | undefined;
44
+ constructor(message: string, stage: StripeCheckoutBlockStage, reason: StripeCheckoutBlockReason, phase?: Phase | undefined);
45
+ }
46
+ export declare function stripeCheckoutReadinessError(reason: ReadinessReason): Error;
47
+ /** A valid competing request must not retire the request that already claimed this step. */
48
+ export declare class StripeCheckoutClaimConflictError extends StripeCheckoutRejectionError {
49
+ constructor(phase: Step['phase']);
50
+ }
51
+ /** The two native browser requests belong to one attachment and one grant.
52
+ * Processor rules and form transformations live in the generated shared core.
53
+ * The local stub contains no selected-card data and starts no authorization.
54
+ */
55
+ export declare class StripeCheckoutGate {
56
+ private state;
57
+ private billing?;
58
+ private readonly binding?;
59
+ constructor(options: {
60
+ stripeCheckout?: StripeCheckoutOptions;
61
+ executionMode?: string;
62
+ grantId?: string;
63
+ amount?: number | string;
64
+ currency?: string;
65
+ });
66
+ matches(url: string): boolean;
67
+ isEnabled(): boolean;
68
+ isPrepared(): boolean;
69
+ invalidate(): void;
70
+ /** Observability only: this endpoint label never participates in a payment decision. */
71
+ describeRejection(error: unknown, rawUrl: string, stage: StripeCheckoutBlockStage, phase?: Phase): StripeCheckoutBlockedDetail;
72
+ assertClaim(step: Step): void;
73
+ /** Check the actual top-level hosted document before preparing either step. */
74
+ assertDocument(raw: string): void;
75
+ claim(request: PausedRequest): Step | null;
76
+ }
77
+ export {};
@@ -0,0 +1,58 @@
1
+ declare var STRIPE_CHECKOUT_OPERATION: string;
2
+ declare var STRIPE_CHECKOUT_CONTEXT_HEADER: string;
3
+ declare function validateStripeCheckoutIdentity(value: any): Readonly<{
4
+ environment: any;
5
+ livemode: boolean;
6
+ }>;
7
+ declare function validateStripeCheckoutCard(card: any, environment?: string): boolean;
8
+ declare function isStripeCheckoutHostedMode(value: any): boolean;
9
+ declare function encodeStripeCheckoutContext(value: any): string;
10
+ declare function hasStripeCheckoutMarker(request: any): boolean;
11
+ declare function parseStripeCheckoutContext(request: any): {
12
+ version: number;
13
+ session_id: any;
14
+ synthetic_payment_method_id: any;
15
+ } | null | undefined;
16
+ declare function isStripeCheckoutEndpoint(raw: any): boolean;
17
+ declare function captureStripeCheckoutBilling(request: any, options: any): Readonly<{
18
+ session_id: any;
19
+ synthetic_payment_method_id: any;
20
+ email: string | null;
21
+ }>;
22
+ declare function attachStripeCheckoutBilling(request: any, captured: any, options: any): any;
23
+ declare function classifyStripeCheckoutRequest(request: any, options?: {}): {
24
+ phase: string;
25
+ session_id: any;
26
+ publishable_key: any;
27
+ synthetic_payment_method_id?: undefined;
28
+ amount_cents?: undefined;
29
+ currency?: undefined;
30
+ } | {
31
+ phase: string;
32
+ session_id: any;
33
+ publishable_key: any;
34
+ synthetic_payment_method_id: string | undefined;
35
+ amount_cents: number;
36
+ currency: string;
37
+ } | null;
38
+ declare function createStripeCheckoutTokenizationStub(request: any, options: any): {
39
+ status: number;
40
+ headers: {
41
+ "content-type": string;
42
+ };
43
+ body: string;
44
+ };
45
+ declare function parseStripeCheckoutResponse(raw: any, options: any): any;
46
+ declare function prepareStripeCheckoutReplay(request: any, card: any, options?: {}): {
47
+ psp: string;
48
+ request: {
49
+ url: any;
50
+ method: string;
51
+ headers: {
52
+ "content-type": string;
53
+ };
54
+ body: string;
55
+ };
56
+ where: string[];
57
+ };
58
+ export { STRIPE_CHECKOUT_CONTEXT_HEADER, STRIPE_CHECKOUT_OPERATION, attachStripeCheckoutBilling, captureStripeCheckoutBilling, classifyStripeCheckoutRequest, createStripeCheckoutTokenizationStub, encodeStripeCheckoutContext, hasStripeCheckoutMarker, isStripeCheckoutEndpoint, isStripeCheckoutHostedMode, parseStripeCheckoutContext, parseStripeCheckoutResponse, prepareStripeCheckoutReplay, validateStripeCheckoutCard, validateStripeCheckoutIdentity };