@payai/x402-evm 2.4.1 → 2.4.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 (143) hide show
  1. package/dist/cjs/batch-settlement/client/file-storage.d.ts +47 -0
  2. package/dist/cjs/batch-settlement/client/file-storage.js +116 -0
  3. package/dist/cjs/batch-settlement/client/file-storage.js.map +1 -0
  4. package/dist/cjs/batch-settlement/client/index.d.ts +111 -0
  5. package/dist/cjs/batch-settlement/client/index.js +1565 -0
  6. package/dist/cjs/batch-settlement/client/index.js.map +1 -0
  7. package/dist/cjs/batch-settlement/facilitator/index.d.ts +71 -0
  8. package/dist/cjs/batch-settlement/facilitator/index.js +2032 -0
  9. package/dist/cjs/batch-settlement/facilitator/index.js.map +1 -0
  10. package/dist/cjs/batch-settlement/server/file-storage.d.ts +53 -0
  11. package/dist/cjs/batch-settlement/server/file-storage.js +181 -0
  12. package/dist/cjs/batch-settlement/server/file-storage.js.map +1 -0
  13. package/dist/cjs/batch-settlement/server/index.d.ts +491 -0
  14. package/dist/cjs/batch-settlement/server/index.js +1960 -0
  15. package/dist/cjs/batch-settlement/server/index.js.map +1 -0
  16. package/dist/cjs/batch-settlement/server/redis-storage.d.ts +87 -0
  17. package/dist/cjs/batch-settlement/server/redis-storage.js +181 -0
  18. package/dist/cjs/batch-settlement/server/redis-storage.js.map +1 -0
  19. package/dist/cjs/exact/client/index.d.ts +6 -4
  20. package/dist/cjs/exact/client/index.js +7 -5
  21. package/dist/cjs/exact/client/index.js.map +1 -1
  22. package/dist/cjs/exact/facilitator/index.d.ts +16 -9
  23. package/dist/cjs/exact/facilitator/index.js +35 -7
  24. package/dist/cjs/exact/facilitator/index.js.map +1 -1
  25. package/dist/cjs/exact/server/index.js +40 -1
  26. package/dist/cjs/exact/server/index.js.map +1 -1
  27. package/dist/cjs/exact/v1/client/index.d.ts +2 -1
  28. package/dist/cjs/exact/v1/client/index.js.map +1 -1
  29. package/dist/cjs/exact/v1/facilitator/index.d.ts +11 -5
  30. package/dist/cjs/exact/v1/facilitator/index.js +16 -2
  31. package/dist/cjs/exact/v1/facilitator/index.js.map +1 -1
  32. package/dist/cjs/index.d.ts +113 -7
  33. package/dist/cjs/index.js +1353 -5
  34. package/dist/cjs/index.js.map +1 -1
  35. package/dist/{esm/permit2-CyZxwngN.d.mts → cjs/permit2-DhJRUcgY.d.ts} +1 -13
  36. package/dist/cjs/rpc-DULZzRne.d.ts +13 -0
  37. package/dist/cjs/scheme-CvkPJXBD.d.ts +307 -0
  38. package/dist/{esm/scheme-DCR7hsa3.d.mts → cjs/scheme-DTQFE9xp.d.ts} +2 -2
  39. package/dist/{esm/signer-D912R4mq.d.mts → cjs/signer-tYS6Y46X.d.ts} +3 -0
  40. package/dist/cjs/storage-6W5MO46W.d.ts +50 -0
  41. package/dist/cjs/storage-Bl6aD0Xg.d.ts +81 -0
  42. package/dist/cjs/types-CF8P2-NM.d.ts +180 -0
  43. package/dist/cjs/upto/client/index.d.ts +5 -3
  44. package/dist/cjs/upto/client/index.js +7 -5
  45. package/dist/cjs/upto/client/index.js.map +1 -1
  46. package/dist/cjs/upto/facilitator/index.d.ts +2 -1
  47. package/dist/cjs/upto/facilitator/index.js +2 -1
  48. package/dist/cjs/upto/facilitator/index.js.map +1 -1
  49. package/dist/cjs/upto/server/index.js +40 -1
  50. package/dist/cjs/upto/server/index.js.map +1 -1
  51. package/dist/cjs/v1/index.d.ts +2 -1
  52. package/dist/cjs/v1/index.js.map +1 -1
  53. package/dist/esm/batch-settlement/client/file-storage.d.mts +47 -0
  54. package/dist/esm/batch-settlement/client/file-storage.mjs +63 -0
  55. package/dist/esm/batch-settlement/client/file-storage.mjs.map +1 -0
  56. package/dist/esm/batch-settlement/client/index.d.mts +111 -0
  57. package/dist/esm/batch-settlement/client/index.mjs +59 -0
  58. package/dist/esm/batch-settlement/client/index.mjs.map +1 -0
  59. package/dist/esm/batch-settlement/facilitator/index.d.mts +71 -0
  60. package/dist/esm/batch-settlement/facilitator/index.mjs +1235 -0
  61. package/dist/esm/batch-settlement/facilitator/index.mjs.map +1 -0
  62. package/dist/esm/batch-settlement/server/file-storage.d.mts +53 -0
  63. package/dist/esm/batch-settlement/server/file-storage.mjs +128 -0
  64. package/dist/esm/batch-settlement/server/file-storage.mjs.map +1 -0
  65. package/dist/esm/batch-settlement/server/index.d.mts +491 -0
  66. package/dist/esm/batch-settlement/server/index.mjs +1645 -0
  67. package/dist/esm/batch-settlement/server/index.mjs.map +1 -0
  68. package/dist/esm/batch-settlement/server/redis-storage.d.mts +87 -0
  69. package/dist/esm/batch-settlement/server/redis-storage.mjs +156 -0
  70. package/dist/esm/batch-settlement/server/redis-storage.mjs.map +1 -0
  71. package/dist/esm/chunk-2EUQTNJO.mjs +38 -0
  72. package/dist/esm/chunk-2EUQTNJO.mjs.map +1 -0
  73. package/dist/esm/chunk-53USC5VE.mjs +47 -0
  74. package/dist/esm/chunk-53USC5VE.mjs.map +1 -0
  75. package/dist/esm/{chunk-GJ57SZGI.mjs → chunk-6WQOGWBE.mjs} +7 -5
  76. package/dist/esm/{chunk-GJ57SZGI.mjs.map → chunk-6WQOGWBE.mjs.map} +1 -1
  77. package/dist/esm/{chunk-F3OOHBAW.mjs → chunk-BTYNCDNS.mjs} +42 -2
  78. package/dist/esm/{chunk-F3OOHBAW.mjs.map → chunk-BTYNCDNS.mjs.map} +1 -1
  79. package/dist/esm/{chunk-ERK2ZPOY.mjs → chunk-CSQS7ZON.mjs} +27 -7
  80. package/dist/esm/chunk-CSQS7ZON.mjs.map +1 -0
  81. package/dist/esm/chunk-GD4MKCN7.mjs +57 -0
  82. package/dist/esm/chunk-GD4MKCN7.mjs.map +1 -0
  83. package/dist/esm/chunk-HYABYUBD.mjs +432 -0
  84. package/dist/esm/chunk-HYABYUBD.mjs.map +1 -0
  85. package/dist/esm/chunk-IN5YIT5C.mjs +159 -0
  86. package/dist/esm/chunk-IN5YIT5C.mjs.map +1 -0
  87. package/dist/esm/{chunk-JII456TS.mjs → chunk-JK7SLLF7.mjs} +1 -1
  88. package/dist/esm/chunk-JK7SLLF7.mjs.map +1 -0
  89. package/dist/esm/{chunk-C4ZQMS77.mjs → chunk-MACPBXCT.mjs} +2 -216
  90. package/dist/esm/chunk-MACPBXCT.mjs.map +1 -0
  91. package/dist/esm/chunk-NKYVYGRA.mjs +911 -0
  92. package/dist/esm/chunk-NKYVYGRA.mjs.map +1 -0
  93. package/dist/esm/{chunk-FQJR4RCF.mjs → chunk-R7I3RZFF.mjs} +10 -6
  94. package/dist/esm/{chunk-FQJR4RCF.mjs.map → chunk-R7I3RZFF.mjs.map} +1 -1
  95. package/dist/esm/{chunk-CRT6YNY5.mjs → chunk-RWLVVO3B.mjs} +21 -61
  96. package/dist/esm/chunk-RWLVVO3B.mjs.map +1 -0
  97. package/dist/esm/chunk-TGFAVNUD.mjs +111 -0
  98. package/dist/esm/chunk-TGFAVNUD.mjs.map +1 -0
  99. package/dist/esm/chunk-TW7Z65AO.mjs +34 -0
  100. package/dist/esm/chunk-TW7Z65AO.mjs.map +1 -0
  101. package/dist/esm/chunk-U4HCGTLU.mjs +35 -0
  102. package/dist/esm/chunk-U4HCGTLU.mjs.map +1 -0
  103. package/dist/esm/chunk-VS3RYAYE.mjs +80 -0
  104. package/dist/esm/chunk-VS3RYAYE.mjs.map +1 -0
  105. package/dist/esm/chunk-W6ON4LG2.mjs +39 -0
  106. package/dist/esm/chunk-W6ON4LG2.mjs.map +1 -0
  107. package/dist/esm/{chunk-WKBC5YMI.mjs → chunk-YMQCTKDU.mjs} +23 -55
  108. package/dist/esm/chunk-YMQCTKDU.mjs.map +1 -0
  109. package/dist/esm/exact/client/index.d.mts +6 -4
  110. package/dist/esm/exact/client/index.mjs +10 -5
  111. package/dist/esm/exact/facilitator/index.d.mts +16 -9
  112. package/dist/esm/exact/facilitator/index.mjs +36 -14
  113. package/dist/esm/exact/facilitator/index.mjs.map +1 -1
  114. package/dist/esm/exact/server/index.mjs +1 -1
  115. package/dist/esm/exact/v1/client/index.d.mts +2 -1
  116. package/dist/esm/exact/v1/client/index.mjs +5 -2
  117. package/dist/esm/exact/v1/facilitator/index.d.mts +11 -5
  118. package/dist/esm/exact/v1/facilitator/index.mjs +5 -2
  119. package/dist/esm/index.d.mts +113 -7
  120. package/dist/esm/index.mjs +53 -7
  121. package/dist/esm/index.mjs.map +1 -1
  122. package/dist/esm/permit2-DhJRUcgY.d.mts +729 -0
  123. package/dist/esm/rpc-DULZzRne.d.mts +13 -0
  124. package/dist/esm/scheme-DtbSS4Fk.d.mts +307 -0
  125. package/dist/esm/scheme-gtqAIYPJ.d.mts +47 -0
  126. package/dist/esm/signer-tYS6Y46X.d.mts +170 -0
  127. package/dist/esm/storage-6W5MO46W.d.mts +50 -0
  128. package/dist/esm/storage-sZ1CDS4P.d.mts +81 -0
  129. package/dist/esm/types-CF8P2-NM.d.mts +180 -0
  130. package/dist/esm/upto/client/index.d.mts +5 -3
  131. package/dist/esm/upto/client/index.mjs +9 -4
  132. package/dist/esm/upto/facilitator/index.d.mts +2 -1
  133. package/dist/esm/upto/facilitator/index.mjs +17 -9
  134. package/dist/esm/upto/facilitator/index.mjs.map +1 -1
  135. package/dist/esm/upto/server/index.mjs +1 -1
  136. package/dist/esm/v1/index.d.mts +2 -1
  137. package/dist/esm/v1/index.mjs +5 -2
  138. package/package.json +5 -5
  139. package/dist/esm/chunk-C4ZQMS77.mjs.map +0 -1
  140. package/dist/esm/chunk-CRT6YNY5.mjs.map +0 -1
  141. package/dist/esm/chunk-ERK2ZPOY.mjs.map +0 -1
  142. package/dist/esm/chunk-JII456TS.mjs.map +0 -1
  143. package/dist/esm/chunk-WKBC5YMI.mjs.map +0 -1
