thirdweb 5.121.1 → 5.121.3

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/react/core/hooks/x402/useFetchWithPaymentCore.js +1 -0
  2. package/dist/cjs/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
  3. package/dist/cjs/react/native/hooks/x402/useFetchWithPayment.js +1 -1
  4. package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js +2 -2
  5. package/dist/cjs/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
  6. package/dist/cjs/react/web/ui/Bridge/common/token-query.js +4 -1
  7. package/dist/cjs/react/web/ui/Bridge/common/token-query.js.map +1 -1
  8. package/dist/cjs/react/web/ui/x402/PaymentErrorModal.js +4 -4
  9. package/dist/cjs/react/web/ui/x402/PaymentErrorModal.js.map +1 -1
  10. package/dist/cjs/version.js +1 -1
  11. package/dist/cjs/x402/encode.js +41 -2
  12. package/dist/cjs/x402/encode.js.map +1 -1
  13. package/dist/cjs/x402/fetchWithPayment.js +56 -33
  14. package/dist/cjs/x402/fetchWithPayment.js.map +1 -1
  15. package/dist/cjs/x402/schemas.js +134 -2
  16. package/dist/cjs/x402/schemas.js.map +1 -1
  17. package/dist/cjs/x402/sign.js +56 -15
  18. package/dist/cjs/x402/sign.js.map +1 -1
  19. package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js +2 -1
  20. package/dist/esm/react/core/hooks/x402/useFetchWithPaymentCore.js.map +1 -1
  21. package/dist/esm/react/native/hooks/x402/useFetchWithPayment.js +1 -1
  22. package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js +2 -2
  23. package/dist/esm/react/web/hooks/x402/useFetchWithPayment.js.map +1 -1
  24. package/dist/esm/react/web/ui/Bridge/common/token-query.js +4 -1
  25. package/dist/esm/react/web/ui/Bridge/common/token-query.js.map +1 -1
  26. package/dist/esm/react/web/ui/x402/PaymentErrorModal.js +5 -5
  27. package/dist/esm/react/web/ui/x402/PaymentErrorModal.js.map +1 -1
  28. package/dist/esm/version.js +1 -1
  29. package/dist/esm/x402/encode.js +40 -2
  30. package/dist/esm/x402/encode.js.map +1 -1
  31. package/dist/esm/x402/fetchWithPayment.js +57 -35
  32. package/dist/esm/x402/fetchWithPayment.js.map +1 -1
  33. package/dist/esm/x402/schemas.js +129 -1
  34. package/dist/esm/x402/schemas.js.map +1 -1
  35. package/dist/esm/x402/sign.js +57 -16
  36. package/dist/esm/x402/sign.js.map +1 -1
  37. package/dist/scripts/bridge-widget.js +3 -3
  38. package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts +1 -0
  39. package/dist/types/react/core/hooks/x402/useFetchWithPaymentCore.d.ts.map +1 -1
  40. package/dist/types/react/native/hooks/x402/useFetchWithPayment.d.ts +1 -1
  41. package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts +1 -1
  42. package/dist/types/react/web/hooks/x402/useFetchWithPayment.d.ts.map +1 -1
  43. package/dist/types/react/web/ui/Bridge/common/token-query.d.ts.map +1 -1
  44. package/dist/types/react/web/ui/x402/PaymentErrorModal.d.ts +1 -0
  45. package/dist/types/react/web/ui/x402/PaymentErrorModal.d.ts.map +1 -1
  46. package/dist/types/version.d.ts +1 -1
  47. package/dist/types/x402/encode.d.ts +7 -0
  48. package/dist/types/x402/encode.d.ts.map +1 -1
  49. package/dist/types/x402/fetchWithPayment.d.ts +10 -1
  50. package/dist/types/x402/fetchWithPayment.d.ts.map +1 -1
  51. package/dist/types/x402/schemas.d.ts +60 -2
  52. package/dist/types/x402/schemas.d.ts.map +1 -1
  53. package/dist/types/x402/sign.d.ts +13 -1
  54. package/dist/types/x402/sign.d.ts.map +1 -1
  55. package/package.json +3 -3
  56. package/src/contract/actions/resolve-abi.test.ts +3 -5
  57. package/src/extensions/airdrop/write/airdropERC721WithSignature.test.ts +4 -5
  58. package/src/extensions/erc1155/drop1155.test.ts +1 -1
  59. package/src/extensions/erc1155/write/sigMint1155.test.ts +189 -187
  60. package/src/extensions/erc20/drop20.test.ts +1 -1
  61. package/src/extensions/erc721/write/sigMint721.test.ts +4 -6
  62. package/src/extensions/modules/ClaimableERC1155/claimableERC1155.test.ts +180 -178
  63. package/src/extensions/modules/ClaimableERC20/claimableERC20.test.ts +1 -1
  64. package/src/extensions/modules/ClaimableERC721/claimableERC721.test.ts +1 -1
  65. package/src/extensions/prebuilts/process-ref-deployments.test.ts +1 -1
  66. package/src/react/core/hooks/x402/useFetchWithPaymentCore.ts +6 -1
  67. package/src/react/native/hooks/x402/useFetchWithPayment.ts +1 -1
  68. package/src/react/web/hooks/x402/useFetchWithPayment.tsx +3 -1
  69. package/src/react/web/ui/Bridge/common/token-query.test.tsx +117 -0
  70. package/src/react/web/ui/Bridge/common/token-query.ts +4 -1
  71. package/src/react/web/ui/x402/PaymentErrorModal.tsx +9 -4
  72. package/src/version.ts +1 -1
  73. package/src/x402/encode.ts +46 -2
  74. package/src/x402/fetchWithPayment.test.ts +1173 -104
  75. package/src/x402/fetchWithPayment.ts +72 -54
  76. package/src/x402/schemas.test.ts +123 -0
  77. package/src/x402/schemas.ts +199 -6
  78. package/src/x402/sign.ts +86 -10
