@wtflabs/x402 0.0.1-beta.3 → 0.0.1-beta.5
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/dist/cjs/client/index.d.ts +1 -1
- package/dist/cjs/client/index.js +6 -1
- package/dist/cjs/client/index.js.map +1 -1
- package/dist/cjs/facilitator/index.d.ts +1 -1
- package/dist/cjs/facilitator/index.js +119 -6
- package/dist/cjs/facilitator/index.js.map +1 -1
- package/dist/cjs/index.d.ts +1 -1
- package/dist/cjs/index.js +119 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/{middleware-Brgsx32F.d.ts → middleware-nzDe-TDJ.d.ts} +1 -1
- package/dist/cjs/paywall/index.d.ts +1 -1
- package/dist/cjs/schemes/index.d.ts +25 -7
- package/dist/cjs/schemes/index.js +151 -13
- package/dist/cjs/schemes/index.js.map +1 -1
- package/dist/cjs/shared/index.d.ts +2 -2
- package/dist/cjs/shared/index.js +6 -1
- package/dist/cjs/shared/index.js.map +1 -1
- package/dist/cjs/types/index.d.ts +93 -4
- package/dist/cjs/types/index.js +64 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/verify/index.d.ts +2 -2
- package/dist/cjs/verify/index.js +6 -1
- package/dist/cjs/verify/index.js.map +1 -1
- package/dist/{esm/x402Specs-CYq5tSY1.d.mts → cjs/x402Specs-BtRXj67U.d.ts} +43 -10
- package/dist/esm/{chunk-RX2JKK4O.mjs → chunk-J3FMDNC3.mjs} +2 -2
- package/dist/esm/{chunk-34YNR4LY.mjs → chunk-K5SAFQCZ.mjs} +3 -3
- package/dist/esm/{chunk-UCBE7FDY.mjs → chunk-NPWDNT2P.mjs} +67 -2
- package/dist/esm/chunk-NPWDNT2P.mjs.map +1 -0
- package/dist/esm/{chunk-ZEZOGZ3K.mjs → chunk-TAYXZJPR.mjs} +101 -16
- package/dist/esm/chunk-TAYXZJPR.mjs.map +1 -0
- package/dist/esm/{chunk-CJV3GAPG.mjs → chunk-URGZOTVQ.mjs} +3 -3
- package/dist/esm/client/index.d.mts +1 -1
- package/dist/esm/client/index.mjs +3 -3
- package/dist/esm/facilitator/index.d.mts +1 -1
- package/dist/esm/facilitator/index.mjs +4 -4
- package/dist/esm/index.d.mts +1 -1
- package/dist/esm/index.mjs +5 -5
- package/dist/esm/{middleware-BSjsPDKM.d.mts → middleware-DSDucaQ5.d.mts} +1 -1
- package/dist/esm/paywall/index.d.mts +1 -1
- package/dist/esm/schemes/index.d.mts +25 -7
- package/dist/esm/schemes/index.mjs +3 -3
- package/dist/esm/shared/index.d.mts +2 -2
- package/dist/esm/shared/index.mjs +1 -1
- package/dist/esm/types/index.d.mts +93 -4
- package/dist/esm/types/index.mjs +1 -1
- package/dist/esm/verify/index.d.mts +2 -2
- package/dist/esm/verify/index.mjs +1 -1
- package/dist/{cjs/x402Specs-CYq5tSY1.d.ts → esm/x402Specs-BtRXj67U.d.mts} +43 -10
- package/package.json +15 -15
- package/dist/cjs/middleware-6_1ApcJn.d.ts +0 -93
- package/dist/cjs/middleware-B_ewwsQp.d.ts +0 -93
- package/dist/cjs/middleware-BwfW7mAs.d.ts +0 -93
- package/dist/cjs/middleware-CQb61c1k.d.ts +0 -93
- package/dist/cjs/middleware-DB9lqy9f.d.ts +0 -93
- package/dist/cjs/middleware-DcHctwQV.d.ts +0 -93
- package/dist/cjs/middleware-De0jD3Bp.d.ts +0 -93
- package/dist/cjs/middleware-HoFOmpgv.d.ts +0 -93
- package/dist/cjs/middleware-Y8AiAfYw.d.ts +0 -93
- package/dist/cjs/middleware-pnres9YM.d.ts +0 -93
- package/dist/cjs/network-RtNddYQk.d.ts +0 -11
- package/dist/cjs/rpc-Ca8eHCWz.d.ts +0 -35
- package/dist/cjs/wallet-BRWfOM5D.d.ts +0 -153
- package/dist/cjs/wallet-BYRAGtOB.d.ts +0 -153
- package/dist/cjs/wallet-BmEtlgEf.d.ts +0 -48
- package/dist/cjs/wallet-CNOAmyZ6.d.ts +0 -48
- package/dist/cjs/wallet-D1SoxFTw.d.ts +0 -48
- package/dist/cjs/wallet-SJ-hbjm9.d.ts +0 -153
- package/dist/cjs/wallet-ecnda4Aj.d.ts +0 -48
- package/dist/cjs/wallet-gP8Qoi-c.d.ts +0 -74
- package/dist/cjs/x402Specs-B7InXo2L.d.ts +0 -1065
- package/dist/cjs/x402Specs-BLH3j34O.d.ts +0 -1696
- package/dist/cjs/x402Specs-C7LipAZg.d.ts +0 -1715
- package/dist/cjs/x402Specs-CeajqonG.d.ts +0 -1696
- package/dist/cjs/x402Specs-qMujgEV5.d.ts +0 -1715
- package/dist/cjs/x402Specs-qUBCpcuz.d.ts +0 -1715
- package/dist/esm/chunk-UCBE7FDY.mjs.map +0 -1
- package/dist/esm/chunk-ZEZOGZ3K.mjs.map +0 -1
- /package/dist/esm/{chunk-RX2JKK4O.mjs.map → chunk-J3FMDNC3.mjs.map} +0 -0
- /package/dist/esm/{chunk-34YNR4LY.mjs.map → chunk-K5SAFQCZ.mjs.map} +0 -0
- /package/dist/esm/{chunk-CJV3GAPG.mjs.map → chunk-URGZOTVQ.mjs.map} +0 -0
|
@@ -315,6 +315,21 @@ var permit2Types = {
|
|
|
315
315
|
{ name: "amount", type: "uint256" }
|
|
316
316
|
]
|
|
317
317
|
};
|
|
318
|
+
var permit2WitnessTypes = {
|
|
319
|
+
PermitWitnessTransferFrom: [
|
|
320
|
+
{ name: "permitted", type: "TokenPermissions" },
|
|
321
|
+
{ name: "spender", type: "address" },
|
|
322
|
+
{ name: "nonce", type: "uint256" },
|
|
323
|
+
{ name: "deadline", type: "uint256" },
|
|
324
|
+
{ name: "witness", type: "Witness" }
|
|
325
|
+
],
|
|
326
|
+
TokenPermissions: [
|
|
327
|
+
{ name: "token", type: "address" },
|
|
328
|
+
{ name: "amount", type: "uint256" }
|
|
329
|
+
],
|
|
330
|
+
Witness: [{ name: "to", type: "address" }]
|
|
331
|
+
};
|
|
332
|
+
var WITNESS_TYPE_STRING = "Witness(address to)";
|
|
318
333
|
var permit2ABI = [
|
|
319
334
|
{
|
|
320
335
|
inputs: [
|
|
@@ -384,6 +399,45 @@ var permit2ABI = [
|
|
|
384
399
|
outputs: [{ internalType: "uint256", name: "", type: "uint256" }],
|
|
385
400
|
stateMutability: "view",
|
|
386
401
|
type: "function"
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
inputs: [
|
|
405
|
+
{
|
|
406
|
+
components: [
|
|
407
|
+
{
|
|
408
|
+
components: [
|
|
409
|
+
{ internalType: "address", name: "token", type: "address" },
|
|
410
|
+
{ internalType: "uint256", name: "amount", type: "uint256" }
|
|
411
|
+
],
|
|
412
|
+
internalType: "struct ISignatureTransfer.TokenPermissions",
|
|
413
|
+
name: "permitted",
|
|
414
|
+
type: "tuple"
|
|
415
|
+
},
|
|
416
|
+
{ internalType: "uint256", name: "nonce", type: "uint256" },
|
|
417
|
+
{ internalType: "uint256", name: "deadline", type: "uint256" }
|
|
418
|
+
],
|
|
419
|
+
internalType: "struct ISignatureTransfer.PermitTransferFrom",
|
|
420
|
+
name: "permit",
|
|
421
|
+
type: "tuple"
|
|
422
|
+
},
|
|
423
|
+
{
|
|
424
|
+
components: [
|
|
425
|
+
{ internalType: "address", name: "to", type: "address" },
|
|
426
|
+
{ internalType: "uint256", name: "requestedAmount", type: "uint256" }
|
|
427
|
+
],
|
|
428
|
+
internalType: "struct ISignatureTransfer.SignatureTransferDetails",
|
|
429
|
+
name: "transferDetails",
|
|
430
|
+
type: "tuple"
|
|
431
|
+
},
|
|
432
|
+
{ internalType: "address", name: "owner", type: "address" },
|
|
433
|
+
{ internalType: "bytes32", name: "witness", type: "bytes32" },
|
|
434
|
+
{ internalType: "string", name: "witnessTypeString", type: "string" },
|
|
435
|
+
{ internalType: "bytes", name: "signature", type: "bytes" }
|
|
436
|
+
],
|
|
437
|
+
name: "permitWitnessTransferFrom",
|
|
438
|
+
outputs: [],
|
|
439
|
+
stateMutability: "nonpayable",
|
|
440
|
+
type: "function"
|
|
387
441
|
}
|
|
388
442
|
];
|
|
389
443
|
|
|
@@ -1201,6 +1255,8 @@ var ErrorReasons = [
|
|
|
1201
1255
|
"invalid_authorization_type",
|
|
1202
1256
|
"invalid_permit_signature",
|
|
1203
1257
|
"invalid_permit2_signature",
|
|
1258
|
+
"invalid_permit2_witness_signature",
|
|
1259
|
+
"witness_recipient_mismatch",
|
|
1204
1260
|
"permit_expired",
|
|
1205
1261
|
"permit2_expired",
|
|
1206
1262
|
"permit2_not_approved",
|
|
@@ -1208,6 +1264,7 @@ var ErrorReasons = [
|
|
|
1208
1264
|
"invalid_spender_address",
|
|
1209
1265
|
"token_mismatch",
|
|
1210
1266
|
"insufficient_payment_amount",
|
|
1267
|
+
"insufficient_token_balance",
|
|
1211
1268
|
"transaction_failed",
|
|
1212
1269
|
"settlement_failed"
|
|
1213
1270
|
];
|
|
@@ -1250,7 +1307,9 @@ var Permit2EvmPayloadAuthorizationSchema = import_zod3.z.object({
|
|
|
1250
1307
|
token: import_zod3.z.string().regex(EvmAddressRegex),
|
|
1251
1308
|
amount: import_zod3.z.string().refine(isInteger).refine(hasMaxLength(EvmMaxAtomicUnits)),
|
|
1252
1309
|
deadline: import_zod3.z.string().refine(isInteger),
|
|
1253
|
-
nonce: import_zod3.z.string().refine(isInteger)
|
|
1310
|
+
nonce: import_zod3.z.string().refine(isInteger),
|
|
1311
|
+
to: import_zod3.z.string().regex(EvmAddressRegex).optional()
|
|
1312
|
+
// Witness: binds recipient address to signature
|
|
1254
1313
|
});
|
|
1255
1314
|
var ExactEvmPayloadSchema = import_zod3.z.discriminatedUnion("authorizationType", [
|
|
1256
1315
|
import_zod3.z.object({
|
|
@@ -2295,11 +2354,41 @@ async function verify4(client, payload, paymentRequirements) {
|
|
|
2295
2354
|
};
|
|
2296
2355
|
}
|
|
2297
2356
|
const permit2Payload = payload.payload;
|
|
2298
|
-
const { owner, spender, token, amount, deadline, nonce } = permit2Payload.authorization;
|
|
2357
|
+
const { owner, spender, token, amount, deadline, nonce, to } = permit2Payload.authorization;
|
|
2299
2358
|
const chainId = getNetworkId(payload.network);
|
|
2300
2359
|
const tokenAddress = (0, import_viem5.getAddress)(token);
|
|
2301
2360
|
const ownerAddress = (0, import_viem5.getAddress)(owner);
|
|
2302
|
-
const
|
|
2361
|
+
const hasWitness = !!to;
|
|
2362
|
+
if (hasWitness) {
|
|
2363
|
+
if ((0, import_viem5.getAddress)(to) !== (0, import_viem5.getAddress)(paymentRequirements.payTo)) {
|
|
2364
|
+
return {
|
|
2365
|
+
isValid: false,
|
|
2366
|
+
invalidReason: "witness_recipient_mismatch",
|
|
2367
|
+
payer: owner
|
|
2368
|
+
};
|
|
2369
|
+
}
|
|
2370
|
+
}
|
|
2371
|
+
const permit2TypedData = hasWitness ? {
|
|
2372
|
+
types: permit2WitnessTypes,
|
|
2373
|
+
domain: {
|
|
2374
|
+
name: "Permit2",
|
|
2375
|
+
chainId,
|
|
2376
|
+
verifyingContract: PERMIT2_ADDRESS
|
|
2377
|
+
},
|
|
2378
|
+
primaryType: "PermitWitnessTransferFrom",
|
|
2379
|
+
message: {
|
|
2380
|
+
permitted: {
|
|
2381
|
+
token: tokenAddress,
|
|
2382
|
+
amount
|
|
2383
|
+
},
|
|
2384
|
+
spender: (0, import_viem5.getAddress)(spender),
|
|
2385
|
+
nonce,
|
|
2386
|
+
deadline,
|
|
2387
|
+
witness: {
|
|
2388
|
+
to: (0, import_viem5.getAddress)(to)
|
|
2389
|
+
}
|
|
2390
|
+
}
|
|
2391
|
+
} : {
|
|
2303
2392
|
types: permit2Types,
|
|
2304
2393
|
domain: {
|
|
2305
2394
|
name: "Permit2",
|
|
@@ -2325,7 +2414,7 @@ async function verify4(client, payload, paymentRequirements) {
|
|
|
2325
2414
|
if (!recoveredAddress) {
|
|
2326
2415
|
return {
|
|
2327
2416
|
isValid: false,
|
|
2328
|
-
invalidReason: "invalid_permit2_signature",
|
|
2417
|
+
invalidReason: hasWitness ? "invalid_permit2_witness_signature" : "invalid_permit2_signature",
|
|
2329
2418
|
payer: owner
|
|
2330
2419
|
};
|
|
2331
2420
|
}
|
|
@@ -2400,10 +2489,34 @@ async function settle4(wallet, paymentPayload, paymentRequirements) {
|
|
|
2400
2489
|
payer: permit2Payload.authorization.owner
|
|
2401
2490
|
};
|
|
2402
2491
|
}
|
|
2403
|
-
const { owner, token, amount, deadline, nonce } = permit2Payload.authorization;
|
|
2492
|
+
const { owner, token, amount, deadline, nonce, to } = permit2Payload.authorization;
|
|
2404
2493
|
const tokenAddress = (0, import_viem5.getAddress)(token);
|
|
2405
2494
|
const ownerAddress = (0, import_viem5.getAddress)(owner);
|
|
2406
|
-
const
|
|
2495
|
+
const hasWitness = !!to;
|
|
2496
|
+
const tx = hasWitness ? await wallet.writeContract({
|
|
2497
|
+
address: PERMIT2_ADDRESS,
|
|
2498
|
+
abi: permit2ABI,
|
|
2499
|
+
functionName: "permitWitnessTransferFrom",
|
|
2500
|
+
args: [
|
|
2501
|
+
{
|
|
2502
|
+
permitted: {
|
|
2503
|
+
token: tokenAddress,
|
|
2504
|
+
amount: BigInt(amount)
|
|
2505
|
+
},
|
|
2506
|
+
nonce: BigInt(nonce),
|
|
2507
|
+
deadline: BigInt(deadline)
|
|
2508
|
+
},
|
|
2509
|
+
{
|
|
2510
|
+
to: paymentRequirements.payTo,
|
|
2511
|
+
requestedAmount: BigInt(amount)
|
|
2512
|
+
},
|
|
2513
|
+
ownerAddress,
|
|
2514
|
+
(0, import_viem5.keccak256)((0, import_viem5.encodeAbiParameters)([{ type: "address", name: "to" }], [(0, import_viem5.getAddress)(to)])),
|
|
2515
|
+
WITNESS_TYPE_STRING,
|
|
2516
|
+
permit2Payload.signature
|
|
2517
|
+
],
|
|
2518
|
+
chain: wallet.chain
|
|
2519
|
+
}) : await wallet.writeContract({
|
|
2407
2520
|
address: PERMIT2_ADDRESS,
|
|
2408
2521
|
abi: permit2ABI,
|
|
2409
2522
|
functionName: "permitTransferFrom",
|