thirdweb 5.107.1 → 5.108.0-nightly-a94f22928a662a5aff7a203fc2d383d9fa0907ec-20250923000340

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/cjs/exports/x402.js +6 -1
  2. package/dist/cjs/exports/x402.js.map +1 -1
  3. package/dist/cjs/react/core/utils/defaultTokens.js +2 -8
  4. package/dist/cjs/react/core/utils/defaultTokens.js.map +1 -1
  5. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js +18 -14
  6. package/dist/cjs/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  7. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js +15 -6
  8. package/dist/cjs/react/web/ui/Bridge/BuyWidget.js.map +1 -1
  9. package/dist/cjs/version.js +1 -1
  10. package/dist/cjs/version.js.map +1 -1
  11. package/dist/cjs/x402/encode.js +71 -0
  12. package/dist/cjs/x402/encode.js.map +1 -0
  13. package/dist/cjs/x402/facilitator.js +83 -2
  14. package/dist/cjs/x402/facilitator.js.map +1 -1
  15. package/dist/cjs/x402/fetchWithPayment.js +7 -15
  16. package/dist/cjs/x402/fetchWithPayment.js.map +1 -1
  17. package/dist/cjs/x402/schemas.js +50 -0
  18. package/dist/cjs/x402/schemas.js.map +1 -0
  19. package/dist/cjs/x402/sign.js +148 -0
  20. package/dist/cjs/x402/sign.js.map +1 -0
  21. package/dist/cjs/x402/verify-payment.js +341 -0
  22. package/dist/cjs/x402/verify-payment.js.map +1 -0
  23. package/dist/esm/exports/x402.js +2 -0
  24. package/dist/esm/exports/x402.js.map +1 -1
  25. package/dist/esm/react/core/utils/defaultTokens.js +2 -8
  26. package/dist/esm/react/core/utils/defaultTokens.js.map +1 -1
  27. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js +18 -14
  28. package/dist/esm/react/web/ui/Bridge/BridgeOrchestrator.js.map +1 -1
  29. package/dist/esm/react/web/ui/Bridge/BuyWidget.js +15 -6
  30. package/dist/esm/react/web/ui/Bridge/BuyWidget.js.map +1 -1
  31. package/dist/esm/version.js +1 -1
  32. package/dist/esm/version.js.map +1 -1
  33. package/dist/esm/x402/encode.js +66 -0
  34. package/dist/esm/x402/encode.js.map +1 -0
  35. package/dist/esm/x402/facilitator.js +83 -2
  36. package/dist/esm/x402/facilitator.js.map +1 -1
  37. package/dist/esm/x402/fetchWithPayment.js +8 -16
  38. package/dist/esm/x402/fetchWithPayment.js.map +1 -1
  39. package/dist/esm/x402/schemas.js +46 -0
  40. package/dist/esm/x402/schemas.js.map +1 -0
  41. package/dist/esm/x402/sign.js +145 -0
  42. package/dist/esm/x402/sign.js.map +1 -0
  43. package/dist/esm/x402/verify-payment.js +338 -0
  44. package/dist/esm/x402/verify-payment.js.map +1 -0
  45. package/dist/types/exports/x402.d.ts +2 -0
  46. package/dist/types/exports/x402.d.ts.map +1 -1
  47. package/dist/types/react/core/utils/defaultTokens.d.ts +2 -7
  48. package/dist/types/react/core/utils/defaultTokens.d.ts.map +1 -1
  49. package/dist/types/react/web/ui/Bridge/BridgeOrchestrator.d.ts +4 -3
  50. package/dist/types/react/web/ui/Bridge/BridgeOrchestrator.d.ts.map +1 -1
  51. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts +7 -3
  52. package/dist/types/react/web/ui/Bridge/BuyWidget.d.ts.map +1 -1
  53. package/dist/types/version.d.ts +1 -1
  54. package/dist/types/version.d.ts.map +1 -1
  55. package/dist/types/x402/encode.d.ts +23 -0
  56. package/dist/types/x402/encode.d.ts.map +1 -0
  57. package/dist/types/x402/facilitator.d.ts +44 -3
  58. package/dist/types/x402/facilitator.d.ts.map +1 -1
  59. package/dist/types/x402/fetchWithPayment.d.ts +1 -1
  60. package/dist/types/x402/fetchWithPayment.d.ts.map +1 -1
  61. package/dist/types/x402/schemas.d.ts +164 -0
  62. package/dist/types/x402/schemas.d.ts.map +1 -0
  63. package/dist/types/x402/sign.d.ts +12 -0
  64. package/dist/types/x402/sign.d.ts.map +1 -0
  65. package/dist/types/x402/verify-payment.d.ts +158 -0
  66. package/dist/types/x402/verify-payment.d.ts.map +1 -0
  67. package/package.json +3 -3
  68. package/src/exports/x402.ts +6 -0
  69. package/src/react/core/utils/defaultTokens.ts +2 -8
  70. package/src/react/web/ui/Bridge/BridgeOrchestrator.tsx +42 -31
  71. package/src/react/web/ui/Bridge/BuyWidget.tsx +24 -9
  72. package/src/version.ts +1 -1
  73. package/src/x402/encode.ts +81 -0
  74. package/src/x402/facilitator.ts +114 -6
  75. package/src/x402/fetchWithPayment.ts +13 -27
  76. package/src/x402/schemas.ts +76 -0
  77. package/src/x402/sign.ts +206 -0
  78. package/src/x402/verify-payment.ts +469 -0
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createPaymentHeader = createPaymentHeader;
4
+ const address_js_1 = require("../utils/address.js");
5
+ const hex_js_1 = require("../utils/encoding/hex.js");
6
+ const encode_js_1 = require("./encode.js");
7
+ const schemas_js_1 = require("./schemas.js");
8
+ /**
9
+ * Prepares an unsigned payment header with the given sender address and payment requirements.
10
+ *
11
+ * @param from - The sender's address from which the payment will be made
12
+ * @param x402Version - The version of the X402 protocol to use
13
+ * @param paymentRequirements - The payment requirements containing scheme and network information
14
+ * @returns An unsigned payment payload containing authorization details
15
+ */
16
+ function preparePaymentHeader(from, x402Version, paymentRequirements) {
17
+ const nonce = createNonce();
18
+ const validAfter = BigInt(Math.floor(Date.now() / 1000) - 600).toString();
19
+ const validBefore = BigInt(Math.floor(Date.now() / 1000 + paymentRequirements.maxTimeoutSeconds)).toString();
20
+ return {
21
+ x402Version,
22
+ scheme: paymentRequirements.scheme,
23
+ network: paymentRequirements.network,
24
+ payload: {
25
+ signature: undefined,
26
+ authorization: {
27
+ from,
28
+ to: paymentRequirements.payTo,
29
+ value: paymentRequirements.maxAmountRequired,
30
+ validAfter: validAfter.toString(),
31
+ validBefore: validBefore.toString(),
32
+ nonce,
33
+ },
34
+ },
35
+ };
36
+ }
37
+ /**
38
+ * Signs a payment header using the provided client and payment requirements.
39
+ *
40
+ * @param client - The signer wallet instance used to sign the payment header
41
+ * @param paymentRequirements - The payment requirements containing scheme and network information
42
+ * @param unsignedPaymentHeader - The unsigned payment payload to be signed
43
+ * @returns A promise that resolves to the signed payment payload
44
+ */
45
+ async function signPaymentHeader(account, paymentRequirements, unsignedPaymentHeader) {
46
+ const { signature } = await signAuthorization(account, unsignedPaymentHeader.payload.authorization, paymentRequirements);
47
+ return {
48
+ ...unsignedPaymentHeader,
49
+ payload: {
50
+ ...unsignedPaymentHeader.payload,
51
+ signature,
52
+ },
53
+ };
54
+ }
55
+ /**
56
+ * Creates a complete payment payload by preparing and signing a payment header.
57
+ *
58
+ * @param client - The signer wallet instance used to create and sign the payment
59
+ * @param x402Version - The version of the X402 protocol to use
60
+ * @param paymentRequirements - The payment requirements containing scheme and network information
61
+ * @returns A promise that resolves to the complete signed payment payload
62
+ */
63
+ async function createPayment(account, x402Version, paymentRequirements) {
64
+ const from = (0, address_js_1.getAddress)(account.address);
65
+ const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements);
66
+ return signPaymentHeader(account, paymentRequirements, unsignedPaymentHeader);
67
+ }
68
+ /**
69
+ * Creates and encodes a payment header for the given client and payment requirements.
70
+ *
71
+ * @param client - The signer wallet instance used to create the payment header
72
+ * @param x402Version - The version of the X402 protocol to use
73
+ * @param paymentRequirements - The payment requirements containing scheme and network information
74
+ * @returns A promise that resolves to the encoded payment header string
75
+ */
76
+ async function createPaymentHeader(account, x402Version, paymentRequirements) {
77
+ const payment = await createPayment(account, x402Version, paymentRequirements);
78
+ return (0, encode_js_1.encodePayment)(payment);
79
+ }
80
+ /**
81
+ * Signs an EIP-3009 authorization for USDC transfer
82
+ *
83
+ * @param walletClient - The wallet client that will sign the authorization
84
+ * @param params - The authorization parameters containing transfer details
85
+ * @param params.from - The address tokens will be transferred from
86
+ * @param params.to - The address tokens will be transferred to
87
+ * @param params.value - The amount of USDC tokens to transfer (in base units)
88
+ * @param params.validAfter - Unix timestamp after which the authorization becomes valid
89
+ * @param params.validBefore - Unix timestamp before which the authorization is valid
90
+ * @param params.nonce - Random 32-byte nonce to prevent replay attacks
91
+ * @param paymentRequirements - The payment requirements containing asset and network information
92
+ * @param paymentRequirements.asset - The address of the USDC contract
93
+ * @param paymentRequirements.network - The network where the USDC contract exists
94
+ * @param paymentRequirements.extra - The extra information containing the name and version of the ERC20 contract
95
+ * @returns The signature for the authorization
96
+ */
97
+ async function signAuthorization(account, { from, to, value, validAfter, validBefore, nonce, }, { asset, network, extra }) {
98
+ const chainId = (0, schemas_js_1.networkToChainId)(network);
99
+ const name = extra?.name;
100
+ const version = extra?.version;
101
+ // TODO (402): detect permit vs transfer on asset contract
102
+ const data = {
103
+ types: {
104
+ TransferWithAuthorization: [
105
+ { name: "from", type: "address" },
106
+ { name: "to", type: "address" },
107
+ { name: "value", type: "uint256" },
108
+ { name: "validAfter", type: "uint256" },
109
+ { name: "validBefore", type: "uint256" },
110
+ { name: "nonce", type: "bytes32" },
111
+ ],
112
+ },
113
+ domain: {
114
+ name,
115
+ version,
116
+ chainId,
117
+ verifyingContract: (0, address_js_1.getAddress)(asset),
118
+ },
119
+ primaryType: "TransferWithAuthorization",
120
+ message: {
121
+ from: (0, address_js_1.getAddress)(from),
122
+ to: (0, address_js_1.getAddress)(to),
123
+ value,
124
+ validAfter,
125
+ validBefore,
126
+ nonce: nonce,
127
+ },
128
+ };
129
+ const signature = await account.signTypedData(data);
130
+ return {
131
+ signature,
132
+ };
133
+ }
134
+ /**
135
+ * Generates a random 32-byte nonce for use in authorization signatures
136
+ *
137
+ * @returns A random 32-byte nonce as a hex string
138
+ */
139
+ function createNonce() {
140
+ const cryptoObj = typeof globalThis.crypto !== "undefined" &&
141
+ typeof globalThis.crypto.getRandomValues === "function"
142
+ ? globalThis.crypto
143
+ : // Dynamic require is needed to support node.js
144
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
145
+ require("crypto").webcrypto;
146
+ return (0, hex_js_1.toHex)(cryptoObj.getRandomValues(new Uint8Array(32)));
147
+ }
148
+ //# sourceMappingURL=sign.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,341 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.verifyPayment = verifyPayment;
4
+ const types_1 = require("x402/types");
5
+ const address_js_1 = require("../utils/address.js");
6
+ const json_js_1 = require("../utils/json.js");
7
+ const encode_js_1 = require("./encode.js");
8
+ const schemas_js_1 = require("./schemas.js");
9
+ const x402Version = 1;
10
+ /**
11
+ * Verifies and processes X402 payments for protected resources.
12
+ *
13
+ * This function implements the X402 payment protocol, verifying payment proofs
14
+ * and settling payments through a facilitator service. It handles the complete
15
+ * payment flow from validation to settlement.
16
+ *
17
+ * @param args - Configuration object containing payment verification parameters
18
+ * @returns A promise that resolves to either a successful payment result (200) or payment required error (402)
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * // Usage in a Next.js API route
23
+ * import { verifyPayment, facilitator } from "thirdweb/x402";
24
+ * import { createThirdwebClient } from "thirdweb";
25
+ *
26
+ * const client = createThirdwebClient({
27
+ * secretKey: process.env.THIRDWEB_SECRET_KEY,
28
+ * });
29
+ *
30
+ * const thirdwebFacilitator = facilitator({
31
+ * client,
32
+ * serverWalletAddress: "0x1234567890123456789012345678901234567890",
33
+ * });
34
+ *
35
+ * export async function GET(request: Request) {
36
+ * const paymentData = request.headers.get("x-payment");
37
+ *
38
+ * const result = await verifyPayment({
39
+ * resourceUrl: "https://api.example.com/premium-content",
40
+ * method: "GET",
41
+ * paymentData,
42
+ * payTo: "0x1234567890123456789012345678901234567890",
43
+ * network: "eip155:84532", // CAIP2 format: "eip155:<chain_id>"
44
+ * price: "$0.10", // or { amount: "100000", asset: { address: "0x...", decimals: 6 } }
45
+ * facilitator: thirdwebFacilitator,
46
+ * routeConfig: {
47
+ * description: "Access to premium API content",
48
+ * mimeType: "application/json",
49
+ * maxTimeoutSeconds: 300,
50
+ * },
51
+ * });
52
+ *
53
+ * if (result.status === 200) {
54
+ * // Payment verified and settled successfully
55
+ * return Response.json({ data: "premium content" }, {
56
+ * headers: result.responseHeaders,
57
+ * });
58
+ * } else {
59
+ * // Payment required
60
+ * return Response.json(result.responseBody, {
61
+ * status: result.status,
62
+ * headers: result.responseHeaders,
63
+ * });
64
+ * }
65
+ * }
66
+ * ```
67
+ *
68
+ * @example
69
+ * ```ts
70
+ * // Usage in Express middleware
71
+ * import express from "express";
72
+ * import { verifyPayment, facilitator } from "thirdweb/x402";
73
+ *
74
+ * const app = express();
75
+ *
76
+ * async function paymentMiddleware(req, res, next) {
77
+ * const result = await verifyPayment({
78
+ * resourceUrl: `${req.protocol}://${req.get('host')}${req.originalUrl}`,
79
+ * method: req.method,
80
+ * paymentData: req.headers["x-payment"],
81
+ * payTo: "0x1234567890123456789012345678901234567890",
82
+ * network: "eip155:8453", // CAIP2 format: "eip155:<chain_id>"
83
+ * price: "$0.05",
84
+ * facilitator: thirdwebFacilitator,
85
+ * });
86
+ *
87
+ * if (result.status === 200) {
88
+ * // Set payment receipt headers and continue
89
+ * Object.entries(result.responseHeaders).forEach(([key, value]) => {
90
+ * res.setHeader(key, value);
91
+ * });
92
+ * next();
93
+ * } else {
94
+ * // Return payment required response
95
+ * res.status(result.status)
96
+ * .set(result.responseHeaders)
97
+ * .json(result.responseBody);
98
+ * }
99
+ * }
100
+ *
101
+ * app.get("/api/premium", paymentMiddleware, (req, res) => {
102
+ * res.json({ message: "This is premium content!" });
103
+ * });
104
+ * ```
105
+ *
106
+ * @public
107
+ * @beta
108
+ * @bridge x402
109
+ */
110
+ async function verifyPayment(args) {
111
+ const { price, network, routeConfig = {}, resourceUrl, method, payTo, paymentData: paymentProof, facilitator, } = args;
112
+ const { description, mimeType, maxTimeoutSeconds, inputSchema, outputSchema, errorMessages, discoverable, } = routeConfig;
113
+ const atomicAmountForAsset = await processPriceToAtomicAmount(price, network, facilitator);
114
+ if ("error" in atomicAmountForAsset) {
115
+ return {
116
+ status: 402,
117
+ responseHeaders: { "Content-Type": "application/json" },
118
+ responseBody: {
119
+ x402Version,
120
+ error: atomicAmountForAsset.error,
121
+ accepts: [],
122
+ },
123
+ };
124
+ }
125
+ const { maxAmountRequired, asset } = atomicAmountForAsset;
126
+ const paymentRequirements = [];
127
+ if (types_1.SupportedEVMNetworks.includes(network) ||
128
+ network.startsWith("eip155:")) {
129
+ paymentRequirements.push({
130
+ scheme: "exact",
131
+ network,
132
+ maxAmountRequired,
133
+ resource: resourceUrl,
134
+ description: description ?? "",
135
+ mimeType: mimeType ?? "application/json",
136
+ payTo: (0, address_js_1.getAddress)(payTo),
137
+ maxTimeoutSeconds: maxTimeoutSeconds ?? 300,
138
+ asset: (0, address_js_1.getAddress)(asset.address),
139
+ // TODO: Rename outputSchema to requestStructure
140
+ outputSchema: {
141
+ input: {
142
+ type: "http",
143
+ method,
144
+ discoverable: discoverable ?? true,
145
+ ...inputSchema,
146
+ },
147
+ output: outputSchema,
148
+ },
149
+ extra: asset.eip712,
150
+ });
151
+ }
152
+ else {
153
+ return {
154
+ status: 402,
155
+ responseHeaders: {
156
+ "Content-Type": "application/json",
157
+ },
158
+ responseBody: {
159
+ x402Version,
160
+ error: `Unsupported network: ${network}`,
161
+ accepts: paymentRequirements,
162
+ },
163
+ };
164
+ }
165
+ // Check for payment header
166
+ if (!paymentProof) {
167
+ return {
168
+ status: 402,
169
+ responseHeaders: {
170
+ "Content-Type": "application/json",
171
+ },
172
+ responseBody: {
173
+ x402Version,
174
+ error: errorMessages?.paymentRequired || "X-PAYMENT header is required",
175
+ accepts: paymentRequirements,
176
+ },
177
+ };
178
+ }
179
+ // Verify payment
180
+ let decodedPayment;
181
+ try {
182
+ decodedPayment = (0, encode_js_1.decodePayment)(paymentProof);
183
+ decodedPayment.x402Version = x402Version;
184
+ }
185
+ catch (error) {
186
+ return {
187
+ status: 402,
188
+ responseHeaders: {
189
+ "Content-Type": "application/json",
190
+ },
191
+ responseBody: {
192
+ x402Version,
193
+ error: errorMessages?.invalidPayment ||
194
+ (error instanceof Error ? error.message : "Invalid payment"),
195
+ accepts: paymentRequirements,
196
+ },
197
+ };
198
+ }
199
+ const selectedPaymentRequirements = paymentRequirements.find((value) => value.scheme === decodedPayment.scheme &&
200
+ value.network === decodedPayment.network);
201
+ if (!selectedPaymentRequirements) {
202
+ return {
203
+ status: 402,
204
+ responseHeaders: {
205
+ "Content-Type": "application/json",
206
+ },
207
+ responseBody: {
208
+ x402Version,
209
+ error: errorMessages?.noMatchingRequirements ||
210
+ "Unable to find matching payment requirements",
211
+ accepts: paymentRequirements,
212
+ },
213
+ };
214
+ }
215
+ try {
216
+ const verification = await facilitator.verify(decodedPayment, selectedPaymentRequirements);
217
+ if (!verification.isValid) {
218
+ return {
219
+ status: 402,
220
+ responseHeaders: {
221
+ "Content-Type": "application/json",
222
+ },
223
+ responseBody: {
224
+ x402Version,
225
+ error: errorMessages?.verificationFailed ||
226
+ verification.invalidReason ||
227
+ "Payment verification failed",
228
+ accepts: paymentRequirements,
229
+ payer: verification.payer,
230
+ },
231
+ };
232
+ }
233
+ }
234
+ catch (error) {
235
+ return {
236
+ status: 402,
237
+ responseHeaders: {
238
+ "Content-Type": "application/json",
239
+ },
240
+ responseBody: {
241
+ x402Version,
242
+ error: errorMessages?.verificationFailed ||
243
+ (error instanceof Error
244
+ ? error.message
245
+ : "Payment Verification error"),
246
+ accepts: paymentRequirements,
247
+ },
248
+ };
249
+ }
250
+ // Settle payment
251
+ try {
252
+ const settlement = await facilitator.settle(decodedPayment, selectedPaymentRequirements);
253
+ if (settlement.success) {
254
+ return {
255
+ status: 200,
256
+ paymentReceipt: settlement,
257
+ responseHeaders: {
258
+ "Access-Control-Expose-Headers": "X-PAYMENT-RESPONSE",
259
+ "X-PAYMENT-RESPONSE": (0, encode_js_1.safeBase64Encode)((0, json_js_1.stringify)(settlement)),
260
+ },
261
+ };
262
+ }
263
+ else {
264
+ return {
265
+ status: 402,
266
+ responseHeaders: {
267
+ "Content-Type": "application/json",
268
+ },
269
+ responseBody: {
270
+ x402Version,
271
+ error: errorMessages?.settlementFailed ||
272
+ settlement.errorReason ||
273
+ "Settlement failed",
274
+ accepts: paymentRequirements,
275
+ },
276
+ };
277
+ }
278
+ }
279
+ catch (error) {
280
+ return {
281
+ status: 402,
282
+ responseHeaders: {
283
+ "Content-Type": "application/json",
284
+ },
285
+ responseBody: {
286
+ x402Version,
287
+ error: errorMessages?.settlementFailed ||
288
+ (error instanceof Error ? error.message : "Settlement error"),
289
+ accepts: paymentRequirements,
290
+ },
291
+ };
292
+ }
293
+ }
294
+ /**
295
+ * Parses the amount from the given price
296
+ *
297
+ * @param price - The price to parse
298
+ * @param network - The network to get the default asset for
299
+ * @returns The parsed amount or an error message
300
+ */
301
+ async function processPriceToAtomicAmount(price, network, facilitator) {
302
+ // Handle USDC amount (string) or token amount (ERC20TokenAmount)
303
+ let maxAmountRequired;
304
+ let asset;
305
+ if (typeof price === "string" || typeof price === "number") {
306
+ // USDC amount in dollars
307
+ const parsedAmount = types_1.moneySchema.safeParse(price);
308
+ if (!parsedAmount.success) {
309
+ return {
310
+ error: `Invalid price (price: ${price}). Must be in the form "$3.10", 0.10, "0.001", ${parsedAmount.error}`,
311
+ };
312
+ }
313
+ const parsedUsdAmount = parsedAmount.data;
314
+ const defaultAsset = await getDefaultAsset(network, facilitator);
315
+ if (!defaultAsset) {
316
+ return {
317
+ error: `Unable to get default asset on ${network}. Please specify an asset in the payment requirements.`,
318
+ };
319
+ }
320
+ asset = defaultAsset;
321
+ maxAmountRequired = (parsedUsdAmount * 10 ** asset.decimals).toString();
322
+ }
323
+ else {
324
+ // Token amount in atomic units
325
+ maxAmountRequired = price.amount;
326
+ asset = price.asset;
327
+ }
328
+ return {
329
+ maxAmountRequired,
330
+ asset,
331
+ };
332
+ }
333
+ async function getDefaultAsset(network, facilitator) {
334
+ const supportedAssets = await facilitator.supported();
335
+ const chainId = (0, schemas_js_1.networkToChainId)(network);
336
+ const matchingAsset = supportedAssets.kinds.find((supported) => supported.network === `eip155:${chainId}`);
337
+ const assetConfig = matchingAsset?.extra
338
+ ?.defaultAsset;
339
+ return assetConfig;
340
+ }
341
+ //# sourceMappingURL=verify-payment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"verify-payment.js","sourceRoot":"","sources":["../../../src/x402/verify-payment.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,5 @@
1
+ export { decodePayment, encodePayment } from "../x402/encode.js";
1
2
  export { facilitator, } from "../x402/facilitator.js";
