@aa-sdk/core 4.0.0-alpha.1 → 4.0.0-alpha.11

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 (275) hide show
  1. package/dist/cjs/account/smartContractAccount.d.ts +9 -3
  2. package/dist/cjs/account/smartContractAccount.js +11 -6
  3. package/dist/cjs/account/smartContractAccount.js.map +1 -1
  4. package/dist/cjs/actions/smartAccount/buildUserOperationFromTx.js.map +1 -1
  5. package/dist/cjs/actions/smartAccount/buildUserOperationFromTxs.js.map +1 -1
  6. package/dist/cjs/actions/smartAccount/checkGasSponsorshipEligibility.js.map +1 -1
  7. package/dist/cjs/actions/smartAccount/dropAndReplaceUserOperation.js +1 -5
  8. package/dist/cjs/actions/smartAccount/dropAndReplaceUserOperation.js.map +1 -1
  9. package/dist/cjs/actions/smartAccount/estimateUserOperationGas.js.map +1 -1
  10. package/dist/cjs/actions/smartAccount/internal/initUserOperation.js.map +1 -1
  11. package/dist/cjs/actions/smartAccount/internal/runMiddlewareStack.js.map +1 -1
  12. package/dist/cjs/actions/smartAccount/internal/sendUserOperation.js.map +1 -1
  13. package/dist/cjs/actions/smartAccount/sendUserOperation.js.map +1 -1
  14. package/dist/cjs/client/bundlerClient.js.map +1 -1
  15. package/dist/cjs/client/decorators/bundlerClient.js.map +1 -1
  16. package/dist/cjs/client/isSmartAccountClient.js.map +1 -1
  17. package/dist/cjs/client/smartAccountClient.js +6 -0
  18. package/dist/cjs/client/smartAccountClient.js.map +1 -1
  19. package/dist/cjs/client/types.d.ts +2 -7
  20. package/dist/cjs/client/types.js.map +1 -1
  21. package/dist/cjs/ens/utils.d.ts +1 -1
  22. package/dist/cjs/ens/utils.js +3 -3
  23. package/dist/cjs/ens/utils.js.map +1 -1
  24. package/dist/cjs/errors/account.js.map +1 -1
  25. package/dist/cjs/errors/client.js.map +1 -1
  26. package/dist/cjs/errors/entrypoint.js.map +1 -1
  27. package/dist/cjs/errors/signer.js.map +1 -1
  28. package/dist/cjs/errors/transaction.js.map +1 -1
  29. package/dist/cjs/errors/useroperation.js.map +1 -1
  30. package/dist/cjs/index.d.ts +3 -6
  31. package/dist/cjs/index.js +38 -64
  32. package/dist/cjs/index.js.map +1 -1
  33. package/dist/cjs/logger.js.map +1 -1
  34. package/dist/cjs/middleware/actions.js +2 -18
  35. package/dist/cjs/middleware/actions.js.map +1 -1
  36. package/dist/cjs/middleware/defaults/gasEstimator.js +4 -2
  37. package/dist/cjs/middleware/defaults/gasEstimator.js.map +1 -1
  38. package/dist/cjs/middleware/erc7677middleware.d.ts +40 -0
  39. package/dist/cjs/middleware/erc7677middleware.js +77 -0
  40. package/dist/cjs/middleware/erc7677middleware.js.map +1 -0
  41. package/dist/cjs/middleware/noopMiddleware.d.ts +2 -1
  42. package/dist/cjs/middleware/noopMiddleware.js.map +1 -1
  43. package/dist/cjs/middleware/types.d.ts +3 -2
  44. package/dist/cjs/middleware/types.js.map +1 -1
  45. package/dist/cjs/signer/local-account.d.ts +44 -44
  46. package/dist/cjs/signer/local-account.js.map +1 -1
  47. package/dist/cjs/signer/wallet-client.d.ts +44 -44
  48. package/dist/cjs/signer/wallet-client.js.map +1 -1
  49. package/dist/cjs/transport/split.js.map +1 -1
  50. package/dist/cjs/utils/bigint.js.map +1 -1
  51. package/dist/cjs/utils/bytes.js.map +1 -1
  52. package/dist/cjs/utils/defaults.d.ts +2 -4
  53. package/dist/cjs/utils/defaults.js +5 -45
  54. package/dist/cjs/utils/defaults.js.map +1 -1
  55. package/dist/cjs/utils/index.d.ts +0 -3
  56. package/dist/cjs/utils/index.js +1 -25
  57. package/dist/cjs/utils/index.js.map +1 -1
  58. package/dist/cjs/utils/types.js.map +1 -1
  59. package/dist/cjs/utils/userop.js.map +1 -1
  60. package/dist/cjs/version.d.ts +1 -1
  61. package/dist/cjs/version.js +1 -1
  62. package/dist/cjs/version.js.map +1 -1
  63. package/dist/esm/account/smartContractAccount.d.ts +9 -3
  64. package/dist/esm/account/smartContractAccount.js +6 -1
  65. package/dist/esm/account/smartContractAccount.js.map +1 -1
  66. package/dist/esm/actions/smartAccount/buildUserOperationFromTx.js.map +1 -1
  67. package/dist/esm/actions/smartAccount/buildUserOperationFromTxs.js.map +1 -1
  68. package/dist/esm/actions/smartAccount/checkGasSponsorshipEligibility.js.map +1 -1
  69. package/dist/esm/actions/smartAccount/dropAndReplaceUserOperation.js +2 -6
  70. package/dist/esm/actions/smartAccount/dropAndReplaceUserOperation.js.map +1 -1
  71. package/dist/esm/actions/smartAccount/estimateUserOperationGas.js.map +1 -1
  72. package/dist/esm/actions/smartAccount/internal/initUserOperation.js.map +1 -1
  73. package/dist/esm/actions/smartAccount/internal/runMiddlewareStack.js.map +1 -1
  74. package/dist/esm/actions/smartAccount/internal/sendUserOperation.js.map +1 -1
  75. package/dist/esm/actions/smartAccount/sendUserOperation.js.map +1 -1
  76. package/dist/esm/client/bundlerClient.js.map +1 -1
  77. package/dist/esm/client/decorators/bundlerClient.js.map +1 -1
  78. package/dist/esm/client/isSmartAccountClient.js.map +1 -1
  79. package/dist/esm/client/smartAccountClient.js +6 -0
  80. package/dist/esm/client/smartAccountClient.js.map +1 -1
  81. package/dist/esm/client/types.d.ts +2 -7
  82. package/dist/esm/client/types.js.map +1 -1
  83. package/dist/esm/ens/utils.d.ts +1 -1
  84. package/dist/esm/ens/utils.js +1 -1
  85. package/dist/esm/ens/utils.js.map +1 -1
  86. package/dist/esm/errors/account.js.map +1 -1
  87. package/dist/esm/errors/client.js.map +1 -1
  88. package/dist/esm/errors/entrypoint.js.map +1 -1
  89. package/dist/esm/errors/signer.js.map +1 -1
  90. package/dist/esm/errors/transaction.js.map +1 -1
  91. package/dist/esm/errors/useroperation.js.map +1 -1
  92. package/dist/esm/index.d.ts +3 -6
  93. package/dist/esm/index.js +2 -4
  94. package/dist/esm/index.js.map +1 -1
  95. package/dist/esm/logger.js.map +1 -1
  96. package/dist/esm/middleware/actions.js +3 -18
  97. package/dist/esm/middleware/actions.js.map +1 -1
  98. package/dist/esm/middleware/defaults/gasEstimator.js +4 -2
  99. package/dist/esm/middleware/defaults/gasEstimator.js.map +1 -1
  100. package/dist/esm/middleware/erc7677middleware.d.ts +40 -0
  101. package/dist/esm/middleware/erc7677middleware.js +73 -0
  102. package/dist/esm/middleware/erc7677middleware.js.map +1 -0
  103. package/dist/esm/middleware/noopMiddleware.d.ts +2 -1
  104. package/dist/esm/middleware/noopMiddleware.js.map +1 -1
  105. package/dist/esm/middleware/types.d.ts +3 -2
  106. package/dist/esm/middleware/types.js.map +1 -1
  107. package/dist/esm/signer/local-account.d.ts +44 -44
  108. package/dist/esm/signer/local-account.js.map +1 -1
  109. package/dist/esm/signer/wallet-client.d.ts +44 -44
  110. package/dist/esm/signer/wallet-client.js.map +1 -1
  111. package/dist/esm/transport/split.js.map +1 -1
  112. package/dist/esm/utils/bigint.js.map +1 -1
  113. package/dist/esm/utils/bytes.js.map +1 -1
  114. package/dist/esm/utils/defaults.d.ts +2 -4
  115. package/dist/esm/utils/defaults.js +1 -40
  116. package/dist/esm/utils/defaults.js.map +1 -1
  117. package/dist/esm/utils/index.d.ts +0 -3
  118. package/dist/esm/utils/index.js +0 -11
  119. package/dist/esm/utils/index.js.map +1 -1
  120. package/dist/esm/utils/types.js.map +1 -1
  121. package/dist/esm/utils/userop.js.map +1 -1
  122. package/dist/esm/version.d.ts +1 -1
  123. package/dist/esm/version.js +1 -1
  124. package/dist/esm/version.js.map +1 -1
  125. package/dist/types/account/smartContractAccount.d.ts +17 -11
  126. package/dist/types/account/smartContractAccount.d.ts.map +1 -1
  127. package/dist/types/actions/smartAccount/buildUserOperationFromTx.d.ts +33 -33
  128. package/dist/types/actions/smartAccount/buildUserOperationFromTxs.d.ts +43 -59
  129. package/dist/types/actions/smartAccount/buildUserOperationFromTxs.d.ts.map +1 -1
  130. package/dist/types/actions/smartAccount/checkGasSponsorshipEligibility.d.ts +18 -18
  131. package/dist/types/actions/smartAccount/dropAndReplaceUserOperation.d.ts.map +1 -1
  132. package/dist/types/actions/smartAccount/estimateUserOperationGas.d.ts +3 -3
  133. package/dist/types/actions/smartAccount/internal/initUserOperation.d.ts +3 -4
  134. package/dist/types/actions/smartAccount/internal/initUserOperation.d.ts.map +1 -1
  135. package/dist/types/actions/smartAccount/internal/runMiddlewareStack.d.ts +0 -14
  136. package/dist/types/actions/smartAccount/internal/runMiddlewareStack.d.ts.map +1 -1
  137. package/dist/types/actions/smartAccount/internal/sendUserOperation.d.ts +0 -7
  138. package/dist/types/actions/smartAccount/internal/sendUserOperation.d.ts.map +1 -1
  139. package/dist/types/actions/smartAccount/sendUserOperation.d.ts +17 -3
  140. package/dist/types/actions/smartAccount/sendUserOperation.d.ts.map +1 -1
  141. package/dist/types/client/bundlerClient.d.ts +2 -2
  142. package/dist/types/client/decorators/bundlerClient.d.ts +8 -8
  143. package/dist/types/client/isSmartAccountClient.d.ts +4 -4
  144. package/dist/types/client/smartAccountClient.d.ts.map +1 -1
  145. package/dist/types/client/types.d.ts +2 -7
  146. package/dist/types/client/types.d.ts.map +1 -1
  147. package/dist/types/ens/utils.d.ts +1 -1
  148. package/dist/types/ens/utils.d.ts.map +1 -1
  149. package/dist/types/errors/account.d.ts +53 -4
  150. package/dist/types/errors/account.d.ts.map +1 -1
  151. package/dist/types/errors/client.d.ts +15 -0
  152. package/dist/types/errors/client.d.ts.map +1 -1
  153. package/dist/types/errors/entrypoint.d.ts +12 -0
  154. package/dist/types/errors/entrypoint.d.ts.map +1 -1
  155. package/dist/types/errors/signer.d.ts +5 -0
  156. package/dist/types/errors/signer.d.ts.map +1 -1
  157. package/dist/types/errors/transaction.d.ts +8 -1
  158. package/dist/types/errors/transaction.d.ts.map +1 -1
  159. package/dist/types/errors/useroperation.d.ts +5 -5
  160. package/dist/types/errors/useroperation.d.ts.map +1 -1
  161. package/dist/types/index.d.ts +3 -6
  162. package/dist/types/index.d.ts.map +1 -1
  163. package/dist/types/logger.d.ts +88 -0
  164. package/dist/types/logger.d.ts.map +1 -1
  165. package/dist/types/middleware/actions.d.ts +3 -3
  166. package/dist/types/middleware/actions.d.ts.map +1 -1
  167. package/dist/types/middleware/defaults/gasEstimator.d.ts +2 -2
  168. package/dist/types/middleware/defaults/gasEstimator.d.ts.map +1 -1
  169. package/dist/types/middleware/erc7677middleware.d.ts +62 -0
  170. package/dist/types/middleware/erc7677middleware.d.ts.map +1 -0
  171. package/dist/types/middleware/noopMiddleware.d.ts +4 -4
  172. package/dist/types/middleware/noopMiddleware.d.ts.map +1 -1
  173. package/dist/types/middleware/types.d.ts +3 -2
  174. package/dist/types/middleware/types.d.ts.map +1 -1
  175. package/dist/types/signer/local-account.d.ts +137 -45
  176. package/dist/types/signer/local-account.d.ts.map +1 -1
  177. package/dist/types/signer/wallet-client.d.ts +133 -44
  178. package/dist/types/signer/wallet-client.d.ts.map +1 -1
  179. package/dist/types/transport/split.d.ts +3 -3
  180. package/dist/types/utils/bigint.d.ts +14 -14
  181. package/dist/types/utils/bigint.d.ts.map +1 -1
  182. package/dist/types/utils/bytes.d.ts +5 -5
  183. package/dist/types/utils/defaults.d.ts +2 -12
  184. package/dist/types/utils/defaults.d.ts.map +1 -1
  185. package/dist/types/utils/index.d.ts +12 -22
  186. package/dist/types/utils/index.d.ts.map +1 -1
  187. package/dist/types/utils/types.d.ts +2 -2
  188. package/dist/types/utils/userop.d.ts +33 -33
  189. package/dist/types/version.d.ts +1 -1
  190. package/dist/types/version.d.ts.map +1 -1
  191. package/package.json +4 -3
  192. package/src/account/smartContractAccount.ts +19 -13
  193. package/src/actions/smartAccount/buildUserOperationFromTx.ts +35 -35
  194. package/src/actions/smartAccount/buildUserOperationFromTxs.ts +44 -60
  195. package/src/actions/smartAccount/checkGasSponsorshipEligibility.ts +19 -19
  196. package/src/actions/smartAccount/dropAndReplaceUserOperation.ts +10 -10
  197. package/src/actions/smartAccount/estimateUserOperationGas.ts +3 -3
  198. package/src/actions/smartAccount/internal/initUserOperation.ts +3 -4
  199. package/src/actions/smartAccount/internal/runMiddlewareStack.ts +0 -22
  200. package/src/actions/smartAccount/internal/sendUserOperation.ts +0 -7
  201. package/src/actions/smartAccount/sendUserOperation.ts +17 -3
  202. package/src/client/bundlerClient.ts +2 -2
  203. package/src/client/decorators/bundlerClient.ts +8 -8
  204. package/src/client/isSmartAccountClient.ts +4 -4
  205. package/src/client/smartAccountClient.ts +7 -0
  206. package/src/client/types.ts +2 -15
  207. package/src/ens/utils.ts +1 -2
  208. package/src/errors/account.ts +64 -4
  209. package/src/errors/client.ts +18 -0
  210. package/src/errors/entrypoint.ts +12 -0
  211. package/src/errors/signer.ts +6 -0
  212. package/src/errors/transaction.ts +10 -1
  213. package/src/errors/useroperation.ts +5 -6
  214. package/src/index.ts +2 -31
  215. package/src/logger.ts +88 -0
  216. package/src/middleware/actions.ts +6 -27
  217. package/src/middleware/defaults/gasEstimator.ts +9 -5
  218. package/src/middleware/erc7677middleware.ts +201 -0
  219. package/src/middleware/noopMiddleware.ts +6 -4
  220. package/src/middleware/types.ts +16 -7
  221. package/src/signer/local-account.ts +94 -2
  222. package/src/signer/wallet-client.ts +89 -0
  223. package/src/transport/split.ts +3 -3
  224. package/src/utils/bigint.ts +15 -15
  225. package/src/utils/bytes.ts +5 -5
  226. package/src/utils/defaults.ts +3 -76
  227. package/src/utils/index.ts +12 -35
  228. package/src/utils/types.ts +2 -2
  229. package/src/utils/userop.ts +33 -33
  230. package/src/version.ts +1 -1
  231. package/dist/cjs/account/base.d.ts +0 -49
  232. package/dist/cjs/account/base.js +0 -257
  233. package/dist/cjs/account/base.js.map +0 -1
  234. package/dist/cjs/account/schema.d.ts +0 -100
  235. package/dist/cjs/account/schema.js +0 -43
  236. package/dist/cjs/account/schema.js.map +0 -1
  237. package/dist/cjs/account/simple.d.ts +0 -14
  238. package/dist/cjs/account/simple.js +0 -119
  239. package/dist/cjs/account/simple.js.map +0 -1
  240. package/dist/cjs/account/types.d.ts +0 -30
  241. package/dist/cjs/account/types.js +0 -3
  242. package/dist/cjs/account/types.js.map +0 -1
  243. package/dist/cjs/chains/index.d.ts +0 -20
  244. package/dist/cjs/chains/index.js +0 -169
  245. package/dist/cjs/chains/index.js.map +0 -1
  246. package/dist/esm/account/base.d.ts +0 -49
  247. package/dist/esm/account/base.js +0 -253
  248. package/dist/esm/account/base.js.map +0 -1
  249. package/dist/esm/account/schema.d.ts +0 -100
  250. package/dist/esm/account/schema.js +0 -35
  251. package/dist/esm/account/schema.js.map +0 -1
  252. package/dist/esm/account/simple.d.ts +0 -14
  253. package/dist/esm/account/simple.js +0 -115
  254. package/dist/esm/account/simple.js.map +0 -1
  255. package/dist/esm/account/types.d.ts +0 -30
  256. package/dist/esm/account/types.js +0 -2
  257. package/dist/esm/account/types.js.map +0 -1
  258. package/dist/esm/chains/index.d.ts +0 -20
  259. package/dist/esm/chains/index.js +0 -166
  260. package/dist/esm/chains/index.js.map +0 -1
  261. package/dist/types/account/base.d.ts +0 -128
  262. package/dist/types/account/base.d.ts.map +0 -1
  263. package/dist/types/account/schema.d.ts +0 -101
  264. package/dist/types/account/schema.d.ts.map +0 -1
  265. package/dist/types/account/simple.d.ts +0 -15
  266. package/dist/types/account/simple.d.ts.map +0 -1
  267. package/dist/types/account/types.d.ts +0 -144
  268. package/dist/types/account/types.d.ts.map +0 -1
  269. package/dist/types/chains/index.d.ts +0 -21
  270. package/dist/types/chains/index.d.ts.map +0 -1
  271. package/src/account/base.ts +0 -415
  272. package/src/account/schema.ts +0 -51
  273. package/src/account/simple.ts +0 -221
  274. package/src/account/types.ts +0 -184
  275. package/src/chains/index.ts +0 -194
