@seedhape/x402-merchant-sdk 0.3.4 → 0.4.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 CHANGED
@@ -43,7 +43,7 @@ app.get("/weather", (req, res) => {
43
43
 
44
44
  ## Network presets and payment methods
45
45
 
46
- Use `base` or `baseSepolia` to preconfigure the CAIP-2 network, USDC contract, decimals, and default facilitator:
46
+ Use `base`, `baseSepolia`, `solana`, or `solanaDevnet` to preconfigure the CAIP-2 network, USDC mint/contract, decimals, and default facilitator:
47
47
 
48
48
  ```ts
49
49
  import { baseSepolia, expressPaywall, merchantConfig } from "@seedhape/x402-merchant-sdk";
@@ -59,6 +59,76 @@ app.use(expressPaywall(merchantConfig(baseSepolia, {
59
59
 
60
60
  `paymentMethods` defaults to `['eip3009']`, the broadly supported payment method. Set `['eip3009', 'erc7710']` to let the buyer/client choose both methods. Only advertise ERC-7710 when the configured facilitator supports it. If the methods use different facilitators, configure `facilitators: { eip3009: {...}, erc7710: {...} }`; the SDK selects the facilitator matching the buyer's selected method.
61
61
 
62
+ ### Base and Solana on one route
63
+
64
+ Use `accepts` to expose both chains from the same resource. Bazaar and downstream catalogs such as Agentic Market treat these as payment choices on one service listing:
65
+
66
+ ```ts
67
+ import { base, solana, expressPaywall, merchantConfig } from "@seedhape/x402-merchant-sdk";
68
+
69
+ // Create cdpFacilitator with createCdpFacilitatorClient as shown below.
70
+
71
+ app.use(expressPaywall(merchantConfig(base, {
72
+ accepts: [{
73
+ ...base,
74
+ payTo: process.env.BASE_MERCHANT_WALLET!,
75
+ paymentMethods: ["eip3009"],
76
+ }, {
77
+ ...solana,
78
+ payTo: process.env.SOLANA_MERCHANT_WALLET!,
79
+ feePayer: process.env.SOLANA_FEE_PAYER!,
80
+ }],
81
+ price: { amount: 10_000n, ...base },
82
+ facilitator: {
83
+ url: "https://api.cdp.coinbase.com/platform/v2/x402",
84
+ client: cdpFacilitator,
85
+ },
86
+ route: {
87
+ name: "Market Data",
88
+ description: "Paid market data on Base or Solana",
89
+ inputSchema: { type: "object", properties: { symbol: { type: "string" } } },
90
+ outputSchema: { type: "object" },
91
+ },
92
+ })));
93
+ ```
94
+
95
+ `feePayer` is the Solana facilitator signer advertised by its `/supported` response; it is not the merchant wallet. Use a facilitator that supports every advertised network, or set a per-option `facilitator`. Solana payments use the official x402 `exact` SVM scheme and a base64-encoded, partially signed versioned transaction in `PAYMENT-SIGNATURE`.
96
+
97
+ The built-in Solana mainnet preset uses `solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp` and native USDC mint `EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v`. Solana addresses are case-sensitive.
98
+ Its default facilitator is `https://facilitator.payai.network`; the devnet preset uses the test-only `https://x402.org/facilitator`.
99
+
100
+ ### Browser wallet paywall
101
+
102
+ Install the optional official UI when people should be able to open the paid route directly and pay with an EVM or Solana browser wallet:
103
+
104
+ ```bash
105
+ npm install @seedhape/x402-merchant-sdk @x402/paywall react react-dom
106
+ ```
107
+
108
+ Then enable it on the same configuration:
109
+
110
+ ```ts
111
+ const config = merchantConfig(base, {
112
+ accepts: [
113
+ { ...base, payTo: process.env.BASE_MERCHANT_WALLET! },
114
+ {
115
+ ...solana,
116
+ payTo: process.env.SOLANA_MERCHANT_WALLET!,
117
+ feePayer: process.env.SOLANA_FEE_PAYER!,
118
+ },
119
+ ],
120
+ price: { amount: 10_000n, ...base },
121
+ browserPaywall: {
122
+ appName: "Market Data",
123
+ appLogo: "https://api.example.com/icon-512.png",
124
+ testnet: false,
125
+ },
126
+ facilitator: { url: "https://facilitator.payai.network" },
127
+ });
128
+ ```
129
+
130
+ Express, Hono, and `node:http` adapters now return the official `@x402/paywall` HTML when the request accepts `text/html`. Programmatic callers continue receiving the normal JSON challenge and `PAYMENT-REQUIRED` header. The UI registers both official `evmPaywall` and `svmPaywall` handlers. Because `@x402/paywall` is an optional peer dependency, API-only installations do not pull its browser-wallet and React dependency tree.
131
+
62
132
  ### Coinbase CDP Facilitator and Bazaar
63
133
 
64
134
  For Coinbase Bazaar indexing, use Coinbase's authenticated facilitator client rather than passing the CDP API secret as a bearer token:
@@ -93,6 +163,7 @@ const config = merchantConfig(base, {
93
163
  },
94
164
  outputExample: { title: "Example page", text: "Readable page text" },
95
165
  tags: ["web", "metadata", "extraction"],
166
+ iconUrl: "https://api.example.com/icon-512.png",
96
167
  },
97
168
  });
98
169
  ```
@@ -121,6 +192,8 @@ Do not treat `FACILITATOR_URL=https://api.cdp.coinbase.com/platform/v2/x402` by
121
192
 
122
193
  The `route` metadata automatically becomes the Bazaar `extensions.bazaar.info` object and populates the resource `serviceName` and `tags` fields in the x402 v2 challenge. Use `outputExample` because agents use a realistic result example when deciding whether to call a service. Sonar can read the same resource URL, description, schemas, payment requirements, network, asset, and payment methods from that challenge.
123
194
 
195
+ `iconUrl` is copied into the resource and Bazaar metadata for downstream marketplaces such as Agentic Market. Use a publicly accessible HTTPS image URL, preferably a square PNG or WebP without authentication.
196
+
124
197
  When deploying behind a TLS reverse proxy, set `publicOrigin` so the resource URL advertises the public HTTPS origin while preserving request paths and query parameters:
125
198
 
126
199
  ```ts
@@ -166,7 +239,7 @@ The HTTP route and MCP tool produce separate x402 resources, so each can have it
166
239
 
167
240
  Enable AP2 on an HTTP paywall to issue a signed merchant Checkout JWT with every unpaid or rejected `402` response. The SDK returns it in the `AP2-CHECKOUT-JWT` header; this does not change x402 verification or settlement.
168
241
 
169
- AP2 is optional. A route without the `ap2` option behaves exactly like a normal x402 route. AP2 adds signed checkout context for AP2-aware buyers and agents; the facilitator still verifies and settles the EIP-3009 or ERC-7710 payment.
242
+ AP2 is optional. A route without the `ap2` option behaves exactly like a normal x402 route. AP2 adds signed checkout context for AP2-aware buyers and agents; the facilitator still verifies and settles the EIP-3009 or ERC-7710 payment. The current Checkout JWT binds one network, so SDK routes using `ap2` must configure a single payment option; multi-network Solana AP2 mandates are a separate follow-up.
170
243
 
171
244
  ```ts