2
3
  export { wrapFetchWithPayment } from "../x402/fetchWithPayment.js";
4
+ export { verifyPayment, } from "../x402/verify-payment.js";
3
5
  //# sourceMappingURL=x402.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/exports/x402.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,GAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC"}
1
+ {"version":3,"file":"x402.js","sourceRoot":"","sources":["../../../src/exports/x402.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,EACL,WAAW,GAEZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAGL,aAAa,GACd,MAAM,2BAA2B,CAAC"}
@@ -260,15 +260,9 @@ const DEFAULT_TOKENS = {
260
260
  symbol: "USDC",
261
261
  },
262
262
  ],
263
- "421613": [
263
+ "421614": [
264
264
  {
265
- address: "0xe39Ab88f8A4777030A534146A9Ca3B52bd5D43A3",
266
- icon: wrappedEthIcon,
267
- name: "Wrapped Ether",
268
- symbol: "WETH",
269
- },
270
- {
271
- address: "0xfd064A18f3BF249cf1f87FC203E90D8f650f2d63",
265
+ address: "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d",
272
266
  icon: usdcIcon,
273
267
  name: "USD Coin",
274
268
  symbol: "USDC",
@@ -1 +1 @@
1
- {"version":3,"file":"defaultTokens.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/defaultTokens.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"defaultTokens.js","sourceRoot":"","sources":["../../../../../src/react/core/utils/defaultTokens.ts"],"names":[],"mappings":"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"}
@@ -46,16 +46,16 @@ export function BridgeOrchestrator({ client, uiOptions, receiverAddress, onCompl
46
46
  }
47
47
  }, [send, uiOptions.mode]);
48
48
  // Handle post-buy transaction completion
49
- const handlePostBuyTransactionComplete = useCallback(() => {
50
- onComplete?.();
49
+ const handlePostBuyTransactionComplete = useCallback((quote) => {
50
+ onComplete?.(quote);
51
51
  send({ type: "RESET" });
52
52
  }, [onComplete, send]);
53
53
  // Handle errors
54
54
  const handleError = useCallback((error) => {
55
55
  console.error(error);
56
- onError?.(error);
56
+ onError?.(error, state.context.quote);
57
57
  send({ error, type: "ERROR_OCCURRED" });
58
- }, [onError, send]);
58
+ }, [onError, send, state.context.quote]);
59
59
  // Handle payment method selection
60
60
  const handlePaymentMethodSelected = useCallback((paymentMethod) => {
61
61
  send({ paymentMethod, type: "PAYMENT_METHOD_SELECTED" });
@@ -69,16 +69,17 @@ export function BridgeOrchestrator({ client, uiOptions, receiverAddress, onCompl
69
69
  send({ type: "ROUTE_CONFIRMED" });
70
70
  }, [send]);
71
71
  // Handle execution complete
72
- const handleExecutionComplete = useCallback((completedStatuses) => {
72
+ const handleExecutionComplete = useCallback((completedStatuses, quote) => {
73
73
  send({ completedStatuses, type: "EXECUTION_COMPLETE" });
74
74
  if (uiOptions.mode !== "transaction") {
75
- onComplete?.();
75
+ onComplete?.(quote);
76
76
  }
77
77
  }, [send, onComplete, uiOptions.mode]);
78
78
  // Handle retry
79
79
  const handleRetry = useCallback(() => {
80
80
  send({ type: "RETRY" });
81
81
  }, [send]);
82
+ const quote = state.context.quote;
82
83
  // Handle requirements resolved from FundWallet and DirectPayment
83
84
  const handleRequirementsResolved = useCallback((amount, token, receiverAddress) => {
84
85
  send({
@@ -90,7 +91,7 @@ export function BridgeOrchestrator({ client, uiOptions, receiverAddress, onCompl
90
91
  }, [send]);
91
92
  return (_jsxs(Container, { flex: "column", fullHeight: true, children: [state.value === "error" && state.context.currentError && (_jsx(ErrorBanner, { client: client, error: state.context.currentError, onCancel: () => {
92
93
  send({ type: "RESET" });
93
- onCancel?.();
94
+ onCancel?.(quote);
94
95
  }, onRetry: handleRetry })), state.value === "init" && uiOptions.mode === "fund_wallet" && (_jsx(FundWallet, { client: client, connectOptions: modifiedConnectOptions, onContinue: handleRequirementsResolved, presetOptions: presetOptions, receiverAddress: receiverAddress, showThirdwebBranding: showThirdwebBranding, uiOptions: uiOptions })), state.value === "init" && uiOptions.mode === "direct_payment" && (_jsx(DirectPayment, { client: client, onContinue: handleRequirementsResolved, showThirdwebBranding: showThirdwebBranding, uiOptions: uiOptions })), state.value === "init" && uiOptions.mode === "transaction" && (_jsx(TransactionPayment, { client: client, connectOptions: modifiedConnectOptions, onContinue: handleRequirementsResolved, onExecuteTransaction: () => send({ type: "CONTINUE_TO_TRANSACTION" }), showThirdwebBranding: showThirdwebBranding, uiOptions: uiOptions })), state.value === "methodSelection" &&
95
96
  state.context.destinationToken &&
96
97
  state.context.destinationAmount &&
@@ -108,15 +109,18 @@ export function BridgeOrchestrator({ client, uiOptions, receiverAddress, onCompl
108
109
  state.context.selectedPaymentMethod &&
109
110
  state.context.quote && (_jsx(PaymentDetails, { client: client, onBack: () => {
110
111
  send({ type: "BACK" });
111
- }, onConfirm: handleRouteConfirmed, onError: handleError, paymentMethod: state.context.selectedPaymentMethod, preparedQuote: state.context.quote, uiOptions: uiOptions })), state.value === "execute" &&
112
- state.context.quote &&
113
- state.context.request && (_jsx(StepRunner, { autoStart: true, client: client, onBack: () => {
112
+ }, onConfirm: handleRouteConfirmed, onError: handleError, paymentMethod: state.context.selectedPaymentMethod, preparedQuote: state.context.quote, uiOptions: uiOptions })), state.value === "execute" && quote && state.context.request && (_jsx(StepRunner, { autoStart: true, client: client, onBack: () => {
114
113
  send({ type: "BACK" });
115
- }, onCancel: onCancel, onComplete: handleExecutionComplete, request: state.context.request, wallet: state.context.selectedPaymentMethod?.payerWallet, windowAdapter: webWindowAdapter })), state.value === "success" &&
116
- state.context.quote &&
117
- state.context.completedStatuses && (_jsx(SuccessScreen, { client: client, completedStatuses: state.context.completedStatuses, onDone: handleDoneOrContinueClick, preparedQuote: state.context.quote, uiOptions: uiOptions, windowAdapter: webWindowAdapter, hasPaymentId: !!paymentLinkId })), state.value === "post-buy-transaction" &&
114
+ }, onCancel: () => {
115
+ onCancel(quote);
116
+ }, onComplete: (completedStatuses) => {
117
+ handleExecutionComplete(completedStatuses, quote);
118
+ }, request: state.context.request, wallet: state.context.selectedPaymentMethod?.payerWallet, windowAdapter: webWindowAdapter })), state.value === "success" &&
119
+ quote &&
120
+ state.context.completedStatuses && (_jsx(SuccessScreen, { client: client, completedStatuses: state.context.completedStatuses, onDone: handleDoneOrContinueClick, preparedQuote: quote, uiOptions: uiOptions, windowAdapter: webWindowAdapter, hasPaymentId: !!paymentLinkId })), state.value === "post-buy-transaction" &&
118
121
  uiOptions.mode === "transaction" &&
119
- uiOptions.transaction && (_jsx(ExecutingTxScreen, { closeModal: handlePostBuyTransactionComplete, onTxSent: () => {
122
+ quote &&
123
+ uiOptions.transaction && (_jsx(ExecutingTxScreen, { closeModal: () => handlePostBuyTransactionComplete(quote), onTxSent: () => {
120
124
  // Do nothing
121
125
  }, tx: uiOptions.transaction, windowAdapter: webWindowAdapter }))] }));
122
126
  }