@@ -1,8 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.middlewareActions = void 0;
4
- const viem_1 = require("viem");
5
- const userop_js_1 = require("../utils/userop.js");
6
4
  const feeEstimator_js_1 = require("./defaults/feeEstimator.js");
7
5
  const gasEstimator_js_1 = require("./defaults/gasEstimator.js");
8
6
  const paymasterAndData_js_1 = require("./defaults/paymasterAndData.js");
@@ -11,24 +9,10 @@ const noopMiddleware_js_1 = require("./noopMiddleware.js");
11
9
  const middlewareActions = (overrides) => (client) => ({
12
10
  middleware: {
13
11
  customMiddleware: overrides.customMiddleware ?? noopMiddleware_js_1.noopMiddleware,
14
- dummyPaymasterAndData: overrides.paymasterAndData?.dummyPaymasterAndData
15
- ? async (struct, { account }) => {
16
- const data = overrides.paymasterAndData.dummyPaymasterAndData();
17
- const paymasterOverrides = account.getEntryPoint().version === "0.7.0"
18
- ? (0, viem_1.isHex)(data)
19
- ? (0, userop_js_1.parsePaymasterAndData)(data)
20
- : data
21
- : {
22
- paymasterAndData: (0, viem_1.isHex)(data)
23
- ? data
24
- : (0, userop_js_1.concatPaymasterAndData)(data),
25
- };
26
- return { ...struct, ...paymasterOverrides };
27
- }
28
- : paymasterAndData_js_1.defaultPaymasterAndData,
12
+ dummyPaymasterAndData: overrides.dummyPaymasterAndData ?? paymasterAndData_js_1.defaultPaymasterAndData,
29
13
  feeEstimator: overrides.feeEstimator ?? (0, feeEstimator_js_1.defaultFeeEstimator)(client),
30
14
  gasEstimator: overrides.gasEstimator ?? (0, gasEstimator_js_1.defaultGasEstimator)(client),
31
- paymasterAndData: overrides.paymasterAndData?.paymasterAndData ?? paymasterAndData_js_1.defaultPaymasterAndData,
15
+ paymasterAndData: overrides.paymasterAndData ?? paymasterAndData_js_1.defaultPaymasterAndData,
32
16
  userOperationSimulator: overrides.userOperationSimulator ?? noopMiddleware_js_1.noopMiddleware,
33
17
  signUserOperation: overrides.signUserOperation ?? userOpSigner_js_1.defaultUserOpSigner,
34
18
  },
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/middleware/actions.ts"],"names":[],"mappings":";;;AAAA,+BAOc;AAOd,kDAG4B;AAC5B,gEAAiE;AACjE,gEAAiE;AACjE,wEAAyE;AACzE,gEAAiE;AACjE,2DAAqD;AA+B9C,MAAM,iBAAiB,GAC5B,CAAC,SAAiC,EAAE,EAAE,CACtC,CAOE,MAAsD,EACpB,EAAE,CAAC,CAAC;IACtC,UAAU,EAAE;QACV,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,kCAAc;QAC9D,qBAAqB,EAAE,SAAS,CAAC,gBAAgB,EAAE,qBAAqB;YACtE,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;gBAC5B,MAAM,IAAI,GAAG,SAAS,CAAC,gBAAiB,CAAC,qBAAqB,EAAE,CAAC;gBACjE,MAAM,kBAAkB,GACtB,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,KAAK,OAAO;oBACzC,CAAC,CAAC,IAAA,YAAK,EAAC,IAAI,CAAC;wBACX,CAAC,CAAC,IAAA,iCAAqB,EAAC,IAAI,CAAC;wBAC7B,CAAC,CAAC,IAAI;oBACR,CAAC,CAAC;wBACE,gBAAgB,EAAE,IAAA,YAAK,EAAC,IAAI,CAAC;4BAC3B,CAAC,CAAC,IAAI;4BACN,CAAC,CAAC,IAAA,kCAAsB,EAAC,IAAI,CAAC;qBACjC,CAAC;gBACR,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,kBAAkB,EAAE,CAAC;YAC9C,CAAC;YACH,CAAC,CAAC,6CAAuB;QAE3B,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,IAAA,qCAAmB,EAAC,MAAM,CAAC;QACnE,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,IAAA,qCAAmB,EAAC,MAAM,CAAC;QACnE,gBAAgB,EACd,SAAS,CAAC,gBAAgB,EAAE,gBAAgB,IAAI,6CAAuB;QACzE,sBAAsB,EACpB,SAAS,CAAC,sBAAsB,IAAI,kCAAc;QACpD,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,qCAAmB;KACtE;CACF,CAAC,CAAC;AAtCQ,QAAA,iBAAiB,qBAsCzB","sourcesContent":["import {\n isHex,\n type Chain,\n type Client,\n type PublicActions,\n type PublicRpcSchema,\n type Transport,\n} from \"viem\";\nimport type { SmartContractAccount } from \"../account/smartContractAccount.js\";\nimport type {\n BundlerActions,\n BundlerRpcSchema,\n} from \"../client/decorators/bundlerClient.js\";\nimport type { ClientMiddlewareConfig } from \"../client/types.js\";\nimport {\n concatPaymasterAndData,\n parsePaymasterAndData,\n} from \"../utils/userop.js\";\nimport { defaultFeeEstimator } from \"./defaults/feeEstimator.js\";\nimport { defaultGasEstimator } from \"./defaults/gasEstimator.js\";\nimport { defaultPaymasterAndData } from \"./defaults/paymasterAndData.js\";\nimport { defaultUserOpSigner } from \"./defaults/userOpSigner.js\";\nimport { noopMiddleware } from \"./noopMiddleware.js\";\nimport type { ClientMiddleware } from \"./types.js\";\n\n/**\n * Middleware client type\n *\n * @template {Transport} TTransport\n * @template {Chain | undefined} TChain\n * @template {SmartContractAccount | undefined} TAccount\n */\nexport type MiddlewareClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = Client<\n TTransport,\n TChain,\n TAccount,\n [...BundlerRpcSchema, ...PublicRpcSchema],\n PublicActions & BundlerActions\n>;\n\n/**\n * export function that takes in {@link ClientMiddlewareConfig} used during client initiation\n * and returns the middleware actions object that the smart account client extends with\n *\n * @param overrides - {@link ClientMiddlewareConfig} used during client initiation for overriding default middlewares\n * @returns middleware actions object\n */\nexport const middlewareActions =\n (overrides: ClientMiddlewareConfig) =>\n <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n >(\n client: MiddlewareClient<TTransport, TChain, TAccount>\n ): { middleware: ClientMiddleware } => ({\n middleware: {\n customMiddleware: overrides.customMiddleware ?? noopMiddleware,\n dummyPaymasterAndData: overrides.paymasterAndData?.dummyPaymasterAndData\n ? async (struct, { account }) => {\n const data = overrides.paymasterAndData!.dummyPaymasterAndData();\n const paymasterOverrides =\n account.getEntryPoint().version === \"0.7.0\"\n ? isHex(data)\n ? parsePaymasterAndData(data)\n : data\n : {\n paymasterAndData: isHex(data)\n ? data\n : concatPaymasterAndData(data),\n };\n return { ...struct, ...paymasterOverrides };\n }\n : defaultPaymasterAndData,\n\n feeEstimator: overrides.feeEstimator ?? defaultFeeEstimator(client),\n gasEstimator: overrides.gasEstimator ?? defaultGasEstimator(client),\n paymasterAndData:\n overrides.paymasterAndData?.paymasterAndData ?? defaultPaymasterAndData,\n userOperationSimulator:\n overrides.userOperationSimulator ?? noopMiddleware,\n signUserOperation: overrides.signUserOperation ?? defaultUserOpSigner,\n },\n });\n"]}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/middleware/actions.ts"],"names":[],"mappings":";;;AAaA,gEAAiE;AACjE,gEAAiE;AACjE,wEAAyE;AACzE,gEAAiE;AACjE,2DAAqD;AA+B9C,MAAM,iBAAiB,GAC5B,CAAC,SAAiC,EAAE,EAAE,CACtC,CAOE,MAAsD,EACpB,EAAE,CAAC,CAAC;IACtC,UAAU,EAAE;QACV,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,kCAAc;QAC9D,qBAAqB,EACnB,SAAS,CAAC,qBAAqB,IAAI,6CAAuB;QAC5D,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,IAAA,qCAAmB,EAAC,MAAM,CAAC;QACnE,YAAY,EAAE,SAAS,CAAC,YAAY,IAAI,IAAA,qCAAmB,EAAC,MAAM,CAAC;QACnE,gBAAgB,EAAE,SAAS,CAAC,gBAAgB,IAAI,6CAAuB;QACvE,sBAAsB,EACpB,SAAS,CAAC,sBAAsB,IAAI,kCAAc;QACpD,iBAAiB,EAAE,SAAS,CAAC,iBAAiB,IAAI,qCAAmB;KACtE;CACF,CAAC,CAAC;AAtBQ,QAAA,iBAAiB,qBAsBzB","sourcesContent":["import {\n type Chain,\n type Client,\n type PublicActions,\n type PublicRpcSchema,\n type Transport,\n} from \"viem\";\nimport type { SmartContractAccount } from \"../account/smartContractAccount.js\";\nimport type {\n BundlerActions,\n BundlerRpcSchema,\n} from \"../client/decorators/bundlerClient.js\";\nimport type { ClientMiddlewareConfig } from \"../client/types.js\";\nimport { defaultFeeEstimator } from \"./defaults/feeEstimator.js\";\nimport { defaultGasEstimator } from \"./defaults/gasEstimator.js\";\nimport { defaultPaymasterAndData } from \"./defaults/paymasterAndData.js\";\nimport { defaultUserOpSigner } from \"./defaults/userOpSigner.js\";\nimport { noopMiddleware } from \"./noopMiddleware.js\";\nimport type { ClientMiddleware } from \"./types.js\";\n\n/**\n * Middleware client type\n *\n * @template {Transport} TTransport\n * @template {Chain | undefined} TChain\n * @template {SmartContractAccount | undefined} TAccount\n */\nexport type MiddlewareClient<\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n> = Client<\n TTransport,\n TChain,\n TAccount,\n [...BundlerRpcSchema, ...PublicRpcSchema],\n PublicActions & BundlerActions\n>;\n\n/**\n * function that takes in ClientMiddlewareConfig used during client initiation\n * and returns the middleware actions object that the smart account client extends with\n *\n * @param {ClientMiddlewareConfig} overrides config used during client initiation for overriding default middlewares\n * @returns {(client: MiddlewareClient<TTransport, TChain, TAccount>) => { middleware: ClientMiddleware }} middleware actions object\n */\nexport const middlewareActions =\n (overrides: ClientMiddlewareConfig) =>\n <\n TTransport extends Transport = Transport,\n TChain extends Chain | undefined = Chain | undefined,\n TAccount extends SmartContractAccount | undefined =\n | SmartContractAccount\n | undefined\n >(\n client: MiddlewareClient<TTransport, TChain, TAccount>\n ): { middleware: ClientMiddleware } => ({\n middleware: {\n customMiddleware: overrides.customMiddleware ?? noopMiddleware,\n dummyPaymasterAndData:\n overrides.dummyPaymasterAndData ?? defaultPaymasterAndData,\n feeEstimator: overrides.feeEstimator ?? defaultFeeEstimator(client),\n gasEstimator: overrides.gasEstimator ?? defaultGasEstimator(client),\n paymasterAndData: overrides.paymasterAndData ?? defaultPaymasterAndData,\n userOperationSimulator:\n overrides.userOperationSimulator ?? noopMiddleware,\n signUserOperation: overrides.signUserOperation ?? defaultUserOpSigner,\n },\n });\n"]}
@@ -17,8 +17,10 @@ const defaultGasEstimator = (client) => async (struct, { account, overrides, fee
17
17
  const paymasterVerificationGasLimit = (0, userop_js_1.applyUserOpOverrideOrFeeOption)(estimates.paymasterVerificationGasLimit, overrides
18
18
  ?.paymasterVerificationGasLimit, feeOptions
19
19
  ?.paymasterVerificationGasLimit);
20
- struct.paymasterVerificationGasLimit =
21
- paymasterVerificationGasLimit;
20
+ const uo_v7 = struct;
21
+ uo_v7.paymasterVerificationGasLimit = paymasterVerificationGasLimit;
22
+ uo_v7.paymasterPostOpGasLimit =
23
+ uo_v7.paymasterPostOpGasLimit ?? (uo_v7.paymaster ? "0x0" : undefined);
22
24
  }
23
25
  return struct;
24
26
  };
