viem 2.12.5 → 2.13.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (304) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/_cjs/accounts/index.js.map +1 -1
  3. package/_cjs/accounts/privateKeyToAccount.js +0 -4
  4. package/_cjs/accounts/privateKeyToAccount.js.map +1 -1
  5. package/_cjs/accounts/toAccount.js +0 -1
  6. package/_cjs/accounts/toAccount.js.map +1 -1
  7. package/_cjs/actions/index.js.map +1 -1
  8. package/_cjs/celo/index.js.map +1 -1
  9. package/_cjs/chains/definitions/avalanche.js +3 -3
  10. package/_cjs/chains/definitions/avalanche.js.map +1 -1
  11. package/_cjs/chains/definitions/avalancheFuji.js +3 -3
  12. package/_cjs/chains/definitions/avalancheFuji.js.map +1 -1
  13. package/_cjs/chains/definitions/redstone.js +23 -0
  14. package/_cjs/chains/definitions/redstone.js.map +1 -0
  15. package/_cjs/chains/definitions/scrollSepolia.js +3 -3
  16. package/_cjs/chains/definitions/scrollSepolia.js.map +1 -1
  17. package/_cjs/chains/definitions/taiko.js +32 -0
  18. package/_cjs/chains/definitions/taiko.js.map +1 -0
  19. package/_cjs/chains/index.js +7 -5
  20. package/_cjs/chains/index.js.map +1 -1
  21. package/_cjs/chains/utils.js.map +1 -1
  22. package/_cjs/ens/index.js.map +1 -1
  23. package/_cjs/errors/version.js +1 -1
  24. package/_cjs/experimental/eip5792/actions/writeContracts.js.map +1 -1
  25. package/_cjs/experimental/erc7715/actions/issuePermissions.js +74 -0
  26. package/_cjs/experimental/erc7715/actions/issuePermissions.js.map +1 -0
  27. package/_cjs/experimental/erc7715/decorators/erc7715.js +13 -0
  28. package/_cjs/experimental/erc7715/decorators/erc7715.js.map +1 -0
  29. package/_cjs/experimental/erc7715/types/permission.js +3 -0
  30. package/_cjs/experimental/erc7715/types/permission.js.map +1 -0
  31. package/_cjs/experimental/erc7715/types/signer.js +3 -0
  32. package/_cjs/experimental/erc7715/types/signer.js.map +1 -0
  33. package/_cjs/experimental/index.js +5 -15
  34. package/_cjs/experimental/index.js.map +1 -1
  35. package/_cjs/index.js.map +1 -1
  36. package/_cjs/node/index.js.map +1 -1
  37. package/_cjs/op-stack/chains.js.map +1 -1
  38. package/_cjs/op-stack/index.js.map +1 -1
  39. package/_cjs/siwe/index.js.map +1 -1
  40. package/_cjs/utils/accounts.js.map +1 -1
  41. package/_cjs/utils/hash/toEventHash.js.map +1 -1
  42. package/_cjs/utils/hash/toEventSignature.js.map +1 -1
  43. package/_cjs/utils/hash/toFunctionHash.js.map +1 -1
  44. package/_cjs/utils/hash/toFunctionSignature.js.map +1 -1
  45. package/_cjs/utils/index.js.map +1 -1
  46. package/_cjs/utils/promise/withTimeout.js.map +1 -1
  47. package/_cjs/zksync/chains.js.map +1 -1
  48. package/_cjs/zksync/index.js.map +1 -1
  49. package/_esm/accounts/index.js +1 -0
  50. package/_esm/accounts/index.js.map +1 -1
  51. package/_esm/accounts/privateKeyToAccount.js +0 -4
  52. package/_esm/accounts/privateKeyToAccount.js.map +1 -1
  53. package/_esm/accounts/toAccount.js +0 -1
  54. package/_esm/accounts/toAccount.js.map +1 -1
  55. package/_esm/actions/index.js +1 -0
  56. package/_esm/actions/index.js.map +1 -1
  57. package/_esm/celo/index.js +1 -0
  58. package/_esm/celo/index.js.map +1 -1
  59. package/_esm/chains/definitions/avalanche.js +3 -3
  60. package/_esm/chains/definitions/avalanche.js.map +1 -1
  61. package/_esm/chains/definitions/avalancheFuji.js +3 -3
  62. package/_esm/chains/definitions/avalancheFuji.js.map +1 -1
  63. package/_esm/chains/definitions/redstone.js +20 -0
  64. package/_esm/chains/definitions/redstone.js.map +1 -0
  65. package/_esm/chains/definitions/scrollSepolia.js +3 -3
  66. package/_esm/chains/definitions/scrollSepolia.js.map +1 -1
  67. package/_esm/chains/definitions/taiko.js +29 -0
  68. package/_esm/chains/definitions/taiko.js.map +1 -0
  69. package/_esm/chains/index.js +3 -1
  70. package/_esm/chains/index.js.map +1 -1
  71. package/_esm/chains/utils.js +1 -0
  72. package/_esm/chains/utils.js.map +1 -1
  73. package/_esm/ens/index.js +1 -0
  74. package/_esm/ens/index.js.map +1 -1
  75. package/_esm/errors/version.js +1 -1
  76. package/_esm/experimental/eip5792/actions/writeContracts.js.map +1 -1
  77. package/_esm/experimental/erc7715/actions/issuePermissions.js +107 -0
  78. package/_esm/experimental/erc7715/actions/issuePermissions.js.map +1 -0
  79. package/_esm/experimental/erc7715/decorators/erc7715.js +26 -0
  80. package/_esm/experimental/erc7715/decorators/erc7715.js.map +1 -0
  81. package/_esm/experimental/erc7715/types/permission.js +2 -0
  82. package/_esm/experimental/erc7715/types/permission.js.map +1 -0
  83. package/_esm/experimental/erc7715/types/signer.js +2 -0
  84. package/_esm/experimental/erc7715/types/signer.js.map +1 -0
  85. package/_esm/experimental/index.js +3 -7
  86. package/_esm/experimental/index.js.map +1 -1
  87. package/_esm/index.js +1 -0
  88. package/_esm/index.js.map +1 -1
  89. package/_esm/node/index.js +1 -0
  90. package/_esm/node/index.js.map +1 -1
  91. package/_esm/op-stack/chains.js +1 -0
  92. package/_esm/op-stack/chains.js.map +1 -1
  93. package/_esm/op-stack/index.js +2 -0
  94. package/_esm/op-stack/index.js.map +1 -1
  95. package/_esm/siwe/index.js +1 -0
  96. package/_esm/siwe/index.js.map +1 -1
  97. package/_esm/utils/accounts.js +1 -0
  98. package/_esm/utils/accounts.js.map +1 -1
  99. package/_esm/utils/hash/toEventHash.js +1 -0
  100. package/_esm/utils/hash/toEventHash.js.map +1 -1
  101. package/_esm/utils/hash/toEventSignature.js +1 -0
  102. package/_esm/utils/hash/toEventSignature.js.map +1 -1
  103. package/_esm/utils/hash/toFunctionHash.js +1 -0
  104. package/_esm/utils/hash/toFunctionHash.js.map +1 -1
  105. package/_esm/utils/hash/toFunctionSignature.js +1 -0
  106. package/_esm/utils/hash/toFunctionSignature.js.map +1 -1
  107. package/_esm/utils/index.js +1 -0
  108. package/_esm/utils/index.js.map +1 -1
  109. package/_esm/utils/promise/withTimeout.js.map +1 -1
  110. package/_esm/zksync/chains.js +1 -0
  111. package/_esm/zksync/chains.js.map +1 -1
  112. package/_esm/zksync/index.js +1 -0
  113. package/_esm/zksync/index.js.map +1 -1
  114. package/_types/accounts/index.d.ts.map +1 -1
  115. package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
  116. package/_types/accounts/toAccount.d.ts.map +1 -1
  117. package/_types/accounts/types.d.ts +2 -4
  118. package/_types/accounts/types.d.ts.map +1 -1
  119. package/_types/actions/index.d.ts.map +1 -1
  120. package/_types/celo/chainConfig.d.ts +76 -76
  121. package/_types/celo/formatters.d.ts +38 -38
  122. package/_types/celo/index.d.ts.map +1 -1
  123. package/_types/chains/definitions/ancient8.d.ts +30 -30
  124. package/_types/chains/definitions/ancient8Sepolia.d.ts +30 -30
  125. package/_types/chains/definitions/avalanche.d.ts +3 -3
  126. package/_types/chains/definitions/avalancheFuji.d.ts +3 -3
  127. package/_types/chains/definitions/base.d.ts +30 -30
  128. package/_types/chains/definitions/baseGoerli.d.ts +30 -30
  129. package/_types/chains/definitions/baseSepolia.d.ts +30 -30
  130. package/_types/chains/definitions/celo.d.ts +76 -76
  131. package/_types/chains/definitions/celoAlfajores.d.ts +76 -76
  132. package/_types/chains/definitions/fraxtal.d.ts +30 -30
  133. package/_types/chains/definitions/fraxtalTestnet.d.ts +30 -30
  134. package/_types/chains/definitions/funkiSepolia.d.ts +30 -30
  135. package/_types/chains/definitions/liskSepolia.d.ts +30 -30
  136. package/_types/chains/definitions/metalL2.d.ts +30 -30
  137. package/_types/chains/definitions/optimism.d.ts +30 -30
  138. package/_types/chains/definitions/optimismGoerli.d.ts +30 -30
  139. package/_types/chains/definitions/optimismSepolia.d.ts +30 -30
  140. package/_types/chains/definitions/pgn.d.ts +30 -30
  141. package/_types/chains/definitions/pgnTestnet.d.ts +30 -30
  142. package/_types/chains/definitions/{scrollTestnet.d.ts → redstone.d.ts} +10 -11
  143. package/_types/chains/definitions/redstone.d.ts.map +1 -0
  144. package/_types/chains/definitions/rss3.d.ts +30 -30
  145. package/_types/chains/definitions/rss3Sepolia.d.ts +30 -30
  146. package/_types/chains/definitions/scrollSepolia.d.ts +3 -3
  147. package/_types/chains/definitions/taiko.d.ts +34 -0
  148. package/_types/chains/definitions/taiko.d.ts.map +1 -0
  149. package/_types/chains/definitions/zora.d.ts +30 -30
  150. package/_types/chains/definitions/zoraSepolia.d.ts +30 -30
  151. package/_types/chains/definitions/zoraTestnet.d.ts +30 -30
  152. package/_types/chains/index.d.ts +2 -1
  153. package/_types/chains/index.d.ts.map +1 -1
  154. package/_types/chains/utils.d.ts.map +1 -1
  155. package/_types/ens/index.d.ts.map +1 -1
  156. package/_types/errors/version.d.ts +1 -1
  157. package/_types/experimental/eip5792/actions/writeContracts.d.ts +11 -3
  158. package/_types/experimental/eip5792/actions/writeContracts.d.ts.map +1 -1
  159. package/_types/experimental/erc7715/actions/issuePermissions.d.ts +73 -0
  160. package/_types/experimental/erc7715/actions/issuePermissions.d.ts.map +1 -0
  161. package/_types/experimental/erc7715/decorators/erc7715.d.ts +61 -0
  162. package/_types/experimental/erc7715/decorators/erc7715.d.ts.map +1 -0
  163. package/_types/experimental/erc7715/types/permission.d.ts +36 -0
  164. package/_types/experimental/erc7715/types/permission.d.ts.map +1 -0
  165. package/_types/experimental/erc7715/types/signer.d.ts +22 -0
  166. package/_types/experimental/erc7715/types/signer.d.ts.map +1 -0
  167. package/_types/experimental/index.d.ts +3 -8
  168. package/_types/experimental/index.d.ts.map +1 -1
  169. package/_types/index.d.ts +2 -2
  170. package/_types/index.d.ts.map +1 -1
  171. package/_types/node/index.d.ts.map +1 -1
  172. package/_types/op-stack/chainConfig.d.ts +30 -30
  173. package/_types/op-stack/chains.d.ts.map +1 -1
  174. package/_types/op-stack/formatters.d.ts +30 -30
  175. package/_types/op-stack/index.d.ts.map +1 -1
  176. package/_types/siwe/index.d.ts.map +1 -1
  177. package/_types/types/contract.d.ts +1 -1
  178. package/_types/types/contract.d.ts.map +1 -1
  179. package/_types/types/eip1193.d.ts +38 -0
  180. package/_types/types/eip1193.d.ts.map +1 -1
  181. package/_types/utils/accounts.d.ts.map +1 -1
  182. package/_types/utils/formatters/transaction.d.ts +1 -1
  183. package/_types/utils/hash/toEventHash.d.ts.map +1 -1
  184. package/_types/utils/hash/toEventSignature.d.ts.map +1 -1
  185. package/_types/utils/hash/toFunctionHash.d.ts.map +1 -1
  186. package/_types/utils/hash/toFunctionSignature.d.ts.map +1 -1
  187. package/_types/utils/index.d.ts +1 -1
  188. package/_types/utils/index.d.ts.map +1 -1
  189. package/_types/zksync/chains.d.ts.map +1 -1
  190. package/_types/zksync/index.d.ts.map +1 -1
  191. package/accounts/index.ts +2 -0
  192. package/accounts/privateKeyToAccount.ts +0 -4
  193. package/accounts/toAccount.ts +0 -1
  194. package/accounts/types.ts +2 -9
  195. package/actions/index.ts +1 -0
  196. package/celo/index.ts +1 -0
  197. package/chains/definitions/avalanche.ts +3 -3
  198. package/chains/definitions/avalancheFuji.ts +3 -3
  199. package/chains/definitions/redstone.ts +20 -0
  200. package/chains/definitions/scrollSepolia.ts +3 -3
  201. package/chains/definitions/taiko.ts +29 -0
  202. package/chains/index.ts +3 -1
  203. package/chains/utils.ts +1 -0
  204. package/ens/index.ts +1 -0
  205. package/errors/version.ts +1 -1
  206. package/experimental/eip5792/actions/writeContracts.ts +38 -4
  207. package/experimental/erc7715/actions/issuePermissions.ts +161 -0
  208. package/experimental/erc7715/decorators/erc7715.ts +80 -0
  209. package/experimental/erc7715/types/permission.ts +46 -0
  210. package/experimental/erc7715/types/signer.ts +25 -0
  211. package/experimental/index.ts +12 -44
  212. package/index.ts +4 -0
  213. package/node/index.ts +1 -0
  214. package/op-stack/chains.ts +1 -0
  215. package/op-stack/index.ts +2 -0
  216. package/package.json +4 -3
  217. package/siwe/index.ts +1 -0
  218. package/types/contract.ts +1 -3
  219. package/types/eip1193.ts +44 -0
  220. package/utils/accounts.ts +2 -0
  221. package/utils/hash/toEventHash.ts +1 -0
  222. package/utils/hash/toEventSignature.ts +1 -0
  223. package/utils/hash/toFunctionHash.ts +1 -0
  224. package/utils/hash/toFunctionSignature.ts +1 -0
  225. package/utils/index.ts +2 -0
  226. package/utils/promise/withTimeout.ts +1 -1
  227. package/zksync/chains.ts +1 -0
  228. package/zksync/index.ts +1 -0
  229. package/_cjs/chains/definitions/scrollTestnet.js +0 -24
  230. package/_cjs/chains/definitions/scrollTestnet.js.map +0 -1
  231. package/_cjs/experimental/eip3074/actions/signAuthMessage.js +0 -29
  232. package/_cjs/experimental/eip3074/actions/signAuthMessage.js.map +0 -1
  233. package/_cjs/experimental/eip3074/constants/abis.js +0 -123
  234. package/_cjs/experimental/eip3074/constants/abis.js.map +0 -1
  235. package/_cjs/experimental/eip3074/decorators/eip3074.js +0 -13
  236. package/_cjs/experimental/eip3074/decorators/eip3074.js.map +0 -1
  237. package/_cjs/experimental/eip3074/invokers/coders/batchInvokerCoder.js +0 -26
  238. package/_cjs/experimental/eip3074/invokers/coders/batchInvokerCoder.js.map +0 -1
  239. package/_cjs/experimental/eip3074/invokers/coders/defineInvokerCoder.js +0 -8
  240. package/_cjs/experimental/eip3074/invokers/coders/defineInvokerCoder.js.map +0 -1
  241. package/_cjs/experimental/eip3074/invokers/getInvoker.js +0 -64
  242. package/_cjs/experimental/eip3074/invokers/getInvoker.js.map +0 -1
  243. package/_cjs/experimental/eip3074/utils/recoverAuthMessageAddress.js +0 -12
  244. package/_cjs/experimental/eip3074/utils/recoverAuthMessageAddress.js.map +0 -1
  245. package/_cjs/experimental/eip3074/utils/signAuthMessage.js +0 -17
  246. package/_cjs/experimental/eip3074/utils/signAuthMessage.js.map +0 -1
  247. package/_cjs/experimental/eip3074/utils/toAuthMessage.js +0 -17
  248. package/_cjs/experimental/eip3074/utils/toAuthMessage.js.map +0 -1
  249. package/_cjs/experimental/eip3074/utils/verifyAuthMessage.js +0 -11
  250. package/_cjs/experimental/eip3074/utils/verifyAuthMessage.js.map +0 -1
  251. package/_esm/chains/definitions/scrollTestnet.js +0 -21
  252. package/_esm/chains/definitions/scrollTestnet.js.map +0 -1
  253. package/_esm/experimental/eip3074/actions/signAuthMessage.js +0 -78
  254. package/_esm/experimental/eip3074/actions/signAuthMessage.js.map +0 -1
  255. package/_esm/experimental/eip3074/constants/abis.js +0 -120
  256. package/_esm/experimental/eip3074/constants/abis.js.map +0 -1
  257. package/_esm/experimental/eip3074/decorators/eip3074.js +0 -26
  258. package/_esm/experimental/eip3074/decorators/eip3074.js.map +0 -1
  259. package/_esm/experimental/eip3074/invokers/coders/batchInvokerCoder.js +0 -22
  260. package/_esm/experimental/eip3074/invokers/coders/batchInvokerCoder.js.map +0 -1
  261. package/_esm/experimental/eip3074/invokers/coders/defineInvokerCoder.js +0 -4
  262. package/_esm/experimental/eip3074/invokers/coders/defineInvokerCoder.js.map +0 -1
  263. package/_esm/experimental/eip3074/invokers/getInvoker.js +0 -60
  264. package/_esm/experimental/eip3074/invokers/getInvoker.js.map +0 -1
  265. package/_esm/experimental/eip3074/utils/recoverAuthMessageAddress.js +0 -8
  266. package/_esm/experimental/eip3074/utils/recoverAuthMessageAddress.js.map +0 -1
  267. package/_esm/experimental/eip3074/utils/signAuthMessage.js +0 -16
  268. package/_esm/experimental/eip3074/utils/signAuthMessage.js.map +0 -1
  269. package/_esm/experimental/eip3074/utils/toAuthMessage.js +0 -16
  270. package/_esm/experimental/eip3074/utils/toAuthMessage.js.map +0 -1
  271. package/_esm/experimental/eip3074/utils/verifyAuthMessage.js +0 -13
  272. package/_esm/experimental/eip3074/utils/verifyAuthMessage.js.map +0 -1
  273. package/_types/chains/definitions/scrollTestnet.d.ts.map +0 -1
  274. package/_types/experimental/eip3074/actions/signAuthMessage.d.ts +0 -82
  275. package/_types/experimental/eip3074/actions/signAuthMessage.d.ts.map +0 -1
  276. package/_types/experimental/eip3074/constants/abis.d.ts +0 -91
  277. package/_types/experimental/eip3074/constants/abis.d.ts.map +0 -1
  278. package/_types/experimental/eip3074/decorators/eip3074.d.ts +0 -27
  279. package/_types/experimental/eip3074/decorators/eip3074.d.ts.map +0 -1
  280. package/_types/experimental/eip3074/invokers/coders/batchInvokerCoder.d.ts +0 -11
  281. package/_types/experimental/eip3074/invokers/coders/batchInvokerCoder.d.ts.map +0 -1
  282. package/_types/experimental/eip3074/invokers/coders/defineInvokerCoder.d.ts +0 -14
  283. package/_types/experimental/eip3074/invokers/coders/defineInvokerCoder.d.ts.map +0 -1
  284. package/_types/experimental/eip3074/invokers/getInvoker.d.ts +0 -48
  285. package/_types/experimental/eip3074/invokers/getInvoker.d.ts.map +0 -1
  286. package/_types/experimental/eip3074/utils/recoverAuthMessageAddress.d.ts +0 -12
  287. package/_types/experimental/eip3074/utils/recoverAuthMessageAddress.d.ts.map +0 -1
  288. package/_types/experimental/eip3074/utils/signAuthMessage.d.ts +0 -16
  289. package/_types/experimental/eip3074/utils/signAuthMessage.d.ts.map +0 -1
  290. package/_types/experimental/eip3074/utils/toAuthMessage.d.ts +0 -20
  291. package/_types/experimental/eip3074/utils/toAuthMessage.d.ts.map +0 -1
  292. package/_types/experimental/eip3074/utils/verifyAuthMessage.d.ts +0 -19
  293. package/_types/experimental/eip3074/utils/verifyAuthMessage.d.ts.map +0 -1
  294. package/chains/definitions/scrollTestnet.ts +0 -21
  295. package/experimental/eip3074/actions/signAuthMessage.ts +0 -151
  296. package/experimental/eip3074/constants/abis.ts +0 -119
  297. package/experimental/eip3074/decorators/eip3074.ts +0 -58
  298. package/experimental/eip3074/invokers/coders/batchInvokerCoder.ts +0 -46
  299. package/experimental/eip3074/invokers/coders/defineInvokerCoder.ts +0 -20
  300. package/experimental/eip3074/invokers/getInvoker.ts +0 -192
  301. package/experimental/eip3074/utils/recoverAuthMessageAddress.ts +0 -29
  302. package/experimental/eip3074/utils/signAuthMessage.ts +0 -40
  303. package/experimental/eip3074/utils/toAuthMessage.ts +0 -50
  304. package/experimental/eip3074/utils/verifyAuthMessage.ts +0 -46