@@ -6,10 +6,138 @@ const RequestedPaymentPayloadSchema = PaymentPayloadSchema.extend({
6
6
  network: FacilitatorNetworkSchema,
7
7
  scheme: PaymentSchemeSchema,
8
8
  });
9
- export const RequestedPaymentRequirementsSchema = PaymentRequirementsSchema.extend({
9
+ const RequestedPaymentRequirementsSchema = PaymentRequirementsSchema.extend({
10
10
  network: FacilitatorNetworkSchema,
11
11
  scheme: PaymentSchemeSchema,
12
12
  });
13
+ const MAX_UINT256 = 2n ** 256n - 1n;
14
+ const ATOMIC_AMOUNT_REGEX = /^\d{1,78}$/;
15
+ /**
16
+ * Returns true if the value is a base-10 integer string that fits in a uint256.
17
+ * @internal
18
+ */
19
+ export function isAtomicAmount(value) {
20
+ return (typeof value === "string" &&
21
+ ATOMIC_AMOUNT_REGEX.test(value) &&
22
+ BigInt(value) <= MAX_UINT256);
23
+ }
24
+ /**
25
+ * Reads an amount field and returns it in canonical form (no leading zeros).
26
+ */
27
+ function readAtomicAmount(requirement, field) {
28
+ const value = requirement[field];
29
+ if (value === undefined) {
30
+ return undefined;
31
+ }
32
+ if (!isAtomicAmount(value)) {
33
+ throw new Error(`Invalid payment requirements: ${field} must be an integer string in base units`);
34
+ }
35
+ return BigInt(value).toString();
36
+ }
37
+ /**
38
+ * Extracts the top-level resource object of a 402 payment required response, if any.
39
+ */
40
+ function getPaymentRequiredResource(paymentRequired) {
41
+ if (!isRecord(paymentRequired)) {
42
+ return undefined;
43
+ }
44
+ const resource = paymentRequired.resource;
45
+ if (isRecord(resource) && typeof resource.url === "string") {
46
+ return resource;
47
+ }
48
+ return undefined;
49
+ }
50
+ /**
51
+ * Normalises a payment requirement from a 402 response (x402 v1, v2, or v2 envelopes with v1 requirements).
52
+ *
53
+ * @param requirement - The raw payment requirement
54
+ * @param context - Fallback values for fields that v2 moves out of the requirement
55
+ * @returns The normalised requirement and the raw requirement
56
+ * @throws If the amount is missing, malformed, or ambiguous, or the requirement is otherwise invalid
57
+ * @internal
58
+ */
59
+ export function normalizePaymentRequirements(requirement, context = {}) {
60
+ if (!isRecord(requirement)) {
61
+ throw new Error("Invalid payment requirements: expected an object");
62
+ }
63
+ const amount = readAtomicAmount(requirement, "amount");
64
+ const maxAmountRequired = readAtomicAmount(requirement, "maxAmountRequired");
65
+ if (amount !== undefined &&
66
+ maxAmountRequired !== undefined &&
67
+ amount !== maxAmountRequired) {
68
+ throw new Error(`Invalid payment requirements: amount (${amount}) and maxAmountRequired (${maxAmountRequired}) do not match`);
69
+ }
70
+ const normalizedAmount = amount ?? maxAmountRequired;
71
+ if (normalizedAmount === undefined) {
72
+ throw new Error("Invalid payment requirements: missing amount or maxAmountRequired");
73
+ }
74
+ const requirements = RequestedPaymentRequirementsSchema.parse({
75
+ ...requirement,
76
+ maxAmountRequired: normalizedAmount,
77
+ resource: typeof requirement.resource === "string"
78
+ ? requirement.resource
79
+ : context.resourceUrl,
80
+ description: typeof requirement.description === "string"
81
+ ? requirement.description
82
+ : "",
83
+ mimeType: typeof requirement.mimeType === "string" ? requirement.mimeType : "",
84
+ });
85
+ return { requirements, raw: requirement };
86
+ }
87
+ /**
88
+ * Parses a decoded 402 payment required object (PAYMENT-REQUIRED header or JSON body).
89
+ * Every entry of `accepts` is normalised with {@link normalizePaymentRequirements}.
90
+ *
91
+ * @param paymentRequired - The decoded payment required object
92
+ * @param requestUrl - The URL of the request, used when the response carries no resource URL
93
+ * @returns The x402 version, error, top-level resource, resolved resource URL and normalised requirements
94
+ * @throws If the object has no accepts array or any requirement is invalid
95
+ * @internal
96
+ */
97
+ export function parsePaymentRequired(paymentRequired, requestUrl) {
98
+ const data = isRecord(paymentRequired) ? paymentRequired : {};
99
+ const error = typeof data.error === "string" ? data.error : undefined;
100
+ if (!Array.isArray(data.accepts)) {
101
+ throw new Error(`402 response has no usable x402 payment requirements. ${error ?? ""}`);
102
+ }
103
+ const resource = getPaymentRequiredResource(data);
104
+ const resourceUrl = typeof resource?.url === "string" ? resource.url : requestUrl;
105
+ return {
106
+ x402Version: typeof data.x402Version === "number" ? data.x402Version : undefined,
107
+ error,
108
+ resource,
109
+ resourceUrl,
110
+ accepts: data.accepts.map((requirement) => normalizePaymentRequirements(requirement, { resourceUrl })),
111
+ };
112
+ }
113
+ /**
114
+ * Parses the payment requirements of a 402 response for display only, skipping invalid entries.
115
+ *
116
+ * @param paymentRequired - The decoded payment required object
117
+ * @param requestUrl - The URL of the request, used when the response carries no resource URL
118
+ * @returns The normalised requirements that passed validation
119
+ * @internal
120
+ */
121
+ export function parsePaymentRequirementsForDisplay(paymentRequired, requestUrl) {
122
+ if (!isRecord(paymentRequired) || !Array.isArray(paymentRequired.accepts)) {
123
+ return [];
124
+ }
125
+ const resource = getPaymentRequiredResource(paymentRequired);
126
+ const resourceUrl = typeof resource?.url === "string" ? resource.url : requestUrl;
127
+ return paymentRequired.accepts.flatMap((requirement) => {
128
+ try {
129
+ return [
130
+ normalizePaymentRequirements(requirement, { resourceUrl }).requirements,
131
+ ];
132
+ }
133
+ catch {
134
+ return [];
135
+ }
136
+ });
137
+ }
138
+ function isRecord(value) {
139
+ return typeof value === "object" && value !== null && !Array.isArray(value);
140
+ }
13
141
  const FacilitatorSettleResponseSchema = SettleResponseSchema.extend({
14
142
  network: FacilitatorNetworkSchema,
15
143
  errorMessage: z.string().optional(),
@@ -1 +1 @@
1
- {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/x402/schemas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/x402/schemas.ts"],"names":[],"mappings":"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"}
@@ -8,22 +8,38 @@ import { toHex } from "../utils/encoding/hex.js";
8
8
  import { getSupportedSignatureType } from "./common.js";
9
9
  import { encodePayment } from "./encode.js";
10
10
  import { getPermitSignatureFromCache, savePermitSignatureToCache, } from "./permitSignatureStorage.js";
11
- import { extractEvmChainId, networkToCaip2ChainId, } from "./schemas.js";
11
+ import { extractEvmChainId, isAtomicAmount, networkToCaip2ChainId, } from "./schemas.js";
12
+ /**
13
+ * Builds the payload fields shared by every payment payload for the given requirements.
14
+ * v2 payloads additionally carry `accepted` and `resource`.
15
+ */
16
+ function paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context) {
17
+ return {
18
+ x402Version,
19
+ scheme: paymentRequirements.scheme,
20
+ network: paymentRequirements.network,
21
+ ...(x402Version === 2 && v2Context
22
+ ? {
23
+ accepted: v2Context.accepted,
24
+ ...(v2Context.resource ? { resource: v2Context.resource } : {}),
25
+ }
26
+ : {}),
27
+ };
28
+ }
12
29
  /**
13
30
  * Prepares an unsigned payment header with the given sender address and payment requirements.
14
31
  *
15
32
  * @param from - The sender's address from which the payment will be made
16
33
  * @param x402Version - The version of the X402 protocol to use
17
34
  * @param paymentRequirements - The payment requirements containing scheme and network information
35
+ * @param v2Context - The x402 v2 fields to include in the payload
18
36
  * @returns An unsigned payment payload containing authorization details
19
37
  */
20
- function preparePaymentHeader(from, x402Version, paymentRequirements, nonce) {
38
+ function preparePaymentHeader(from, x402Version, paymentRequirements, nonce, v2Context) {
21
39
  const validAfter = BigInt(Math.floor(Date.now() / 1000) - 86400).toString();
22
40
  const validBefore = BigInt(Math.floor(Date.now() / 1000 + paymentRequirements.maxTimeoutSeconds)).toString();
23
41
  return {
24
- x402Version,
25
- scheme: paymentRequirements.scheme,
26
- network: paymentRequirements.network,
42
+ ...paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context),
27
43
  payload: {
28
44
  signature: undefined,
29
45
  authorization: {
@@ -44,9 +60,10 @@ function preparePaymentHeader(from, x402Version, paymentRequirements, nonce) {
44
60
  * @param paymentRequirements - The payment requirements containing scheme and network information
45
61
  * @param unsignedPaymentHeader - The unsigned payment payload to be signed
46
62
  * @param storage - Optional storage for caching permit signatures (for "upto" scheme)
63
+ * @param v2Context - The x402 v2 fields to include in the payload
47
64
  * @returns A promise that resolves to the signed payment payload
48
65
  */
49
- async function signPaymentHeader(client, account, paymentRequirements, x402Version, storage) {
66
+ async function signPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue) {
50
67
  const from = getAddress(account.address);
51
68
  const caip2ChainId = networkToCaip2ChainId(paymentRequirements.network);
52
69
  const chainId = extractEvmChainId(caip2ChainId);
@@ -73,7 +90,18 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
73
90
  // Try to reuse cached signature for "upto" scheme
74
91
  if (shouldCache && storage) {
75
92
  const cached = await getPermitSignatureFromCache(storage, cacheParams);
76
- if (cached) {
93
+ const cachedPayload = cached?.payload?.payload;
94
+ const cachedAuthorization = cachedPayload?.authorization;
95
+ const cachedValue = cachedAuthorization?.value;
96
+ const amount = BigInt(paymentRequirements.maxAmountRequired);
97
+ if (cached &&
98
+ cachedPayload &&
99
+ isSameAddress(cachedAuthorization?.from, from) &&
100
+ isSameAddress(cachedAuthorization?.to, spender) &&
101
+ isAtomicAmount(cached.deadline) &&
102
+ isAtomicAmount(cachedValue) &&
103
+ BigInt(cachedValue) >= amount &&
104
+ (maxValue === undefined || BigInt(cachedValue) <= maxValue)) {
77
105
  // Validate deadline hasn't passed
78
106
  const now = BigInt(Math.floor(Date.now() / 1000));
79
107
  if (BigInt(cached.deadline) > now) {
@@ -87,14 +115,20 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
87
115
  owner: from,
88
116
  spender,
89
117
  });
90
- // Determine threshold - use minAmountRequired if present, else maxAmountRequired
118
+ // Determine threshold - use minAmountRequired if it is within (0, amount], else the amount
91
119
  const extra = paymentRequirements.extra;
92
- const threshold = extra?.minAmountRequired
120
+ const minAmount = isAtomicAmount(extra?.minAmountRequired)
93
121
  ? BigInt(extra.minAmountRequired)
94
- : BigInt(paymentRequirements.maxAmountRequired);
95
- // If allowance >= threshold, reuse signature
122
+ : undefined;
123
+ const threshold = minAmount !== undefined && minAmount > 0n && minAmount <= amount
124
+ ? minAmount
125
+ : amount;
126
+ // If allowance >= threshold, reuse the signature in the current envelope
96
127
  if (currentAllowance >= threshold) {
97
- return cached.payload;
128
+ return {
129
+ ...paymentPayloadEnvelope(x402Version, paymentRequirements, v2Context),
130
+ payload: cachedPayload,
131
+ };
98
132
  }
99
133
  }
100
134
  }
@@ -108,7 +142,8 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
108
142
  }),
109
143
  owner: from,
110
144
  });
111
- const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, toHex(nonce, { size: 32 }));
145
+ const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, toHex(nonce, { size: 32 }), // permit nonce
146
+ v2Context);
112
147
  const { signature } = await signERC2612Permit(account, unsignedPaymentHeader.payload.authorization, paymentRequirements);
113
148
  const signedPayload = {
114
149
  ...unsignedPaymentHeader,
@@ -126,7 +161,8 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
126
161
  case "TransferWithAuthorization": {
127
162
  // default to transfer with authorization
128
163
  const nonce = await createNonce();
129
- const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, nonce);
164
+ const unsignedPaymentHeader = preparePaymentHeader(from, x402Version, paymentRequirements, nonce, // random nonce
165
+ v2Context);
130
166
  const { signature } = await signERC3009Authorization(account, unsignedPaymentHeader.payload.authorization, paymentRequirements);
131
167
  return {
132
168
  ...unsignedPaymentHeader,
@@ -147,12 +183,17 @@ async function signPaymentHeader(client, account, paymentRequirements, x402Versi
147
183
  * @param x402Version - The version of the X402 protocol to use
148
184
  * @param paymentRequirements - The payment requirements containing scheme and network information
149
185
  * @param storage - Optional storage for caching permit signatures (for "upto" scheme)
186
+ * @param v2Context - The x402 v2 fields to include in the payload
187
+ * @param maxValue - The maximum allowed payment amount
150
188
  * @returns A promise that resolves to the encoded payment header string
151
189
  */
152
- export async function createPaymentHeader(client, account, paymentRequirements, x402Version, storage) {
153
- const payment = await signPaymentHeader(client, account, paymentRequirements, x402Version, storage);
190
+ export async function createPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue) {
191
+ const payment = await signPaymentHeader(client, account, paymentRequirements, x402Version, storage, v2Context, maxValue);
154
192
  return encodePayment(payment);
155
193
  }
194
+ function isSameAddress(value, address) {
195
+ return (typeof value === "string" && value.toLowerCase() === address.toLowerCase());
196
+ }
156
197
  /**
157
198
  * Signs an EIP-3009 authorization for USDC transfer
158
199
  *
@@ -1 +1 @@
1
- {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,4DAA4D,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,+DAA+D,CAAC;AACvF,OAAO,EAAgB,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,EAAY,KAAK,EAAE,MAAM,0BAA0B,CAAC;AAG3D,OAAO,EAAE,yBAAyB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,2BAA2B,EAE3B,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AACrC,OAAO,EACL,iBAAiB,EACjB,qBAAqB,GAItB,MAAM,cAAc,CAAC;AAGtB;;;;;;;GAOG;AACH,SAAS,oBAAoB,CAC3B,IAAa,EACb,WAAmB,EACnB,mBAAiD,EACjD,KAAU;IAEV,MAAM,UAAU,GAAG,MAAM,CACvB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CACtC,CAAC,QAAQ,EAAE,CAAC;IACb,MAAM,WAAW,GAAG,MAAM,CACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,mBAAmB,CAAC,iBAAiB,CAAC,CACtE,CAAC,QAAQ,EAAE,CAAC;IAEb,OAAO;QACL,WAAW;QACX,MAAM,EAAE,mBAAmB,CAAC,MAAM;QAClC,OAAO,EAAE,mBAAmB,CAAC,OAAO;QACpC,OAAO,EAAE;YACP,SAAS,EAAE,SAAS;YACpB,aAAa,EAAE;gBACb,IAAI;gBACJ,EAAE,EAAE,mBAAmB,CAAC,KAAgB;gBACxC,KAAK,EAAE,mBAAmB,CAAC,iBAAiB;gBAC5C,UAAU,EAAE,UAAU,CAAC,QAAQ,EAAE;gBACjC,WAAW,EAAE,WAAW,CAAC,QAAQ,EAAE;gBACnC,KAAK,EAAE,KAAK;aACb;SACF;KACF,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,iBAAiB,CAC9B,MAAsB,EACtB,OAAgB,EAChB,mBAAiD,EACjD,WAAmB,EACnB,OAAsB;IAEtB,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,qBAAqB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAEhD,6BAA6B;IAC7B,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,mBAAmB,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,sBAAsB,GAAG,MAAM,yBAAyB,CAAC;QAC7D,MAAM;QACN,KAAK,EAAE,mBAAmB,CAAC,KAAK;QAChC,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,mBAAmB,CAAC,KAErB;KACd,CAAC,CAAC;IAEH,QAAQ,sBAAsB,EAAE,CAAC;QAC/B,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,WAAW,GACf,mBAAmB,CAAC,MAAM,KAAK,MAAM,IAAI,OAAO,KAAK,SAAS,CAAC;YACjE,MAAM,OAAO,GAAG,UAAU,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAEtD,MAAM,WAAW,GAAyB;gBACxC,OAAO;gBACP,KAAK,EAAE,mBAAmB,CAAC,KAAK;gBAChC,KAAK,EAAE,IAAI;gBACX,OAAO;aACR,CAAC;YAEF,kDAAkD;YAClD,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,MAAM,GAAG,MAAM,2BAA2B,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;gBAEvE,IAAI,MAAM,EAAE,CAAC;oBACX,kCAAkC;oBAClC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;oBAClD,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,GAAG,EAAE,CAAC;wBAClC,2BAA2B;wBAC3B,MAAM,gBAAgB,GAAG,MAAM,SAAS,CAAC;4BACvC,QAAQ,EAAE,WAAW,CAAC;gCACpB,OAAO,EAAE,mBAAmB,CAAC,KAAK;gCAClC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC;gCAC9B,MAAM;6BACP,CAAC;4BACF,KAAK,EAAE,IAAI;4BACX,OAAO;yBACR,CAAC,CAAC;wBAEH,iFAAiF;wBACjF,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAIrB,CAAC;wBACd,MAAM,SAAS,GAAG,KAAK,EAAE,iBAAiB;4BACxC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC;4BACjC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;wBAElD,6CAA6C;wBAC7C,IAAI,gBAAgB,IAAI,SAAS,EAAE,CAAC;4BAClC,OAAO,MAAM,CAAC,OAAO,CAAC;wBACxB,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,yBAAyB;YACzB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC;gBACzB,QAAQ,EAAE,WAAW,CAAC;oBACpB,OAAO,EAAE,mBAAmB,CAAC,KAAK;oBAClC,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC;oBAC9B,MAAM,EAAE,MAAM;iBACf,CAAC;gBACF,KAAK,EAAE,IAAI;aACZ,CAAC,CAAC;YACH,MAAM,qBAAqB,GAAG,oBAAoB,CAChD,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,KAAK,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAC3B,CAAC;YACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,iBAAiB,CAC3C,OAAO,EACP,qBAAqB,CAAC,OAAO,CAAC,aAAa,EAC3C,mBAAmB,CACpB,CAAC;YAEF,MAAM,aAAa,GAA4B;gBAC7C,GAAG,qBAAqB;gBACxB,OAAO,EAAE;oBACP,GAAG,qBAAqB,CAAC,OAAO;oBAChC,SAAS;iBACV;aACF,CAAC;YAEF,wCAAwC;YACxC,IAAI,WAAW,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,0BAA0B,CAC9B,OAAO,EACP,WAAW,EACX,aAAa,EACb,qBAAqB,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,EACvD,mBAAmB,CAAC,iBAAiB,CACtC,CAAC;YACJ,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,KAAK,2BAA2B,CAAC,CAAC,CAAC;YACjC,yCAAyC;YACzC,MAAM,KAAK,GAAG,MAAM,WAAW,EAAE,CAAC;YAClC,MAAM,qBAAqB,GAAG,oBAAoB,CAChD,IAAI,EACJ,WAAW,EACX,mBAAmB,EACnB,KAAK,CACN,CAAC;YACF,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,wBAAwB,CAClD,OAAO,EACP,qBAAqB,CAAC,OAAO,CAAC,aAAa,EAC3C,mBAAmB,CACpB,CAAC;YACF,OAAO;gBACL,GAAG,qBAAqB;gBACxB,OAAO,EAAE;oBACP,GAAG,qBAAqB,CAAC,OAAO;oBAChC,SAAS;iBACV;aACF,CAAC;QACJ,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CACb,uDAAuD,mBAAmB,CAAC,KAAK,aAAa,mBAAmB,CAAC,OAAO,EAAE,CAC3H,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAsB,EACtB,OAAgB,EAChB,mBAAiD,EACjD,WAAmB,EACnB,OAAsB;IAEtB,MAAM,OAAO,GAAG,MAAM,iBAAiB,CACrC,MAAM,EACN,OAAO,EACP,mBAAmB,EACnB,WAAW,EACX,OAAO,CACR,CAAC;IACF,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,KAAK,UAAU,wBAAwB,CACrC,OAAgB,EAChB,EACE,IAAI,EACJ,EAAE,EACF,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,GACwB,EAC/B,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAgC;IAEvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAE/B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;QAC5C,KAAK,EAAE;YACL,yBAAyB,EAAE;gBACzB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;gBACjC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE;gBAC/B,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,SAAS,EAAE;gBACvC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE;gBACxC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;aACnC;SACF;QACD,MAAM,EAAE;YACN,IAAI;YACJ,OAAO;YACP,OAAO;YACP,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC;SACrC;QACD,WAAW,EAAE,2BAAoC;QACjD,OAAO,EAAE;YACP,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC;YACtB,EAAE,EAAE,UAAU,CAAC,EAAE,CAAC;YAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC;YAC9B,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC;YAChC,KAAK,EAAE,KAAY;SACpB;KACF,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;KACV,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,OAAgB,EAChB,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAgC,EACrE,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAgC;IAEvD,MAAM,OAAO,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC;IAClE,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,EAAE,CAAC,CAAC;IACtD,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;IACzB,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,CAAC;IAE/B,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,4FAA4F,CAC7F,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC;QAC5C,KAAK,EAAE;YACL,MAAM,EAAE;gBACN,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;gBACpC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;gBAClC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE;aACtC;SACF;QACD,MAAM,EAAE;YACN,IAAI;YACJ,OAAO;YACP,OAAO;YACP,iBAAiB,EAAE,UAAU,CAAC,KAAK,CAAC;SACrC;QACD,WAAW,EAAE,QAAiB;QAC9B,OAAO,EAAE;YACP,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC;YACvB,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YACvB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC;YACpB,KAAK,EAAE,WAAW,CAAC,KAAY,CAAC;YAChC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC;SAC9B;KACF,CAAC,CAAC;IAEH,OAAO;QACL,SAAS;KACV,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW;IACxB,MAAM,SAAS,GACb,OAAO,UAAU,CAAC,MAAM,KAAK,WAAW;QACxC,OAAO,UAAU,CAAC,MAAM,CAAC,eAAe,KAAK,UAAU;QACrD,CAAC,CAAC,UAAU,CAAC,MAAM;QACnB,CAAC,CAAC,+CAA+C;YAC/C,iEAAiE;YACjE,OAAO,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;IAClC,OAAO,KAAK,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"sign.js","sourceRoot":"","sources":["../../../src/x402/sign.ts"],"names":[],"mappings":"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"}