@@ -1 +1 @@
1
- {"version":3,"file":"gasEstimator.js","sourceRoot":"","sources":["../../../../src/middleware/defaults/gasEstimator.ts"],"names":[],"mappings":";;;AAKA,mDAAsE;AACtE,qDAAuE;AAYhE,MAAM,mBAAmB,GAG9B,CAAC,MAAM,EAAE,EAAE,CACX,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;IACnD,MAAM,OAAO,GAAG,IAAA,sBAAW,EAAC,MAAM,IAAA,4BAAiB,EAAC,MAAM,CAAC,CAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,wBAAwB,CACrD,OAAO,EACP,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,EAC/B,SAAS,EAAE,aAAa,CACzB,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,0CAA8B,EACjD,SAAS,CAAC,YAAY,EACtB,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,YAAY,CACzB,CAAC;IACF,MAAM,oBAAoB,GAAG,IAAA,0CAA8B,EACzD,SAAS,CAAC,oBAAoB,EAC9B,SAAS,EAAE,oBAAoB,EAC/B,UAAU,EAAE,oBAAoB,CACjC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,0CAA8B,EACvD,SAAS,CAAC,kBAAkB,EAC5B,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,kBAAkB,CAC/B,CAAC;IAEF,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,MAAM,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAE/C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAC3C,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,6BAA6B,GAAG,IAAA,0CAA8B,EAClE,SAAS,CAAC,6BAA6B,EACtC,SAA6C;YAC5C,EAAE,6BAA6B,EAChC,UAA+C;YAC9C,EAAE,6BAA6B,CAClC,CAAC;QACD,MAAuC,CAAC,6BAA6B;YACpE,6BAA6B,CAAC;IAClC,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AA/CS,QAAA,mBAAmB,uBA+C5B","sourcesContent":["import type {\n UserOperationFeeOptions,\n UserOperationOverrides,\n UserOperationStruct,\n} from \"../../types.js\";\nimport { deepHexlify, resolveProperties } from \"../../utils/index.js\";\nimport { applyUserOpOverrideOrFeeOption } from \"../../utils/userop.js\";\nimport type { MiddlewareClient } from \"../actions.js\";\nimport type { ClientMiddlewareFn } from \"../types.js\";\n\n/**\n * Description default gas estimator middleware for `SmartAccountClient`\n * You can override this middleware with your custom gas estimator middleware\n * by passing it to the client constructor\n *\n * @param client smart account client instance to apply the middleware to\n * @returns middleware execution function used to estimate gas for user operations\n */\nexport const defaultGasEstimator: <C extends MiddlewareClient>(\n client: C\n) => ClientMiddlewareFn =\n (client) =>\n async (struct, { account, overrides, feeOptions }) => {\n const request = deepHexlify(await resolveProperties(struct));\n\n const estimates = await client.estimateUserOperationGas(\n request,\n account.getEntryPoint().address,\n overrides?.stateOverride\n );\n\n const callGasLimit = applyUserOpOverrideOrFeeOption(\n estimates.callGasLimit,\n overrides?.callGasLimit,\n feeOptions?.callGasLimit\n );\n const verificationGasLimit = applyUserOpOverrideOrFeeOption(\n estimates.verificationGasLimit,\n overrides?.verificationGasLimit,\n feeOptions?.verificationGasLimit\n );\n const preVerificationGas = applyUserOpOverrideOrFeeOption(\n estimates.preVerificationGas,\n overrides?.preVerificationGas,\n feeOptions?.preVerificationGas\n );\n\n struct.callGasLimit = callGasLimit;\n struct.verificationGasLimit = verificationGasLimit;\n struct.preVerificationGas = preVerificationGas;\n\n const entryPoint = account.getEntryPoint();\n if (entryPoint.version === \"0.7.0\") {\n const paymasterVerificationGasLimit = applyUserOpOverrideOrFeeOption(\n estimates.paymasterVerificationGasLimit,\n (overrides as UserOperationOverrides<\"0.7.0\">)\n ?.paymasterVerificationGasLimit,\n (feeOptions as UserOperationFeeOptions<\"0.7.0\">)\n ?.paymasterVerificationGasLimit\n );\n (struct as UserOperationStruct<\"0.7.0\">).paymasterVerificationGasLimit =\n paymasterVerificationGasLimit;\n }\n\n return struct;\n };\n"]}
1
+ {"version":3,"file":"gasEstimator.js","sourceRoot":"","sources":["../../../../src/middleware/defaults/gasEstimator.ts"],"names":[],"mappings":";;;AAKA,mDAAsE;AACtE,qDAAuE;AAYhE,MAAM,mBAAmB,GAG9B,CAAC,MAAwB,EAAsB,EAAE,CACjD,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,EAAE;IACnD,MAAM,OAAO,GAAG,IAAA,sBAAW,EAAC,MAAM,IAAA,4BAAiB,EAAC,MAAM,CAAC,CAAC,CAAC;IAE7D,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,wBAAwB,CACrD,OAAO,EACP,OAAO,CAAC,aAAa,EAAE,CAAC,OAAO,EAC/B,SAAS,EAAE,aAAa,CACzB,CAAC;IAEF,MAAM,YAAY,GAAG,IAAA,0CAA8B,EACjD,SAAS,CAAC,YAAY,EACtB,SAAS,EAAE,YAAY,EACvB,UAAU,EAAE,YAAY,CACzB,CAAC;IACF,MAAM,oBAAoB,GAAG,IAAA,0CAA8B,EACzD,SAAS,CAAC,oBAAoB,EAC9B,SAAS,EAAE,oBAAoB,EAC/B,UAAU,EAAE,oBAAoB,CACjC,CAAC;IACF,MAAM,kBAAkB,GAAG,IAAA,0CAA8B,EACvD,SAAS,CAAC,kBAAkB,EAC5B,SAAS,EAAE,kBAAkB,EAC7B,UAAU,EAAE,kBAAkB,CAC/B,CAAC;IAEF,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,MAAM,CAAC,oBAAoB,GAAG,oBAAoB,CAAC;IACnD,MAAM,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IAE/C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAC3C,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QACnC,MAAM,6BAA6B,GAAG,IAAA,0CAA8B,EAClE,SAAS,CAAC,6BAA6B,EACtC,SAA6C;YAC5C,EAAE,6BAA6B,EAChC,UAA+C;YAC9C,EAAE,6BAA6B,CAClC,CAAC;QACF,MAAM,KAAK,GAAG,MAAsC,CAAC;QAErD,KAAK,CAAC,6BAA6B,GAAG,6BAA6B,CAAC;QAEpE,KAAK,CAAC,uBAAuB;YAC3B,KAAK,CAAC,uBAAuB,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAnDS,QAAA,mBAAmB,uBAmD5B","sourcesContent":["import type {\n UserOperationFeeOptions,\n UserOperationOverrides,\n UserOperationStruct,\n} from \"../../types.js\";\nimport { deepHexlify, resolveProperties } from \"../../utils/index.js\";\nimport { applyUserOpOverrideOrFeeOption } from \"../../utils/userop.js\";\nimport type { MiddlewareClient } from \"../actions.js\";\nimport type { ClientMiddlewareFn } from \"../types.js\";\n\n/**\n * Description default gas estimator middleware for `SmartAccountClient`\n * You can override this middleware with your custom gas estimator middleware\n * by passing it to the client constructor\n *\n * @param {MiddlewareClient} client smart account client instance to apply the middleware to\n * @returns {ClientMiddlewareFn} middleware execution function used to estimate gas for user operations\n */\nexport const defaultGasEstimator: <C extends MiddlewareClient>(\n client: C\n) => ClientMiddlewareFn =\n (client: MiddlewareClient): ClientMiddlewareFn =>\n async (struct, { account, overrides, feeOptions }) => {\n const request = deepHexlify(await resolveProperties(struct));\n\n const estimates = await client.estimateUserOperationGas(\n request,\n account.getEntryPoint().address,\n overrides?.stateOverride\n );\n\n const callGasLimit = applyUserOpOverrideOrFeeOption(\n estimates.callGasLimit,\n overrides?.callGasLimit,\n feeOptions?.callGasLimit\n );\n const verificationGasLimit = applyUserOpOverrideOrFeeOption(\n estimates.verificationGasLimit,\n overrides?.verificationGasLimit,\n feeOptions?.verificationGasLimit\n );\n const preVerificationGas = applyUserOpOverrideOrFeeOption(\n estimates.preVerificationGas,\n overrides?.preVerificationGas,\n feeOptions?.preVerificationGas\n );\n\n struct.callGasLimit = callGasLimit;\n struct.verificationGasLimit = verificationGasLimit;\n struct.preVerificationGas = preVerificationGas;\n\n const entryPoint = account.getEntryPoint();\n if (entryPoint.version === \"0.7.0\") {\n const paymasterVerificationGasLimit = applyUserOpOverrideOrFeeOption(\n estimates.paymasterVerificationGasLimit,\n (overrides as UserOperationOverrides<\"0.7.0\">)\n ?.paymasterVerificationGasLimit,\n (feeOptions as UserOperationFeeOptions<\"0.7.0\">)\n ?.paymasterVerificationGasLimit\n );\n const uo_v7 = struct as UserOperationStruct<\"0.7.0\">;\n\n uo_v7.paymasterVerificationGasLimit = paymasterVerificationGasLimit;\n\n uo_v7.paymasterPostOpGasLimit =\n uo_v7.paymasterPostOpGasLimit ?? (uo_v7.paymaster ? \"0x0\" : undefined);\n }\n\n return struct;\n };\n"]}
@@ -0,0 +1,40 @@
1
+ import { type Address, type Chain, type Client, type Hex, type Transport } from "viem";
2
+ import type { ClientMiddlewareConfig } from "../client/types";
3
+ import type { EntryPointVersion } from "../entrypoint/types";
4
+ import type { UserOperationFeeOptions, UserOperationOverrides, UserOperationRequest, UserOperationStruct } from "../types";
5
+ import { type Deferrable } from "../utils/index.js";
6
+ export type Erc7677RpcSchema = [
7
+ {
8
+ Method: "pm_getPaymasterStubData";
9
+ Parameters: [UserOperationRequest, Address, Hex, Record<string, any>];
10
+ ReturnType: {
11
+ sponsor?: {
12
+ name: string;
13
+ icon?: string;
14
+ };
15
+ paymaster?: Address;
16
+ paymasterData?: Hex;
17
+ paymasterVerificationGasLimit?: Hex;
18
+ paymasterPostOpGasLimit?: Hex;
19
+ paymasterAndData?: Hex;
20
+ isFinal?: boolean;
21
+ };
22
+ },
23
+ {
24
+ Method: "pm_getPaymasterData";
25
+ Parameters: [UserOperationRequest, Address, Hex, Record<string, any>];
26
+ ReturnType: {
27
+ paymaster?: Address;
28
+ paymasterData?: Hex;
29
+ paymasterAndData?: Hex;
30
+ };
31
+ }
32
+ ];
33
+ export type Erc7677Client<T extends Transport = Transport> = Client<T, Chain, undefined, Erc7677RpcSchema>;
34
+ export type Erc7677MiddlewareParams<TContext extends Record<string, any> | undefined = Record<string, any> | undefined, TEntryPointVersion extends EntryPointVersion = EntryPointVersion> = {
35
+ context?: ((struct: Deferrable<UserOperationStruct<TEntryPointVersion>>, args: {
36
+ overrides?: UserOperationOverrides<TEntryPointVersion>;
37
+ feeOptions?: UserOperationFeeOptions;
38
+ }) => Promise<TContext>) | TContext;
39
+ };
40
+ export declare function erc7677Middleware<TContext extends Record<string, any> | undefined = Record<string, any> | undefined>(params?: Erc7677MiddlewareParams<TContext>): Pick<ClientMiddlewareConfig, "dummyPaymasterAndData" | "paymasterAndData">;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.erc7677Middleware = void 0;
4
+ const viem_1 = require("viem");
5
+ const client_js_1 = require("../errors/client.js");
6
+ const index_js_1 = require("../utils/index.js");
7
+ function erc7677Middleware(params) {
8
+ const dummyPaymasterAndData = async (uo, { client, account, feeOptions, overrides }) => {
9
+ const userOp = (0, index_js_1.deepHexlify)(await (0, index_js_1.resolveProperties)(uo));
10
+ userOp.maxFeePerGas = "0x0";
11
+ userOp.maxPriorityFeePerGas = "0x0";
12
+ userOp.callGasLimit = "0x0";
13
+ userOp.verificationGasLimit = "0x0";
14
+ userOp.preVerificationGas = "0x0";
15
+ const entrypoint = account.getEntryPoint();
16
+ if (entrypoint.version === "0.7.0") {
17
+ userOp.paymasterVerificationGasLimit = "0x0";
18
+ userOp.paymasterPostOpGasLimit = "0x0";
19
+ }
20
+ const context = (typeof params?.context === "function"
21
+ ? await params?.context(userOp, { overrides, feeOptions })
22
+ : params?.context) ?? {};
23
+ if (!client.chain) {
24
+ throw new client_js_1.ChainNotFoundError();
25
+ }
26
+ const erc7677client = client;
27
+ const { paymaster, paymasterAndData, paymasterData, paymasterPostOpGasLimit, paymasterVerificationGasLimit, } = await erc7677client.request({
28
+ method: "pm_getPaymasterStubData",
29
+ params: [userOp, entrypoint.address, (0, viem_1.toHex)(client.chain.id), context],
30
+ });
31
+ if (entrypoint.version === "0.6.0") {
32
+ return {
33
+ ...uo,
34
+ paymasterAndData,
35
+ };
36
+ }
37
+ return {
38
+ ...uo,
39
+ paymaster,
40
+ paymasterData,
41
+ paymasterPostOpGasLimit,
42
+ paymasterVerificationGasLimit,
43
+ };
44
+ };
45
+ const paymasterAndData = async (uo, { client, account, feeOptions, overrides }) => {
46
+ const userOp = (0, index_js_1.deepHexlify)(await (0, index_js_1.resolveProperties)(uo));
47
+ const context = (typeof params?.context === "function"
48
+ ? await params?.context(userOp, { overrides, feeOptions })
49
+ : params?.context) ?? {};
50
+ if (!client.chain) {
51
+ throw new client_js_1.ChainNotFoundError();
52
+ }
53
+ const erc7677client = client;
54
+ const entrypoint = account.getEntryPoint();
55
+ const { paymaster, paymasterAndData, paymasterData } = await erc7677client.request({
56
+ method: "pm_getPaymasterData",
57
+ params: [userOp, entrypoint.address, (0, viem_1.toHex)(client.chain.id), context],
58
+ });
59
+ if (entrypoint.version === "0.6.0") {
60
+ return {
61
+ ...uo,
62
+ paymasterAndData,
63
+ };
64
+ }
65
+ return {
66
+ ...uo,
67
+ paymaster,
68
+ paymasterData,
69
+ };
70
+ };
71
+ return {
72
+ dummyPaymasterAndData,
73
+ paymasterAndData,
74
+ };
75
+ }
76
+ exports.erc7677Middleware = erc7677Middleware;
77
+ //# sourceMappingURL=erc7677middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"erc7677middleware.js","sourceRoot":"","sources":["../../../src/middleware/erc7677middleware.ts"],"names":[],"mappings":";;;AAAA,+BAOc;AAGd,mDAAyD;AAOzD,gDAI2B;AAyE3B,SAAgB,iBAAiB,CAK/B,MAA0C;IAE1C,MAAM,qBAAqB,GAAuB,KAAK,EACrD,EAAE,EACF,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAC1C,EAAE;QACF,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,MAAM,IAAA,4BAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QAGxD,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACpC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;QAC5B,MAAM,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACpC,MAAM,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAElC,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAE3C,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,CAAC,6BAA6B,GAAG,KAAK,CAAC;YAC7C,MAAM,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACzC,CAAC;QAED,MAAM,OAAO,GACX,CAAC,OAAO,MAAM,EAAE,OAAO,KAAK,UAAU;YACpC,CAAC,CAAC,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;YAC1D,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,8BAAkB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,aAAa,GAAG,MAAuB,CAAC;QAE9C,MAAM,EACJ,SAAS,EACT,gBAAgB,EAChB,aAAa,EACb,uBAAuB,EACvB,6BAA6B,GAC9B,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC;YAC9B,MAAM,EAAE,yBAAyB;YACjC,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,IAAA,YAAK,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;SACtE,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACnC,OAAO;gBACL,GAAG,EAAE;gBACL,gBAAgB;aACjB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,EAAE;YACL,SAAS;YACT,aAAa;YACb,uBAAuB;YACvB,6BAA6B;SAC9B,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,gBAAgB,GAAuB,KAAK,EAChD,EAAE,EACF,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,EAC1C,EAAE;QACF,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,MAAM,IAAA,4BAAiB,EAAC,EAAE,CAAC,CAAC,CAAC;QACxD,MAAM,OAAO,GACX,CAAC,OAAO,MAAM,EAAE,OAAO,KAAK,UAAU;YACpC,CAAC,CAAC,MAAM,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC;YAC1D,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;QAE7B,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,IAAI,8BAAkB,EAAE,CAAC;QACjC,CAAC;QAED,MAAM,aAAa,GAAG,MAAuB,CAAC;QAE9C,MAAM,UAAU,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;QAC3C,MAAM,EAAE,SAAS,EAAE,gBAAgB,EAAE,aAAa,EAAE,GAClD,MAAM,aAAa,CAAC,OAAO,CAAC;YAC1B,MAAM,EAAE,qBAAqB;YAC7B,MAAM,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,EAAE,IAAA,YAAK,EAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC;SACtE,CAAC,CAAC;QAEL,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;YACnC,OAAO;gBACL,GAAG,EAAE;gBACL,gBAAgB;aACjB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,EAAE;YACL,SAAS;YACT,aAAa;SACd,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO;QACL,qBAAqB;QACrB,gBAAgB;KACjB,CAAC;AACJ,CAAC;AA1GD,8CA0GC","sourcesContent":["import {\n toHex,\n type Address,\n type Chain,\n type Client,\n type Hex,\n type Transport,\n} from \"viem\";\nimport type { ClientMiddlewareConfig } from \"../client/types\";\nimport type { EntryPointVersion } from \"../entrypoint/types\";\nimport { ChainNotFoundError } from \"../errors/client.js\";\nimport type {\n UserOperationFeeOptions,\n UserOperationOverrides,\n UserOperationRequest,\n UserOperationStruct,\n} from \"../types\";\nimport {\n deepHexlify,\n resolveProperties,\n type Deferrable,\n} from \"../utils/index.js\";\nimport type { ClientMiddlewareFn } from \"./types\";\n\nexport type Erc7677RpcSchema = [\n {\n Method: \"pm_getPaymasterStubData\";\n Parameters: [UserOperationRequest, Address, Hex, Record<string, any>];\n ReturnType: {\n sponsor?: { name: string; icon?: string }; // Sponsor info\n paymaster?: Address; // Paymaster address (entrypoint v0.7)\n paymasterData?: Hex; // Paymaster data (entrypoint v0.7)\n paymasterVerificationGasLimit?: Hex; // Paymaster validation gas (entrypoint v0.7)\n paymasterPostOpGasLimit?: Hex; // Paymaster post-op gas (entrypoint v0.7)\n paymasterAndData?: Hex; // Paymaster and data (entrypoint v0.6)\n isFinal?: boolean; // Indicates that the caller does not need to call pm_getPaymasterData\n };\n },\n {\n Method: \"pm_getPaymasterData\";\n Parameters: [UserOperationRequest, Address, Hex, Record<string, any>];\n ReturnType: {\n paymaster?: Address; // Paymaster address (entrypoint v0.7)\n paymasterData?: Hex; // Paymaster data (entrypoint v0.7)\n paymasterAndData?: Hex; // Paymaster and data (entrypoint v0.6)\n };\n }\n];\n\nexport type Erc7677Client<T extends Transport = Transport> = Client<\n T,\n Chain,\n undefined,\n Erc7677RpcSchema\n>;\n\nexport type Erc7677MiddlewareParams<\n TContext extends Record<string, any> | undefined =\n | Record<string, any>\n | undefined,\n TEntryPointVersion extends EntryPointVersion = EntryPointVersion\n> = {\n context?:\n | ((\n struct: Deferrable<UserOperationStruct<TEntryPointVersion>>,\n args: {\n overrides?: UserOperationOverrides<TEntryPointVersion>;\n feeOptions?: UserOperationFeeOptions;\n }\n ) => Promise<TContext>)\n | TContext;\n};\n\n/**\n * Middleware function for interacting with ERC-7677 enabled clients. It supports resolving paymaster and data fields for user operations.\n * This middleware assumes that your RPC provider supports the ERC-7677 methods (pm_getPaymasterStubData and pm_getPaymasterData).\n *\n * @example\n * ```ts\n * import { createSmartAccountClient, erc7677Middleware } from \"@aa-sdk/core\";\n * import { http } from \"viem\";\n * import { sepolia } from \"viem/chains\";\n *\n * const client = createSmartAccountClient({\n * transport: http(\"rpc-url\"),\n * chain: sepolia,\n * // this assumes that your RPC provider supports the ERC-7677 methods AND takes no context\n * ...erc7677Middleware(),\n * })\n * ```\n *\n * @param {Erc7677MiddlewareParams<TContext>} params Middleware parameters including context function or object. Context can be resolved dynamically by passing in a function which takes in the context at the time of sending a user op\n * @returns {Pick<ClientMiddlewareConfig, \"dummyPaymasterAndData\" | \"paymasterAndData\">} An object containing middleware functions `dummyPaymasterAndData` and `paymasterAndData` for processing user operations with the paymaster data\n */\nexport function erc7677Middleware<\n TContext extends Record<string, any> | undefined =\n | Record<string, any>\n | undefined\n>(\n params?: Erc7677MiddlewareParams<TContext>\n): Pick<ClientMiddlewareConfig, \"dummyPaymasterAndData\" | \"paymasterAndData\"> {\n const dummyPaymasterAndData: ClientMiddlewareFn = async (\n uo,\n { client, account, feeOptions, overrides }\n ) => {\n const userOp = deepHexlify(await resolveProperties(uo));\n\n // Those values will be set after fee estimation.\n userOp.maxFeePerGas = \"0x0\";\n userOp.maxPriorityFeePerGas = \"0x0\";\n userOp.callGasLimit = \"0x0\";\n userOp.verificationGasLimit = \"0x0\";\n userOp.preVerificationGas = \"0x0\";\n\n const entrypoint = account.getEntryPoint();\n\n if (entrypoint.version === \"0.7.0\") {\n userOp.paymasterVerificationGasLimit = \"0x0\";\n userOp.paymasterPostOpGasLimit = \"0x0\";\n }\n\n const context =\n (typeof params?.context === \"function\"\n ? await params?.context(userOp, { overrides, feeOptions })\n : params?.context) ?? {};\n\n if (!client.chain) {\n throw new ChainNotFoundError();\n }\n\n const erc7677client = client as Erc7677Client;\n // TODO: probably need to handle the sponsor and isFinal fields\n const {\n paymaster,\n paymasterAndData,\n paymasterData,\n paymasterPostOpGasLimit,\n paymasterVerificationGasLimit,\n } = await erc7677client.request({\n method: \"pm_getPaymasterStubData\",\n params: [userOp, entrypoint.address, toHex(client.chain.id), context],\n });\n\n if (entrypoint.version === \"0.6.0\") {\n return {\n ...uo,\n paymasterAndData,\n };\n }\n\n return {\n ...uo,\n paymaster,\n paymasterData,\n paymasterPostOpGasLimit,\n paymasterVerificationGasLimit,\n };\n };\n\n const paymasterAndData: ClientMiddlewareFn = async (\n uo,\n { client, account, feeOptions, overrides }\n ) => {\n const userOp = deepHexlify(await resolveProperties(uo));\n const context =\n (typeof params?.context === \"function\"\n ? await params?.context(userOp, { overrides, feeOptions })\n : params?.context) ?? {};\n\n if (!client.chain) {\n throw new ChainNotFoundError();\n }\n\n const erc7677client = client as Erc7677Client;\n\n const entrypoint = account.getEntryPoint();\n const { paymaster, paymasterAndData, paymasterData } =\n await erc7677client.request({\n method: \"pm_getPaymasterData\",\n params: [userOp, entrypoint.address, toHex(client.chain.id), context],\n });\n\n if (entrypoint.version === \"0.6.0\") {\n return {\n ...uo,\n paymasterAndData,\n };\n }\n\n return {\n ...uo,\n paymaster,\n paymasterData,\n };\n };\n\n return {\n dummyPaymasterAndData,\n paymasterAndData,\n };\n}\n"]}
@@ -1,2 +1,3 @@
1
+ import type { UserOperationContext } from "../actions/smartAccount/types";
1
2
  import type { ClientMiddlewareFn } from "./types";
