viem 2.12.5 → 2.13.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (283) hide show
  1. package/CHANGELOG.md +16 -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/redstone.js +23 -0
  10. package/_cjs/chains/definitions/redstone.js.map +1 -0
  11. package/_cjs/chains/definitions/scrollSepolia.js +3 -3
  12. package/_cjs/chains/definitions/scrollSepolia.js.map +1 -1
  13. package/_cjs/chains/definitions/taiko.js +32 -0
  14. package/_cjs/chains/definitions/taiko.js.map +1 -0
  15. package/_cjs/chains/index.js +7 -5
  16. package/_cjs/chains/index.js.map +1 -1
  17. package/_cjs/chains/utils.js.map +1 -1
  18. package/_cjs/ens/index.js.map +1 -1
  19. package/_cjs/errors/version.js +1 -1
  20. package/_cjs/experimental/erc7715/actions/issuePermissions.js +74 -0
  21. package/_cjs/experimental/erc7715/actions/issuePermissions.js.map +1 -0
  22. package/_cjs/experimental/erc7715/decorators/erc7715.js +13 -0
  23. package/_cjs/experimental/erc7715/decorators/erc7715.js.map +1 -0
  24. package/_cjs/experimental/erc7715/types/permission.js +3 -0
  25. package/_cjs/experimental/erc7715/types/permission.js.map +1 -0
  26. package/_cjs/experimental/erc7715/types/signer.js +3 -0
  27. package/_cjs/experimental/erc7715/types/signer.js.map +1 -0
  28. package/_cjs/experimental/index.js +5 -15
  29. package/_cjs/experimental/index.js.map +1 -1
  30. package/_cjs/index.js.map +1 -1
  31. package/_cjs/node/index.js.map +1 -1
  32. package/_cjs/op-stack/chains.js.map +1 -1
  33. package/_cjs/op-stack/index.js.map +1 -1
  34. package/_cjs/siwe/index.js.map +1 -1
  35. package/_cjs/utils/accounts.js.map +1 -1
  36. package/_cjs/utils/hash/toEventHash.js.map +1 -1
  37. package/_cjs/utils/hash/toEventSignature.js.map +1 -1
  38. package/_cjs/utils/hash/toFunctionHash.js.map +1 -1
  39. package/_cjs/utils/hash/toFunctionSignature.js.map +1 -1
  40. package/_cjs/utils/index.js.map +1 -1
  41. package/_cjs/utils/promise/withTimeout.js.map +1 -1
  42. package/_cjs/zksync/chains.js.map +1 -1
  43. package/_cjs/zksync/index.js.map +1 -1
  44. package/_esm/accounts/index.js +1 -0
  45. package/_esm/accounts/index.js.map +1 -1
  46. package/_esm/accounts/privateKeyToAccount.js +0 -4
  47. package/_esm/accounts/privateKeyToAccount.js.map +1 -1
  48. package/_esm/accounts/toAccount.js +0 -1
  49. package/_esm/accounts/toAccount.js.map +1 -1
  50. package/_esm/actions/index.js +1 -0
  51. package/_esm/actions/index.js.map +1 -1
  52. package/_esm/celo/index.js +1 -0
  53. package/_esm/celo/index.js.map +1 -1
  54. package/_esm/chains/definitions/redstone.js +20 -0
  55. package/_esm/chains/definitions/redstone.js.map +1 -0
  56. package/_esm/chains/definitions/scrollSepolia.js +3 -3
  57. package/_esm/chains/definitions/scrollSepolia.js.map +1 -1
  58. package/_esm/chains/definitions/taiko.js +29 -0
  59. package/_esm/chains/definitions/taiko.js.map +1 -0
  60. package/_esm/chains/index.js +3 -1
  61. package/_esm/chains/index.js.map +1 -1
  62. package/_esm/chains/utils.js +1 -0
  63. package/_esm/chains/utils.js.map +1 -1
  64. package/_esm/ens/index.js +1 -0
  65. package/_esm/ens/index.js.map +1 -1
  66. package/_esm/errors/version.js +1 -1
  67. package/_esm/experimental/erc7715/actions/issuePermissions.js +107 -0
  68. package/_esm/experimental/erc7715/actions/issuePermissions.js.map +1 -0
  69. package/_esm/experimental/erc7715/decorators/erc7715.js +26 -0
  70. package/_esm/experimental/erc7715/decorators/erc7715.js.map +1 -0
  71. package/_esm/experimental/erc7715/types/permission.js +2 -0
  72. package/_esm/experimental/erc7715/types/permission.js.map +1 -0
  73. package/_esm/experimental/erc7715/types/signer.js +2 -0
  74. package/_esm/experimental/erc7715/types/signer.js.map +1 -0
  75. package/_esm/experimental/index.js +3 -7
  76. package/_esm/experimental/index.js.map +1 -1
  77. package/_esm/index.js +1 -0
  78. package/_esm/index.js.map +1 -1
  79. package/_esm/node/index.js +1 -0
  80. package/_esm/node/index.js.map +1 -1
  81. package/_esm/op-stack/chains.js +1 -0
  82. package/_esm/op-stack/chains.js.map +1 -1
  83. package/_esm/op-stack/index.js +2 -0
  84. package/_esm/op-stack/index.js.map +1 -1
  85. package/_esm/siwe/index.js +1 -0
  86. package/_esm/siwe/index.js.map +1 -1
  87. package/_esm/utils/accounts.js +1 -0
  88. package/_esm/utils/accounts.js.map +1 -1
  89. package/_esm/utils/hash/toEventHash.js +1 -0
  90. package/_esm/utils/hash/toEventHash.js.map +1 -1
  91. package/_esm/utils/hash/toEventSignature.js +1 -0
  92. package/_esm/utils/hash/toEventSignature.js.map +1 -1
  93. package/_esm/utils/hash/toFunctionHash.js +1 -0
  94. package/_esm/utils/hash/toFunctionHash.js.map +1 -1
  95. package/_esm/utils/hash/toFunctionSignature.js +1 -0
  96. package/_esm/utils/hash/toFunctionSignature.js.map +1 -1
  97. package/_esm/utils/index.js +1 -0
  98. package/_esm/utils/index.js.map +1 -1
  99. package/_esm/utils/promise/withTimeout.js.map +1 -1
  100. package/_esm/zksync/chains.js +1 -0
  101. package/_esm/zksync/chains.js.map +1 -1
  102. package/_esm/zksync/index.js +1 -0
  103. package/_esm/zksync/index.js.map +1 -1
  104. package/_types/accounts/index.d.ts.map +1 -1
  105. package/_types/accounts/privateKeyToAccount.d.ts.map +1 -1
  106. package/_types/accounts/toAccount.d.ts.map +1 -1
  107. package/_types/accounts/types.d.ts +2 -4
  108. package/_types/accounts/types.d.ts.map +1 -1
  109. package/_types/actions/index.d.ts.map +1 -1
  110. package/_types/celo/chainConfig.d.ts +76 -76
  111. package/_types/celo/formatters.d.ts +38 -38
  112. package/_types/celo/index.d.ts.map +1 -1
  113. package/_types/chains/definitions/ancient8.d.ts +30 -30
  114. package/_types/chains/definitions/ancient8Sepolia.d.ts +30 -30
  115. package/_types/chains/definitions/base.d.ts +30 -30
  116. package/_types/chains/definitions/baseGoerli.d.ts +30 -30
  117. package/_types/chains/definitions/baseSepolia.d.ts +30 -30
  118. package/_types/chains/definitions/celo.d.ts +76 -76
  119. package/_types/chains/definitions/celoAlfajores.d.ts +76 -76
  120. package/_types/chains/definitions/fraxtal.d.ts +30 -30
  121. package/_types/chains/definitions/fraxtalTestnet.d.ts +30 -30
  122. package/_types/chains/definitions/funkiSepolia.d.ts +30 -30
  123. package/_types/chains/definitions/liskSepolia.d.ts +30 -30
  124. package/_types/chains/definitions/metalL2.d.ts +30 -30
  125. package/_types/chains/definitions/optimism.d.ts +30 -30
  126. package/_types/chains/definitions/optimismGoerli.d.ts +30 -30
  127. package/_types/chains/definitions/optimismSepolia.d.ts +30 -30
  128. package/_types/chains/definitions/pgn.d.ts +30 -30
  129. package/_types/chains/definitions/pgnTestnet.d.ts +30 -30
  130. package/_types/chains/definitions/{scrollTestnet.d.ts → redstone.d.ts} +10 -11
  131. package/_types/chains/definitions/redstone.d.ts.map +1 -0
  132. package/_types/chains/definitions/rss3.d.ts +30 -30
  133. package/_types/chains/definitions/rss3Sepolia.d.ts +30 -30
  134. package/_types/chains/definitions/scrollSepolia.d.ts +3 -3
  135. package/_types/chains/definitions/taiko.d.ts +34 -0
  136. package/_types/chains/definitions/taiko.d.ts.map +1 -0
  137. package/_types/chains/definitions/zora.d.ts +30 -30
  138. package/_types/chains/definitions/zoraSepolia.d.ts +30 -30
  139. package/_types/chains/definitions/zoraTestnet.d.ts +30 -30
  140. package/_types/chains/index.d.ts +2 -1
  141. package/_types/chains/index.d.ts.map +1 -1
  142. package/_types/chains/utils.d.ts.map +1 -1
  143. package/_types/ens/index.d.ts.map +1 -1
  144. package/_types/errors/version.d.ts +1 -1
  145. package/_types/experimental/erc7715/actions/issuePermissions.d.ts +73 -0
  146. package/_types/experimental/erc7715/actions/issuePermissions.d.ts.map +1 -0
  147. package/_types/experimental/erc7715/decorators/erc7715.d.ts +61 -0
  148. package/_types/experimental/erc7715/decorators/erc7715.d.ts.map +1 -0
  149. package/_types/experimental/erc7715/types/permission.d.ts +36 -0
  150. package/_types/experimental/erc7715/types/permission.d.ts.map +1 -0
  151. package/_types/experimental/erc7715/types/signer.d.ts +22 -0
  152. package/_types/experimental/erc7715/types/signer.d.ts.map +1 -0
  153. package/_types/experimental/index.d.ts +2 -7
  154. package/_types/experimental/index.d.ts.map +1 -1
  155. package/_types/index.d.ts +1 -1
  156. package/_types/index.d.ts.map +1 -1
  157. package/_types/node/index.d.ts.map +1 -1
  158. package/_types/op-stack/chainConfig.d.ts +30 -30
  159. package/_types/op-stack/chains.d.ts.map +1 -1
  160. package/_types/op-stack/formatters.d.ts +30 -30
  161. package/_types/op-stack/index.d.ts.map +1 -1
  162. package/_types/siwe/index.d.ts.map +1 -1
  163. package/_types/types/eip1193.d.ts +38 -0
  164. package/_types/types/eip1193.d.ts.map +1 -1
  165. package/_types/utils/accounts.d.ts.map +1 -1
  166. package/_types/utils/formatters/transaction.d.ts +1 -1
  167. package/_types/utils/hash/toEventHash.d.ts.map +1 -1
  168. package/_types/utils/hash/toEventSignature.d.ts.map +1 -1
  169. package/_types/utils/hash/toFunctionHash.d.ts.map +1 -1
  170. package/_types/utils/hash/toFunctionSignature.d.ts.map +1 -1
  171. package/_types/utils/index.d.ts.map +1 -1
  172. package/_types/zksync/chains.d.ts.map +1 -1
  173. package/_types/zksync/index.d.ts.map +1 -1
  174. package/accounts/index.ts +2 -0
  175. package/accounts/privateKeyToAccount.ts +0 -4
  176. package/accounts/toAccount.ts +0 -1
  177. package/accounts/types.ts +2 -9
  178. package/actions/index.ts +1 -0
  179. package/celo/index.ts +1 -0
  180. package/chains/definitions/redstone.ts +20 -0
  181. package/chains/definitions/scrollSepolia.ts +3 -3
  182. package/chains/definitions/taiko.ts +29 -0
  183. package/chains/index.ts +3 -1
  184. package/chains/utils.ts +1 -0
  185. package/ens/index.ts +1 -0
  186. package/errors/version.ts +1 -1
  187. package/experimental/erc7715/actions/issuePermissions.ts +161 -0
  188. package/experimental/erc7715/decorators/erc7715.ts +80 -0
  189. package/experimental/erc7715/types/permission.ts +46 -0
  190. package/experimental/erc7715/types/signer.ts +25 -0
  191. package/experimental/index.ts +11 -44
  192. package/index.ts +3 -0
  193. package/node/index.ts +1 -0
  194. package/op-stack/chains.ts +1 -0
  195. package/op-stack/index.ts +2 -0
  196. package/package.json +1 -1
  197. package/siwe/index.ts +1 -0
  198. package/types/eip1193.ts +44 -0
  199. package/utils/accounts.ts +2 -0
  200. package/utils/hash/toEventHash.ts +1 -0
  201. package/utils/hash/toEventSignature.ts +1 -0
  202. package/utils/hash/toFunctionHash.ts +1 -0
  203. package/utils/hash/toFunctionSignature.ts +1 -0
  204. package/utils/index.ts +1 -0
  205. package/utils/promise/withTimeout.ts +1 -1
  206. package/zksync/chains.ts +1 -0
  207. package/zksync/index.ts +1 -0
  208. package/_cjs/chains/definitions/scrollTestnet.js +0 -24
  209. package/_cjs/chains/definitions/scrollTestnet.js.map +0 -1
  210. package/_cjs/experimental/eip3074/actions/signAuthMessage.js +0 -29
  211. package/_cjs/experimental/eip3074/actions/signAuthMessage.js.map +0 -1
  212. package/_cjs/experimental/eip3074/constants/abis.js +0 -123
  213. package/_cjs/experimental/eip3074/constants/abis.js.map +0 -1
  214. package/_cjs/experimental/eip3074/decorators/eip3074.js +0 -13
  215. package/_cjs/experimental/eip3074/decorators/eip3074.js.map +0 -1
  216. package/_cjs/experimental/eip3074/invokers/coders/batchInvokerCoder.js +0 -26
  217. package/_cjs/experimental/eip3074/invokers/coders/batchInvokerCoder.js.map +0 -1
  218. package/_cjs/experimental/eip3074/invokers/coders/defineInvokerCoder.js +0 -8
  219. package/_cjs/experimental/eip3074/invokers/coders/defineInvokerCoder.js.map +0 -1
  220. package/_cjs/experimental/eip3074/invokers/getInvoker.js +0 -64
  221. package/_cjs/experimental/eip3074/invokers/getInvoker.js.map +0 -1
  222. package/_cjs/experimental/eip3074/utils/recoverAuthMessageAddress.js +0 -12
  223. package/_cjs/experimental/eip3074/utils/recoverAuthMessageAddress.js.map +0 -1
  224. package/_cjs/experimental/eip3074/utils/signAuthMessage.js +0 -17
  225. package/_cjs/experimental/eip3074/utils/signAuthMessage.js.map +0 -1
  226. package/_cjs/experimental/eip3074/utils/toAuthMessage.js +0 -17
  227. package/_cjs/experimental/eip3074/utils/toAuthMessage.js.map +0 -1
  228. package/_cjs/experimental/eip3074/utils/verifyAuthMessage.js +0 -11
  229. package/_cjs/experimental/eip3074/utils/verifyAuthMessage.js.map +0 -1
  230. package/_esm/chains/definitions/scrollTestnet.js +0 -21
  231. package/_esm/chains/definitions/scrollTestnet.js.map +0 -1
  232. package/_esm/experimental/eip3074/actions/signAuthMessage.js +0 -78
  233. package/_esm/experimental/eip3074/actions/signAuthMessage.js.map +0 -1
  234. package/_esm/experimental/eip3074/constants/abis.js +0 -120
  235. package/_esm/experimental/eip3074/constants/abis.js.map +0 -1
  236. package/_esm/experimental/eip3074/decorators/eip3074.js +0 -26
  237. package/_esm/experimental/eip3074/decorators/eip3074.js.map +0 -1
  238. package/_esm/experimental/eip3074/invokers/coders/batchInvokerCoder.js +0 -22
  239. package/_esm/experimental/eip3074/invokers/coders/batchInvokerCoder.js.map +0 -1
  240. package/_esm/experimental/eip3074/invokers/coders/defineInvokerCoder.js +0 -4
  241. package/_esm/experimental/eip3074/invokers/coders/defineInvokerCoder.js.map +0 -1
  242. package/_esm/experimental/eip3074/invokers/getInvoker.js +0 -60
  243. package/_esm/experimental/eip3074/invokers/getInvoker.js.map +0 -1
  244. package/_esm/experimental/eip3074/utils/recoverAuthMessageAddress.js +0 -8
  245. package/_esm/experimental/eip3074/utils/recoverAuthMessageAddress.js.map +0 -1
  246. package/_esm/experimental/eip3074/utils/signAuthMessage.js +0 -16
  247. package/_esm/experimental/eip3074/utils/signAuthMessage.js.map +0 -1
  248. package/_esm/experimental/eip3074/utils/toAuthMessage.js +0 -16
  249. package/_esm/experimental/eip3074/utils/toAuthMessage.js.map +0 -1
  250. package/_esm/experimental/eip3074/utils/verifyAuthMessage.js +0 -13
  251. package/_esm/experimental/eip3074/utils/verifyAuthMessage.js.map +0 -1
  252. package/_types/chains/definitions/scrollTestnet.d.ts.map +0 -1
  253. package/_types/experimental/eip3074/actions/signAuthMessage.d.ts +0 -82
  254. package/_types/experimental/eip3074/actions/signAuthMessage.d.ts.map +0 -1
  255. package/_types/experimental/eip3074/constants/abis.d.ts +0 -91
  256. package/_types/experimental/eip3074/constants/abis.d.ts.map +0 -1
  257. package/_types/experimental/eip3074/decorators/eip3074.d.ts +0 -27
  258. package/_types/experimental/eip3074/decorators/eip3074.d.ts.map +0 -1
  259. package/_types/experimental/eip3074/invokers/coders/batchInvokerCoder.d.ts +0 -11
  260. package/_types/experimental/eip3074/invokers/coders/batchInvokerCoder.d.ts.map +0 -1
  261. package/_types/experimental/eip3074/invokers/coders/defineInvokerCoder.d.ts +0 -14
  262. package/_types/experimental/eip3074/invokers/coders/defineInvokerCoder.d.ts.map +0 -1
  263. package/_types/experimental/eip3074/invokers/getInvoker.d.ts +0 -48
  264. package/_types/experimental/eip3074/invokers/getInvoker.d.ts.map +0 -1
  265. package/_types/experimental/eip3074/utils/recoverAuthMessageAddress.d.ts +0 -12
  266. package/_types/experimental/eip3074/utils/recoverAuthMessageAddress.d.ts.map +0 -1
  267. package/_types/experimental/eip3074/utils/signAuthMessage.d.ts +0 -16
  268. package/_types/experimental/eip3074/utils/signAuthMessage.d.ts.map +0 -1
  269. package/_types/experimental/eip3074/utils/toAuthMessage.d.ts +0 -20
  270. package/_types/experimental/eip3074/utils/toAuthMessage.d.ts.map +0 -1
  271. package/_types/experimental/eip3074/utils/verifyAuthMessage.d.ts +0 -19
  272. package/_types/experimental/eip3074/utils/verifyAuthMessage.d.ts.map +0 -1
  273. package/chains/definitions/scrollTestnet.ts +0 -21
  274. package/experimental/eip3074/actions/signAuthMessage.ts +0 -151
  275. package/experimental/eip3074/constants/abis.ts +0 -119
  276. package/experimental/eip3074/decorators/eip3074.ts +0 -58
  277. package/experimental/eip3074/invokers/coders/batchInvokerCoder.ts +0 -46
  278. package/experimental/eip3074/invokers/coders/defineInvokerCoder.ts +0 -20
  279. package/experimental/eip3074/invokers/getInvoker.ts +0 -192
  280. package/experimental/eip3074/utils/recoverAuthMessageAddress.ts +0 -29
  281. package/experimental/eip3074/utils/signAuthMessage.ts +0 -40
  282. package/experimental/eip3074/utils/toAuthMessage.ts +0 -50
  283. package/experimental/eip3074/utils/verifyAuthMessage.ts +0 -46