172
245
  app.use(expressPaywall(merchantConfig(base, {
@@ -214,8 +287,8 @@ PAYMENT-REQUIRED: eyJ...
214
287
 
215
288
  ## Payment flow
216
289
 
217
- 1. An unpaid request receives a v2 `402` challenge with a `PAYMENT-REQUIRED` header containing the merchant wallet, USDC asset, Base network, amount, and resource URL.
218
- 2. The buyer creates an x402 payment using EIP-3009 or ERC-7710 and sends it in `PAYMENT-SIGNATURE`.
290
+ 1. An unpaid request receives a v2 `402` challenge with a `PAYMENT-REQUIRED` header containing one or more accepted networks, recipient wallets, USDC assets, the amount, and resource URL.
291
+ 2. The buyer selects an accepted option, creates an EVM authorization or Solana transaction, and sends it in `PAYMENT-SIGNATURE`.
219
292
  3. The facilitator verifies and settles the payment.
220
293
  4. USDC settles directly to `payTo`; Seedhape never holds merchant funds.
221
294
  5. The request continues and the settlement is returned in `PAYMENT-RESPONSE`.
@@ -224,7 +297,7 @@ The SDK emits the current x402 v2 challenge shape. For migration, it also accept
224
297
 
225
298
  ## Official x402 integrations
226
299
 
227
- The SDK is built on the official `@x402/core` and `@x402/evm` packages. EIP-3009 verification and settlement use `x402ResourceServer`, `HTTPFacilitatorClient`, and the official EVM exact scheme. Bazaar declarations use `@x402/extensions/bazaar` and are registered with the resource server.
300
+ The SDK is built on the official `@x402/core`, `@x402/evm`, and `@x402/svm` packages. EIP-3009 and exact-SVM verification and settlement use `x402ResourceServer`, `HTTPFacilitatorClient`, and the official chain scheme. Bazaar declarations use `@x402/extensions/bazaar` and are registered with the resource server.
228
301
 
229
302
  ERC-7710 remains an opt-in Seedhape facilitator method because the official EVM exact server currently covers EIP-3009 and Permit2, not ERC-7710. When `erc7710` is selected, the SDK routes it to the configured facilitator override; it never silently sends an ERC-7710 payload through the EIP-3009 verifier.
230
303
 
@@ -247,7 +320,7 @@ Sonar listing does not replace Bazaar metadata. A merchant can publish Bazaar di
247
320
  ## Production checklist
248
321
 
249
322
  - Use a self-custodial merchant receiving address.
250
- - Use `eip155:8453` and Base USDC in production; use Base Sepolia only for testing.
323
+ - Use Base mainnet or Solana mainnet presets in production and their testnet/devnet presets only for testing.
251
324
  - Configure a production facilitator URL and keep it server-side.
252
325
  - Keep health, documentation, and discovery metadata routes free.
253
326
  - Record the receipt ID, resource, payer, amount, network, and transaction hash.
@@ -0,0 +1,50 @@
1
+ /** Structural subset of the official renderer, kept local so server-only users do not need its types. */
2
+ export interface BrowserPaywallProvider {
3
+ generateHtml(paymentRequired: BrowserPaymentRequired, config?: BrowserPaywallRuntimeConfig): string;
4
+ }
5
+ export interface BrowserPaywallRuntimeConfig {
6
+ appName?: string;
7
+ appLogo?: string;
8
+ currentUrl?: string;
9
+ testnet?: boolean;
10
+ faucetUrls?: Record<string, string>;
11
+ }
12
+ export interface BrowserPaymentRequired {
13
+ x402Version: number;
14
+ error?: string;
15
+ resource?: {
16
+ url: string;
17
+ description?: string;
18
+ mimeType?: string;
19
+ };
20
+ accepts: Array<{
21
+ scheme: string;
22
+ network: string;
23
+ asset: string;
24
+ payTo: string;
25
+ maxTimeoutSeconds: number;
26
+ extra?: Record<string, unknown>;
27
+ amount?: string;
28
+ maxAmountRequired?: string;
29
+ description?: string;
30
+ resource?: string;
31
+ mimeType?: string;
32
+ }>;
33
+ extensions?: Record<string, unknown>;
34
+ }
35
+ /** Runtime options passed to the official browser paywall renderer. */
36
+ export interface BrowserPaywallConfig extends BrowserPaywallRuntimeConfig {
37
+ /** Inject a custom provider, primarily for custom themes or tests. */
38
+ provider?: BrowserPaywallProvider;
39
+ }
40
+ /**
41
+ * Build the official x402 browser paywall with handlers for both EVM and Solana.
42
+ * `@x402/paywall` is an optional peer so server-only SDK installs stay lean.
43
+ */
44
+ export declare function createBrowserPaywallProvider(config?: BrowserPaywallRuntimeConfig): Promise<BrowserPaywallProvider>;
45
+ export declare function renderBrowserPaywall(args: {
46
+ paymentRequired: unknown;
47
+ accept?: string | string[];
48
+ config: true | BrowserPaywallConfig;
49
+ }): Promise<string | undefined>;
50
+ //# sourceMappingURL=browser-paywall.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-paywall.d.ts","sourceRoot":"","sources":["../src/browser-paywall.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,MAAM,WAAW,sBAAsB;IACrC,YAAY,CAAC,eAAe,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,2BAA2B,GAAG,MAAM,CAAC;CACrG;AAED,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACpE,OAAO,EAAE,KAAK,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,MAAM,CAAC;QACd,iBAAiB,EAAE,MAAM,CAAC;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,uEAAuE;AACvE,MAAM,WAAW,oBAAqB,SAAQ,2BAA2B;IACvE,sEAAsE;IACtE,QAAQ,CAAC,EAAE,sBAAsB,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,MAAM,GAAE,2BAAgC,GACvC,OAAO,CAAC,sBAAsB,CAAC,CAkBjC;AAED,wBAAsB,oBAAoB,CAAC,IAAI,EAAE;IAC/C,eAAe,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,GAAG,oBAAoB,CAAC;CACrC,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAY9B"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Build the official x402 browser paywall with handlers for both EVM and Solana.
3
+ * `@x402/paywall` is an optional peer so server-only SDK installs stay lean.
4
+ */
5
+ export async function createBrowserPaywallProvider(config = {}) {
6
+ try {
7
+ const [{ createPaywall }, { evmPaywall }, { svmPaywall }] = await Promise.all([
8
+ import("@x402/paywall"),
9
+ import("@x402/paywall/evm"),
10
+ import("@x402/paywall/svm"),
11
+ ]);
12
+ return createPaywall()
13
+ .withNetwork(evmPaywall)
14
+ .withNetwork(svmPaywall)
15
+ .withConfig(config)
16
+ .build();
17
+ }
18
+ catch (cause) {
19
+ throw new Error("Browser paywall support requires the optional @x402/paywall peer dependency (version 2.23.0 or newer).", { cause });
20
+ }
21
+ }
22
+ export async function renderBrowserPaywall(args) {
23
+ const accept = Array.isArray(args.accept) ? args.accept.join(",") : args.accept ?? "";
24
+ if (!accept.toLowerCase().includes("text/html"))
25
+ return undefined;
26
+ const configured = args.config === true ? {} : args.config;
27
+ const { provider, ...runtimeConfig } = configured;
28
+ const resolvedProvider = provider ?? await createBrowserPaywallProvider(runtimeConfig);
29
+ const paymentRequired = args.paymentRequired;
30
+ return resolvedProvider.generateHtml(paymentRequired, {
31
+ ...runtimeConfig,
32
+ currentUrl: runtimeConfig.currentUrl ?? paymentRequired.resource?.url,
33
+ });
34
+ }
35
+ //# sourceMappingURL=browser-paywall.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser-paywall.js","sourceRoot":"","sources":["../src/browser-paywall.ts"],"names":[],"mappings":"AAuCA;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,SAAsC,EAAE;IAExC,IAAI,CAAC;QACH,MAAM,CAAC,EAAE,aAAa,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC5E,MAAM,CAAC,eAAe,CAAC;YACvB,MAAM,CAAC,mBAAmB,CAAC;YAC3B,MAAM,CAAC,mBAAmB,CAAC;SAC5B,CAAC,CAAC;QACH,OAAO,aAAa,EAAE;aACnB,WAAW,CAAC,UAAU,CAAC;aACvB,WAAW,CAAC,UAAU,CAAC;aACvB,UAAU,CAAC,MAAM,CAAC;aAClB,KAAK,EAAE,CAAC;IACb,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,wGAAwG,EACxG,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAI1C;IACC,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;IACtF,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC;QAAE,OAAO,SAAS,CAAC;IAElE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IAC3D,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,GAAG,UAAU,CAAC;IAClD,MAAM,gBAAgB,GAAG,QAAQ,IAAI,MAAM,4BAA4B,CAAC,aAAa,CAAC,CAAC;IACvF,MAAM,eAAe,GAAG,IAAI,CAAC,eAAyC,CAAC;IACvE,OAAO,gBAAgB,CAAC,YAAY,CAAC,eAAe,EAAE;QACpD,GAAG,aAAa;QAChB,UAAU,EAAE,aAAa,CAAC,UAAU,IAAI,eAAe,CAAC,QAAQ,EAAE,GAAG;KACtE,CAAC,CAAC;AACL,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./middleware.js";
2
2
  export * from "./mcp.js";
3
3
  export * from "./ap2.js";
4
+ export * from "./browser-paywall.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from "./middleware.js";
2
2
  export * from "./mcp.js";
3
3
  export * from "./ap2.js";
4
+ export * from "./browser-paywall.js";
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,sBAAsB,CAAC"}
package/dist/mcp.d.ts CHANGED
@@ -14,6 +14,8 @@ export interface McpToolConfig {
14
14
  /** Optional MCP resource URL; defaults to mcp://tool/{name}. */
15
15
  resourceUrl?: string;
16
16
  tags?: string[];
17
+ /** Public HTTPS image URL used by Bazaar and downstream marketplaces. */
18
+ iconUrl?: string;
17
19
  /** Override the shared facilitator for this MCP tool. */
18
20
  facilitator?: FacilitatorConfig;
19
21
  }
package/dist/mcp.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EACnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,4CAA4C;IAC5C,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yDAAyD;IACzD,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACxF,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE9C;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrG,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAkEf"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AACvC,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,UAAU,EACf,KAAK,aAAa,EAEnB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,4CAA4C;IAC5C,eAAe,CAAC,EAAE,UAAU,CAAC;IAC7B,gBAAgB,CAAC,EAAE,UAAU,CAAC;IAC9B,iEAAiE;IACjE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yDAAyD;IACzD,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AAED,MAAM,MAAM,cAAc,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IACxF,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;AAE9C;;;;GAIG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrG,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,aAAa,EACtB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,cAAc,CAAC,KAAK,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CA4Ef"}
package/dist/mcp.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import { randomUUID } from "node:crypto";
2
2
  import { createPaymentWrapper } from "@x402/mcp";
3
3
  import { declareDiscoveryExtension } from "@x402/extensions/bazaar";
4
- import { createOfficialResourceServer, } from "./middleware.js";
4
+ import { createOfficialResourceServer, resolvePaymentOptions, } from "./middleware.js";
5
5
  /**
6
6
  * Register a paid MCP tool using the same merchant configuration as HTTP routes.
7
7
  * The official @x402/mcp wrapper handles the MCP payment challenge, verification,
@@ -13,22 +13,29 @@ export async function createPaidMcpTool(server, paywall, tool, handler) {
13
13
  const price = typeof paywall.price === "function"
14
14
  ? (() => { throw new Error("MCP tools require a fixed price; configure per-call pricing in the MCP handler layer."); })()
15
15
  : paywall.price;
16
- const accepts = await resourceServer.buildPaymentRequirements({
16
+ const paymentOptions = resolvePaymentOptions(paywall);
17
+ if (paymentOptions.some((option) => option.facilitator)) {
18
+ throw new Error("MCP multi-network tools currently require one shared facilitator.");
19
+ }
20
+ const accepts = (await Promise.all(paymentOptions.map((option) => resourceServer.buildPaymentRequirements({
17
21
  scheme: "exact",
18
- network: paywall.network,
19
- payTo: paywall.payTo,
22
+ network: option.network,
23
+ payTo: option.payTo,
20
24
  price: {
21
- asset: paywall.asset,
25
+ asset: option.asset,
22
26
  amount: price.amount.toString(),
23
- extra: {
24
- name: "USD Coin",
25
- version: "2",
26
- decimals: paywall.decimals ?? 6,
27
- assetTransferMethod: "eip3009",
28
- },
27
+ extra: option.network.startsWith("solana:")
28
+ ? { ...(option.extra ?? {}), feePayer: option.feePayer ?? option.extra?.feePayer }
29
+ : {
30
+ name: "USD Coin",
31
+ version: "2",
32
+ decimals: option.decimals ?? 6,
33
+ assetTransferMethod: option.paymentMethods?.[0] ?? paywall.paymentMethods?.[0] ?? "eip3009",
34
+ ...(option.extra ?? {}),
35
+ },
29
36
  },
30
37
  maxTimeoutSeconds: paywall.maxTimeoutSeconds,
31
- });
38
+ })))).flat();
32
39
  const wrapped = createPaymentWrapper(resourceServer, {
33
40
  accepts,
34
41
  resource: {
@@ -36,6 +43,7 @@ export async function createPaidMcpTool(server, paywall, tool, handler) {
36
43
  description: tool.description ?? paywall.route?.description ?? paywall.description,
37
44
  serviceName: paywall.route?.name,
38
45
  tags: tool.tags ?? paywall.route?.tags ?? (paywall.route?.category ? [paywall.route.category] : undefined),
46
+ iconUrl: tool.iconUrl ?? paywall.route?.iconUrl,
39
47
  },
40
48
  extensions: declareDiscoveryExtension({
41
49
  toolName: tool.name,
@@ -50,18 +58,18 @@ export async function createPaidMcpTool(server, paywall, tool, handler) {
50
58
  onAfterSettlement: async ({ settlement, paymentPayload }) => {
51
59
  if (!settlement.success)
52
60
  return;
61
+ const accepted = paymentPayload.accepted;
53
62
  await paywall.receipts?.record({
54
63
  id: randomUUID(),
55
64
  resource: tool.resourceUrl ?? `mcp://tool/${tool.name}`,
56
65
  payer: settlement.payer,
57
- payTo: paywall.payTo,
66
+ payTo: accepted.payTo,
58
67
  amount: price.amount,
59
- asset: paywall.asset,
60
- network: paywall.network,
68
+ asset: accepted.asset,
69
+ network: accepted.network,
61
70
  txHash: settlement.transaction,
62
71
  settledAt: Math.floor(Date.now() / 1000),
63
72
  });
64
- void paymentPayload;
65
73
  },
66
74
  } : undefined,
67
75
  })(async (args) => ({
package/dist/mcp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,7 @@
12
12
  import type { IncomingMessage, ServerResponse } from "node:http";
13
13
  import { x402ResourceServer, type FacilitatorClient } from "@x402/core/server";
14
14
  import type { Ap2MerchantConfig } from "./ap2.js";
15
+ import { type BrowserPaywallConfig } from "./browser-paywall.js";
15
16
  export interface Money {
16
17
  /** Base units of the asset. USDC has 6 decimals. */
17
18
  amount: bigint;
@@ -53,6 +54,21 @@ export interface FacilitatorConfig {
53
54
  client?: FacilitatorClient;
54
55
  }
55
56
  export type PaymentMethod = "eip3009" | "erc7710";
57
+ /** One chain-specific way a buyer may pay for the same resource. */
58
+ export interface MerchantPaymentOption {
59
+ network: string;
60
+ asset: string;
61
+ payTo: string;
62
+ decimals?: number;
63
+ /** EVM transfer methods. Solana always uses the x402 `exact` SVM scheme. */
64
+ paymentMethods?: PaymentMethod[];
65
+ /** Override the route-level facilitator for this network. */
66
+ facilitator?: FacilitatorConfig;
67
+ /** Required for Solana HTTP challenges unless supplied in `extra.feePayer`. */
68
+ feePayer?: string;
69
+ /** Additional scheme-specific payment requirement fields. */
70
+ extra?: Record<string, unknown>;
71
+ }
56
72
  export interface JsonSchema {
57
73
  [key: string]: unknown;
58
74
  }
@@ -72,6 +88,8 @@ export interface RouteMetadata {
72
88
  tags?: string[];
73
89
  /** Optional public documentation URL. */
74
90
  docsUrl?: string;
91
+ /** Public HTTPS image URL used by Bazaar and downstream marketplaces. */
92
+ iconUrl?: string;
75
93
  /** Representative successful response returned to discovery clients. */
76
94
  outputExample?: unknown;
77
95
  }
@@ -81,6 +99,8 @@ export interface MerchantNetworkConfig {
81
99
  decimals: number;
82
100
  facilitator: FacilitatorConfig;
83
101
  }
102
+ export declare const SOLANA_MAINNET: MerchantNetworkConfig;
103
+ export declare const SOLANA_DEVNET: MerchantNetworkConfig;
84
104
  /** Base mainnet + USDC defaults. Override any field for a custom facilitator. */
85
105
  export declare const BASE_MAINNET: MerchantNetworkConfig;
86
106
  /** Base Sepolia + USDC defaults for development and staging. */
@@ -88,16 +108,21 @@ export declare const BASE_SEPOLIA: MerchantNetworkConfig;
88
108
  /** Lowercase aliases make preset usage read naturally in route definitions. */
89
109
  export declare const base: MerchantNetworkConfig;
90
110
  export declare const baseSepolia: MerchantNetworkConfig;
111
+ export declare const solana: MerchantNetworkConfig;
112
+ export declare const solanaDevnet: MerchantNetworkConfig;
91
113
  export interface MerchantPresetConfig extends MerchantNetworkConfig {
92
114
  paymentMethods?: PaymentMethod[];
93
115
  }
94
116
  /** Compose a route configuration from a network preset without mutation. */
95
117
  export declare function merchantConfig(preset: MerchantPresetConfig, config: Omit<PaywallConfig, "network" | "asset" | "decimals" | "facilitator"> & Partial<Pick<PaywallConfig, "network" | "asset" | "decimals" | "facilitator">>): PaywallConfig;
96
118
  export interface PaywallConfig {
97
- payTo: string;
98
- network: string;
99
- asset: string;
119
+ /** Legacy single-network fields. Omit these when `accepts` is provided. */
120
+ payTo?: string;
121
+ network?: string;
122
+ asset?: string;
100
123
  decimals?: number;
124
+ /** Multiple chain-specific payment choices shown in one Bazaar/Agentic Market listing. */
125
+ accepts?: MerchantPaymentOption[];
101
126
  /** Payment authorization methods advertised in the 402 response. */
102
127
  paymentMethods?: PaymentMethod[];
103
128
  /** Optional facilitator overrides for individual transfer methods. */
@@ -120,6 +145,8 @@ export interface PaywallConfig {
120
145
  bazaar?: boolean;
121
146
  /** Optional merchant AP2 issuer. Adds AP2-CHECKOUT-JWT to 402 responses. */
122
147
  ap2?: Ap2MerchantConfig;
148
+ /** Render the official EVM + Solana browser UI for requests accepting text/html. */
149
+ browserPaywall?: true | BrowserPaywallConfig;
123
150
  maxTimeoutSeconds?: number;
124
151
  /** Routes that never require payment, e.g. ["/health", "/.well-known/*"]. */
125
152
  free?: string[];
@@ -166,9 +193,10 @@ export interface PaywallOutcome {
166
193
  export declare class Paywall {
167
194
  private readonly cfg;
168
195
  private readonly facilitator;
169
- private readonly decimals;
196
+ private readonly paymentOptions;
170
197
  constructor(cfg: PaywallConfig);
171
198
  priceFor(path: string, method: string, query: URLSearchParams): Money | null;
199
+ renderBrowserChallenge(challenge: unknown, accept?: string | string[]): Promise<string | undefined>;
172
200
  buildChallenge(price: Money, resource: string, method?: string): {
173
201
  x402Version: number;
174
202
  error: string;
@@ -193,6 +221,7 @@ export declare class Paywall {
193
221
  private facilitatorFor;
194
222
  private writeReceipt;
195
223
  }
224
+ export declare function resolvePaymentOptions(cfg: PaywallConfig): MerchantPaymentOption[];
196
225
  export declare function expressPaywall(cfg: PaywallConfig): (req: any, res: any, next: any) => Promise<any>;
197
226
  export declare function honoPaywall(cfg: PaywallConfig): (c: any, next: any) => Promise<any>;
198
227
  export declare function nodePaywall(cfg: PaywallConfig): (req: IncomingMessage, res: ServerResponse) => Promise<Receipt | "free" | null>;
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
@@ -12,7 +12,22 @@
12
12
  import { randomUUID } from "node:crypto";
13
13
  import { HTTPFacilitatorClient, x402ResourceServer } from "@x402/core/server";
14
14
  import { registerExactEvmScheme } from "@x402/evm/exact/server";
15
+ import { SOLANA_DEVNET_CAIP2, SOLANA_MAINNET_CAIP2, USDC_DEVNET_ADDRESS, USDC_MAINNET_ADDRESS, } from "@x402/svm";
16
+ import { registerExactSvmScheme } from "@x402/svm/exact/server";
15
17
  import { bazaarResourceServerExtension, declareDiscoveryExtension } from "@x402/extensions/bazaar";
18
+ import { renderBrowserPaywall } from "./browser-paywall.js";
19
+ export const SOLANA_MAINNET = {
20
+ network: SOLANA_MAINNET_CAIP2,
21
+ asset: USDC_MAINNET_ADDRESS,
22
+ decimals: 6,
23
+ facilitator: { url: "https://facilitator.payai.network" },
24
+ };
25
+ export const SOLANA_DEVNET = {
26
+ network: SOLANA_DEVNET_CAIP2,
27
+ asset: USDC_DEVNET_ADDRESS,
28
+ decimals: 6,
29
+ facilitator: { url: "https://x402.org/facilitator" },
30
+ };
16
31
  /** Base mainnet + USDC defaults. Override any field for a custom facilitator. */
17
32
  export const BASE_MAINNET = {
18
33
  network: "eip155:8453",
@@ -30,6 +45,8 @@ export const BASE_SEPOLIA = {
30
45
  /** Lowercase aliases make preset usage read naturally in route definitions. */
31
46
  export const base = BASE_MAINNET;
32
47
  export const baseSepolia = BASE_SEPOLIA;
48
+ export const solana = SOLANA_MAINNET;
49
+ export const solanaDevnet = SOLANA_DEVNET;
33
50
  /** Compose a route configuration from a network preset without mutation. */
34
51
  export function merchantConfig(preset, config) {
35
52
  return {
@@ -66,7 +83,7 @@ export class Facilitator {
66
83
  this.official = createOfficialResourceServerFromClient(cfg.client ?? client);
67
84
  }
68
85
  async verify(payload, requirements) {
69
- if (usesOfficialEvmScheme(payload)) {
86
+ if (usesOfficialScheme(payload)) {
70
87
  const result = await this.official.verifyPayment(payload, requirements);
71
88
  return {
72
89
  isValid: result.isValid,
@@ -77,7 +94,7 @@ export class Facilitator {
77
94
  return this.call("/verify", { paymentPayload: payload, paymentRequirements: requirements });
78
95
  }
79
96
  async settle(payload, requirements) {
80
- if (usesOfficialEvmScheme(payload)) {
97
+ if (usesOfficialScheme(payload)) {
81
98
  const result = await this.official.settlePayment(payload, requirements);
82
99
  return {
83
100
  success: result.success,
@@ -122,9 +139,12 @@ export function createOfficialResourceServer(facilitator) {
122
139
  return createOfficialResourceServerFromClient(client);
123
140
  }
124
141
  function createOfficialResourceServerFromClient(client) {
125
- return registerExactEvmScheme(new x402ResourceServer(client).registerExtension(bazaarResourceServerExtension));
142
+ return registerExactSvmScheme(registerExactEvmScheme(new x402ResourceServer(client).registerExtension(bazaarResourceServerExtension)));
126
143
  }
127
- function usesOfficialEvmScheme(payload) {
144
+ function usesOfficialScheme(payload) {
145
+ if (isRecord(payload) && isRecord(payload.accepted) &&
146
+ typeof payload.accepted.network === "string" && payload.accepted.network.startsWith("solana:"))
147
+ return true;
128
148
  if (!isRecord(payload) || !isRecord(payload.accepted) || !isRecord(payload.accepted.extra))
129
149
  return true;
130
150
  return payload.accepted.extra.assetTransferMethod !== "erc7710";
@@ -132,11 +152,14 @@ function usesOfficialEvmScheme(payload) {
132
152
  export class Paywall {
133
153
  cfg;
134
154
  facilitator;
135
- decimals;
155
+ paymentOptions;
136
156
  constructor(cfg) {
137
157
  this.cfg = cfg;
138
158
  this.facilitator = new Facilitator(cfg.facilitator);
139
- this.decimals = cfg.decimals ?? 6;
159
+ this.paymentOptions = resolvePaymentOptions(cfg);
160
+ if (cfg.ap2 && this.paymentOptions.length > 1) {
161
+ throw new Error("AP2 checkout JWTs currently bind one payment network; configure a single accept option when AP2 is enabled.");
162
+ }
140
163
  }
141
164
  priceFor(path, method, query) {
142
165
  if (this.cfg.free?.some((p) => matchRoute(path, p)))
@@ -144,10 +167,16 @@ export class Paywall {
144
167
  const p = this.cfg.price;
145
168
  return typeof p === "function" ? p({ path, method, query }) : p;
146
169
  }
170
+ async renderBrowserChallenge(challenge, accept) {
171
+ if (!this.cfg.browserPaywall)
172
+ return undefined;
173
+ return renderBrowserPaywall({
174
+ paymentRequired: challenge,
175
+ accept,
176
+ config: this.cfg.browserPaywall,
177
+ });
178
+ }
147
179
  buildChallenge(price, resource, method = "GET") {
148
- const paymentMethods = this.cfg.paymentMethods?.length
149
- ? this.cfg.paymentMethods
150
- : ["eip3009"];
151
180
  const route = this.cfg.route;
152
181
  const description = route?.description ?? this.cfg.description ?? "";
153
182
  const challenge = {
@@ -161,16 +190,9 @@ export class Paywall {
161
190
  mimeType: "application/json",
162
191
  ...(route?.name ? { serviceName: route.name } : {}),
163
192
  ...(route?.tags?.length ? { tags: route.tags } : {}),
193
+ ...(route?.iconUrl ? { iconUrl: route.iconUrl } : {}),
164
194
  },
165
- accepts: paymentMethods.map((paymentMethod) => ({
166
- scheme: "exact",
167
- network: this.cfg.network,
168
- amount: price.amount.toString(),
169
- payTo: this.cfg.payTo,
170
- maxTimeoutSeconds: this.cfg.maxTimeoutSeconds ?? 300,
171
- asset: this.cfg.asset,
172
- extra: { name: "USD Coin", version: "2", decimals: this.decimals, assetTransferMethod: paymentMethod },
173
- })),
195
+ accepts: this.paymentOptions.flatMap((option) => paymentRequirementsForOption(option, price.amount, this.cfg.maxTimeoutSeconds ?? 300, this.cfg.paymentMethods)),
174
196
  };
175
197
  if (this.cfg.bazaar !== false && route && Object.keys(route).length > 0) {
176
198
  const normalizedMethod = method.toUpperCase();
@@ -192,6 +214,7 @@ export class Paywall {
192
214
  ...(isRecord(discovery.bazaar) ? discovery.bazaar : {}),
193
215
  ...(route?.category ? { category: route.category } : {}),
194
216
  ...(route?.tags?.length ? { tags: route.tags } : {}),
217
+ ...(route?.iconUrl ? { iconUrl: route.iconUrl } : {}),
195
218
  info: {
196
219
  ...(isRecord(discovery.bazaar) && isRecord(discovery.bazaar.info) ? discovery.bazaar.info : {}),
197
220
  ...(route?.name ? { name: route.name } : {}),
@@ -199,6 +222,7 @@ export class Paywall {
199
222
  ...(route?.description || this.cfg.description ? { description } : {}),
200
223
  ...(route?.category ? { category: route.category } : {}),
201
224
  ...(route?.tags?.length ? { tags: route.tags } : {}),
225
+ ...(route?.iconUrl ? { iconUrl: route.iconUrl } : {}),
202
226
  ...(route?.docsUrl ? { docsUrl: route.docsUrl } : {}),
203
227
  },
204
228
  },
@@ -243,7 +267,7 @@ export class Paywall {
243
267
  }
244
268
  const challenge = this.buildChallenge(price, args.resource, args.method);
245
269
  const requirements = selectAcceptedRequirements(payload, challenge.accepts);
246
- const facilitator = this.facilitatorFor(payload);
270
+ const facilitator = this.facilitatorFor(requirements);
247
271
  const verified = await facilitator.verify(payload, requirements);
248
272
  if (!verified.isValid) {
249
273
  const challenge = this.buildChallenge(price, args.resource, args.method);
@@ -273,6 +297,7 @@ export class Paywall {
273
297
  const receipt = await this.writeReceipt({
274
298
  resource: args.resource,
275
299
  price,
300
+ requirements,
276
301
  settled,
277
302
  payer: verified.payer ?? settled.payer,
278
303
  merchantRef: args.merchantRef,
@@ -287,13 +312,25 @@ export class Paywall {
287
312
  if (!this.cfg.ap2)
288
313
  return undefined;
289
314
  const { createAp2CheckoutJwt } = await import("./ap2.js");
290
- return createAp2CheckoutJwt({ ap2: this.cfg.ap2, resource, payTo: this.cfg.payTo, price, route: this.cfg.route });
315
+ const option = this.paymentOptions[0];
316
+ return createAp2CheckoutJwt({
317
+ ap2: this.cfg.ap2,
318
+ resource,
319
+ payTo: option.payTo,
320
+ price: { amount: price.amount, asset: option.asset, network: option.network, decimals: option.decimals ?? 6 },
321
+ route: this.cfg.route,
322
+ });
291
323
  }
292
- facilitatorFor(payload) {
293
- const methodValue = isRecord(payload) && isRecord(payload.accepted) && isRecord(payload.accepted.extra)
294
- ? payload.accepted.extra.assetTransferMethod
324
+ facilitatorFor(requirements) {
325
+ const methodValue = isRecord(requirements.extra)
326
+ ? requirements.extra.assetTransferMethod
295
327
  : undefined;
296
328
  const method = methodValue === "eip3009" || methodValue === "erc7710" ? methodValue : undefined;
329
+ const option = this.paymentOptions.find((candidate) => candidate.network === requirements.network &&
330
+ candidate.asset === requirements.asset &&
331
+ candidate.payTo === requirements.payTo);
332
+ if (option?.facilitator)
333
+ return new Facilitator(option.facilitator);
297
334
  const override = method ? this.cfg.facilitators?.[method] : undefined;
298
335
  return override ? new Facilitator(override) : this.facilitator;
299
336
  }
@@ -303,9 +340,14 @@ export class Paywall {
303
340
  if (this.cfg.fxRateScaled) {
304
341
  try {
305
342
  fxRateScaled = await this.cfg.fxRateScaled();
343
+ const decimals = typeof args.requirements.decimals === "number"
344
+ ? args.requirements.decimals
345
+ : isRecord(args.requirements.extra) && typeof args.requirements.extra.decimals === "number"
346
+ ? args.requirements.extra.decimals
347
+ : 6;
306
348
  inrPaise =
307
349
  (args.price.amount * fxRateScaled * 100n) /
308
- (10n ** BigInt(this.decimals) * 100000000n);
350
+ (10n ** BigInt(decimals) * 100000000n);
309
351
  }
310
352
  catch {
311
353
  // A missing FX rate must not fail a settled payment. Backfill later.
@@ -315,10 +357,10 @@ export class Paywall {
315
357
  id: randomUUID(),
316
358
  resource: args.resource,
317
359
  payer: args.payer,
318
- payTo: this.cfg.payTo,
360
+ payTo: String(args.requirements.payTo),
319
361
  amount: args.price.amount,
320
- asset: this.cfg.asset,
321
- network: this.cfg.network,
362
+ asset: String(args.requirements.asset),
363
+ network: String(args.requirements.network),
322
364
  txHash: args.settled.transaction,
323
365
  inrPaise,
324
366
  fxRateScaled,
@@ -329,6 +371,65 @@ export class Paywall {
329
371
  return receipt;
330
372
  }
331
373
  }
374
+ export function resolvePaymentOptions(cfg) {
375
+ const options = cfg.accepts?.length
376
+ ? cfg.accepts
377
+ : cfg.network && cfg.asset && cfg.payTo
378
+ ? [{
379
+ network: cfg.network,
380
+ asset: cfg.asset,
381
+ payTo: cfg.payTo,
382
+ decimals: cfg.decimals ?? 6,
383
+ paymentMethods: cfg.paymentMethods,
384
+ }]
385
+ : [];
386
+ if (options.length === 0) {
387
+ throw new Error("Configure either `accepts` or the legacy `network`, `asset`, and `payTo` fields.");
388
+ }
389
+ for (const option of options) {
390
+ if (!option.network || !option.asset || !option.payTo) {
391
+ throw new Error("Every payment option requires network, asset, and payTo.");
392
+ }
393
+ if (option.network.startsWith("solana:") && !(option.feePayer || option.extra?.feePayer)) {
394
+ throw new Error(`Solana payment option ${option.network} requires a facilitator feePayer.`);
395
+ }
396
+ }
397
+ return options.map((option) => ({ ...option }));
398
+ }
399
+ function paymentRequirementsForOption(option, amount, maxTimeoutSeconds, legacyMethods) {
400
+ const baseRequirement = {
401
+ scheme: "exact",
402
+ network: option.network,
403
+ amount: amount.toString(),
404
+ payTo: option.payTo,
405
+ maxTimeoutSeconds,
406
+ asset: option.asset,
407
+ };
408
+ if (option.network.startsWith("solana:")) {
409
+ return [{
410
+ ...baseRequirement,
411
+ extra: {
412
+ ...(option.extra ?? {}),
413
+ feePayer: option.feePayer ?? option.extra?.feePayer,
414
+ },
415
+ }];
416
+ }
417
+ const methods = option.paymentMethods?.length
418
+ ? option.paymentMethods
419
+ : legacyMethods?.length
420
+ ? legacyMethods
421
+ : ["eip3009"];
422
+ return methods.map((paymentMethod) => ({
423
+ ...baseRequirement,
424
+ extra: {
425
+ name: "USD Coin",
426
+ version: "2",
427
+ decimals: option.decimals ?? 6,
428
+ ...(option.extra ?? {}),
429
+ assetTransferMethod: paymentMethod,
430
+ },
431
+ }));
432
+ }
332
433
  function discoverySchema(schema) {
333
434
  if (schema.type === "object" && isRecord(schema.properties)) {
334
435
  const { type: _type, ...rest } = schema;
@@ -392,7 +493,13 @@ export function expressPaywall(cfg) {
392
493
  if (outcome.ap2CheckoutJwt)
393
494
  res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
394
495
  exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
395
- res.status(402).json(outcome.challenge);
496
+ {
497
+ const html = await paywall.renderBrowserChallenge(outcome.challenge, req.headers.accept);
498
+ if (html)
499
+ res.status(402).type("html").send(html);
500
+ else
501
+ res.status(402).json(outcome.challenge);
502
+ }
396
503
  return;
397
504
  case "rejected":
398
505
  if (outcome.paymentRequiredHeader)
@@ -400,10 +507,18 @@ export function expressPaywall(cfg) {
400
507
  if (outcome.ap2CheckoutJwt)
401
508
  res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
402
509
  exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
403
- res.status(outcome.status ?? 402).json({
404
- error: outcome.reason,
405
- ...(outcome.challenge ?? {}),
406
- });
510
+ {
511
+ const html = outcome.challenge
512
+ ? await paywall.renderBrowserChallenge(outcome.challenge, req.headers.accept)
513
+ : undefined;
514
+ if (html)
515
+ res.status(outcome.status ?? 402).type("html").send(html);
516
+ else
517
+ res.status(outcome.status ?? 402).json({
518
+ error: outcome.reason,
519
+ ...(outcome.challenge ?? {}),
520
+ });
521
+ }
407
522
  return;
408
523
  case "paid":
409
524
  if (outcome.settlementHeader) {
@@ -443,7 +558,8 @@ export function honoPaywall(cfg) {
443
558
  if (outcome.ap2CheckoutJwt)
444
559
  c.header("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
445
560
  exposeHonoHeaders(c, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
446
- return c.json(outcome.challenge, 402);
561
+ const html = await paywall.renderBrowserChallenge(outcome.challenge, c.req.header("accept"));
562
+ return html ? c.html(html, 402) : c.json(outcome.challenge, 402);
447
563
  }
448
564
  if (outcome.kind === "rejected") {
449
565
  if (outcome.paymentRequiredHeader)
@@ -451,7 +567,12 @@ export function honoPaywall(cfg) {
451
567
  if (outcome.ap2CheckoutJwt)
452
568
  c.header("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
453
569
  exposeHonoHeaders(c, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
454
- return c.json({ error: outcome.reason, ...(outcome.challenge ?? {}) }, (outcome.status ?? 402));
570
+ const html = outcome.challenge
571
+ ? await paywall.renderBrowserChallenge(outcome.challenge, c.req.header("accept"))
572
+ : undefined;
573
+ return html
574
+ ? c.html(html, (outcome.status ?? 402))
575
+ : c.json({ error: outcome.reason, ...(outcome.challenge ?? {}) }, (outcome.status ?? 402));
455
576
  }
456
577
  c.set("x402Receipt", outcome.receipt);
457
578
  await next();
@@ -492,8 +613,11 @@ export function nodePaywall(cfg) {
492
613
  if (outcome.ap2CheckoutJwt)
493
614
  res.setHeader("AP2-CHECKOUT-JWT", outcome.ap2CheckoutJwt);
494
615
  exposeHeaders(res, ["PAYMENT-REQUIRED", ...(outcome.ap2CheckoutJwt ? ["AP2-CHECKOUT-JWT"] : [])]);
495
- res.setHeader("content-type", "application/json");
496
- res.end(JSON.stringify(outcome.challenge ?? { error: outcome.reason }));
616
+ const html = outcome.challenge
617
+ ? await paywall.renderBrowserChallenge(outcome.challenge, req.headers.accept)
618
+ : undefined;
619
+ res.setHeader("content-type", html ? "text/html; charset=utf-8" : "application/json");
620
+ res.end(html ?? JSON.stringify(outcome.challenge ?? { error: outcome.reason }));
497
621
  return null;
498
622
  };
499
623
  }
@@ -1 +1 @@
1
- {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../src/middleware.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,kBAAkB,EAA0B,MAAM,mBAAmB,CAAC;AAKtG,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AAEnG,OAAO,EAAE,oBAAoB,EAA6B,MAAM,sBAAsB,CAAC;AA8FvF,MAAM,CAAC,MAAM,cAAc,GAA0B;IACnD,OAAO,EAAE,oBAAoB;IAC7B,KAAK,EAAE,oBAAoB;IAC3B,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,EAAE,GAAG,EAAE,mCAAmC,EAAE;CAC1D,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,OAAO,EAAE,mBAAmB;IAC5B,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,EAAE,GAAG,EAAE,8BAA8B,EAAE;CACrD,CAAC;AAEF,iFAAiF;AACjF,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,EAAE,GAAG,EAAE,sEAAsE,EAAE;CAC7F,CAAC;AAEF,gEAAgE;AAChE,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,OAAO,EAAE,cAAc;IACvB,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,CAAC;IACX,WAAW,EAAE,EAAE,GAAG,EAAE,+CAA+C,EAAE;CACtE,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,IAAI,GAAG,YAAY,CAAC;AACjC,MAAM,CAAC,MAAM,WAAW,GAAG,YAAY,CAAC;AACxC,MAAM,CAAC,MAAM,MAAM,GAAG,cAAc,CAAC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAC;AAM1C,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAC5B,MAA4B,EAC5B,MACgF;IAEhF,OAAO;QACL,GAAG,MAAM;QACT,GAAG,MAAM;QACT,cAAc,EAAE,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC;QAC7E,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;QACzC,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK;QACnC,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ;QAC5C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW;KACtD,CAAC;AACJ,CAAC;AA2DD,8EAA8E;AAC9E,cAAc;AACd,8EAA8E;AAE9E,MAAM,OAAO,WAAW;IAIH;IACA;IAJF,QAAQ,CAAqB;IAE9C,YACmB,GAAsB,EACtB,YAA0B,KAAK;QAD/B,QAAG,GAAH,GAAG,CAAmB;QACtB,cAAS,GAAT,SAAS,CAAsB;QAEhD,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC;YACvC,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,GAAG,CAAC,GAAG,CAAC,MAAM;gBACZ,CAAC,CAAC;oBACE,iBAAiB,EAAE,KAAK,IAAI,EAAE;wBAC5B,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC;wBAC1D,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;oBAClE,CAAC;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,sCAAsC,CAAC,GAAG,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;IAC/E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,YAAqB;QAClD,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAC9C,OAAiC,EACjC,YAA2C,CAC5C,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAe,SAAS,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAgB,EAAE,YAAqB;QAClD,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,aAAa,CAC9C,OAAiC,EACjC,YAA2C,CAC5C,CAAC;YACF,OAAO;gBACL,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,WAAW,EAAE,MAAM,CAAC,WAAW;aAChC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,IAAI,CAAe,SAAS,EAAE,EAAE,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5G,CAAC;IAEO,KAAK,CAAC,IAAI,CAAI,IAAY,EAAE,IAAa;QAC/C,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAC5E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3E;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC3B,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,aAAa,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;IACjC,CAAC;CACF;AAED,MAAM,UAAU,4BAA4B,CAAC,WAA8B;IACzE,IAAI,WAAW,CAAC,MAAM;QAAE,OAAO,sCAAsC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1F,MAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC;QACvC,GAAG,EAAE,WAAW,CAAC,GAAG;QACpB,GAAG,CAAC,WAAW,CAAC,MAAM;YACpB,CAAC,CAAC;gBACE,iBAAiB,EAAE,KAAK,IAAI,EAAE;oBAC5B,MAAM,OAAO,GAAG,EAAE,aAAa,EAAE,UAAU,WAAW,CAAC,MAAM,EAAE,EAAE,CAAC;oBAClE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;gBAClE,CAAC;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC;IACH,OAAO,sCAAsC,CAAC,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,sCAAsC,CAAC,MAAyB;IACvE,OAAO,sBAAsB,CAAC,sBAAsB,CAClD,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,6BAA6B,CAAC,CAChF,CAAC,CAAC;AACL,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAgB;IAC1C,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC;QAC/C,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAChH,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACxG,OAAO,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,KAAK,SAAS,CAAC;AAClE,CAAC;AAkBD,MAAM,OAAO,OAAO;IAIW;IAHZ,WAAW,CAAc;IACzB,cAAc,CAA0B;IAEzD,YAA6B,GAAkB;QAAlB,QAAG,GAAH,GAAG,CAAe;QAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,GAAG,CAAC,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,6GAA6G,CAAC,CAAC;QACjI,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,MAAc,EAAE,KAAsB;QAC3D,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACjE,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QACzB,OAAO,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,SAAkB,EAAE,MAA0B;QACzE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QAC/C,OAAO,oBAAoB,CAAC;YAC1B,eAAe,EAAE,SAAS;YAC1B,MAAM;YACN,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,cAAc;SAChC,CAAC,CAAC;IACL,CAAC;IAED,cAAc,CAAC,KAAY,EAAE,QAAgB,EAAE,MAAM,GAAG,KAAK;QAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;QAC7B,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,CAAC;QACrE,MAAM,SAAS,GAA4B;YACzC,WAAW,EAAE,CAAC;YACd,KAAK,EAAE,kBAAkB;YACzB,OAAO,EAAE,0DAA0D;YACnE,aAAa,EAAE,6MAA6M;YAC5N,QAAQ,EAAE;gBACR,GAAG,EAAE,QAAQ;gBACb,WAAW;gBACX,QAAQ,EAAE,kBAAkB;gBAC5B,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtD;YACD,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,4BAA4B,CAC3E,MAAM,EACN,KAAK,CAAC,MAAM,EACZ,IAAI,CAAC,GAAG,CAAC,iBAAiB,IAAI,GAAG,EACjC,IAAI,CAAC,GAAG,CAAC,cAAc,CACxB,CAAC;SACH,CAAC;QACF,IAAI,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxE,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC9C,MAAM,eAAe,GAA4B;gBAC/C,MAAM,EAAE,gBAAgB;gBACxB,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClF,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;oBACxB,MAAM,EAAE;wBACN,OAAO,EAAE,KAAK,CAAC,aAAa,IAAI,EAAE;wBAClC,MAAM,EAAE,KAAK,CAAC,YAAY;qBAC3B;iBACF,CAAC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;aACtF,CAAC;YACF,MAAM,SAAS,GAAG,yBAAyB,CACzC,eAAkE,CACnE,CAAC;YACF,SAAS,CAAC,UAAU,GAAG;gBACrB,GAAG,SAAS;gBACZ,MAAM,EAAE;oBACN,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvD,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACxD,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpD,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrD,IAAI,EAAE;wBACJ,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC/F,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC5C,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACnD,GAAG,CAAC,KAAK,EAAE,WAAW,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACtE,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACxD,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACpD,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrD,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACtD;iBACF;aACF,CAAC;QACJ,CAAC;QACD,OAAO,SAQN,CAAC;IACJ,CAAC;IAED,4EAA4E;IAC5E,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY;YAAE,OAAO,KAAK,CAAC;QACzC,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACjD,SAAS,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACzC,SAAS,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QACrC,OAAO,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAEO,qBAAqB,CAAC,SAAkB;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,IAOZ;QACC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAChE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE;YAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAE3D,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,MAAM,EAAE,GAAG;gBACX,SAAS;gBACT,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;gBAC5D,cAAc;aACf,CAAC;QACJ,CAAC;QAED,IAAI,OAAgB,CAAC;QACrB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACnF,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,4CAA4C,EAAE,CAAC;QACjG,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,MAAM,YAAY,GAAG,0BAA0B,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;QAE5E,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YACzE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YACvE,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,QAAQ,CAAC,aAAa,IAAI,8BAA8B;gBAChE,SAAS;gBACT,qBAAqB,EAAE,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC;gBAC5D,cAAc;aACf,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,KAAK,OAAO,EAAE,CAAC;YACpC,wEAAwE;YACxE,yEAAyE;YACzE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAC9C,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,MAAM,EAAE,GAAG;gBACX,MAAM,EAAE,OAAO,CAAC,WAAW,IAAI,oBAAoB;aACpD,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC;YACtC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK;YACL,YAAY;YACZ,OAAO;YACP,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;YACtC,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,OAAO;YACP,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAClF,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,KAAY,EAAE,QAAgB;QACzD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG;YAAE,OAAO,SAAS,CAAC;QACpC,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACtC,OAAO,oBAAoB,CAAC;YAC1B,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG;YACjB,QAAQ;YACR,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAE;YAC7G,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK;SACtB,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CAAC,YAAqC;QAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,YAAY,CAAC,KAAK,CAAC;YAC9C,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,mBAAmB;YACxC,CAAC,CAAC,SAAS,CAAC;QACd,MAAM,MAAM,GAA8B,WAAW,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3H,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACpD,SAAS,CAAC,OAAO,KAAK,YAAY,CAAC,OAAO;YAC1C,SAAS,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK;YACtC,SAAS,CAAC,KAAK,KAAK,YAAY,CAAC,KAAK,CACvC,CAAC;QACF,IAAI,MAAM,EAAE,WAAW;YAAE,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtE,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IACjE,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,IAO1B;QACC,IAAI,QAA4B,CAAC;QACjC,IAAI,YAAgC,CAAC;QACrC,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;YAC1B,IAAI,CAAC;gBACH,YAAY,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,KAAK,QAAQ;oBAC7D,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ;oBAC5B,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,KAAK,QAAQ;wBACzF,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ;wBAClC,CAAC,CAAC,CAAC,CAAC;gBACR,QAAQ;oBACN,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;wBACzC,CAAC,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,UAAY,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,qEAAqE;YACvE,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAY;YACvB,EAAE,EAAE,UAAU,EAAE;YAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACtC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YACzB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;YACtC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;YAC1C,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,WAAW;YAChC,QAAQ;YACR,YAAY;YACZ,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;YACxC,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;QACF,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACzC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAkB;IACtD,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,MAAM;QACjC,CAAC,CAAC,GAAG,CAAC,OAAO;QACb,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;YACrC,CAAC,CAAC,CAAC;oBACC,OAAO,EAAE,GAAG,CAAC,OAAO;oBACpB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;oBAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,CAAC;oBAC3B,cAAc,EAAE,GAAG,CAAC,cAAc;iBACnC,CAAC;YACJ,CAAC,CAAC,EAAE,CAAC;IACT,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;IACtG,CAAC;IACD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC;YACzF,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,OAAO,mCAAmC,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,SAAS,4BAA4B,CACnC,MAA6B,EAC7B,MAAc,EACd,iBAAyB,EACzB,aAA+B;IAE/B,MAAM,eAAe,GAAG;QACtB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,QAAQ,EAAE;QACzB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,iBAAiB;QACjB,KAAK,EAAE,MAAM,CAAC,KAAK;KACpB,CAAC;IACF,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC;gBACN,GAAG,eAAe;gBAClB,KAAK,EAAE;oBACL,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;oBACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,KAAK,EAAE,QAAQ;iBACpD;aACF,CAAC,CAAC;IACL,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,MAAM;QAC3C,CAAC,CAAC,MAAM,CAAC,cAAc;QACvB,CAAC,CAAC,aAAa,EAAE,MAAM;YACrB,CAAC,CAAC,aAAa;YACf,CAAC,CAAC,CAAC,SAAkB,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;QACrC,GAAG,eAAe;QAClB,KAAK,EAAE;YACL,IAAI,EAAE,UAAU;YAChB,OAAO,EAAE,GAAG;YACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC;YAC9B,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;YACvB,mBAAmB,EAAE,aAAa;SACnC;KACF,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,eAAe,CAAC,MAAkB;IACzC,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,MAAM,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,SAAS,0BAA0B,CACjC,OAAgB,EAChB,UAA0C;IAE1C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3E,IAAI,CAAC,QAAQ;QAAE,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;IAEpC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;IACnF,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;QACvC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;QAC3F,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;YACtC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO;YACnC,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAC/B,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;YAC/B,YAAY,KAAK,cAAc;YAC/B,YAAY,KAAK,cAAc,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAC;IAC/G,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,uDAAuD;AACvD,MAAM,UAAU,cAAc,CAAC,GAAkB;IAC/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,KAAK,UAAU,UAAU,CAAC,GAAQ,EAAE,GAAQ,EAAE,IAAS;QAC5D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;YAC7F,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;gBACnC,IAAI,EAAE,GAAG,CAAC,QAAQ;gBAClB,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,CAAC,YAAY;gBACvB,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC7C,aAAa,EAAE,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,IAAI;gBACnF,WAAW,EAAE,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC;aAC3C,CAAC,CAAC;YAEH,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;gBACrB,KAAK,MAAM;oBACT,OAAO,IAAI,EAAE,CAAC;gBAChB,KAAK,WAAW;oBACd,IAAI,OAAO,CAAC,qBAAqB;wBAAE,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;oBACpG,IAAI,OAAO,CAAC,cAAc;wBAAE,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;oBACtF,aAAa,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAClG,CAAC;wBACC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;wBACzF,IAAI,IAAI;4BAAE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;4BAC7C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAC/C,CAAC;oBACD,OAAO;gBACT,KAAK,UAAU;oBACb,IAAI,OAAO,CAAC,qBAAqB;wBAAE,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;oBACpG,IAAI,OAAO,CAAC,cAAc;wBAAE,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;oBACtF,aAAa,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAClG,CAAC;wBACC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS;4BAC5B,CAAC,CAAC,MAAM,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;4BAC7E,CAAC,CAAC,SAAS,CAAC;wBACd,IAAI,IAAI;4BAAE,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;;4BAC/D,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;gCAC1C,KAAK,EAAE,OAAO,CAAC,MAAM;gCACrB,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;6BAC7B,CAAC,CAAC;oBACL,CAAC;oBACD,OAAO;gBACT,KAAK,MAAM;oBACT,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;wBAC7B,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAC5D,GAAG,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAC9D,aAAa,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,CAAC;oBACjE,CAAC;oBACD,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;oBAClC,OAAO,IAAI,EAAE,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,CAAC,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,MAAM,UAAU,WAAW,CAAC,GAAkB;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IAEjC,OAAO,KAAK,UAAU,UAAU,CAAC,CAAM,EAAE,IAAS;QAChD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM;YACpB,KAAK,EAAE,GAAG,CAAC,YAAY;YACvB,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7C,aAAa,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,IAAI;YACrF,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC;SAC5C,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,IAAI,EAAE,CAAC;QAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,IAAI,OAAO,CAAC,qBAAqB;gBAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAC/F,IAAI,OAAO,CAAC,cAAc;gBAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;YACjF,iBAAiB,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpG,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7F,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAmB,EAAE,GAAG,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAChC,IAAI,OAAO,CAAC,qBAAqB;gBAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;YAC/F,IAAI,OAAO,CAAC,cAAc;gBAAE,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;YACjF,iBAAiB,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACpG,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS;gBAC5B,CAAC,CAAC,MAAM,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACjF,CAAC,CAAC,SAAS,CAAC;YACd,OAAO,IAAI;gBACT,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAQ,CAAC;gBAC9C,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC,EAAY,EAAE,CAAC,OAAO,CAAC,MAAM,IAAI,GAAG,CAAQ,CAAC,CAAC;QAChH,CAAC;QACD,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACtC,MAAM,IAAI,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC7B,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACvD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAClE,iBAAiB,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,8EAA8E;AAC9E,2CAA2C;AAC3C,8EAA8E;AAE9E,MAAM,UAAU,WAAW,CAAC,GAAkB;IAC5C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,KAAK,UAAU,KAAK,CACzB,GAAoB,EACpB,GAAmB;QAEnB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,UAAU,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,WAAW,EAAE,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC;YACnC,IAAI,EAAE,GAAG,CAAC,QAAQ;YAClB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,KAAK;YAC3B,KAAK,EAAE,GAAG,CAAC,YAAY;YACvB,QAAQ,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7C,aAAa,EAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAY,IAAK,GAAG,CAAC,OAAO,CAAC,WAAW,CAAY,IAAI,IAAI;SAC5G,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM;YAAE,OAAO,MAAM,CAAC;QAC3C,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAC5B,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;gBAC7B,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAC5D,GAAG,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAC9D,aAAa,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;QACjC,CAAC;QACD,GAAG,CAAC,UAAU,GAAG,OAAO,CAAC,MAAM,IAAI,GAAG,CAAC;QACvC,IAAI,OAAO,CAAC,qBAAqB;YAAE,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACpG,IAAI,OAAO,CAAC,cAAc;YAAE,GAAG,CAAC,SAAS,CAAC,kBAAkB,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QACtF,aAAa,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClG,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS;YAC5B,CAAC,CAAC,MAAM,OAAO,CAAC,sBAAsB,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7E,CAAC,CAAC,SAAS,CAAC;QACd,GAAG,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC;QACtF,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChF,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,OAAe;IAC/C,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzE,OAAO,IAAI,KAAK,OAAO,CAAC;AAC1B,CAAC;AAED,SAAS,aAAa,CAAC,GAAsH,EAAE,OAAiB;IAC9J,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,GAAG,CAAC,SAAS,CAAC,+BAA+B,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAM,EAAE,OAAiB;IAClD,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAa,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxG,CAAC,CAAC,MAAM,CAAC,+BAA+B,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AAC9F,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seedhape/x402-merchant-sdk",
3
- "version": "0.3.4",
3
+ "version": "0.4.0",
4
4
  "description": "Add x402 payment-gated routes, settlement receipts, and merchant accounting to Node.js services.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -20,6 +20,7 @@
20
20
  "payments",
21
21
  "usdc",
22
22
  "base",
23
+ "solana",
23
24
  "merchant",
24
25
  "paywall",
25
26
  "api",
@@ -39,13 +40,28 @@
39
40
  },
40
41
  "dependencies": {
41
42
  "@modelcontextprotocol/sdk": "^1.30.0",
43
+ "@solana/kit": "^5.5.1",
42
44
  "@x402/core": "2.23.0",
43
45
  "@x402/evm": "2.23.0",
44
46
  "@x402/extensions": "2.23.0",
45
47
  "@x402/mcp": "2.23.0",
48
+ "@x402/svm": "2.23.0",
46
49
  "jose": "^6.1.0",
47
50
  "zod": "^3.25.76"
48
51
  },
52
+ "peerDependencies": {
53
+ "@x402/paywall": "^2.23.0"
54
+ },
55
+ "peerDependenciesMeta": {
56
+ "@x402/paywall": {
57
+ "optional": true
58
+ }
59
+ },
60
+ "devDependencies": {
61
+ "@x402/paywall": "2.24.0",
62
+ "react": "^19.0.0",
63
+ "react-dom": "^19.0.0"
64
+ },
49
65
  "scripts": {
50
66
  "test": "node --test test/*.test.mjs"
51
67
  }