2
- export declare const noopMiddleware: ClientMiddlewareFn;
3
+ export declare const noopMiddleware: ClientMiddlewareFn<UserOperationContext | undefined>;
@@ -1 +1 @@
1
- {"version":3,"file":"noopMiddleware.js","sourceRoot":"","sources":["../../../src/middleware/noopMiddleware.ts"],"names":[],"mappings":";;;AASO,MAAM,cAAc,GAAuB,KAAK,EAAE,IAAI,EAAE,EAAE;IAC/D,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB","sourcesContent":["import type { ClientMiddlewareFn } from \"./types\";\n\n/**\n * Noop middleware that does nothing and passes the arguments through\n *\n * @async\n * @param args the client middleware arguments passed to the middleware\n * @returns the arguments passed to the middleware and returned as is without modification\n */\nexport const noopMiddleware: ClientMiddlewareFn = async (args) => {\n return args;\n};\n"]}
1
+ {"version":3,"file":"noopMiddleware.js","sourceRoot":"","sources":["../../../src/middleware/noopMiddleware.ts"],"names":[],"mappings":";;;AASO,MAAM,cAAc,GAEvB,KAAK,EAAE,IAAI,EAAE,EAAE;IACjB,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAJW,QAAA,cAAc,kBAIzB","sourcesContent":["import type { UserOperationContext } from \"../actions/smartAccount/types\";\nimport type { ClientMiddlewareFn } from \"./types\";\n\n/**\n * Noop middleware that does nothing and passes the arguments through\n *\n * @param {Deferrable<UserOperationStruct<TEntryPointVersion>>} args the client middleware arguments passed to the middleware\n * @returns {Promise<Deferrable<UserOperationStruct<TEntryPointVersion>>>} the arguments passed to the middleware and returned as is without modification\n */\nexport const noopMiddleware: ClientMiddlewareFn<\n UserOperationContext | undefined\n> = async (args) => {\n return args;\n};\n"]}
@@ -3,13 +3,14 @@ import type { UserOperationContext } from "../actions/smartAccount/types";
3
3
  import type { UserOperationFeeOptions, UserOperationOverrides, UserOperationStruct } from "../types";