@@ -1,15 +1,19 @@
1
1
  import { SchemeNetworkFacilitator, PaymentPayload, PaymentRequirements, FacilitatorContext, VerifyResponse, SettleResponse, Network } from '@payai/x402/types';
2
- import { F as FacilitatorEvmSigner } from '../../signer-D912R4mq.js';
2
+ import { F as FacilitatorEvmSigner } from '../../signer-tYS6Y46X.js';
3
3
  import { x402Facilitator } from '@payai/x402/facilitator';
4
+ import 'viem';
4
5
 
5
6
  interface ExactEvmSchemeConfig {
6
7
  /**
7
- * If enabled, the facilitator will deploy ERC-4337 smart wallets
8
- * via EIP-6492 when encountering undeployed contract signatures.
8
+ * Allowlist of factory contract addresses (hex strings, case-insensitive) that the facilitator
9
+ * will call when deploying an undeployed smart wallet via ERC-6492.
9
10
  *
10
- * @default false
11
+ * A non-empty list enables ERC-4337 smart wallet deployment via EIP-6492. An empty or omitted
12
+ * list denies all factory deployment calls (feature disabled by default).
13
+ *
14
+ * @default []
11
15
  */
12
- deployERC4337WithEIP6492?: boolean;
16
+ eip6492AllowedFactories?: string[];
13
17
  /**
14
18
  * If enabled, run on-chain simulation during settle's re-verify.
15
19
  *
@@ -83,12 +87,15 @@ interface EvmFacilitatorConfig {
83
87
  */
84
88
  networks: Network | Network[];
85
89
  /**
86
- * If enabled, the facilitator will deploy ERC-4337 smart wallets
87
- * via EIP-6492 when encountering undeployed contract signatures.
90
+ * Allowlist of factory contract addresses (hex strings, case-insensitive) that the facilitator
91
+ * will call when deploying an undeployed smart wallet via ERC-6492.
88
92
  *
89
- * @default false
93
+ * A non-empty list enables ERC-4337 smart wallet deployment via EIP-6492. An empty or omitted
94
+ * list denies all factory deployment calls (feature disabled by default).
95
+ *
96
+ * @default []
90
97
  */
91
- deployERC4337WithEIP6492?: boolean;
98
+ eip6492AllowedFactories?: string[];
92
99
  /**
93
100
  * If enabled, reruns on-chain simulation during settle's re-verify.
94
101
  *
@@ -336,6 +336,7 @@ var ErrEip2612SpenderNotPermit2 = "eip2612_spender_not_permit2";
336
336
  var ErrEip2612DeadlineExpired = "eip2612_deadline_expired";
337
337
  var ErrUnsupportedPayloadType = "unsupported_payload_type";
338
338
  var ErrInvalidTransactionState = "invalid_transaction_state";
339
+ var ErrFactoryNotAllowed = "eip6492_factory_not_allowed";
339
340
 
340
341
  // src/exact/facilitator/eip3009-utils.ts
341
342
  var import_viem3 = require("viem");
@@ -743,9 +744,22 @@ async function settleEIP3009(signer, payload, requirements, eip3009Payload, conf
743
744
  const { address: factoryAddress, data: factoryCalldata } = (0, import_viem4.parseErc6492Signature)(
744
745
  eip3009Payload.signature
745
746
  );
746
- if (config.deployERC4337WithEIP6492 && factoryAddress && factoryCalldata && !(0, import_viem4.isAddressEqual)(factoryAddress, "0x0000000000000000000000000000000000000000")) {
747
+ if (factoryAddress && factoryCalldata && !(0, import_viem4.isAddressEqual)(factoryAddress, "0x0000000000000000000000000000000000000000")) {
747
748
  const bytecode = await signer.getCode({ address: payer });
748
749
  if (!bytecode || bytecode === "0x") {
750
+ const normalizedFactory = factoryAddress.toLowerCase();
751
+ const isAllowed = (config.eip6492AllowedFactories ?? []).some(
752
+ (allowed) => allowed.toLowerCase() === normalizedFactory
753
+ );
754
+ if (!isAllowed) {
755
+ return {
756
+ success: false,
757
+ errorReason: ErrFactoryNotAllowed,
758
+ transaction: "",
759
+ network: payload.accepted.network,
760
+ payer
761
+ };
762
+ }
749
763
  const deployTx = await signer.sendTransaction({
750
764
  to: factoryAddress,
751
765
  data: factoryCalldata
@@ -1140,6 +1154,7 @@ async function checkPermit2Prerequisites(config, signer, tokenAddress, payer, am
1140
1154
  return { isValid: true, invalidReason: void 0, payer };
1141
1155
  }
1142
1156
  function buildExactPermit2SettleArgs(permit2Payload) {
1157
+ const { signature } = (0, import_viem6.parseErc6492Signature)(permit2Payload.signature);
1143
1158
  return [
1144
1159
  {
1145
1160
  permitted: {
@@ -1154,7 +1169,7 @@ function buildExactPermit2SettleArgs(permit2Payload) {
1154
1169
  to: (0, import_viem6.getAddress)(permit2Payload.permit2Authorization.witness.to),
1155
1170
  validAfter: BigInt(permit2Payload.permit2Authorization.witness.validAfter)
1156
1171
  },
1157
- permit2Payload.signature
1172
+ signature
1158
1173
  ];
1159
1174
  }
1160
1175
  function splitEip2612Signature(signature) {
@@ -1472,7 +1487,7 @@ var ExactEvmScheme = class {
1472
1487
  this.scheme = "exact";
1473
1488
  this.caipFamily = "eip155:*";
1474
1489
  this.config = {
1475
- deployERC4337WithEIP6492: config?.deployERC4337WithEIP6492 ?? false,
1490
+ eip6492AllowedFactories: config?.eip6492AllowedFactories ?? [],
1476
1491
  simulateInSettle: config?.simulateInSettle ?? false
1477
1492
  };
1478
1493
  }
@@ -1586,7 +1601,7 @@ var ExactEvmSchemeV12 = class {
1586
1601
  this.scheme = "exact";
1587
1602
  this.caipFamily = "eip155:*";
1588
1603
  this.config = {
1589
- deployERC4337WithEIP6492: config?.deployERC4337WithEIP6492 ?? false,
1604
+ eip6492AllowedFactories: config?.eip6492AllowedFactories ?? [],
1590
1605
  simulateInSettle: config?.simulateInSettle ?? false
1591
1606
  };
1592
1607
  }
@@ -1646,10 +1661,23 @@ var ExactEvmSchemeV12 = class {
1646
1661
  const { address: factoryAddress, data: factoryCalldata } = (0, import_viem9.parseErc6492Signature)(
1647
1662
  exactEvmPayload.signature
1648
1663
  );
1649
- if (this.config.deployERC4337WithEIP6492 && factoryAddress && factoryCalldata && !(0, import_viem9.isAddressEqual)(factoryAddress, "0x0000000000000000000000000000000000000000")) {
1664
+ if (factoryAddress && factoryCalldata && !(0, import_viem9.isAddressEqual)(factoryAddress, "0x0000000000000000000000000000000000000000")) {
1650
1665
  const payerAddress = exactEvmPayload.authorization.from;
1651
1666
  const bytecode = await this.signer.getCode({ address: payerAddress });
1652
1667
  if (!bytecode || bytecode === "0x") {
1668
+ const normalizedFactory = factoryAddress.toLowerCase();
1669
+ const isAllowed = (this.config.eip6492AllowedFactories ?? []).some(
1670
+ (allowed) => allowed.toLowerCase() === normalizedFactory
1671
+ );
1672
+ if (!isAllowed) {
1673
+ return {
1674
+ success: false,
1675
+ errorReason: ErrFactoryNotAllowed,
1676
+ transaction: "",
1677
+ network: payloadV1.network,
1678
+ payer: exactEvmPayload.authorization.from
1679
+ };
1680
+ }
1653
1681
  const deployTx = await this.signer.sendTransaction({
1654
1682
  to: factoryAddress,
1655
1683
  data: factoryCalldata
@@ -1851,14 +1879,14 @@ function registerExactEvmScheme(facilitator, config) {
1851
1879
  facilitator.register(
1852
1880
  config.networks,
1853
1881
  new ExactEvmScheme(config.signer, {
1854
- deployERC4337WithEIP6492: config.deployERC4337WithEIP6492,
1882
+ eip6492AllowedFactories: config.eip6492AllowedFactories,
1855
1883
  simulateInSettle: config.simulateInSettle
1856
1884
  })
1857
1885
  );
1858
1886
  facilitator.registerV1(
1859
1887
  NETWORKS,
1860
1888
  new ExactEvmSchemeV12(config.signer, {
1861
- deployERC4337WithEIP6492: config.deployERC4337WithEIP6492,
1889
+ eip6492AllowedFactories: config.eip6492AllowedFactories,
1862
1890
  simulateInSettle: config.simulateInSettle
1863
1891
  })
1864
1892
  );