@agent-score/commerce 1.8.1 → 2.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/README.md +73 -9
- package/dist/{_response-9yp6Fit2.d.mts → _response-BFYN3b6i.d.mts} +17 -19
- package/dist/{_response-CC6jNb8q.d.ts → _response-_iPD5AIj.d.ts} +17 -19
- package/dist/challenge/index.d.mts +106 -198
- package/dist/challenge/index.d.ts +106 -198
- package/dist/challenge/index.js +238 -111
- package/dist/challenge/index.js.map +1 -1
- package/dist/challenge/index.mjs +238 -111
- package/dist/challenge/index.mjs.map +1 -1
- package/dist/checkout-BoFwnVsj.d.ts +931 -0
- package/dist/checkout-DRbQ0Fsh.d.mts +931 -0
- package/dist/core.d.mts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/core.mjs +1 -1
- package/dist/core.mjs.map +1 -1
- package/dist/discovery/index.d.mts +453 -51
- package/dist/discovery/index.d.ts +453 -51
- package/dist/discovery/index.js +1092 -58
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/index.mjs +1060 -57
- package/dist/discovery/index.mjs.map +1 -1
- package/dist/identity/express.d.mts +3 -3
- package/dist/identity/express.d.ts +3 -3
- package/dist/identity/express.js +30 -19
- package/dist/identity/express.js.map +1 -1
- package/dist/identity/express.mjs +30 -19
- package/dist/identity/express.mjs.map +1 -1
- package/dist/identity/fastify.d.mts +4 -4
- package/dist/identity/fastify.d.ts +4 -4
- package/dist/identity/fastify.js +30 -19
- package/dist/identity/fastify.js.map +1 -1
- package/dist/identity/fastify.mjs +30 -19
- package/dist/identity/fastify.mjs.map +1 -1
- package/dist/identity/hono.d.mts +3 -3
- package/dist/identity/hono.d.ts +3 -3
- package/dist/identity/hono.js +30 -19
- package/dist/identity/hono.js.map +1 -1
- package/dist/identity/hono.mjs +30 -19
- package/dist/identity/hono.mjs.map +1 -1
- package/dist/identity/nextjs.d.mts +6 -7
- package/dist/identity/nextjs.d.ts +6 -7
- package/dist/identity/nextjs.js +30 -19
- package/dist/identity/nextjs.js.map +1 -1
- package/dist/identity/nextjs.mjs +30 -19
- package/dist/identity/nextjs.mjs.map +1 -1
- package/dist/identity/policy.d.mts +41 -4
- package/dist/identity/policy.d.ts +41 -4
- package/dist/identity/policy.js +3662 -18
- package/dist/identity/policy.js.map +1 -1
- package/dist/identity/policy.mjs +3648 -3
- package/dist/identity/policy.mjs.map +1 -1
- package/dist/identity/web.d.mts +3 -3
- package/dist/identity/web.d.ts +3 -3
- package/dist/identity/web.js +30 -19
- package/dist/identity/web.js.map +1 -1
- package/dist/identity/web.mjs +30 -19
- package/dist/identity/web.mjs.map +1 -1
- package/dist/index.d.mts +72 -329
- package/dist/index.d.ts +72 -329
- package/dist/index.js +3651 -373
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +3628 -361
- package/dist/index.mjs.map +1 -1
- package/dist/payment/index.d.mts +256 -265
- package/dist/payment/index.d.ts +256 -265
- package/dist/payment/index.js +586 -149
- package/dist/payment/index.js.map +1 -1
- package/dist/payment/index.mjs +573 -148
- package/dist/payment/index.mjs.map +1 -1
- package/dist/{agent_instructions-DiMSGkdm.d.mts → pricing-CQ9DIFaw.d.ts} +109 -56
- package/dist/{agent_instructions-DiMSGkdm.d.ts → pricing-CxzwyiO6.d.mts} +109 -56
- package/dist/rail_spec-XP0wKgJV.d.mts +132 -0
- package/dist/rail_spec-XP0wKgJV.d.ts +132 -0
- package/dist/{signer-CFVQsWjL.d.mts → signer-3FAit11j.d.mts} +27 -1
- package/dist/{signer-CFVQsWjL.d.ts → signer-3FAit11j.d.ts} +27 -1
- package/dist/solana-Cds87OTu.d.mts +67 -0
- package/dist/solana-Cds87OTu.d.ts +67 -0
- package/dist/stripe-multichain/index.d.mts +55 -66
- package/dist/stripe-multichain/index.d.ts +55 -66
- package/dist/stripe-multichain/index.js +68 -42
- package/dist/stripe-multichain/index.js.map +1 -1
- package/dist/stripe-multichain/index.mjs +68 -41
- package/dist/stripe-multichain/index.mjs.map +1 -1
- package/dist/{wwwauthenticate-CU1eNvMQ.d.mts → wwwauthenticate-D_FMnPgU.d.mts} +9 -10
- package/dist/{wwwauthenticate-CU1eNvMQ.d.ts → wwwauthenticate-D_FMnPgU.d.ts} +9 -10
- package/dist/x402_server-hgQzWQwB.d.mts +81 -0
- package/dist/x402_server-hgQzWQwB.d.ts +81 -0
- package/package.json +9 -7
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { T as TempoRailSpec, X as X402BaseRailSpec, S as SolanaMppRailSpec, b as StripeRailSpec } from './rail_spec-XP0wKgJV.js';
|
|
2
|
+
|
|
1
3
|
interface HowToPayRailEntry {
|
|
2
4
|
setup?: string[];
|
|
3
5
|
prerequisite?: string;
|
|
@@ -19,7 +21,20 @@ interface HowToPayBlock {
|
|
|
19
21
|
solana_mpp?: HowToPayRailEntry;
|
|
20
22
|
stripe?: HowToPayStripeEntry;
|
|
21
23
|
}
|
|
22
|
-
interface
|
|
24
|
+
interface HowToPayRails {
|
|
25
|
+
tempo?: TempoRailSpec;
|
|
26
|
+
x402_base?: X402BaseRailSpec;
|
|
27
|
+
solana_mpp?: SolanaMppRailSpec;
|
|
28
|
+
stripe?: StripeRailSpec;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build the agent_instructions.how_to_pay block. Generates per-rail setup/command/what_it_does
|
|
32
|
+
* boilerplate so agents see concrete commands per rail in the 402 body. Vendors pass the rails
|
|
33
|
+
* they support; the helper produces the right command for each.
|
|
34
|
+
*
|
|
35
|
+
* Tool recommendations (tempo CLI vs agentscore-pay vs link-cli) are configurable per rail.
|
|
36
|
+
*/
|
|
37
|
+
declare function buildHowToPay({ url, retryBodyJson, totalUsd, rails, opTokenPlaceholder, maxSpend, }: {
|
|
23
38
|
/** The merchant's full URL (e.g., 'https://agents.merchant.example/api/buy'). */
|
|
24
39
|
url: string;
|
|
25
40
|
/** JSON string of the body the agent should retry with — typically the original request body. */
|
|
@@ -27,69 +42,18 @@ interface BuildHowToPayInput {
|
|
|
27
42
|
/** Total amount in USD (string or number). Used to compute max-spend defaults and stripe context. */
|
|
28
43
|
totalUsd: string | number;
|
|
29
44
|
/** Per-rail config — each is optional. Pass only the rails you support. */
|
|
30
|
-
rails:
|
|
31
|
-
tempo?: {
|
|
32
|
-
recipient: string;
|
|
33
|
-
networkName?: string;
|
|
34
|
-
chainId?: number;
|
|
35
|
-
recommend?: 'tempo' | 'agentscore-pay' | 'both';
|
|
36
|
-
};
|
|
37
|
-
x402_base?: {
|
|
38
|
-
recipient: string;
|
|
39
|
-
network?: string;
|
|
40
|
-
};
|
|
41
|
-
solana_mpp?: {
|
|
42
|
-
recipient: string;
|
|
43
|
-
network?: string;
|
|
44
|
-
};
|
|
45
|
-
stripe?: {
|
|
46
|
-
profileId?: string | null;
|
|
47
|
-
productName?: string;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
45
|
+
rails: HowToPayRails;
|
|
50
46
|
/** Placeholder text for the operator token in commands. Defaults to '<your_opc_token>'. */
|
|
51
47
|
opTokenPlaceholder?: string;
|
|
52
48
|
/** Override max-spend value used in commands. Default: ceil(totalUsd) + 1. */
|
|
53
49
|
maxSpend?: string | number;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Build the agent_instructions.how_to_pay block. Generates per-rail setup/command/what_it_does
|
|
57
|
-
* boilerplate so agents see concrete commands per rail in the 402 body. Vendors pass the rails
|
|
58
|
-
* they support; the helper produces the right command for each.
|
|
59
|
-
*
|
|
60
|
-
* Tool recommendations (tempo CLI vs agentscore-pay vs link-cli) are configurable per rail.
|
|
61
|
-
*/
|
|
62
|
-
declare function buildHowToPay(input: BuildHowToPayInput): HowToPayBlock;
|
|
50
|
+
}): HowToPayBlock;
|
|
63
51
|
|
|
64
52
|
/** Map of rail key (e.g. 'x402_base', 'tempo_mpp', 'stripe') → list of client identifiers
|
|
65
53
|
* that have been smoke-verified by the merchant against the protocol shape they emit.
|
|
66
54
|
* Strings are display labels, not install commands — agents already get install commands
|
|
67
55
|
* via `how_to_pay.<rail>.setup`. Use these as a "what's known to work" hint. */
|
|
68
56
|
type CompatibleClients = Record<string, string[]>;
|
|
69
|
-
interface BuildAgentInstructionsInput {
|
|
70
|
-
/** Per-rail commands. Build with `buildHowToPay`. */
|
|
71
|
-
howToPay: HowToPayBlock;
|
|
72
|
-
/** Tool recommendations as human-readable strings. Defaults to a sensible set covering tempo + agentscore-pay. */
|
|
73
|
-
recommendedTools?: string[];
|
|
74
|
-
/** Wallet-stack compatibility note for the agent. Default: rail-neutral, no specific wallet stack required. */
|
|
75
|
-
walletCompatibility?: string;
|
|
76
|
-
/** How long the merchant will wait for payment after the 402. Default 300 (5 minutes). */
|
|
77
|
-
timeoutSeconds?: number;
|
|
78
|
-
/** Warnings about common footguns. Defaults include tempo wallet transfer + raw on-chain x402 deposits. */
|
|
79
|
-
warnings?: string[];
|
|
80
|
-
/** Additional warnings appended to the default protocol-footgun set. Use this when you want
|
|
81
|
-
* to keep the SDK's protocol warnings AND add merchant-specific notes (e.g., a per-order
|
|
82
|
-
* rail-availability message). Ignored when `warnings` is set explicitly. */
|
|
83
|
-
extraWarnings?: string[];
|
|
84
|
-
/** Recommended rail (e.g., 'tempo', 'x402_base'). Surfaced for agents to default to. */
|
|
85
|
-
recommended?: string;
|
|
86
|
-
/** Per-rail list of client names the merchant has verified work end-to-end. Vendors set
|
|
87
|
-
* this from their own smoke matrix — defaults to none (avoids vouching for clients the
|
|
88
|
-
* merchant has not tested). When omitted, the field is not emitted. */
|
|
89
|
-
compatibleClients?: CompatibleClients;
|
|
90
|
-
/** Arbitrary additional fields the vendor wants merged into the agent_instructions object. */
|
|
91
|
-
extra?: Record<string, unknown>;
|
|
92
|
-
}
|
|
93
57
|
interface AgentInstructions {
|
|
94
58
|
how_to_pay: HowToPayBlock;
|
|
95
59
|
recommended_tools: string[];
|
|
@@ -128,6 +92,95 @@ declare function compatibleClientsByRails(rails: readonly RailKey[]): Compatible
|
|
|
128
92
|
* Stripe-only merchants get neither rail-specific warning. Vendors override
|
|
129
93
|
* `warnings`/`recommendedTools` for full control.
|
|
130
94
|
*/
|
|
131
|
-
declare function buildAgentInstructions(
|
|
95
|
+
declare function buildAgentInstructions({ howToPay, recommendedTools, walletCompatibility, timeoutSeconds, warnings, extraWarnings, recommended, compatibleClients, extra, }: {
|
|
96
|
+
/** Per-rail commands. Build with `buildHowToPay`. */
|
|
97
|
+
howToPay: HowToPayBlock;
|
|
98
|
+
/** Tool recommendations as human-readable strings. Defaults to a sensible set covering tempo + agentscore-pay. */
|
|
99
|
+
recommendedTools?: string[];
|
|
100
|
+
/** Wallet-stack compatibility note for the agent. Default: rail-neutral, no specific wallet stack required. */
|
|
101
|
+
walletCompatibility?: string;
|
|
102
|
+
/** How long the merchant will wait for payment after the 402. Default 300 (5 minutes). */
|
|
103
|
+
timeoutSeconds?: number;
|
|
104
|
+
/** Warnings about common footguns. Defaults include tempo wallet transfer + raw on-chain x402 deposits. */
|
|
105
|
+
warnings?: string[];
|
|
106
|
+
/** Additional warnings appended to the default protocol-footgun set. Use this when you want
|
|
107
|
+
* to keep the SDK's protocol warnings AND add merchant-specific notes. Ignored when
|
|
108
|
+
* `warnings` is set explicitly. */
|
|
109
|
+
extraWarnings?: string[];
|
|
110
|
+
/** Recommended rail (e.g., 'tempo', 'x402_base'). Surfaced for agents to default to. */
|
|
111
|
+
recommended?: string;
|
|
112
|
+
/** Per-rail list of client names the merchant has verified work end-to-end. Vendors set
|
|
113
|
+
* this from their own smoke matrix — defaults to none. When omitted, the field is not emitted. */
|
|
114
|
+
compatibleClients?: CompatibleClients;
|
|
115
|
+
/** Arbitrary additional fields the vendor wants merged into the agent_instructions object. */
|
|
116
|
+
extra?: Record<string, unknown>;
|
|
117
|
+
}): AgentInstructions;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Pricing block builder + canonical type.
|
|
121
|
+
*
|
|
122
|
+
* Composes the cents-denominated price components into the dollar-string shape that
|
|
123
|
+
* 402 challenge bodies advertise. Standardizes the pricing block so every merchant
|
|
124
|
+
* — current and future commerce-platform plugins (Commerce7, WooCommerce, Shopify) —
|
|
125
|
+
* surfaces the same shape to agents.
|
|
126
|
+
*
|
|
127
|
+
* Shipping is included by default because most physical-goods merchants carry it; pass
|
|
128
|
+
* `shippingCents: 0` (or omit) for digital goods / services. Tax is optional for
|
|
129
|
+
* merchants outside taxable jurisdictions.
|
|
130
|
+
*/
|
|
131
|
+
interface PricingBlock {
|
|
132
|
+
/** List-price subtotal as a dollar-string (e.g. `"250.00"`), pre-tax, pre-shipping, pre-discount. */
|
|
133
|
+
subtotal: string;
|
|
134
|
+
/** Tax amount as a dollar-string. Always present even if `"0.00"`. */
|
|
135
|
+
tax: string;
|
|
136
|
+
/** Shipping cost as a dollar-string. Always present even if `"0.00"`. */
|
|
137
|
+
shipping?: string;
|
|
138
|
+
/** Discount deducted from subtotal (redemption code, coupon, promo) as a dollar-string. Omit when no discount applied; agents reading the 402 see `subtotal`/`discount`/`total` and can render the savings line. */
|
|
139
|
+
discount?: string;
|
|
140
|
+
/** Final total = subtotal + tax + shipping - discount, dollar-string. Floored at 0. */
|
|
141
|
+
total: string;
|
|
142
|
+
/** Tax rate as a decimal fraction (e.g. `0.0775` for 7.75%). Optional — omit for tax-free merchants. */
|
|
143
|
+
tax_rate?: number;
|
|
144
|
+
/** ISO-3166-2 state code or jurisdiction name used for tax calc. Optional. */
|
|
145
|
+
tax_state?: string;
|
|
146
|
+
/** ISO-4217 currency code. Default `"USD"`. */
|
|
147
|
+
currency?: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Compose a `PricingBlock` from cents-denominated inputs. Handles the cents → dollar-string
|
|
151
|
+
* conversion (always 2 decimals) and computes the total when not explicitly provided.
|
|
152
|
+
* `subtotalCents` is the list price, pre-discount; `discountCents` is the deduction applied
|
|
153
|
+
* (redemption code, coupon).
|
|
154
|
+
*
|
|
155
|
+
* Example:
|
|
156
|
+
* ```ts
|
|
157
|
+
* const pricing = buildPricingBlock({
|
|
158
|
+
* subtotalCents: 25000,
|
|
159
|
+
* taxCents: 1875,
|
|
160
|
+
* shippingCents: 999,
|
|
161
|
+
* taxRate: 0.075,
|
|
162
|
+
* taxState: 'CA',
|
|
163
|
+
* });
|
|
164
|
+
* // → { subtotal: '250.00', tax: '18.75', shipping: '9.99', total: '278.74', tax_rate: 0.075, tax_state: 'CA' }
|
|
165
|
+
*
|
|
166
|
+
* // Redemption-code applied:
|
|
167
|
+
* buildPricingBlock({ subtotalCents: 7500, discountCents: 7500 });
|
|
168
|
+
* // → { subtotal: '75.00', discount: '75.00', tax: '0.00', total: '0.00' }
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
171
|
+
* Pass `shippingCents: 0` for digital goods if you want the field present (it's then `"0.00"`);
|
|
172
|
+
* omit entirely if you don't want shipping in the response shape at all. Total floors at 0
|
|
173
|
+
* when discount exceeds subtotal + tax + shipping.
|
|
174
|
+
*/
|
|
175
|
+
declare function buildPricingBlock({ subtotalCents, taxCents, shippingCents, discountCents, totalCents, taxRate, taxState, currency, }: {
|
|
176
|
+
subtotalCents: number;
|
|
177
|
+
taxCents?: number;
|
|
178
|
+
shippingCents?: number;
|
|
179
|
+
discountCents?: number;
|
|
180
|
+
totalCents?: number;
|
|
181
|
+
taxRate?: number;
|
|
182
|
+
taxState?: string;
|
|
183
|
+
currency?: string;
|
|
184
|
+
}): PricingBlock;
|
|
132
185
|
|
|
133
|
-
export { type AgentInstructions as A, type
|
|
186
|
+
export { type AgentInstructions as A, type CompatibleClients as C, type HowToPayBlock as H, type PricingBlock as P, type RailKey as R, type HowToPayRailEntry as a, type HowToPayRails as b, type HowToPayStripeEntry as c, buildAgentInstructions as d, buildHowToPay as e, buildPricingBlock as f, compatibleClientsByRails as g };
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { T as TempoRailSpec, X as X402BaseRailSpec, S as SolanaMppRailSpec, b as StripeRailSpec } from './rail_spec-XP0wKgJV.mjs';
|
|
2
|
+
|
|
1
3
|
interface HowToPayRailEntry {
|
|
2
4
|
setup?: string[];
|
|
3
5
|
prerequisite?: string;
|
|
@@ -19,7 +21,20 @@ interface HowToPayBlock {
|
|
|
19
21
|
solana_mpp?: HowToPayRailEntry;
|
|
20
22
|
stripe?: HowToPayStripeEntry;
|
|
21
23
|
}
|
|
22
|
-
interface
|
|
24
|
+
interface HowToPayRails {
|
|
25
|
+
tempo?: TempoRailSpec;
|
|
26
|
+
x402_base?: X402BaseRailSpec;
|
|
27
|
+
solana_mpp?: SolanaMppRailSpec;
|
|
28
|
+
stripe?: StripeRailSpec;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Build the agent_instructions.how_to_pay block. Generates per-rail setup/command/what_it_does
|
|
32
|
+
* boilerplate so agents see concrete commands per rail in the 402 body. Vendors pass the rails
|
|
33
|
+
* they support; the helper produces the right command for each.
|
|
34
|
+
*
|
|
35
|
+
* Tool recommendations (tempo CLI vs agentscore-pay vs link-cli) are configurable per rail.
|
|
36
|
+
*/
|
|
37
|
+
declare function buildHowToPay({ url, retryBodyJson, totalUsd, rails, opTokenPlaceholder, maxSpend, }: {
|
|
23
38
|
/** The merchant's full URL (e.g., 'https://agents.merchant.example/api/buy'). */
|
|
24
39
|
url: string;
|
|
25
40
|
/** JSON string of the body the agent should retry with — typically the original request body. */
|
|
@@ -27,69 +42,18 @@ interface BuildHowToPayInput {
|
|
|
27
42
|
/** Total amount in USD (string or number). Used to compute max-spend defaults and stripe context. */
|
|
28
43
|
totalUsd: string | number;
|
|
29
44
|
/** Per-rail config — each is optional. Pass only the rails you support. */
|
|
30
|
-
rails:
|
|
31
|
-
tempo?: {
|
|
32
|
-
recipient: string;
|
|
33
|
-
networkName?: string;
|
|
34
|
-
chainId?: number;
|
|
35
|
-
recommend?: 'tempo' | 'agentscore-pay' | 'both';
|
|
36
|
-
};
|
|
37
|
-
x402_base?: {
|
|
38
|
-
recipient: string;
|
|
39
|
-
network?: string;
|
|
40
|
-
};
|
|
41
|
-
solana_mpp?: {
|
|
42
|
-
recipient: string;
|
|
43
|
-
network?: string;
|
|
44
|
-
};
|
|
45
|
-
stripe?: {
|
|
46
|
-
profileId?: string | null;
|
|
47
|
-
productName?: string;
|
|
48
|
-
};
|
|
49
|
-
};
|
|
45
|
+
rails: HowToPayRails;
|
|
50
46
|
/** Placeholder text for the operator token in commands. Defaults to '<your_opc_token>'. */
|
|
51
47
|
opTokenPlaceholder?: string;
|
|
52
48
|
/** Override max-spend value used in commands. Default: ceil(totalUsd) + 1. */
|
|
53
49
|
maxSpend?: string | number;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* Build the agent_instructions.how_to_pay block. Generates per-rail setup/command/what_it_does
|
|
57
|
-
* boilerplate so agents see concrete commands per rail in the 402 body. Vendors pass the rails
|
|
58
|
-
* they support; the helper produces the right command for each.
|
|
59
|
-
*
|
|
60
|
-
* Tool recommendations (tempo CLI vs agentscore-pay vs link-cli) are configurable per rail.
|
|
61
|
-
*/
|
|
62
|
-
declare function buildHowToPay(input: BuildHowToPayInput): HowToPayBlock;
|
|
50
|
+
}): HowToPayBlock;
|
|
63
51
|
|
|
64
52
|
/** Map of rail key (e.g. 'x402_base', 'tempo_mpp', 'stripe') → list of client identifiers
|
|
65
53
|
* that have been smoke-verified by the merchant against the protocol shape they emit.
|
|
66
54
|
* Strings are display labels, not install commands — agents already get install commands
|
|
67
55
|
* via `how_to_pay.<rail>.setup`. Use these as a "what's known to work" hint. */
|
|
68
56
|
type CompatibleClients = Record<string, string[]>;
|
|
69
|
-
interface BuildAgentInstructionsInput {
|
|
70
|
-
/** Per-rail commands. Build with `buildHowToPay`. */
|
|
71
|
-
howToPay: HowToPayBlock;
|
|
72
|
-
/** Tool recommendations as human-readable strings. Defaults to a sensible set covering tempo + agentscore-pay. */
|
|
73
|
-
recommendedTools?: string[];
|
|
74
|
-
/** Wallet-stack compatibility note for the agent. Default: rail-neutral, no specific wallet stack required. */
|
|
75
|
-
walletCompatibility?: string;
|
|
76
|
-
/** How long the merchant will wait for payment after the 402. Default 300 (5 minutes). */
|
|
77
|
-
timeoutSeconds?: number;
|
|
78
|
-
/** Warnings about common footguns. Defaults include tempo wallet transfer + raw on-chain x402 deposits. */
|
|
79
|
-
warnings?: string[];
|
|
80
|
-
/** Additional warnings appended to the default protocol-footgun set. Use this when you want
|
|
81
|
-
* to keep the SDK's protocol warnings AND add merchant-specific notes (e.g., a per-order
|
|
82
|
-
* rail-availability message). Ignored when `warnings` is set explicitly. */
|
|
83
|
-
extraWarnings?: string[];
|
|
84
|
-
/** Recommended rail (e.g., 'tempo', 'x402_base'). Surfaced for agents to default to. */
|
|
85
|
-
recommended?: string;
|
|
86
|
-
/** Per-rail list of client names the merchant has verified work end-to-end. Vendors set
|
|
87
|
-
* this from their own smoke matrix — defaults to none (avoids vouching for clients the
|
|
88
|
-
* merchant has not tested). When omitted, the field is not emitted. */
|
|
89
|
-
compatibleClients?: CompatibleClients;
|
|
90
|
-
/** Arbitrary additional fields the vendor wants merged into the agent_instructions object. */
|
|
91
|
-
extra?: Record<string, unknown>;
|
|
92
|
-
}
|
|
93
57
|
interface AgentInstructions {
|
|
94
58
|
how_to_pay: HowToPayBlock;
|
|
95
59
|
recommended_tools: string[];
|
|
@@ -128,6 +92,95 @@ declare function compatibleClientsByRails(rails: readonly RailKey[]): Compatible
|
|
|
128
92
|
* Stripe-only merchants get neither rail-specific warning. Vendors override
|
|
129
93
|
* `warnings`/`recommendedTools` for full control.
|
|
130
94
|
*/
|
|
131
|
-
declare function buildAgentInstructions(
|
|
95
|
+
declare function buildAgentInstructions({ howToPay, recommendedTools, walletCompatibility, timeoutSeconds, warnings, extraWarnings, recommended, compatibleClients, extra, }: {
|
|
96
|
+
/** Per-rail commands. Build with `buildHowToPay`. */
|
|
97
|
+
howToPay: HowToPayBlock;
|
|
98
|
+
/** Tool recommendations as human-readable strings. Defaults to a sensible set covering tempo + agentscore-pay. */
|
|
99
|
+
recommendedTools?: string[];
|
|
100
|
+
/** Wallet-stack compatibility note for the agent. Default: rail-neutral, no specific wallet stack required. */
|
|
101
|
+
walletCompatibility?: string;
|
|
102
|
+
/** How long the merchant will wait for payment after the 402. Default 300 (5 minutes). */
|
|
103
|
+
timeoutSeconds?: number;
|
|
104
|
+
/** Warnings about common footguns. Defaults include tempo wallet transfer + raw on-chain x402 deposits. */
|
|
105
|
+
warnings?: string[];
|
|
106
|
+
/** Additional warnings appended to the default protocol-footgun set. Use this when you want
|
|
107
|
+
* to keep the SDK's protocol warnings AND add merchant-specific notes. Ignored when
|
|
108
|
+
* `warnings` is set explicitly. */
|
|
109
|
+
extraWarnings?: string[];
|
|
110
|
+
/** Recommended rail (e.g., 'tempo', 'x402_base'). Surfaced for agents to default to. */
|
|
111
|
+
recommended?: string;
|
|
112
|
+
/** Per-rail list of client names the merchant has verified work end-to-end. Vendors set
|
|
113
|
+
* this from their own smoke matrix — defaults to none. When omitted, the field is not emitted. */
|
|
114
|
+
compatibleClients?: CompatibleClients;
|
|
115
|
+
/** Arbitrary additional fields the vendor wants merged into the agent_instructions object. */
|
|
116
|
+
extra?: Record<string, unknown>;
|
|
117
|
+
}): AgentInstructions;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Pricing block builder + canonical type.
|
|
121
|
+
*
|
|
122
|
+
* Composes the cents-denominated price components into the dollar-string shape that
|
|
123
|
+
* 402 challenge bodies advertise. Standardizes the pricing block so every merchant
|
|
124
|
+
* — current and future commerce-platform plugins (Commerce7, WooCommerce, Shopify) —
|
|
125
|
+
* surfaces the same shape to agents.
|
|
126
|
+
*
|
|
127
|
+
* Shipping is included by default because most physical-goods merchants carry it; pass
|
|
128
|
+
* `shippingCents: 0` (or omit) for digital goods / services. Tax is optional for
|
|
129
|
+
* merchants outside taxable jurisdictions.
|
|
130
|
+
*/
|
|
131
|
+
interface PricingBlock {
|
|
132
|
+
/** List-price subtotal as a dollar-string (e.g. `"250.00"`), pre-tax, pre-shipping, pre-discount. */
|
|
133
|
+
subtotal: string;
|
|
134
|
+
/** Tax amount as a dollar-string. Always present even if `"0.00"`. */
|
|
135
|
+
tax: string;
|
|
136
|
+
/** Shipping cost as a dollar-string. Always present even if `"0.00"`. */
|
|
137
|
+
shipping?: string;
|
|
138
|
+
/** Discount deducted from subtotal (redemption code, coupon, promo) as a dollar-string. Omit when no discount applied; agents reading the 402 see `subtotal`/`discount`/`total` and can render the savings line. */
|
|
139
|
+
discount?: string;
|
|
140
|
+
/** Final total = subtotal + tax + shipping - discount, dollar-string. Floored at 0. */
|
|
141
|
+
total: string;
|
|
142
|
+
/** Tax rate as a decimal fraction (e.g. `0.0775` for 7.75%). Optional — omit for tax-free merchants. */
|
|
143
|
+
tax_rate?: number;
|
|
144
|
+
/** ISO-3166-2 state code or jurisdiction name used for tax calc. Optional. */
|
|
145
|
+
tax_state?: string;
|
|
146
|
+
/** ISO-4217 currency code. Default `"USD"`. */
|
|
147
|
+
currency?: string;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Compose a `PricingBlock` from cents-denominated inputs. Handles the cents → dollar-string
|
|
151
|
+
* conversion (always 2 decimals) and computes the total when not explicitly provided.
|
|
152
|
+
* `subtotalCents` is the list price, pre-discount; `discountCents` is the deduction applied
|
|
153
|
+
* (redemption code, coupon).
|
|
154
|
+
*
|
|
155
|
+
* Example:
|
|
156
|
+
* ```ts
|
|
157
|
+
* const pricing = buildPricingBlock({
|
|
158
|
+
* subtotalCents: 25000,
|
|
159
|
+
* taxCents: 1875,
|
|
160
|
+
* shippingCents: 999,
|
|
161
|
+
* taxRate: 0.075,
|
|
162
|
+
* taxState: 'CA',
|
|
163
|
+
* });
|
|
164
|
+
* // → { subtotal: '250.00', tax: '18.75', shipping: '9.99', total: '278.74', tax_rate: 0.075, tax_state: 'CA' }
|
|
165
|
+
*
|
|
166
|
+
* // Redemption-code applied:
|
|
167
|
+
* buildPricingBlock({ subtotalCents: 7500, discountCents: 7500 });
|
|
168
|
+
* // → { subtotal: '75.00', discount: '75.00', tax: '0.00', total: '0.00' }
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
171
|
+
* Pass `shippingCents: 0` for digital goods if you want the field present (it's then `"0.00"`);
|
|
172
|
+
* omit entirely if you don't want shipping in the response shape at all. Total floors at 0
|
|
173
|
+
* when discount exceeds subtotal + tax + shipping.
|
|
174
|
+
*/
|
|
175
|
+
declare function buildPricingBlock({ subtotalCents, taxCents, shippingCents, discountCents, totalCents, taxRate, taxState, currency, }: {
|
|
176
|
+
subtotalCents: number;
|
|
177
|
+
taxCents?: number;
|
|
178
|
+
shippingCents?: number;
|
|
179
|
+
discountCents?: number;
|
|
180
|
+
totalCents?: number;
|
|
181
|
+
taxRate?: number;
|
|
182
|
+
taxState?: string;
|
|
183
|
+
currency?: string;
|
|
184
|
+
}): PricingBlock;
|
|
132
185
|
|
|
133
|
-
export { type AgentInstructions as A, type
|
|
186
|
+
export { type AgentInstructions as A, type CompatibleClients as C, type HowToPayBlock as H, type PricingBlock as P, type RailKey as R, type HowToPayRailEntry as a, type HowToPayRails as b, type HowToPayStripeEntry as c, buildAgentInstructions as d, buildHowToPay as e, buildPricingBlock as f, compatibleClientsByRails as g };
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical `*RailSpec` types — one shape per rail, consumed by every helper.
|
|
3
|
+
*
|
|
4
|
+
* A merchant accepting Tempo + Base + Solana + Stripe declares one `*RailSpec`
|
|
5
|
+
* per rail and passes it to every helper (`buildAcceptedMethods`,
|
|
6
|
+
* `buildHowToPay`, `mppPaymentHandler`, `createMppxServer`, ...). One canonical
|
|
7
|
+
* shape per rail means the recipient address, network identifier, and token
|
|
8
|
+
* defaults are declared once and reused everywhere.
|
|
9
|
+
*
|
|
10
|
+
* `RecipientLike` is polymorphic over `string | (() => string | Promise<string>)`
|
|
11
|
+
* so per-order recipients (Stripe-multichain mints fresh deposit addresses per
|
|
12
|
+
* PaymentIntent) flow through identically to static-treasury recipients. The
|
|
13
|
+
* factory is called once per helper invocation; callers cache externally.
|
|
14
|
+
*/
|
|
15
|
+
type RecipientLike = string | (() => string | Promise<string>);
|
|
16
|
+
/**
|
|
17
|
+
* Resolve a `RecipientLike` to a concrete address string. Accepts a string
|
|
18
|
+
* (returned verbatim), a sync callable (called once), or an async callable
|
|
19
|
+
* (awaited once). Helpers call this on every invocation; callers that want
|
|
20
|
+
* once-per-session resolution should cache externally.
|
|
21
|
+
*/
|
|
22
|
+
declare function resolveRecipient(r: RecipientLike): Promise<string>;
|
|
23
|
+
/** Canonical config for the Tempo MPP rail. */
|
|
24
|
+
interface TempoRailSpec {
|
|
25
|
+
recipient: RecipientLike;
|
|
26
|
+
network?: string;
|
|
27
|
+
chainId?: number;
|
|
28
|
+
token?: string;
|
|
29
|
+
symbol?: string;
|
|
30
|
+
decimals?: number;
|
|
31
|
+
testnet?: boolean;
|
|
32
|
+
recommend?: 'tempo' | 'agentscore-pay' | 'both';
|
|
33
|
+
}
|
|
34
|
+
/** Canonical config for the x402 EVM (Base) rail. */
|
|
35
|
+
interface X402BaseRailSpec {
|
|
36
|
+
recipient: RecipientLike;
|
|
37
|
+
/** CAIP-2 canonical, e.g. `eip155:8453`. */
|
|
38
|
+
network?: string;
|
|
39
|
+
chainId?: number;
|
|
40
|
+
token?: string;
|
|
41
|
+
symbol?: string;
|
|
42
|
+
decimals?: number;
|
|
43
|
+
mode?: 'exact' | 'upto';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Canonical config for the Solana MPP rail.
|
|
47
|
+
*
|
|
48
|
+
* `signer` is an optional fee-payer signer for server-side fee sponsorship —
|
|
49
|
+
* typed as `unknown` to avoid hard-importing `@solana/kit` types here. Pass any
|
|
50
|
+
* `TransactionPartialSigner`.
|
|
51
|
+
*/
|
|
52
|
+
interface SolanaMppRailSpec {
|
|
53
|
+
recipient: RecipientLike;
|
|
54
|
+
network?: string;
|
|
55
|
+
token?: string;
|
|
56
|
+
symbol?: string;
|
|
57
|
+
decimals?: number;
|
|
58
|
+
rpcUrl?: string;
|
|
59
|
+
signer?: unknown;
|
|
60
|
+
tokenProgram?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Canonical config for the Stripe SPT rail.
|
|
64
|
+
*
|
|
65
|
+
* `recipient` is intentionally absent — Stripe rails use `profileId` as the
|
|
66
|
+
* merchant-side network identifier the agent's SPT is scoped to; the
|
|
67
|
+
* transaction recipient is the merchant's Stripe account, not an on-chain
|
|
68
|
+
* address.
|
|
69
|
+
*/
|
|
70
|
+
interface StripeRailSpec {
|
|
71
|
+
profileId?: string | null;
|
|
72
|
+
rails?: ('card' | 'link' | 'shared_payment_token')[];
|
|
73
|
+
paymentMethodTypes?: string[];
|
|
74
|
+
productName?: string;
|
|
75
|
+
secretKey?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Canonical config for the Tempo session MPP rail (pay-as-you-go channels).
|
|
79
|
+
*
|
|
80
|
+
* `escrowContract` is the merchant-deployed on-chain escrow that holds channel
|
|
81
|
+
* deposits + pays out cumulative vouchers on settlement. `store` is a
|
|
82
|
+
* `ChannelStore` instance — typed as `unknown` to avoid hard-importing `mppx`'s
|
|
83
|
+
* store interface here.
|
|
84
|
+
*/
|
|
85
|
+
interface TempoSessionRailSpec {
|
|
86
|
+
recipient: RecipientLike;
|
|
87
|
+
escrowContract: string;
|
|
88
|
+
store: unknown;
|
|
89
|
+
currency?: string;
|
|
90
|
+
testnet?: boolean;
|
|
91
|
+
chains?: unknown;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Default field values for each `*RailSpec`. Mirrors python-commerce's
|
|
95
|
+
* `*RailSpec` dataclass defaults — callers can spread these into their spec
|
|
96
|
+
* literal when they want defaults without typing them out. Sourced from the
|
|
97
|
+
* USDC registry so they stay in sync with on-chain reality.
|
|
98
|
+
*/
|
|
99
|
+
declare const RAIL_SPEC_DEFAULTS: {
|
|
100
|
+
readonly tempo: {
|
|
101
|
+
readonly network: "tempo-mainnet";
|
|
102
|
+
readonly chainId: 4217;
|
|
103
|
+
readonly token: "0x20C000000000000000000000b9537d11c60E8b50";
|
|
104
|
+
readonly symbol: "USDC.e";
|
|
105
|
+
readonly decimals: 6;
|
|
106
|
+
readonly testnet: false;
|
|
107
|
+
readonly recommend: "both";
|
|
108
|
+
};
|
|
109
|
+
readonly x402Base: {
|
|
110
|
+
readonly network: "eip155:8453";
|
|
111
|
+
readonly chainId: 8453;
|
|
112
|
+
readonly token: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
113
|
+
readonly symbol: "USDC";
|
|
114
|
+
readonly decimals: 6;
|
|
115
|
+
readonly mode: "exact";
|
|
116
|
+
};
|
|
117
|
+
readonly solanaMpp: {
|
|
118
|
+
readonly network: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
119
|
+
readonly token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
120
|
+
readonly symbol: "USDC";
|
|
121
|
+
readonly decimals: 6;
|
|
122
|
+
};
|
|
123
|
+
readonly stripe: {
|
|
124
|
+
readonly rails: ("card" | "link" | "shared_payment_token")[];
|
|
125
|
+
};
|
|
126
|
+
readonly tempoSession: {
|
|
127
|
+
readonly currency: "0x20C000000000000000000000b9537d11c60E8b50";
|
|
128
|
+
readonly testnet: false;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export { RAIL_SPEC_DEFAULTS as R, type SolanaMppRailSpec as S, type TempoRailSpec as T, type X402BaseRailSpec as X, type TempoSessionRailSpec as a, type StripeRailSpec as b, type RecipientLike as c, resolveRecipient as r };
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical `*RailSpec` types — one shape per rail, consumed by every helper.
|
|
3
|
+
*
|
|
4
|
+
* A merchant accepting Tempo + Base + Solana + Stripe declares one `*RailSpec`
|
|
5
|
+
* per rail and passes it to every helper (`buildAcceptedMethods`,
|
|
6
|
+
* `buildHowToPay`, `mppPaymentHandler`, `createMppxServer`, ...). One canonical
|
|
7
|
+
* shape per rail means the recipient address, network identifier, and token
|
|
8
|
+
* defaults are declared once and reused everywhere.
|
|
9
|
+
*
|
|
10
|
+
* `RecipientLike` is polymorphic over `string | (() => string | Promise<string>)`
|
|
11
|
+
* so per-order recipients (Stripe-multichain mints fresh deposit addresses per
|
|
12
|
+
* PaymentIntent) flow through identically to static-treasury recipients. The
|
|
13
|
+
* factory is called once per helper invocation; callers cache externally.
|
|
14
|
+
*/
|
|
15
|
+
type RecipientLike = string | (() => string | Promise<string>);
|
|
16
|
+
/**
|
|
17
|
+
* Resolve a `RecipientLike` to a concrete address string. Accepts a string
|
|
18
|
+
* (returned verbatim), a sync callable (called once), or an async callable
|
|
19
|
+
* (awaited once). Helpers call this on every invocation; callers that want
|
|
20
|
+
* once-per-session resolution should cache externally.
|
|
21
|
+
*/
|
|
22
|
+
declare function resolveRecipient(r: RecipientLike): Promise<string>;
|
|
23
|
+
/** Canonical config for the Tempo MPP rail. */
|
|
24
|
+
interface TempoRailSpec {
|
|
25
|
+
recipient: RecipientLike;
|
|
26
|
+
network?: string;
|
|
27
|
+
chainId?: number;
|
|
28
|
+
token?: string;
|
|
29
|
+
symbol?: string;
|
|
30
|
+
decimals?: number;
|
|
31
|
+
testnet?: boolean;
|
|
32
|
+
recommend?: 'tempo' | 'agentscore-pay' | 'both';
|
|
33
|
+
}
|
|
34
|
+
/** Canonical config for the x402 EVM (Base) rail. */
|
|
35
|
+
interface X402BaseRailSpec {
|
|
36
|
+
recipient: RecipientLike;
|
|
37
|
+
/** CAIP-2 canonical, e.g. `eip155:8453`. */
|
|
38
|
+
network?: string;
|
|
39
|
+
chainId?: number;
|
|
40
|
+
token?: string;
|
|
41
|
+
symbol?: string;
|
|
42
|
+
decimals?: number;
|
|
43
|
+
mode?: 'exact' | 'upto';
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Canonical config for the Solana MPP rail.
|
|
47
|
+
*
|
|
48
|
+
* `signer` is an optional fee-payer signer for server-side fee sponsorship —
|
|
49
|
+
* typed as `unknown` to avoid hard-importing `@solana/kit` types here. Pass any
|
|
50
|
+
* `TransactionPartialSigner`.
|
|
51
|
+
*/
|
|
52
|
+
interface SolanaMppRailSpec {
|
|
53
|
+
recipient: RecipientLike;
|
|
54
|
+
network?: string;
|
|
55
|
+
token?: string;
|
|
56
|
+
symbol?: string;
|
|
57
|
+
decimals?: number;
|
|
58
|
+
rpcUrl?: string;
|
|
59
|
+
signer?: unknown;
|
|
60
|
+
tokenProgram?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Canonical config for the Stripe SPT rail.
|
|
64
|
+
*
|
|
65
|
+
* `recipient` is intentionally absent — Stripe rails use `profileId` as the
|
|
66
|
+
* merchant-side network identifier the agent's SPT is scoped to; the
|
|
67
|
+
* transaction recipient is the merchant's Stripe account, not an on-chain
|
|
68
|
+
* address.
|
|
69
|
+
*/
|
|
70
|
+
interface StripeRailSpec {
|
|
71
|
+
profileId?: string | null;
|
|
72
|
+
rails?: ('card' | 'link' | 'shared_payment_token')[];
|
|
73
|
+
paymentMethodTypes?: string[];
|
|
74
|
+
productName?: string;
|
|
75
|
+
secretKey?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Canonical config for the Tempo session MPP rail (pay-as-you-go channels).
|
|
79
|
+
*
|
|
80
|
+
* `escrowContract` is the merchant-deployed on-chain escrow that holds channel
|
|
81
|
+
* deposits + pays out cumulative vouchers on settlement. `store` is a
|
|
82
|
+
* `ChannelStore` instance — typed as `unknown` to avoid hard-importing `mppx`'s
|
|
83
|
+
* store interface here.
|
|
84
|
+
*/
|
|
85
|
+
interface TempoSessionRailSpec {
|
|
86
|
+
recipient: RecipientLike;
|
|
87
|
+
escrowContract: string;
|
|
88
|
+
store: unknown;
|
|
89
|
+
currency?: string;
|
|
90
|
+
testnet?: boolean;
|
|
91
|
+
chains?: unknown;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Default field values for each `*RailSpec`. Mirrors python-commerce's
|
|
95
|
+
* `*RailSpec` dataclass defaults — callers can spread these into their spec
|
|
96
|
+
* literal when they want defaults without typing them out. Sourced from the
|
|
97
|
+
* USDC registry so they stay in sync with on-chain reality.
|
|
98
|
+
*/
|
|
99
|
+
declare const RAIL_SPEC_DEFAULTS: {
|
|
100
|
+
readonly tempo: {
|
|
101
|
+
readonly network: "tempo-mainnet";
|
|
102
|
+
readonly chainId: 4217;
|
|
103
|
+
readonly token: "0x20C000000000000000000000b9537d11c60E8b50";
|
|
104
|
+
readonly symbol: "USDC.e";
|
|
105
|
+
readonly decimals: 6;
|
|
106
|
+
readonly testnet: false;
|
|
107
|
+
readonly recommend: "both";
|
|
108
|
+
};
|
|
109
|
+
readonly x402Base: {
|
|
110
|
+
readonly network: "eip155:8453";
|
|
111
|
+
readonly chainId: 8453;
|
|
112
|
+
readonly token: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913";
|
|
113
|
+
readonly symbol: "USDC";
|
|
114
|
+
readonly decimals: 6;
|
|
115
|
+
readonly mode: "exact";
|
|
116
|
+
};
|
|
117
|
+
readonly solanaMpp: {
|
|
118
|
+
readonly network: "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp";
|
|
119
|
+
readonly token: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
120
|
+
readonly symbol: "USDC";
|
|
121
|
+
readonly decimals: 6;
|
|
122
|
+
};
|
|
123
|
+
readonly stripe: {
|
|
124
|
+
readonly rails: ("card" | "link" | "shared_payment_token")[];
|
|
125
|
+
};
|
|
126
|
+
readonly tempoSession: {
|
|
127
|
+
readonly currency: "0x20C000000000000000000000b9537d11c60E8b50";
|
|
128
|
+
readonly testnet: false;
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
|
|
132
|
+
export { RAIL_SPEC_DEFAULTS as R, type SolanaMppRailSpec as S, type TempoRailSpec as T, type X402BaseRailSpec as X, type TempoSessionRailSpec as a, type StripeRailSpec as b, type RecipientLike as c, resolveRecipient as r };
|