4
4
  import type { Deferrable } from "../utils";
5
5
  import type { MiddlewareClient } from "./actions";
6
- export type ClientMiddlewareFn<TContext extends UserOperationContext | undefined = UserOperationContext | undefined> = <TAccount extends SmartContractAccount, C extends MiddlewareClient, TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>>(struct: Deferrable<UserOperationStruct<TEntryPointVersion>>, args: {
6
+ export type ClientMiddlewareArgs<TAccount extends SmartContractAccount, C extends MiddlewareClient, TContext extends UserOperationContext | undefined = UserOperationContext | undefined, TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>> = {
7
7
  overrides?: UserOperationOverrides<TEntryPointVersion>;
8
8
  context?: TContext;
9
9
  feeOptions?: UserOperationFeeOptions;
10
10
  account: TAccount;
11
11
  client: C;
12
- }) => Promise<Deferrable<UserOperationStruct<TEntryPointVersion>>>;
12
+ };
13
+ export type ClientMiddlewareFn<TContext extends UserOperationContext | undefined = UserOperationContext | undefined> = <TAccount extends SmartContractAccount, C extends MiddlewareClient, TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>>(struct: Deferrable<UserOperationStruct<TEntryPointVersion>>, args: ClientMiddlewareArgs<TAccount, C, TContext, TEntryPointVersion>) => Promise<Deferrable<UserOperationStruct<TEntryPointVersion>>>;
13
14
  export type ClientMiddleware<TContext extends UserOperationContext | undefined = UserOperationContext | undefined> = {
14
15
  dummyPaymasterAndData: ClientMiddlewareFn<TContext>;
15
16
  feeEstimator: ClientMiddlewareFn<TContext>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/middleware/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n GetEntryPointFromAccount,\n SmartContractAccount,\n} from \"../account/smartContractAccount\";\nimport type { UserOperationContext } from \"../actions/smartAccount/types\";\nimport type {\n UserOperationFeeOptions,\n UserOperationOverrides,\n UserOperationStruct,\n} from \"../types\";\nimport type { Deferrable } from \"../utils\";\nimport type { MiddlewareClient } from \"./actions\";\n\n// [!region ClientMiddlewareFn]\nexport type ClientMiddlewareFn<\n TContext extends UserOperationContext | undefined =\n | UserOperationContext\n | undefined\n> = <\n TAccount extends SmartContractAccount,\n C extends MiddlewareClient,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n>(\n struct: Deferrable<UserOperationStruct<TEntryPointVersion>>,\n args: {\n overrides?: UserOperationOverrides<TEntryPointVersion>;\n context?: TContext;\n feeOptions?: UserOperationFeeOptions;\n account: TAccount;\n client: C;\n }\n) => Promise<Deferrable<UserOperationStruct<TEntryPointVersion>>>;\n// [!endregion ClientMiddlewareFn]\n\n// [!region ClientMiddleware]\nexport type ClientMiddleware<\n TContext extends UserOperationContext | undefined =\n | UserOperationContext\n | undefined\n> = {\n dummyPaymasterAndData: ClientMiddlewareFn<TContext>;\n feeEstimator: ClientMiddlewareFn<TContext>;\n gasEstimator: ClientMiddlewareFn<TContext>;\n customMiddleware: ClientMiddlewareFn<TContext>;\n paymasterAndData: ClientMiddlewareFn<TContext>;\n userOperationSimulator: ClientMiddlewareFn<TContext>;\n signUserOperation: ClientMiddlewareFn<TContext>;\n};\n// [!endregion ClientMiddleware]\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/middleware/types.ts"],"names":[],"mappings":"","sourcesContent":["import type {\n GetEntryPointFromAccount,\n SmartContractAccount,\n} from \"../account/smartContractAccount\";\nimport type { UserOperationContext } from \"../actions/smartAccount/types\";\nimport type {\n UserOperationFeeOptions,\n UserOperationOverrides,\n UserOperationStruct,\n} from \"../types\";\nimport type { Deferrable } from \"../utils\";\nimport type { MiddlewareClient } from \"./actions\";\n\nexport type ClientMiddlewareArgs<\n TAccount extends SmartContractAccount,\n C extends MiddlewareClient,\n TContext extends UserOperationContext | undefined =\n | UserOperationContext\n | undefined,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n> = {\n overrides?: UserOperationOverrides<TEntryPointVersion>;\n context?: TContext;\n feeOptions?: UserOperationFeeOptions;\n account: TAccount;\n client: C;\n};\n\n// [!region ClientMiddlewareFn]\nexport type ClientMiddlewareFn<\n TContext extends UserOperationContext | undefined =\n | UserOperationContext\n | undefined\n> = <\n TAccount extends SmartContractAccount,\n C extends MiddlewareClient,\n TEntryPointVersion extends GetEntryPointFromAccount<TAccount> = GetEntryPointFromAccount<TAccount>\n>(\n struct: Deferrable<UserOperationStruct<TEntryPointVersion>>,\n args: ClientMiddlewareArgs<TAccount, C, TContext, TEntryPointVersion>\n) => Promise<Deferrable<UserOperationStruct<TEntryPointVersion>>>;\n// [!endregion ClientMiddlewareFn]\n\n// [!region ClientMiddleware]\nexport type ClientMiddleware<\n TContext extends UserOperationContext | undefined =\n | UserOperationContext\n | undefined\n> = {\n dummyPaymasterAndData: ClientMiddlewareFn<TContext>;\n feeEstimator: ClientMiddlewareFn<TContext>;\n gasEstimator: ClientMiddlewareFn<TContext>;\n customMiddleware: ClientMiddlewareFn<TContext>;\n paymasterAndData: ClientMiddlewareFn<TContext>;\n userOperationSimulator: ClientMiddlewareFn<TContext>;\n signUserOperation: ClientMiddlewareFn<TContext>;\n};\n// [!endregion ClientMiddleware]\n"]}