@@ -1 +0,0 @@
1
- {"version":3,"file":"verifyAuthMessage.d.ts","sourceRoot":"","sources":["../../../../experimental/eip3074/utils/verifyAuthMessage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EACL,KAAK,mBAAmB,EAEzB,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACL,KAAK,uBAAuB,EAE7B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACL,KAAK,kCAAkC,EACvC,KAAK,mCAAmC,EAEzC,MAAM,gCAAgC,CAAA;AAEvC,MAAM,MAAM,2BAA2B,GACrC,mCAAmC,GAAG;IACpC,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAA;CACjB,CAAA;AAEH,MAAM,MAAM,2BAA2B,GAAG,OAAO,CAAA;AAEjD,MAAM,MAAM,0BAA0B,GAClC,uBAAuB,GACvB,mBAAmB,GACnB,kCAAkC,GAClC,SAAS,CAAA;AAEb;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,GAAG,UAAU,EACd,EAAE,2BAA2B,GAAG,OAAO,CAAC,2BAA2B,CAAC,CAKpE"}
@@ -1,21 +0,0 @@
1
- import { defineChain } from '../../utils/chain/defineChain.js'
2
-
3
- export const scrollTestnet = /*#__PURE__*/ defineChain({
4
- id: 534_353,
5
- name: 'Scroll Testnet',
6
- nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
7
- rpcUrls: {
8
- default: {
9
- http: ['https://alpha-rpc.scroll.io/l2'],
10
- webSocket: ['wss://alpha-rpc.scroll.io/l2/ws'],
11
- },
12
- },
13
- blockExplorers: {
14
- default: {
15
- name: 'Blockscout',
16
- url: 'https://blockscout.scroll.io',
17
- apiUrl: 'https://blockscout.scroll.io/api',
18
- },
19
- },
20
- testnet: true,
21
- })
@@ -1,151 +0,0 @@
1
- import type { Address } from 'abitype'
2
- import { getTransactionCount } from '../../../actions/public/getTransactionCount.js'
3
- import type { Client } from '../../../clients/createClient.js'
4
- import type { Transport } from '../../../clients/transports/createTransport.js'
5
- import { AccountNotFoundError } from '../../../errors/account.js'
6
- import type { ErrorType } from '../../../errors/utils.js'
7
- import type {
8
- Account,
9
- DeriveAccount,
10
- LocalAccount,
11
- } from '../../../types/account.js'
12
- import type { Chain, GetChainParameter } from '../../../types/chain.js'
13
- import type { Hash, Hex } from '../../../types/misc.js'
14
- import type { IsUndefined } from '../../../types/utils.js'
15
- import { getAction } from '../../../utils/getAction.js'
16
-
17
- // TODO: Use `GetAccountParameter` from `types/utils.ts` when JSON-RPC method for sign auth message exists.
18
- type GetAccountParameter<
19
- account extends Account | undefined = Account | undefined,
20
- accountOverride extends Account | Address | undefined = Account | Address,
21
- > = IsUndefined<account> extends true
22
- ? { account: accountOverride | LocalAccount }
23
- : account extends LocalAccount
24
- ? {
25
- account?: accountOverride | LocalAccount | undefined
26
- }
27
- : { account: accountOverride | LocalAccount }
28
-
29
- type GetNonceParameter<account extends Account | Address | undefined> =
30
- account extends Address | Account
31
- ? {
32
- nonce?: number | undefined
33
- }
34
- : {
35
- nonce: number
36
- }
37
-
38
- export type SignAuthMessageParameters<
39
- chain extends Chain | undefined = Chain | undefined,
40
- account extends Account | undefined = Account | undefined,
41
- chainOverride extends Chain | undefined = Chain | undefined,
42
- accountOverride extends Account | Address | undefined = Account | Address,
43
- > = {
44
- commit: Hash
45
- invokerAddress: Address
46
- } & GetAccountParameter<account, accountOverride> &
47
- GetChainParameter<chain, chainOverride> &
48
- GetNonceParameter<DeriveAccount<account, accountOverride>>
49
-
50
- export type SignAuthMessageReturnType = Hex
51
-
52
- export type SignAuthMessageErrorType = ErrorType
53
-
54
- /**
55
- * Calculates an [EIP-3074](https://eips.ethereum.org/EIPS/eip-3074) auth signature.
56
- *
57
- * With the calculated signature, you can:
58
- * - pass it to an EIP-3074 compatible invoker contract,
59
- * - use [`verifyAuthMessage`](/experimental/eip3074/verifyAuthMessage) to verify the signature,
60
- * - use [`recoverAuthMessageAddress`](/experimental/eip3074/recoverAuthMessageAddress) to recover the signing address from a signature.
61
- *
62
- * @param client - Client to use
63
- * @param parameters - {@link SignAuthMessageParameters}
64
- * @returns The signed auth message. {@link SignAuthMessageReturnType}
65
- *
66
- * @example
67
- * import { createWalletClient, http } from 'viem'
68
- * import { privateKeyToAccount } from 'viem/accounts'
69
- * import { mainnet } from 'viem/chains'
70
- * import { signAuthMessage } from 'viem/experimental'
71
- *
72
- * const account = privateKeyToAccount('0x...')
73
- *
74
- * const client = createWalletClient({
75
- * chain: mainnet,
76
- * transport: http(),
77
- * })
78
- *
79
- * const signature = await signAuthMessage(client, {
80
- * account,
81
- * chainId: 1,
82
- * commit: keccak256('0x1234'),
83
- * invokerAddress: '0x0000000000000000000000000000000000000000',
84
- * nonce: 69,
85
- * })
86
- *
87
- * @example
88
- * // Account Hoisting
89
- * import { createWalletClient, http } from 'viem'
90
- * import { privateKeyToAccount } from 'viem/accounts'
91
- * import { mainnet } from 'viem/chains'
92
- * import { signAuthMessage } from 'viem/experimental'
93
- *
94
- * const client = createWalletClient({
95
- * account: privateKeyToAccount('0x…'),
96
- * chain: mainnet,
97
- * transport: http(),
98
- * })
99
- *
100
- * const signature = await signAuthMessage(client, {
101
- * chainId: 1,
102
- * commit: keccak256('0x1234'),
103
- * invokerAddress: '0x0000000000000000000000000000000000000000',
104
- * nonce: 69,
105
- * })
106
- */
107
- export async function signAuthMessage<
108
- chain extends Chain | undefined,
109
- account extends Account | undefined,
110
- chainOverride extends Chain | undefined = undefined,
111
- accountOverride extends Account | undefined = undefined,
112
- >(
113
- client: Client<Transport, chain, account>,
114
- parameters: SignAuthMessageParameters<
115
- chain,
116
- account,
117
- chainOverride,
118
- accountOverride
119
- >,
120
- ): Promise<SignAuthMessageReturnType> {
121
- const {
122
- account = client.account,
123
- chain = client.chain,
124
- commit,
125
- invokerAddress,
126
- } = parameters
127
-
128
- if (!account)
129
- throw new AccountNotFoundError({
130
- docsPath: '/experimental/eip5792/signAuthMessage',
131
- })
132
-
133
- const nonce = await (() => {
134
- if (typeof parameters.nonce === 'number') return parameters.nonce
135
- return getAction(
136
- client,
137
- getTransactionCount,
138
- 'getTransactionCount',
139
- )({
140
- address: account.address,
141
- blockTag: 'pending',
142
- })
143
- })()
144
-
145
- return account.experimental_signAuthMessage!({
146
- chainId: chain!.id,
147
- commit,
148
- invokerAddress,
149
- nonce,
150
- })
151
- }
@@ -1,119 +0,0 @@
1
- export const invokerAbi = [
2
- {
3
- type: 'function',
4
- name: 'execute',
5
- inputs: [
6
- {
7
- name: 'execData',
8
- type: 'bytes',
9
- internalType: 'bytes',
10
- },
11
- {
12
- name: 'signature',
13
- type: 'tuple',
14
- internalType: 'struct Auth.Signature',
15
- components: [
16
- {
17
- name: 'signer',
18
- type: 'address',
19
- internalType: 'address',
20
- },
21
- {
22
- name: 'yParity',
23
- type: 'uint8',
24
- internalType: 'uint8',
25
- },
26
- {
27
- name: 'r',
28
- type: 'bytes32',
29
- internalType: 'bytes32',
30
- },
31
- {
32
- name: 's',
33
- type: 'bytes32',
34
- internalType: 'bytes32',
35
- },
36
- ],
37
- },
38
- ],
39
- outputs: [],
40
- stateMutability: 'nonpayable',
41
- },
42
- {
43
- type: 'function',
44
- name: 'getDigest',
45
- inputs: [
46
- {
47
- name: 'execData',
48
- type: 'bytes',
49
- internalType: 'bytes',
50
- },
51
- {
52
- name: 'nonce',
53
- type: 'uint256',
54
- internalType: 'uint256',
55
- },
56
- ],
57
- outputs: [
58
- {
59
- name: 'digest',
60
- type: 'bytes32',
61
- internalType: 'bytes32',
62
- },
63
- ],
64
- stateMutability: 'view',
65
- },
66
- {
67
- type: 'function',
68
- name: 'multiSend',
69
- inputs: [
70
- {
71
- name: 'transactions',
72
- type: 'bytes',
73
- internalType: 'bytes',
74
- },
75
- ],
76
- outputs: [],
77
- stateMutability: 'payable',
78
- },
79
- {
80
- type: 'function',
81
- name: 'nextNonce',
82
- inputs: [
83
- {
84
- name: '',
85
- type: 'address',
86
- internalType: 'address',
87
- },
88
- ],
89
- outputs: [
90
- {
91
- name: '',
92
- type: 'uint256',
93
- internalType: 'uint256',
94
- },
95
- ],
96
- stateMutability: 'view',
97
- },
98
- {
99
- type: 'error',
100
- name: 'BadAuth',
101
- inputs: [],
102
- },
103
- {
104
- type: 'error',
105
- name: 'InvalidNonce',
106
- inputs: [
107
- {
108
- name: 'authority',
109
- type: 'address',
110
- internalType: 'address',
111
- },
112
- {
113
- name: 'attempted',
114
- type: 'uint256',
115
- internalType: 'uint256',
116
- },
117
- ],
118
- },
119
- ] as const
@@ -1,58 +0,0 @@
1
- import type { Client } from '../../../clients/createClient.js'
2
- import type { Transport } from '../../../clients/transports/createTransport.js'
3
- import type { Account } from '../../../types/account.js'
4
- import type { Chain } from '../../../types/chain.js'
5
- import {
6
- type SignAuthMessageParameters,
7
- type SignAuthMessageReturnType,
8
- signAuthMessage,
9
- } from '../actions/signAuthMessage.js'
10
-
11
- export type WalletActionsEip3074<
12
- chain extends Chain | undefined = Chain | undefined,
13
- account extends Account | undefined = Account | undefined,
14
- > = {
15
- signAuthMessage: <
16
- chainOverride extends Chain | undefined = undefined,
17
- accountOverride extends Account | undefined = undefined,
18
- >(
19
- parameters: SignAuthMessageParameters<
20
- chain,
21
- account,
22
- chainOverride,
23
- accountOverride
24
- >,
25
- ) => Promise<SignAuthMessageReturnType>
26
- }
27
-
28
- /**
29
- * A suite of EIP-3074 Wallet Actions.
30
- *
31
- * - Docs: https://viem.sh/experimental
32
- *
33
- * @example
34
- * import { createPublicClient, createWalletClient, http } from 'viem'
35
- * import { mainnet } from 'viem/chains'
36
- * import { walletActionsEip3074 } from 'viem/experimental'
37
- *
38
- * const walletClient = createWalletClient({
39
- * chain: mainnet,
40
- * transport: http(),
41
- * }).extend(walletActionsEip3074())
42
- *
43
- * const signature = await walletClient.signAuthMessage({...})
44
- */
45
- export function walletActionsEip3074() {
46
- return <
47
- transport extends Transport,
48
- chain extends Chain | undefined = Chain | undefined,
49
- account extends Account | undefined = Account | undefined,
50
- >(
51
- client: Client<transport, chain, account>,
52
- ): WalletActionsEip3074<chain, account> => {
53
- return {
54
- signAuthMessage: (parameters) =>
55
- signAuthMessage(client as any, parameters),
56
- }
57
- }
58
- }
@@ -1,46 +0,0 @@
1
- import type { Address } from 'abitype'
2
- import { readContract } from '../../../../actions/public/readContract.js'
3
- import type { Hex } from '../../../../types/misc.js'
4
- import { encodeAbiParameters } from '../../../../utils/abi/encodeAbiParameters.js'
5
- import { encodePacked } from '../../../../utils/abi/encodePacked.js'
6
- import { concat } from '../../../../utils/data/concat.js'
7
- import { size } from '../../../../utils/data/size.js'
8
- import { invokerAbi } from '../../constants/abis.js'
9
- import { defineInvokerCoder } from './defineInvokerCoder.js'
10
-
11
- type Calls = readonly {
12
- to: Address
13
- data?: Hex | undefined
14
- value?: bigint | undefined
15
- }[]
16
-
17
- export type BatchInvokerArgs = Calls
18
-
19
- export function batchInvokerCoder() {
20
- return defineInvokerCoder({
21
- async toExecData(
22
- args: BatchInvokerArgs,
23
- { authority, client, invokerAddress },
24
- ) {
25
- const nonce = await readContract(client, {
26
- abi: invokerAbi,
27
- address: invokerAddress,
28
- functionName: 'nextNonce',
29
- args: [authority],
30
- })
31
-
32
- const calls = concat(
33
- args.map(({ data = '0x', to, value = 0n }) =>
34
- encodePacked(
35
- ['uint8', 'address', 'uint256', 'uint256', 'bytes'],
36
- [2, to, value, BigInt(size(data)), data],
37
- ),
38
- ),
39
- )
40
- return encodeAbiParameters(
41
- [{ type: 'uint256' }, { type: 'bytes' }],
42
- [nonce, calls],
43
- )
44
- },
45
- })
46
- }
@@ -1,20 +0,0 @@
1
- import type { Address } from 'abitype'
2
- import type { Client } from '../../../../clients/createClient.js'
3
- import type { Hex } from '../../../../types/misc.js'
4
-
5
- export type InvokerCoder<args = unknown> = {
6
- toExecData: (
7
- args: args,
8
- options: { authority: Address; client: Client; invokerAddress: Hex },
9
- ) => Promise<Hex>
10
- }
11
-
12
- export type DefineInvokerCoderParameters<args = unknown> = InvokerCoder<args>
13
-
14
- export type DefineInvokerCoderReturnType<args = unknown> = InvokerCoder<args>
15
-
16
- export function defineInvokerCoder<args>(
17
- parameters: DefineInvokerCoderParameters<args>,
18
- ): DefineInvokerCoderReturnType<args> {
19
- return parameters
20
- }
@@ -1,192 +0,0 @@
1
- import type { Address } from 'abitype'
2
- import {
3
- type GetTransactionCountErrorType,
4
- getTransactionCount,
5
- } from '../../../actions/public/getTransactionCount.js'
6
- import {
7
- type WriteContractErrorType,
8
- writeContract,
9
- } from '../../../actions/wallet/writeContract.js'
10
- import type { Client } from '../../../clients/createClient.js'
11
- import type { Transport } from '../../../clients/transports/createTransport.js'
12
- import type { ErrorType } from '../../../errors/utils.js'
13
- import type { Account, LocalAccount } from '../../../types/account.js'
14
- import type { Chain, GetChainParameter } from '../../../types/chain.js'
15
- import type { Hex } from '../../../types/misc.js'
16
- import type { IsUndefined } from '../../../types/utils.js'
17
- import { parseAccount } from '../../../utils/accounts.js'
18
- import {
19
- type IsAddressEqualErrorType,
20
- isAddressEqual,
21
- } from '../../../utils/address/isAddressEqual.js'
22
- import { getAction } from '../../../utils/getAction.js'
23
- import {
24
- type Keccak256ErrorType,
25
- keccak256,
26
- } from '../../../utils/hash/keccak256.js'
27
- import {
28
- type ParseSignatureErrorType,
29
- parseSignature,
30
- } from '../../../utils/signature/parseSignature.js'
31
- import {
32
- type SignAuthMessageErrorType,
33
- signAuthMessage,
34
- } from '../actions/signAuthMessage.js'
35
- import { invokerAbi } from '../constants/abis.js'
36
- import type { InvokerCoder } from './coders/defineInvokerCoder.js'
37
-
38
- type GetExecutorParameter<
39
- TAccount extends Account | undefined = Account | undefined,
40
- TAccountOverride extends Account | Address | undefined = Account | Address,
41
- TRequired extends boolean = true,
42
- > = IsUndefined<TAccount> extends true
43
- ? TRequired extends true
44
- ? { executor: TAccountOverride | Account | Address }
45
- : { executor?: TAccountOverride | Account | Address | undefined }
46
- : { executor?: TAccountOverride | Account | Address | undefined }
47
-
48
- export type InvokerExecuteParameters<
49
- account extends Account | undefined = Account | undefined,
50
- chain extends Chain | undefined = Chain | undefined,
51
- chainOverride extends Chain | undefined = Chain | undefined,
52
- args = unknown,
53
- > = {
54
- args: args
55
- authority: Account | Address
56
- signature: Hex
57
- } & GetExecutorParameter<account> &
58
- GetChainParameter<chain, chainOverride>
59
-
60
- export type InvokerExecuteErrorType =
61
- | WriteContractErrorType
62
- | ParseSignatureErrorType
63
- | ErrorType
64
-
65
- export type InvokerSignParameters<
66
- account extends Account | undefined = Account | undefined,
67
- chain extends Chain | undefined = Chain | undefined,
68
- chainOverride extends Chain | undefined = Chain | undefined,
69
- args = unknown,
70
- > = {
71
- args: args
72
- authority: LocalAccount
73
- } & GetExecutorParameter<account, Account | Address, false> &
74
- GetChainParameter<chain, chainOverride>
75
-
76
- export type InvokerSignErrorType =
77
- | GetTransactionCountErrorType
78
- | SignAuthMessageErrorType
79
- | Keccak256ErrorType
80
- | IsAddressEqualErrorType
81
- | ErrorType
82
-
83
- export type Invoker<
84
- account extends Account | undefined = Account | undefined,
85
- chain extends Chain | undefined = Chain | undefined,
86
- args = unknown,
87
- > = {
88
- address: Address
89
- execute<chainOverride extends Chain | undefined = undefined>(
90
- parameters: InvokerExecuteParameters<account, chain, chainOverride, args>,
91
- ): Promise<Hex>
92
- sign<chainOverride extends Chain | undefined = undefined>(
93
- parameters: InvokerSignParameters<account, chain, chainOverride, args>,
94
- ): Promise<Hex>
95
- }
96
-
97
- export type GetInvokerParameters<
98
- account extends Account | undefined = Account | undefined,
99
- chain extends Chain | undefined = Chain | undefined,
100
- args = unknown,
101
- > = {
102
- address: Address
103
- client: Client<Transport, chain, account>
104
- coder: InvokerCoder<args>
105
- }
106
-
107
- export type GetInvokerErrorType = ErrorType
108
-
109
- export type InvokerArgs<invoker extends Invoker<any, any, any> = Invoker> =
110
- invoker extends Invoker<any, any, infer args> ? args : unknown
111
-
112
- export function getInvoker<
113
- account extends Account | undefined,
114
- chain extends Chain | undefined,
115
- args,
116
- >(
117
- parameters: GetInvokerParameters<account, chain, args>,
118
- ): Invoker<account, chain, args> {
119
- const { address, client, coder } = parameters
120
- return {
121
- address,
122
- async execute(parameters) {
123
- const {
124
- executor: executor_ = client.account,
125
- authority: authority_,
126
- args,
127
- chain = client.chain,
128
- signature,
129
- } = parameters
130
- const authority = parseAccount(authority_!)
131
- const executor = parseAccount(executor_!)
132
-
133
- const execData = await coder.toExecData(args, {
134
- authority: authority.address,
135
- client,
136
- invokerAddress: address,
137
- })
138
-
139
- const { r, s, yParity } = parseSignature(signature)
140
- return getAction(
141
- client,
142
- writeContract,
143
- 'writeContract',
144
- )({
145
- abi: invokerAbi,
146
- address,
147
- account: executor,
148
- chain,
149
- functionName: 'execute',
150
- args: [execData, { signer: authority.address, r, s, yParity }],
151
- })
152
- },
153
- async sign(parameters) {
154
- const {
155
- args,
156
- authority,
157
- executor: executor_ = client.account,
158
- chain = client.chain,
159
- } = parameters
160
- const executor = parseAccount(executor_!)
161
- const [execData, nonce] = await Promise.all([
162
- await coder.toExecData(args, {
163
- authority: authority.address,
164
- client,
165
- invokerAddress: address,
166
- }),
167
- getAction(
168
- client,
169
- getTransactionCount,
170
- 'getTransactionCount',
171
- )({
172
- address: authority.address,
173
- blockTag: 'pending',
174
- }),
175
- ])
176
- const signature = await getAction(
177
- client,
178
- signAuthMessage,
179
- 'signAuthMessage',
180
- )({
181
- account: authority,
182
- chain,
183
- commit: keccak256(execData),
184
- invokerAddress: address,
185
- nonce: isAddressEqual(authority.address, executor.address)
186
- ? nonce + 1
187
- : nonce,
188
- })
189
- return signature
190
- },
191
- }
192
- }
@@ -1,29 +0,0 @@
1
- import type { Address } from 'abitype'
2
-
3
- import type { ByteArray, Hex, Signature } from '../../../types/misc.js'
4
-
5
- import type { ErrorType } from '../../../errors/utils.js'
6
- import { keccak256 } from '../../../utils/hash/keccak256.js'
7
- import {
8
- type RecoverAddressErrorType,
9
- recoverAddress,
10
- } from '../../../utils/signature/recoverAddress.js'
11
- import { type ToAuthMessageParameters, toAuthMessage } from './toAuthMessage.js'
12
-
13
- export type RecoverAuthMessageAddressParameters = ToAuthMessageParameters & {
14
- signature: Hex | ByteArray | Signature
15
- }
16
-
17
- export type RecoverAuthMessageAddressReturnType = Address
18
-
19
- export type RecoverAuthMessageAddressErrorType =
20
- | RecoverAddressErrorType
21
- | ErrorType
22
-
23
- export async function recoverAuthMessageAddress({
24
- signature,
25
- ...parameters
26
- }: RecoverAuthMessageAddressParameters): Promise<RecoverAuthMessageAddressReturnType> {
27
- const hash = keccak256(toAuthMessage(parameters))
28
- return recoverAddress({ hash, signature })
29
- }
@@ -1,40 +0,0 @@
1
- import { type SignErrorType, sign } from '../../../accounts/utils/sign.js'
2
- import type { ErrorType } from '../../../errors/utils.js'
3
- import type { Hex } from '../../../types/misc.js'
4
- import { keccak256 } from '../../../utils/hash/keccak256.js'
5
- import {
6
- type SerializeSignatureErrorType,
7
- serializeSignature,
8
- } from '../../../utils/signature/serializeSignature.js'
9
- import {
10
- type ToAuthMessageErrorType,
11
- type ToAuthMessageParameters,
12
- toAuthMessage,
13
- } from './toAuthMessage.js'
14
-
15
- export type SignAuthMessageParameters = ToAuthMessageParameters & {
16
- /** The private key to sign with. */
17
- privateKey: Hex
18
- }
19
-
20
- export type SignAuthMessageReturnType = Hex
21
-
22
- export type SignAuthMessageErrorType =
23
- | SignErrorType
24
- | ToAuthMessageErrorType
25
- | SerializeSignatureErrorType
26
- | ErrorType
27
-
28
- /**
29
- * Computes a EIP-3074 authorization signature in format: `keccak256(MAGIC || chainId || nonce || invokerAddress || commit))`.
30
- */
31
- export async function signAuthMessage(
32
- parameters: SignAuthMessageParameters,
33
- ): Promise<SignAuthMessageReturnType> {
34
- const { privateKey } = parameters
35
- const signature = await sign({
36
- hash: keccak256(toAuthMessage(parameters)),
37
- privateKey,
38
- })
39
- return serializeSignature(signature)
40
- }