@@ -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
- }
@@ -1,50 +0,0 @@
1
- import type { Address } from 'abitype'
2
- import type { ErrorType } from '../../../errors/utils.js'
3
- import type { Hash } from '../../../types/misc.js'
4
- import {
5
- type EncodePackedErrorType,
6
- encodePacked,
7
- } from '../../../utils/abi/encodePacked.js'
8
- import { type PadHexErrorType, padHex } from '../../../utils/data/pad.js'
9
- import {
10
- type NumberToHexErrorType,
11
- numberToHex,
12
- } from '../../../utils/encoding/toHex.js'
13
- import type { Keccak256ErrorType } from '../../../utils/hash/keccak256.js'
14
-
15
- export type ToAuthMessageParameters = {
16
- chainId: number
17
- commit: Hash
18
- invokerAddress: Address
19
- nonce: number
20
- }
21
-
22
- export type ToAuthMessageReturnType = Hash
23
-
24
- export type ToAuthMessageErrorType =
25
- | Keccak256ErrorType
26
- | EncodePackedErrorType
27
- | NumberToHexErrorType
28
- | PadHexErrorType
29
- | ErrorType
30
-
31
- /**
32
- * Returns the message to be signed for EIP-3074 authorization.
33
- */
34
- export function toAuthMessage({
35
- chainId,
36
- commit,
37
- invokerAddress,
38
- nonce,
39
- }: ToAuthMessageParameters): ToAuthMessageReturnType {
40
- return encodePacked(
41
- ['uint8', 'bytes32', 'uint256', 'bytes32', 'bytes32'],
42
- [
43
- 0x04, // MAGIC
44
- numberToHex(chainId, { size: 32 }),
45
- BigInt(nonce),
46
- padHex(invokerAddress, { size: 32 }),
47
- commit,
48
- ],
49
- )
50
- }
@@ -1,46 +0,0 @@
1
- import type { Address } from 'abitype'
2
-
3
- import type { ErrorType } from '../../../errors/utils.js'
4
- import {
5
- type GetAddressErrorType,
6
- getAddress,
7
- } from '../../../utils/address/getAddress.js'
8
- import {
9
- type IsAddressEqualErrorType,
10
- isAddressEqual,
11
- } from '../../../utils/address/isAddressEqual.js'
12
- import {
13
- type RecoverAuthMessageAddressErrorType,
14
- type RecoverAuthMessageAddressParameters,
15
- recoverAuthMessageAddress,
16
- } from './recoverAuthMessageAddress.js'
17
-
18
- export type VerifyAuthMessageParameters =
19
- RecoverAuthMessageAddressParameters & {
20
- /** The address that signed the original auth message. */
21
- address: Address
22
- }
23
-
24
- export type VerifyAuthMessageReturnType = boolean
25
-
26
- export type VerifyAuthMessageErrorType =
27
- | IsAddressEqualErrorType
28
- | GetAddressErrorType
29
- | RecoverAuthMessageAddressErrorType
30
- | ErrorType
31
-
32
- /**
33
- * Verify that a auth message was signed by the provided address.
34
- *
35
- * @param parameters - {@link VerifyAuthMessageParameters}
36
- * @returns Whether or not the signature is valid. {@link VerifyAuthMessageReturnType}
37
- */
38
- export async function verifyAuthMessage({
39
- address,
40
- ...parameters
41
- }: VerifyAuthMessageParameters): Promise<VerifyAuthMessageReturnType> {
42
- return isAddressEqual(
43
- getAddress(address),
44
- await recoverAuthMessageAddress(parameters),
45
- )
46
- }