@@ -32,31 +32,31 @@ export declare class LocalAccountSigner<T extends HDAccount | PrivateKeyAccount
32
32
  [x: `bytes9[${string}]`]: undefined;
33
33
  [x: `bytes10[${string}]`]: undefined;
34
34
  [x: `bytes25[${string}]`]: undefined;
35
+ [x: `bytes31[${string}]`]: undefined;
36
+ [x: `bytes30[${string}]`]: undefined;
37
+ [x: `bytes29[${string}]`]: undefined;
38
+ [x: `bytes28[${string}]`]: undefined;
39
+ [x: `bytes27[${string}]`]: undefined;
40
+ [x: `bytes26[${string}]`]: undefined;
41
+ [x: `bytes24[${string}]`]: undefined;
42
+ [x: `bytes23[${string}]`]: undefined;
43
+ [x: `bytes22[${string}]`]: undefined;
44
+ [x: `bytes21[${string}]`]: undefined;
45
+ [x: `bytes20[${string}]`]: undefined;
46
+ [x: `bytes19[${string}]`]: undefined;
35
47
  [x: `bytes18[${string}]`]: undefined;
36
- [x: `bytes12[${string}]`]: undefined;
37
- [x: `bytes13[${string}]`]: undefined;
38
- [x: `bytes14[${string}]`]: undefined;
39
- [x: `bytes15[${string}]`]: undefined;
40
- [x: `bytes16[${string}]`]: undefined;
41
48
  [x: `bytes17[${string}]`]: undefined;
42
- [x: `bytes19[${string}]`]: undefined;
43
- [x: `bytes20[${string}]`]: undefined;
44
- [x: `bytes21[${string}]`]: undefined;
45
- [x: `bytes22[${string}]`]: undefined;
46
- [x: `bytes23[${string}]`]: undefined;
47
- [x: `bytes24[${string}]`]: undefined;
48
- [x: `bytes26[${string}]`]: undefined;
49
- [x: `bytes27[${string}]`]: undefined;
50
- [x: `bytes28[${string}]`]: undefined;
51
- [x: `bytes29[${string}]`]: undefined;
52
- [x: `bytes30[${string}]`]: undefined;
53
- [x: `bytes31[${string}]`]: undefined;
49
+ [x: `bytes16[${string}]`]: undefined;
50
+ [x: `bytes15[${string}]`]: undefined;
51
+ [x: `bytes14[${string}]`]: undefined;
52
+ [x: `bytes13[${string}]`]: undefined;
53
+ [x: `bytes12[${string}]`]: undefined;
54
54
  [x: `int[${string}]`]: undefined;
55
55
  [x: `int8[${string}]`]: undefined;
56
- [x: `int16[${string}]`]: undefined;
57
- [x: `int24[${string}]`]: undefined;
58
- [x: `int32[${string}]`]: undefined;
59
56
  [x: `int40[${string}]`]: undefined;
57
+ [x: `int32[${string}]`]: undefined;
58
+ [x: `int24[${string}]`]: undefined;
59
+ [x: `int16[${string}]`]: undefined;
60
60
  [x: `int48[${string}]`]: undefined;
61
61
  [x: `int56[${string}]`]: undefined;
62
62
  [x: `int64[${string}]`]: undefined;
@@ -85,9 +85,9 @@ export declare class LocalAccountSigner<T extends HDAccount | PrivateKeyAccount
85
85
  [x: `int248[${string}]`]: undefined;
86
86
  [x: `int256[${string}]`]: undefined;
87
87
  [x: `uint[${string}]`]: undefined;
88
- [x: `uint16[${string}]`]: undefined;
89
- [x: `uint24[${string}]`]: undefined;
90
88
  [x: `uint40[${string}]`]: undefined;
89
+ [x: `uint24[${string}]`]: undefined;
90
+ [x: `uint16[${string}]`]: undefined;
91
91
  [x: `uint56[${string}]`]: undefined;
92
92
  [x: `uint72[${string}]`]: undefined;
93
93
  [x: `uint80[${string}]`]: undefined;
@@ -134,30 +134,30 @@ export declare class LocalAccountSigner<T extends HDAccount | PrivateKeyAccount
134
134
  bytes9?: undefined;
135
135
  bytes10?: undefined;
136
136
  bytes25?: undefined;
137
+ bytes31?: undefined;
138
+ bytes30?: undefined;
139
+ bytes29?: undefined;
140
+ bytes28?: undefined;
141
+ bytes27?: undefined;
142
+ bytes26?: undefined;
143
+ bytes24?: undefined;
144
+ bytes23?: undefined;
145
+ bytes22?: undefined;
146
+ bytes21?: undefined;
147
+ bytes20?: undefined;
148
+ bytes19?: undefined;
137
149
  bytes18?: undefined;
138
- bytes12?: undefined;
139
- bytes13?: undefined;
140
- bytes14?: undefined;
141
- bytes15?: undefined;
142
- bytes16?: undefined;
143
150
  bytes17?: undefined;
144
- bytes19?: undefined;
145
- bytes20?: undefined;
146
- bytes21?: undefined;
147
- bytes22?: undefined;
148
- bytes23?: undefined;
149
- bytes24?: undefined;
150
- bytes26?: undefined;
151
- bytes27?: undefined;
152
- bytes28?: undefined;
153
- bytes29?: undefined;
154
- bytes30?: undefined;
155
- bytes31?: undefined;
151
+ bytes16?: undefined;
152
+ bytes15?: undefined;
153
+ bytes14?: undefined;
154
+ bytes13?: undefined;
155
+ bytes12?: undefined;
156
156
  int8?: undefined;
157
- int16?: undefined;
158
- int24?: undefined;
159
- int32?: undefined;
160
157
  int40?: undefined;
158
+ int32?: undefined;
159
+ int24?: undefined;
160
+ int16?: undefined;
161
161
  int48?: undefined;
162
162
  int56?: undefined;
163
163
  int64?: undefined;
@@ -185,9 +185,9 @@ export declare class LocalAccountSigner<T extends HDAccount | PrivateKeyAccount
185
185
  int240?: undefined;
186
186
  int248?: undefined;
187
187
  int256?: undefined;
188
- uint16?: undefined;
189
- uint24?: undefined;
190
188
  uint40?: undefined;
189
+ uint24?: undefined;
190
+ uint16?: undefined;
191
191
  uint56?: undefined;
192
192
  uint72?: undefined;
193
193
  uint80?: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"local-account.js","sourceRoot":"","sources":["../../../src/signer/local-account.ts"],"names":[],"mappings":";;;AAUA,4CAAuE;AAMvE,MAAa,kBAAkB;IAO7B,YAAY,KAAQ;QAHpB;;;;;WAAS;QACT;;;;;WAAmB;QAOV;;;;mBAAoE,CAC3E,OAAO,EACP,EAAE;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7C,CAAC;WAAC;QAEO;;;;mBAAgB,KAAK,EAI5B,MAAqD,EACvC,EAAE;gBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;WAAC;QAEO;;;;mBAA2C,KAAK,IAAI,EAAE;gBAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5B,CAAC;WAAC;QArBA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,CAAC;IAqBD,MAAM,CAAC,uBAAuB,CAC5B,GAAW,EACX,IAAgB;QAEhB,MAAM,MAAM,GAAG,IAAA,4BAAiB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC9B,GAAQ;QAER,MAAM,MAAM,GAAG,IAAA,8BAAmB,EAAC,GAAG,CAAC,CAAC;QACxC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AA7CD,gDA6CC","sourcesContent":["import {\n type HDAccount,\n type HDOptions,\n type Hex,\n type LocalAccount,\n type PrivateKeyAccount,\n type SignableMessage,\n type TypedData,\n type TypedDataDefinition,\n} from \"viem\";\nimport { mnemonicToAccount, privateKeyToAccount } from \"viem/accounts\";\nimport type { SmartAccountSigner } from \"./types.js\";\n\n/**\n * Represents a local account signer and provides methods to sign messages and transactions, as well as static methods to create the signer from mnemonic or private key.\n */\nexport class LocalAccountSigner<\n T extends HDAccount | PrivateKeyAccount | LocalAccount\n> implements SmartAccountSigner<T>\n{\n inner: T;\n signerType: string;\n\n constructor(inner: T) {\n this.inner = inner;\n this.signerType = inner.type; // type: \"local\"\n }\n\n readonly signMessage: (message: SignableMessage) => Promise<`0x${string}`> = (\n message\n ) => {\n return this.inner.signMessage({ message });\n };\n\n readonly signTypedData = async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n params: TypedDataDefinition<TTypedData, TPrimaryType>\n ): Promise<Hex> => {\n return this.inner.signTypedData(params);\n };\n\n readonly getAddress: () => Promise<`0x${string}`> = async () => {\n return this.inner.address;\n };\n\n static mnemonicToAccountSigner(\n key: string,\n opts?: HDOptions\n ): LocalAccountSigner<HDAccount> {\n const signer = mnemonicToAccount(key, opts);\n return new LocalAccountSigner(signer);\n }\n\n static privateKeyToAccountSigner(\n key: Hex\n ): LocalAccountSigner<PrivateKeyAccount> {\n const signer = privateKeyToAccount(key);\n return new LocalAccountSigner(signer);\n }\n}\n"]}
1
+ {"version":3,"file":"local-account.js","sourceRoot":"","sources":["../../../src/signer/local-account.ts"],"names":[],"mappings":";;;AAUA,4CAAuE;AAMvE,MAAa,kBAAkB;IAsB7B,YAAY,KAAQ;QAlBpB;;;;;WAAS;QACT;;;;;WAAmB;QAqCV;;;;mBAAoE,CAC3E,OAAO,EACP,EAAE;gBACF,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;YAC7C,CAAC;WAAC;QAsBO;;;;mBAAgB,KAAK,EAI5B,MAAqD,EACvC,EAAE;gBAChB,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC1C,CAAC;WAAC;QAgBO;;;;mBAAa,KAAK,IAA4B,EAAE;gBACvD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5B,CAAC;WAAC;QAtEA,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,CAAC;IAqFD,MAAM,CAAC,uBAAuB,CAC5B,GAAW,EACX,IAAgB;QAEhB,MAAM,MAAM,GAAG,IAAA,4BAAiB,EAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5C,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAeG,MAAM,CAAC,yBAAyB,CAClC,GAAQ;QAER,MAAM,MAAM,GAAG,IAAA,8BAAmB,EAAC,GAAG,CAAC,CAAC;QACxC,OAAO,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;CACF;AAzID,gDAyIC","sourcesContent":["import {\n type HDAccount,\n type HDOptions,\n type Hex,\n type LocalAccount,\n type PrivateKeyAccount,\n type SignableMessage,\n type TypedData,\n type TypedDataDefinition,\n} from \"viem\";\nimport { mnemonicToAccount, privateKeyToAccount } from \"viem/accounts\";\nimport type { SmartAccountSigner } from \"./types.js\";\n\n/**\n * Represents a local account signer and provides methods to sign messages and transactions, as well as static methods to create the signer from mnemonic or private key.\n */\nexport class LocalAccountSigner<\n T extends HDAccount | PrivateKeyAccount | LocalAccount\n> implements SmartAccountSigner<T>\n{\n inner: T;\n signerType: string;\n\n /**\n * A function to initialize an object with an inner parameter and derive a signerType from it.\n *\n * @example\n * ```ts\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { privateKeyToAccount, generatePrivateKey } from \"viem\";\n *\n * const signer = new LocalAccountSigner(\n * privateKeyToAccount(generatePrivateKey()),\n * );\n * ```\n *\n * @param {T} inner The inner parameter containing the necessary data\n */\n constructor(inner: T) {\n this.inner = inner;\n this.signerType = inner.type; // type: \"local\"\n }\n\n /**\n * Signs the provided message using the inner signMessage function.\n *\n * @example\n * ```ts\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generatePrivateKey } from \"viem\";\n *\n * const signer = LocalAccountSigner.mnemonicToAccountSigner(generatePrivateKey());\n * const signature = await signer.signMessage(\"Hello, world!\");\n * ```\n *\n * @param {string} message The message to be signed\n * @returns {Promise<any>} A promise that resolves to the signed message\n */\n readonly signMessage: (message: SignableMessage) => Promise<`0x${string}`> = (\n message\n ) => {\n return this.inner.signMessage({ message });\n };\n\n /**\n * Signs typed data using the given parameters.\n *\n * @example\n * ```ts\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generatePrivateKey } from \"viem\";\n *\n * const signer = LocalAccountSigner.mnemonicToAccountSigner(generatePrivateKey());\n * const signature = await signer.signTypedData({\n * domain: {},\n * types: {},\n * primaryType: \"\",\n * message: {},\n * });\n * ```\n *\n * @param {TypedDataDefinition<TTypedData, TPrimaryType>} params The parameters defining the typed data and primary type\n * @returns {Promise<Hex>} A promise that resolves to the signed data in hexadecimal format\n */\n readonly signTypedData = async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n params: TypedDataDefinition<TTypedData, TPrimaryType>\n ): Promise<Hex> => {\n return this.inner.signTypedData(params);\n };\n\n /**\n * Returns the address of the inner object in a specific hexadecimal format.\n *\n * @example\n * ```ts\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generatePrivateKey } from \"viem\";\n *\n * const signer = LocalAccountSigner.mnemonicToAccountSigner(generatePrivateKey());\n * const address = await signer.getAddress();\n * ```\n *\n * @returns {Promise<Hex>} A promise that resolves to the address in the format `0x{string}`\n */\n readonly getAddress = async (): Promise<`0x${string}`> => {\n return this.inner.address;\n };\n\n /**\n * Creates a LocalAccountSigner using the provided mnemonic key and optional HD options.\n *\n * @example\n * ```ts\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generateMnemonic } from \"viem\";\n *\n * const signer = LocalAccountSigner.mnemonicToAccountSigner(generateMnemonic());\n * ```\n *\n * @param {string} key The mnemonic key to derive the account from.\n * @param {HDOptions} [opts] Optional HD options for deriving the account.\n * @returns {LocalAccountSigner<HDAccount>} A LocalAccountSigner object for the derived account.\n */\n static mnemonicToAccountSigner(\n key: string,\n opts?: HDOptions\n ): LocalAccountSigner<HDAccount> {\n const signer = mnemonicToAccount(key, opts);\n return new LocalAccountSigner(signer);\n }\n\n /**\n * Creates a `LocalAccountSigner` instance using the provided private key.\n *\n * @example\n * ```ts\n * import { LocalAccountSigner } from \"@aa-sdk/core\";\n * import { generatePrivateKey } from \"viem\";\n *\n * const signer = LocalAccountSigner.mnemonicToAccountSigner(generatePrivateKey());\n * ```\n *\n * @param {Hex} key The private key in hexadecimal format\n * @returns {LocalAccountSigner<PrivateKeyAccount>} An instance of `LocalAccountSigner` initialized with the provided private key\n */ static privateKeyToAccountSigner(\n key: Hex\n ): LocalAccountSigner<PrivateKeyAccount> {\n const signer = privateKeyToAccount(key);\n return new LocalAccountSigner(signer);\n }\n}\n"]}
@@ -33,31 +33,31 @@ export declare class WalletClientSigner implements SmartAccountSigner<WalletClie
33
33
  [x: `bytes9[${string}]`]: undefined;
34
34
  [x: `bytes10[${string}]`]: undefined;
35
35
  [x: `bytes25[${string}]`]: undefined;
36
+ [x: `bytes31[${string}]`]: undefined;
37
+ [x: `bytes30[${string}]`]: undefined;
38
+ [x: `bytes29[${string}]`]: undefined;
39
+ [x: `bytes28[${string}]`]: undefined;
40
+ [x: `bytes27[${string}]`]: undefined;
41
+ [x: `bytes26[${string}]`]: undefined;
42
+ [x: `bytes24[${string}]`]: undefined;
43
+ [x: `bytes23[${string}]`]: undefined;
44
+ [x: `bytes22[${string}]`]: undefined;
45
+ [x: `bytes21[${string}]`]: undefined;
46
+ [x: `bytes20[${string}]`]: undefined;
47
+ [x: `bytes19[${string}]`]: undefined;
36
48
  [x: `bytes18[${string}]`]: undefined;
37
- [x: `bytes12[${string}]`]: undefined;
38
- [x: `bytes13[${string}]`]: undefined;
39
- [x: `bytes14[${string}]`]: undefined;
40
- [x: `bytes15[${string}]`]: undefined;
41
- [x: `bytes16[${string}]`]: undefined;
42
49
  [x: `bytes17[${string}]`]: undefined;
43
- [x: `bytes19[${string}]`]: undefined;
44
- [x: `bytes20[${string}]`]: undefined;
45
- [x: `bytes21[${string}]`]: undefined;
46
- [x: `bytes22[${string}]`]: undefined;
47
- [x: `bytes23[${string}]`]: undefined;
48
- [x: `bytes24[${string}]`]: undefined;
49
- [x: `bytes26[${string}]`]: undefined;
50
- [x: `bytes27[${string}]`]: undefined;
51
- [x: `bytes28[${string}]`]: undefined;
52
- [x: `bytes29[${string}]`]: undefined;
53
- [x: `bytes30[${string}]`]: undefined;
54
- [x: `bytes31[${string}]`]: undefined;
50
+ [x: `bytes16[${string}]`]: undefined;
51
+ [x: `bytes15[${string}]`]: undefined;
52
+ [x: `bytes14[${string}]`]: undefined;
53
+ [x: `bytes13[${string}]`]: undefined;
54
+ [x: `bytes12[${string}]`]: undefined;
55
55
  [x: `int[${string}]`]: undefined;
56
56
  [x: `int8[${string}]`]: undefined;
57
- [x: `int16[${string}]`]: undefined;
58
- [x: `int24[${string}]`]: undefined;
59
- [x: `int32[${string}]`]: undefined;
60
57
  [x: `int40[${string}]`]: undefined;
58
+ [x: `int32[${string}]`]: undefined;
59
+ [x: `int24[${string}]`]: undefined;
60
+ [x: `int16[${string}]`]: undefined;
61
61
  [x: `int48[${string}]`]: undefined;
62
62
  [x: `int56[${string}]`]: undefined;
63
63
  [x: `int64[${string}]`]: undefined;
@@ -86,9 +86,9 @@ export declare class WalletClientSigner implements SmartAccountSigner<WalletClie
86
86
  [x: `int248[${string}]`]: undefined;
87
87
  [x: `int256[${string}]`]: undefined;
88
88
  [x: `uint[${string}]`]: undefined;
89
- [x: `uint16[${string}]`]: undefined;
90
- [x: `uint24[${string}]`]: undefined;
91
89
  [x: `uint40[${string}]`]: undefined;
90
+ [x: `uint24[${string}]`]: undefined;
91
+ [x: `uint16[${string}]`]: undefined;
92
92
  [x: `uint56[${string}]`]: undefined;
93
93
  [x: `uint72[${string}]`]: undefined;
94
94
  [x: `uint80[${string}]`]: undefined;
@@ -135,30 +135,30 @@ export declare class WalletClientSigner implements SmartAccountSigner<WalletClie
135
135
  bytes9?: undefined;
136
136
  bytes10?: undefined;
137
137
  bytes25?: undefined;
138
+ bytes31?: undefined;
139
+ bytes30?: undefined;
140
+ bytes29?: undefined;
141
+ bytes28?: undefined;
142
+ bytes27?: undefined;
143
+ bytes26?: undefined;
144
+ bytes24?: undefined;
145
+ bytes23?: undefined;
146
+ bytes22?: undefined;
147
+ bytes21?: undefined;
148
+ bytes20?: undefined;
149
+ bytes19?: undefined;
138
150
  bytes18?: undefined;
139
- bytes12?: undefined;
140
- bytes13?: undefined;
141
- bytes14?: undefined;
142
- bytes15?: undefined;
143
- bytes16?: undefined;
144
151
  bytes17?: undefined;
145
- bytes19?: undefined;
146
- bytes20?: undefined;
147
- bytes21?: undefined;
148
- bytes22?: undefined;
149
- bytes23?: undefined;
150
- bytes24?: undefined;
151
- bytes26?: undefined;
152
- bytes27?: undefined;
153
- bytes28?: undefined;
154
- bytes29?: undefined;
155
- bytes30?: undefined;
156
- bytes31?: undefined;
152
+ bytes16?: undefined;
153
+ bytes15?: undefined;
154
+ bytes14?: undefined;
155
+ bytes13?: undefined;
156
+ bytes12?: undefined;
157
157
  int8?: undefined;
158
- int16?: undefined;
159
- int24?: undefined;
160
- int32?: undefined;
161
158
  int40?: undefined;
159
+ int32?: undefined;
160
+ int24?: undefined;
161
+ int16?: undefined;
162
162
  int48?: undefined;
163
163
  int56?: undefined;
164
164
  int64?: undefined;
@@ -186,9 +186,9 @@ export declare class WalletClientSigner implements SmartAccountSigner<WalletClie
186
186
  int240?: undefined;
187
187
  int248?: undefined;
188
188
  int256?: undefined;
189
- uint16?: undefined;
190
- uint24?: undefined;
191
189
  uint40?: undefined;
190
+ uint24?: undefined;
191
+ uint16?: undefined;
192
192
  uint56?: undefined;
193
193
  uint72?: undefined;
194
194
  uint80?: undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-client.js","sourceRoot":"","sources":["../../../src/signer/wallet-client.ts"],"names":[],"mappings":";;;AAAA,+BAOc;AACd,mDAA6D;AAM7D,MAAa,kBAAkB;IAI7B,YAAY,MAAoB,EAAE,UAAkB;QAHpD;;;;;WAAmB;QACnB;;;;;WAAoB;QAUpB;;;;mBAA2C,KAAK,IAAI,EAAE;gBACpD,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAChD,OAAO,IAAA,iBAAU,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;WAAC;QAEO;;;;mBACP,KAAK,EAAE,OAAO,EAAE,EAAE;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAEhE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;WAAC;QAEJ;;;;mBAAgB,KAAK,EAInB,SAAwD,EAC1C,EAAE;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAEhE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;oBAC9B,OAAO;oBACP,GAAG,SAAS;iBACb,CAAC,CAAC;YACL,CAAC;WAAC;QA/BA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,kCAAsB,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CA2BF;AArCD,gDAqCC","sourcesContent":["import {\n getAddress,\n type Hex,\n type SignableMessage,\n type TypedData,\n type TypedDataDefinition,\n type WalletClient,\n} from \"viem\";\nimport { InvalidSignerTypeError } from \"../errors/signer.js\";\nimport type { SmartAccountSigner } from \"./types\";\n\n/**\n * Represents a wallet client signer for smart accounts, providing methods to get the address, sign messages, and sign typed data.\n */\nexport class WalletClientSigner implements SmartAccountSigner<WalletClient> {\n signerType: string;\n inner: WalletClient;\n\n constructor(client: WalletClient, signerType: string) {\n this.inner = client;\n if (!signerType) {\n throw new InvalidSignerTypeError(signerType);\n }\n this.signerType = signerType;\n }\n\n getAddress: () => Promise<`0x${string}`> = async () => {\n let addresses = await this.inner.getAddresses();\n return getAddress(addresses[0]);\n };\n\n readonly signMessage: (message: SignableMessage) => Promise<`0x${string}`> =\n async (message) => {\n const account = this.inner.account ?? (await this.getAddress());\n\n return this.inner.signMessage({ message, account });\n };\n\n signTypedData = async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n typedData: TypedDataDefinition<TTypedData, TPrimaryType>\n ): Promise<Hex> => {\n const account = this.inner.account ?? (await this.getAddress());\n\n return this.inner.signTypedData({\n account,\n ...typedData,\n });\n };\n}\n"]}
1
+ {"version":3,"file":"wallet-client.js","sourceRoot":"","sources":["../../../src/signer/wallet-client.ts"],"names":[],"mappings":";;;AAAA,+BAOc;AACd,mDAA6D;AAM7D,MAAa,kBAAkB;IAyB7B,YAAY,MAAoB,EAAE,UAAkB;QAxBpD;;;;;WAAmB;QACnB;;;;;WAAoB;QAmDpB;;;;mBAA2C,KAAK,IAAI,EAAE;gBACpD,IAAI,SAAS,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAChD,OAAO,IAAA,iBAAU,EAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;WAAC;QAuBO;;;;mBACP,KAAK,EAAE,OAAO,EAAE,EAAE;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAEhE,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACtD,CAAC;WAAC;QA6BJ;;;;mBAAgB,KAAK,EAInB,SAAwD,EAC1C,EAAE;gBAChB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;gBAEhE,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;oBAC9B,OAAO;oBACP,GAAG,SAAS;iBACb,CAAC,CAAC;YACL,CAAC;WAAC;QAnGA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,kCAAsB,CAAC,UAAU,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;CA+FF;AA9HD,gDA8HC","sourcesContent":["import {\n getAddress,\n type Hex,\n type SignableMessage,\n type TypedData,\n type TypedDataDefinition,\n type WalletClient,\n} from \"viem\";\nimport { InvalidSignerTypeError } from \"../errors/signer.js\";\nimport type { SmartAccountSigner } from \"./types\";\n\n/**\n * Represents a wallet client signer for smart accounts, providing methods to get the address, sign messages, and sign typed data.\n */\nexport class WalletClientSigner implements SmartAccountSigner<WalletClient> {\n signerType: string;\n inner: WalletClient;\n\n /**\n * Initializes a signer with a given wallet client and signer type.\n *\n * @example\n * ```ts\n * import { WalletClientSigner } from \"@aa-sdk/core\";\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum!)\n * });\n *\n * const signer = new WalletClientSigner(client, 'wallet');\n * ```\n *\n * @param {WalletClient} client The wallet client to interact with\n * @param {string} signerType The type of signer; must be a valid signer type, otherwise an error will be thrown\n * @throws {InvalidSignerTypeError} If the signer type is invalid\n */\n constructor(client: WalletClient, signerType: string) {\n this.inner = client;\n if (!signerType) {\n throw new InvalidSignerTypeError(signerType);\n }\n this.signerType = signerType;\n }\n\n /**\n * Asynchronously retrieves addresses from the inner object and returns the first address after applying the `getAddress` function.\n *\n * @example\n * ```ts\n * import { WalletClientSigner } from \"@aa-sdk/core\";\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum!)\n * });\n *\n * const signer = new WalletClientSigner(client, 'wallet');\n * console.log(await signer.getAddress());\n * ```\n *\n * @returns {Promise<string>} A promise that resolves to the first address after being processed by the `getAddress` function.\n */\n getAddress: () => Promise<`0x${string}`> = async () => {\n let addresses = await this.inner.getAddresses();\n return getAddress(addresses[0]);\n };\n\n /**\n * Signs a message using the account's signing method.\n *\n * @example\n * ```ts\n * import { WalletClientSigner } from \"@aa-sdk/core\";\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum!)\n * });\n *\n * const signer = new WalletClientSigner(client, 'wallet');\n * console.log(await signer.signMessage(\"hello\"));\n * ```\n *\n * @param {string} message the message string that needs to be signed\n * @returns {Promise<string>} a promise that resolves to the signed message\n */\n readonly signMessage: (message: SignableMessage) => Promise<`0x${string}`> =\n async (message) => {\n const account = this.inner.account ?? (await this.getAddress());\n\n return this.inner.signMessage({ message, account });\n };\n\n /**\n * Signs the provided typed data using the account's private key.\n *\n * @example\n * ```ts\n * import { WalletClientSigner } from \"@aa-sdk/core\";\n * import { createWalletClient, custom } from 'viem'\n * import { mainnet } from 'viem/chains'\n *\n * const client = createWalletClient({\n * chain: mainnet,\n * transport: custom(window.ethereum!)\n * });\n *\n * const signer = new WalletClientSigner(client, 'wallet');\n * console.log(await signer.signTypedData({\n * types: {\n * \"Message\": [{ name: \"content\", type: \"string\" }]\n * },\n * primaryType: \"Message\",\n * message: { content: \"Hello\" },\n * }));\n * ```\n *\n * @param {TypedDataDefinition<TTypedData, TPrimaryType>} typedData The typed data to be signed\n * @returns {Promise<Hex>} A promise that resolves to a hex string representing the signed data\n */\n signTypedData = async <\n const TTypedData extends TypedData | { [key: string]: unknown },\n TPrimaryType extends string = string\n >(\n typedData: TypedDataDefinition<TTypedData, TPrimaryType>\n ): Promise<Hex> => {\n const account = this.inner.account ?? (await this.getAddress());\n\n return this.inner.signTypedData({\n account,\n ...typedData,\n });\n };\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"split.js","sourceRoot":"","sources":["../../../src/transport/split.ts"],"names":[],"mappings":";;;AAAA,+BAAoE;AA0C7D,MAAM,KAAK,GAAG,CAAC,MAA4B,EAAmB,EAAE;IACrE,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;YACJ,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,IAAI,GAAG,EAAqB,CAAC,CAAC;IAEjC,OAAO,CAAC,IAAI,EAAE,EAAE,CACd,IAAA,aAAM,EAAC;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;gBAC9B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;YAED,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,CAAC;AACb,CAAC,CAAC;AA1BW,QAAA,KAAK,SA0BhB","sourcesContent":["import { custom, type CustomTransport, type Transport } from \"viem\";\n\nexport interface SplitTransportParams {\n overrides: {\n methods: string[];\n transport: Transport;\n }[];\n fallback: Transport;\n}\n\n/**\n * The Split Transport allows you to split RPC traffic for specific methods across\n * different RPC providers. This is done by specifying the methods you want handled\n * specially as overrides and providing a fallback transport for all other methods.\n *\n * @example\n * ```ts\n * import { createPublicClient, http } from \"viem\";\n * import { split } from \"@aa-sdk/core\";\n *\n * const bundlerMethods = [\n * \"eth_sendUserOperation\",\n * \"eth_estimateUserOperationGas\",\n * \"eth_getUserOperationReceipt\",\n * \"eth_getUserOperationByHash\",\n * \"eth_supportedEntryPoints\"\n * ];\n *\n * const clientWithSplit = createPublicClient({\n * transport: split({\n * overrides: [{\n * methods: bundlerMethods,\n * transport: http(BUNDLER_RPC_URL)\n * }]\n * fallback: http(OTHER_RPC_URL)\n * }),\n * });\n * ```\n *\n * @param params {@link SplitTransportParams} split transport configuration containing the methods overrides and fallback transport\n * @returns a {@link CustomTransport} that splits traffic\n */\nexport const split = (params: SplitTransportParams): CustomTransport => {\n const overrideMap = params.overrides.reduce((accum, curr) => {\n curr.methods.forEach((method) => {\n if (accum.has(method) && accum.get(method) !== curr.transport) {\n throw new Error(\n \"A method cannot be handled by more than one transport\"\n );\n }\n\n accum.set(method, curr.transport);\n });\n\n return accum;\n }, new Map<string, Transport>());\n\n return (opts) =>\n custom({\n request: async (args) => {\n const transportOverride = overrideMap.get(args.method);\n if (transportOverride != null) {\n return transportOverride(opts).request(args);\n }\n\n return params.fallback(opts).request(args);\n },\n })(opts);\n};\n"]}
1
+ {"version":3,"file":"split.js","sourceRoot":"","sources":["../../../src/transport/split.ts"],"names":[],"mappings":";;;AAAA,+BAAoE;AA0C7D,MAAM,KAAK,GAAG,CAAC,MAA4B,EAAmB,EAAE;IACrE,MAAM,WAAW,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;YAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC9D,MAAM,IAAI,KAAK,CACb,uDAAuD,CACxD,CAAC;YACJ,CAAC;YAED,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC;IACf,CAAC,EAAE,IAAI,GAAG,EAAqB,CAAC,CAAC;IAEjC,OAAO,CAAC,IAAI,EAAE,EAAE,CACd,IAAA,aAAM,EAAC;QACL,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YACtB,MAAM,iBAAiB,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvD,IAAI,iBAAiB,IAAI,IAAI,EAAE,CAAC;gBAC9B,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC/C,CAAC;YAED,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;KACF,CAAC,CAAC,IAAI,CAAC,CAAC;AACb,CAAC,CAAC;AA1BW,QAAA,KAAK,SA0BhB","sourcesContent":["import { custom, type CustomTransport, type Transport } from \"viem\";\n\nexport interface SplitTransportParams {\n overrides: {\n methods: string[];\n transport: Transport;\n }[];\n fallback: Transport;\n}\n\n/**\n * The Split Transport allows you to split RPC traffic for specific methods across\n * different RPC providers. This is done by specifying the methods you want handled\n * specially as overrides and providing a fallback transport for all other methods.\n *\n * @example\n * ```ts\n * import { createPublicClient, http } from \"viem\";\n * import { split } from \"@aa-sdk/core\";\n *\n * const bundlerMethods = [\n * \"eth_sendUserOperation\",\n * \"eth_estimateUserOperationGas\",\n * \"eth_getUserOperationReceipt\",\n * \"eth_getUserOperationByHash\",\n * \"eth_supportedEntryPoints\"\n * ];\n *\n * const clientWithSplit = createPublicClient({\n * transport: split({\n * overrides: [{\n * methods: bundlerMethods,\n * transport: http(BUNDLER_RPC_URL)\n * }],\n * fallback: http(OTHER_RPC_URL)\n * }),\n * });\n * ```\n *\n * @param {SplitTransportParams} params split transport configuration containing the methods overrides and fallback transport\n * @returns {CustomTransport} a viem Transport that splits traffic\n */\nexport const split = (params: SplitTransportParams): CustomTransport => {\n const overrideMap = params.overrides.reduce((accum, curr) => {\n curr.methods.forEach((method) => {\n if (accum.has(method) && accum.get(method) !== curr.transport) {\n throw new Error(\n \"A method cannot be handled by more than one transport\"\n );\n }\n\n accum.set(method, curr.transport);\n });\n\n return accum;\n }, new Map<string, Transport>());\n\n return (opts) =>\n custom({\n request: async (args) => {\n const transportOverride = overrideMap.get(args.method);\n if (transportOverride != null) {\n return transportOverride(opts).request(args);\n }\n\n return params.fallback(opts).request(args);\n },\n })(opts);\n};\n"]}