viem 2.57.4 → 2.57.6

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 (372) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/_cjs/actions/public/waitForTransactionReceipt.js +5 -2
  3. package/_cjs/actions/public/waitForTransactionReceipt.js.map +1 -1
  4. package/_cjs/actions/wallet/waitForCallsStatus.js +25 -2
  5. package/_cjs/actions/wallet/waitForCallsStatus.js.map +1 -1
  6. package/_cjs/chains/definitions/arcTestnet.js +11 -8
  7. package/_cjs/chains/definitions/arcTestnet.js.map +1 -1
  8. package/_cjs/chains/definitions/qmsTestnet.js +30 -0
  9. package/_cjs/chains/definitions/qmsTestnet.js.map +1 -0
  10. package/_cjs/chains/definitions/tempo.js +1 -1
  11. package/_cjs/chains/definitions/tempoModerato.js +2 -2
  12. package/_cjs/chains/index.js +7 -5
  13. package/_cjs/chains/index.js.map +1 -1
  14. package/_cjs/clients/transports/ipc.js +19 -10
  15. package/_cjs/clients/transports/ipc.js.map +1 -1
  16. package/_cjs/clients/transports/webSocket.js +19 -10
  17. package/_cjs/clients/transports/webSocket.js.map +1 -1
  18. package/_cjs/errors/version.js +1 -1
  19. package/_cjs/tempo/Abis.js +297 -1
  20. package/_cjs/tempo/Abis.js.map +1 -1
  21. package/_cjs/tempo/Account.js +40 -40
  22. package/_cjs/tempo/Account.js.map +1 -1
  23. package/_cjs/tempo/Addresses.js +2 -1
  24. package/_cjs/tempo/Addresses.js.map +1 -1
  25. package/_cjs/tempo/Decorator.js +9 -8
  26. package/_cjs/tempo/Decorator.js.map +1 -1
  27. package/_cjs/tempo/ExecutionError.js +95 -4
  28. package/_cjs/tempo/ExecutionError.js.map +1 -1
  29. package/_cjs/tempo/Formatters.js +8 -7
  30. package/_cjs/tempo/Formatters.js.map +1 -1
  31. package/_cjs/tempo/KeyAuthorizationManager.js +25 -16
  32. package/_cjs/tempo/KeyAuthorizationManager.js.map +1 -1
  33. package/_cjs/tempo/Relay.js +9 -4
  34. package/_cjs/tempo/Relay.js.map +1 -1
  35. package/_cjs/tempo/Transaction.js +9 -9
  36. package/_cjs/tempo/Transaction.js.map +1 -1
  37. package/_cjs/tempo/Transport.js +21 -11
  38. package/_cjs/tempo/Transport.js.map +1 -1
  39. package/_cjs/tempo/{multisig → accounts}/Config.js +8 -8
  40. package/_cjs/tempo/{multisig → accounts}/Config.js.map +1 -1
  41. package/_cjs/tempo/{multisig → accounts}/Operation.js +10 -10
  42. package/_cjs/tempo/{multisig → accounts}/Operation.js.map +1 -1
  43. package/_cjs/tempo/{multisig → accounts}/Signature.js +2 -2
  44. package/_cjs/tempo/accounts/Signature.js.map +1 -0
  45. package/_cjs/tempo/actions/accessKey.js +442 -47
  46. package/_cjs/tempo/actions/accessKey.js.map +1 -1
  47. package/_cjs/tempo/actions/{multisig.js → accounts.js} +16 -20
  48. package/_cjs/tempo/actions/accounts.js.map +1 -0
  49. package/_cjs/tempo/actions/amm.js +90 -4
  50. package/_cjs/tempo/actions/amm.js.map +1 -1
  51. package/_cjs/tempo/actions/channel.js +183 -7
  52. package/_cjs/tempo/actions/channel.js.map +1 -1
  53. package/_cjs/tempo/actions/dex.js +507 -14
  54. package/_cjs/tempo/actions/dex.js.map +1 -1
  55. package/_cjs/tempo/actions/earn/deployment.js +4 -3
  56. package/_cjs/tempo/actions/earn/deployment.js.map +1 -1
  57. package/_cjs/tempo/actions/earn.js +22 -21
  58. package/_cjs/tempo/actions/earn.js.map +1 -1
  59. package/_cjs/tempo/actions/fee.js +85 -5
  60. package/_cjs/tempo/actions/fee.js.map +1 -1
  61. package/_cjs/tempo/actions/index.js +2 -2
  62. package/_cjs/tempo/actions/index.js.map +1 -1
  63. package/_cjs/tempo/actions/nonce.js +54 -1
  64. package/_cjs/tempo/actions/nonce.js.map +1 -1
  65. package/_cjs/tempo/actions/policy.js +35 -6
  66. package/_cjs/tempo/actions/policy.js.map +1 -1
  67. package/_cjs/tempo/actions/propAmm.js +18 -8
  68. package/_cjs/tempo/actions/propAmm.js.map +1 -1
  69. package/_cjs/tempo/actions/receivePolicy.js +7 -6
  70. package/_cjs/tempo/actions/receivePolicy.js.map +1 -1
  71. package/_cjs/tempo/actions/reward.js +7 -6
  72. package/_cjs/tempo/actions/reward.js.map +1 -1
  73. package/_cjs/tempo/actions/token.js +433 -22
  74. package/_cjs/tempo/actions/token.js.map +1 -1
  75. package/_cjs/tempo/actions/validator.js +12 -11
  76. package/_cjs/tempo/actions/validator.js.map +1 -1
  77. package/_cjs/tempo/actions/virtualAddress.js +3 -2
  78. package/_cjs/tempo/actions/virtualAddress.js.map +1 -1
  79. package/_cjs/tempo/actions/zone.js +12 -11
  80. package/_cjs/tempo/actions/zone.js.map +1 -1
  81. package/_cjs/tempo/chainConfig.js +37 -37
  82. package/_cjs/tempo/chainConfig.js.map +1 -1
  83. package/_cjs/tempo/errors.js +57 -1
  84. package/_cjs/tempo/errors.js.map +1 -1
  85. package/_cjs/tempo/index.js +3 -3
  86. package/_cjs/tempo/index.js.map +1 -1
  87. package/_cjs/tempo/internal/errors.js +46 -0
  88. package/_cjs/tempo/internal/errors.js.map +1 -0
  89. package/_cjs/tempo/internal/relay/{multisig.js → accounts.js} +90 -93
  90. package/_cjs/tempo/internal/relay/accounts.js.map +1 -0
  91. package/_cjs/tempo/internal/relay/keyAuthorization.js +296 -0
  92. package/_cjs/tempo/internal/relay/keyAuthorization.js.map +1 -0
  93. package/_cjs/tempo/internal/relay/plugin.js +17 -7
  94. package/_cjs/tempo/internal/relay/plugin.js.map +1 -1
  95. package/_cjs/tempo/internal/resolveError.js +128 -0
  96. package/_cjs/tempo/internal/resolveError.js.map +1 -0
  97. package/_cjs/tempo/internal/utils.js +1 -0
  98. package/_cjs/tempo/internal/utils.js.map +1 -1
  99. package/_cjs/utils/hash/normalizeSignature.js +1 -1
  100. package/_cjs/utils/hash/normalizeSignature.js.map +1 -1
  101. package/_cjs/utils/rpc/http.js +66 -31
  102. package/_cjs/utils/rpc/http.js.map +1 -1
  103. package/_cjs/utils/rpc/socket.js +1 -1
  104. package/_cjs/utils/rpc/socket.js.map +1 -1
  105. package/_esm/actions/public/waitForTransactionReceipt.js +5 -2
  106. package/_esm/actions/public/waitForTransactionReceipt.js.map +1 -1
  107. package/_esm/actions/wallet/waitForCallsStatus.js +39 -2
  108. package/_esm/actions/wallet/waitForCallsStatus.js.map +1 -1
  109. package/_esm/chains/definitions/arcTestnet.js +11 -8
  110. package/_esm/chains/definitions/arcTestnet.js.map +1 -1
  111. package/_esm/chains/definitions/qmsTestnet.js +27 -0
  112. package/_esm/chains/definitions/qmsTestnet.js.map +1 -0
  113. package/_esm/chains/definitions/tempo.js +1 -1
  114. package/_esm/chains/definitions/tempoModerato.js +2 -2
  115. package/_esm/chains/index.js +1 -0
  116. package/_esm/chains/index.js.map +1 -1
  117. package/_esm/clients/transports/ipc.js +21 -10
  118. package/_esm/clients/transports/ipc.js.map +1 -1
  119. package/_esm/clients/transports/webSocket.js +21 -10
  120. package/_esm/clients/transports/webSocket.js.map +1 -1
  121. package/_esm/errors/version.js +1 -1
  122. package/_esm/tempo/Abis.js +297 -0
  123. package/_esm/tempo/Abis.js.map +1 -1
  124. package/_esm/tempo/Account.js +42 -42
  125. package/_esm/tempo/Account.js.map +1 -1
  126. package/_esm/tempo/Addresses.js +1 -0
  127. package/_esm/tempo/Addresses.js.map +1 -1
  128. package/_esm/tempo/Client.js +3 -3
  129. package/_esm/tempo/Decorator.js +9 -8
  130. package/_esm/tempo/Decorator.js.map +1 -1
  131. package/_esm/tempo/ExecutionError.js +96 -3
  132. package/_esm/tempo/ExecutionError.js.map +1 -1
  133. package/_esm/tempo/Formatters.js +11 -10
  134. package/_esm/tempo/Formatters.js.map +1 -1
  135. package/_esm/tempo/KeyAuthorizationManager.js +58 -16
  136. package/_esm/tempo/KeyAuthorizationManager.js.map +1 -1
  137. package/_esm/tempo/Relay.js +49 -8
  138. package/_esm/tempo/Relay.js.map +1 -1
  139. package/_esm/tempo/Transaction.js +11 -11
  140. package/_esm/tempo/Transaction.js.map +1 -1
  141. package/_esm/tempo/Transport.js +22 -12
  142. package/_esm/tempo/Transport.js.map +1 -1
  143. package/_esm/tempo/{multisig → accounts}/Config.js +14 -14
  144. package/_esm/tempo/{multisig → accounts}/Config.js.map +1 -1
  145. package/_esm/tempo/{multisig → accounts}/Operation.js +17 -17
  146. package/_esm/tempo/{multisig → accounts}/Operation.js.map +1 -1
  147. package/_esm/tempo/accounts/Signature.js +9 -0
  148. package/_esm/tempo/accounts/Signature.js.map +1 -0
  149. package/_esm/tempo/actions/accessKey.js +499 -48
  150. package/_esm/tempo/actions/accessKey.js.map +1 -1
  151. package/_esm/tempo/actions/{multisig.js → accounts.js} +34 -38
  152. package/_esm/tempo/actions/accounts.js.map +1 -0
  153. package/_esm/tempo/actions/amm.js +95 -4
  154. package/_esm/tempo/actions/amm.js.map +1 -1
  155. package/_esm/tempo/actions/channel.js +191 -7
  156. package/_esm/tempo/actions/channel.js.map +1 -1
  157. package/_esm/tempo/actions/dex.js +537 -14
  158. package/_esm/tempo/actions/dex.js.map +1 -1
  159. package/_esm/tempo/actions/earn/deployment.js +4 -3
  160. package/_esm/tempo/actions/earn/deployment.js.map +1 -1
  161. package/_esm/tempo/actions/earn.js +22 -21
  162. package/_esm/tempo/actions/earn.js.map +1 -1
  163. package/_esm/tempo/actions/fee.js +90 -6
  164. package/_esm/tempo/actions/fee.js.map +1 -1
  165. package/_esm/tempo/actions/index.js +1 -1
  166. package/_esm/tempo/actions/index.js.map +1 -1
  167. package/_esm/tempo/actions/nonce.js +57 -1
  168. package/_esm/tempo/actions/nonce.js.map +1 -1
  169. package/_esm/tempo/actions/policy.js +36 -6
  170. package/_esm/tempo/actions/policy.js.map +1 -1
  171. package/_esm/tempo/actions/propAmm.js +18 -8
  172. package/_esm/tempo/actions/propAmm.js.map +1 -1
  173. package/_esm/tempo/actions/receivePolicy.js +7 -6
  174. package/_esm/tempo/actions/receivePolicy.js.map +1 -1
  175. package/_esm/tempo/actions/reward.js +7 -6
  176. package/_esm/tempo/actions/reward.js.map +1 -1
  177. package/_esm/tempo/actions/token.js +461 -22
  178. package/_esm/tempo/actions/token.js.map +1 -1
  179. package/_esm/tempo/actions/validator.js +12 -11
  180. package/_esm/tempo/actions/validator.js.map +1 -1
  181. package/_esm/tempo/actions/virtualAddress.js +3 -2
  182. package/_esm/tempo/actions/virtualAddress.js.map +1 -1
  183. package/_esm/tempo/actions/zone.js +12 -11
  184. package/_esm/tempo/actions/zone.js.map +1 -1
  185. package/_esm/tempo/chainConfig.js +38 -38
  186. package/_esm/tempo/chainConfig.js.map +1 -1
  187. package/_esm/tempo/errors.js +63 -0
  188. package/_esm/tempo/errors.js.map +1 -1
  189. package/_esm/tempo/index.js +2 -1
  190. package/_esm/tempo/index.js.map +1 -1
  191. package/_esm/tempo/internal/errors.js +51 -0
  192. package/_esm/tempo/internal/errors.js.map +1 -0
  193. package/_esm/tempo/internal/relay/{multisig.js → accounts.js} +93 -98
  194. package/_esm/tempo/internal/relay/accounts.js.map +1 -0
  195. package/_esm/tempo/internal/relay/feePayer.js +1 -1
  196. package/_esm/tempo/internal/relay/feePayer.js.map +1 -1
  197. package/_esm/tempo/internal/relay/keyAuthorization.js +334 -0
  198. package/_esm/tempo/internal/relay/keyAuthorization.js.map +1 -0
  199. package/_esm/tempo/internal/relay/plugin.js +15 -6
  200. package/_esm/tempo/internal/relay/plugin.js.map +1 -1
  201. package/_esm/tempo/internal/resolveError.js +130 -0
  202. package/_esm/tempo/internal/resolveError.js.map +1 -0
  203. package/_esm/tempo/internal/utils.js +2 -0
  204. package/_esm/tempo/internal/utils.js.map +1 -1
  205. package/_esm/utils/hash/normalizeSignature.js +3 -2
  206. package/_esm/utils/hash/normalizeSignature.js.map +1 -1
  207. package/_esm/utils/rpc/http.js +74 -31
  208. package/_esm/utils/rpc/http.js.map +1 -1
  209. package/_esm/utils/rpc/socket.js +3 -1
  210. package/_esm/utils/rpc/socket.js.map +1 -1
  211. package/_types/actions/public/waitForTransactionReceipt.d.ts.map +1 -1
  212. package/_types/actions/wallet/waitForCallsStatus.d.ts.map +1 -1
  213. package/_types/chains/definitions/arcTestnet.d.ts +5 -5
  214. package/_types/chains/definitions/arcTestnet.d.ts.map +1 -1
  215. package/_types/chains/definitions/qmsTestnet.d.ts +50 -0
  216. package/_types/chains/definitions/qmsTestnet.d.ts.map +1 -0
  217. package/_types/chains/definitions/tempo.d.ts +2 -2
  218. package/_types/chains/definitions/tempoModerato.d.ts +4 -4
  219. package/_types/chains/index.d.ts +1 -0
  220. package/_types/chains/index.d.ts.map +1 -1
  221. package/_types/clients/transports/ipc.d.ts.map +1 -1
  222. package/_types/clients/transports/webSocket.d.ts.map +1 -1
  223. package/_types/errors/version.d.ts +1 -1
  224. package/_types/tempo/Abis.d.ts +807 -0
  225. package/_types/tempo/Abis.d.ts.map +1 -1
  226. package/_types/tempo/Account.d.ts +28 -28
  227. package/_types/tempo/Account.d.ts.map +1 -1
  228. package/_types/tempo/Addresses.d.ts +1 -0
  229. package/_types/tempo/Addresses.d.ts.map +1 -1
  230. package/_types/tempo/Client.d.ts +3 -3
  231. package/_types/tempo/Decorator.d.ts +64 -38
  232. package/_types/tempo/Decorator.d.ts.map +1 -1
  233. package/_types/tempo/ExecutionError.d.ts +3 -1
  234. package/_types/tempo/ExecutionError.d.ts.map +1 -1
  235. package/_types/tempo/Formatters.d.ts.map +1 -1
  236. package/_types/tempo/KeyAuthorizationManager.d.ts +45 -2
  237. package/_types/tempo/KeyAuthorizationManager.d.ts.map +1 -1
  238. package/_types/tempo/Relay.d.ts +62 -12
  239. package/_types/tempo/Relay.d.ts.map +1 -1
  240. package/_types/tempo/Transaction.d.ts +14 -11
  241. package/_types/tempo/Transaction.d.ts.map +1 -1
  242. package/_types/tempo/Transport.d.ts +20 -7
  243. package/_types/tempo/Transport.d.ts.map +1 -1
  244. package/_types/tempo/{multisig → accounts}/Config.d.ts +7 -7
  245. package/_types/tempo/accounts/Config.d.ts.map +1 -0
  246. package/_types/tempo/{multisig → accounts}/Operation.d.ts +7 -7
  247. package/_types/tempo/accounts/Operation.d.ts.map +1 -0
  248. package/_types/tempo/{multisig → accounts}/Signature.d.ts +1 -1
  249. package/_types/tempo/accounts/Signature.d.ts.map +1 -0
  250. package/_types/tempo/actions/accessKey.d.ts +214 -25
  251. package/_types/tempo/actions/accessKey.d.ts.map +1 -1
  252. package/_types/tempo/actions/{multisig.d.ts → accounts.d.ts} +31 -29
  253. package/_types/tempo/actions/accounts.d.ts.map +1 -0
  254. package/_types/tempo/actions/amm.d.ts +39 -0
  255. package/_types/tempo/actions/amm.d.ts.map +1 -1
  256. package/_types/tempo/actions/channel.d.ts +77 -7
  257. package/_types/tempo/actions/channel.d.ts.map +1 -1
  258. package/_types/tempo/actions/dex.d.ts +222 -16
  259. package/_types/tempo/actions/dex.d.ts.map +1 -1
  260. package/_types/tempo/actions/earn/deployment.d.ts +7 -6
  261. package/_types/tempo/actions/earn/deployment.d.ts.map +1 -1
  262. package/_types/tempo/actions/earn.d.ts +15 -14
  263. package/_types/tempo/actions/earn.d.ts.map +1 -1
  264. package/_types/tempo/actions/fee.d.ts +32 -6
  265. package/_types/tempo/actions/fee.d.ts.map +1 -1
  266. package/_types/tempo/actions/index.d.ts +1 -1
  267. package/_types/tempo/actions/index.d.ts.map +1 -1
  268. package/_types/tempo/actions/nonce.d.ts +35 -0
  269. package/_types/tempo/actions/nonce.d.ts.map +1 -1
  270. package/_types/tempo/actions/policy.d.ts +29 -8
  271. package/_types/tempo/actions/policy.d.ts.map +1 -1
  272. package/_types/tempo/actions/propAmm.d.ts +9 -1
  273. package/_types/tempo/actions/propAmm.d.ts.map +1 -1
  274. package/_types/tempo/actions/receivePolicy.d.ts +10 -6
  275. package/_types/tempo/actions/receivePolicy.d.ts.map +1 -1
  276. package/_types/tempo/actions/reward.d.ts +7 -3
  277. package/_types/tempo/actions/reward.d.ts.map +1 -1
  278. package/_types/tempo/actions/token.d.ts +200 -32
  279. package/_types/tempo/actions/token.d.ts.map +1 -1
  280. package/_types/tempo/actions/validator.d.ts +17 -5
  281. package/_types/tempo/actions/validator.d.ts.map +1 -1
  282. package/_types/tempo/actions/virtualAddress.d.ts +4 -3
  283. package/_types/tempo/actions/virtualAddress.d.ts.map +1 -1
  284. package/_types/tempo/actions/zone.d.ts +10 -9
  285. package/_types/tempo/actions/zone.d.ts.map +1 -1
  286. package/_types/tempo/errors.d.ts +63 -1
  287. package/_types/tempo/errors.d.ts.map +1 -1
  288. package/_types/tempo/index.d.ts +3 -2
  289. package/_types/tempo/index.d.ts.map +1 -1
  290. package/_types/tempo/internal/errors.d.ts +59 -0
  291. package/_types/tempo/internal/errors.d.ts.map +1 -0
  292. package/_types/tempo/internal/relay/accounts.d.ts +15 -0
  293. package/_types/tempo/internal/relay/accounts.d.ts.map +1 -0
  294. package/_types/tempo/internal/relay/keyAuthorization.d.ts +25 -0
  295. package/_types/tempo/internal/relay/keyAuthorization.d.ts.map +1 -0
  296. package/_types/tempo/internal/relay/plugin.d.ts +6 -3
  297. package/_types/tempo/internal/relay/plugin.d.ts.map +1 -1
  298. package/_types/tempo/internal/resolveError.d.ts +8 -0
  299. package/_types/tempo/internal/resolveError.d.ts.map +1 -0
  300. package/_types/tempo/internal/utils.d.ts.map +1 -1
  301. package/_types/utils/hash/normalizeSignature.d.ts.map +1 -1
  302. package/_types/utils/rpc/http.d.ts.map +1 -1
  303. package/_types/utils/rpc/socket.d.ts.map +1 -1
  304. package/actions/public/waitForTransactionReceipt.ts +8 -2
  305. package/actions/wallet/waitForCallsStatus.ts +41 -2
  306. package/chains/definitions/arcTestnet.ts +11 -8
  307. package/chains/definitions/qmsTestnet.ts +27 -0
  308. package/chains/definitions/tempo.ts +1 -1
  309. package/chains/definitions/tempoModerato.ts +2 -2
  310. package/chains/index.ts +1 -0
  311. package/clients/transports/ipc.ts +38 -29
  312. package/clients/transports/webSocket.ts +42 -33
  313. package/errors/version.ts +1 -1
  314. package/package.json +2 -2
  315. package/tempo/Abis.ts +298 -0
  316. package/tempo/Account.ts +95 -84
  317. package/tempo/Addresses.ts +1 -0
  318. package/tempo/Client.ts +3 -3
  319. package/tempo/Decorator.ts +91 -60
  320. package/tempo/ExecutionError.ts +102 -4
  321. package/tempo/Formatters.ts +14 -13
  322. package/tempo/KeyAuthorizationManager.ts +71 -19
  323. package/tempo/Relay.ts +70 -14
  324. package/tempo/Transaction.ts +31 -23
  325. package/tempo/Transport.ts +49 -21
  326. package/tempo/{multisig → accounts}/Config.ts +21 -21
  327. package/tempo/{multisig → accounts}/Operation.ts +26 -26
  328. package/tempo/{multisig → accounts}/Signature.ts +5 -3
  329. package/tempo/actions/accessKey.ts +675 -104
  330. package/tempo/actions/{multisig.ts → accounts.ts} +54 -59
  331. package/tempo/actions/amm.ts +126 -4
  332. package/tempo/actions/channel.ts +248 -14
  333. package/tempo/actions/dex.ts +599 -33
  334. package/tempo/actions/earn/deployment.ts +11 -9
  335. package/tempo/actions/earn.ts +40 -35
  336. package/tempo/actions/fee.ts +111 -9
  337. package/tempo/actions/index.ts +1 -1
  338. package/tempo/actions/nonce.ts +86 -1
  339. package/tempo/actions/policy.ts +66 -14
  340. package/tempo/actions/propAmm.ts +36 -9
  341. package/tempo/actions/receivePolicy.ts +26 -15
  342. package/tempo/actions/reward.ts +17 -9
  343. package/tempo/actions/token.ts +519 -54
  344. package/tempo/actions/validator.ts +40 -16
  345. package/tempo/actions/virtualAddress.ts +7 -5
  346. package/tempo/actions/zone.ts +25 -20
  347. package/tempo/chainConfig.ts +52 -52
  348. package/tempo/errors.ts +114 -1
  349. package/tempo/index.ts +5 -4
  350. package/tempo/internal/errors.ts +110 -0
  351. package/tempo/internal/relay/{multisig.ts → accounts.ts} +118 -118
  352. package/tempo/internal/relay/feePayer.ts +1 -1
  353. package/tempo/internal/relay/keyAuthorization.ts +415 -0
  354. package/tempo/internal/relay/plugin.ts +20 -7
  355. package/tempo/internal/resolveError.ts +169 -0
  356. package/tempo/internal/utils.ts +2 -0
  357. package/utils/hash/normalizeSignature.ts +3 -2
  358. package/utils/rpc/http.ts +76 -30
  359. package/utils/rpc/socket.ts +3 -1
  360. package/_cjs/tempo/actions/multisig.js.map +0 -1
  361. package/_cjs/tempo/internal/relay/multisig.js.map +0 -1
  362. package/_cjs/tempo/multisig/Signature.js.map +0 -1
  363. package/_esm/tempo/actions/multisig.js.map +0 -1
  364. package/_esm/tempo/internal/relay/multisig.js.map +0 -1
  365. package/_esm/tempo/multisig/Signature.js +0 -9
  366. package/_esm/tempo/multisig/Signature.js.map +0 -1
  367. package/_types/tempo/actions/multisig.d.ts.map +0 -1
  368. package/_types/tempo/internal/relay/multisig.d.ts +0 -4
  369. package/_types/tempo/internal/relay/multisig.d.ts.map +0 -1
  370. package/_types/tempo/multisig/Config.d.ts.map +0 -1
  371. package/_types/tempo/multisig/Operation.d.ts.map +0 -1
  372. package/_types/tempo/multisig/Signature.d.ts.map +0 -1
@@ -1,9 +1,9 @@
1
1
  import type { Address } from 'abitype'
2
2
  import * as Hex from 'ox/Hex'
3
3
  import {
4
- MultisigConfig,
5
- MultisigOperation,
6
- type MultisigSimulation,
4
+ AccountConfig,
5
+ AccountOperation,
6
+ type AccountSimulation,
7
7
  SignatureEnvelope,
8
8
  type TokenId,
9
9
  } from 'ox/tempo'
@@ -20,9 +20,9 @@ import { defineTransactionRequest } from '../utils/formatters/transactionRequest
20
20
  import { getAction } from '../utils/getAction.js'
21
21
  import { keccak256 } from '../utils/hash/keccak256.js'
22
22
  import type { SerializeTransactionFn } from '../utils/transaction/serializeTransaction.js'
23
- import type { Account, MultisigAccount } from './Account.js'
23
+ import type { Account, ConfigurableAccount } from './Account.js'
24
24
  import { getMetadata } from './actions/accessKey.js'
25
- import { getConfig } from './actions/multisig.js'
25
+ import { getConfig } from './actions/accounts.js'
26
26
  import * as Formatters from './Formatters.js'
27
27
  import type { Hardfork } from './Hardfork.js'
28
28
  import * as Concurrent from './internal/concurrent.js'
@@ -55,7 +55,7 @@ export const chainConfig = {
55
55
  prepareTransactionRequest: [
56
56
  async (r, { client, phase }) => {
57
57
  const request = r as Transaction.TransactionRequest & {
58
- account?: Account | MultisigAccount | undefined
58
+ account?: Account | ConfigurableAccount | undefined
59
59
  chainId?: number | undefined
60
60
  chain?:
61
61
  | (Chain & {
@@ -67,8 +67,8 @@ export const chainConfig = {
67
67
  hash?: Hex.Hex | undefined
68
68
  keyData?: Hex.Hex | undefined
69
69
  keyType?: 'p256' | 'secp256k1' | 'webAuthn' | undefined
70
- multisigSimulation?: MultisigSimulation.Spec | undefined
71
- owner?: Account | MultisigAccount | Address | undefined
70
+ accountSimulation?: AccountSimulation.Spec | undefined
71
+ owner?: Account | ConfigurableAccount | Address | undefined
72
72
  signatures?: readonly unknown[] | undefined
73
73
  }
74
74
 
@@ -76,18 +76,18 @@ export const chainConfig = {
76
76
  if (
77
77
  !request.account ||
78
78
  typeof request.account === 'string' ||
79
- request.account.source !== 'multisig'
79
+ request.account.source !== 'configurable'
80
80
  )
81
81
  throw new Error(
82
- 'A local multisig account is required to approve a stored multisig transaction.',
82
+ 'A local configurable account is required to approve a stored configurable account transaction.',
83
83
  )
84
84
  if (!request.owner || typeof request.owner === 'string')
85
85
  throw new Error(
86
- 'A local owner account is required to approve a stored multisig transaction.',
86
+ 'A local owner account is required to approve a stored configurable account transaction.',
87
87
  )
88
88
  if (request.owner.source !== 'root')
89
89
  throw new Error(
90
- 'A Tempo owner account is required to approve a stored multisig transaction.',
90
+ 'A Tempo owner account is required to approve a stored configurable account transaction.',
91
91
  )
92
92
  const transaction = await getAction(
93
93
  client,
@@ -95,28 +95,28 @@ export const chainConfig = {
95
95
  'getTransaction',
96
96
  )({ hash: request.hash })
97
97
  const operation =
98
- 'multisig' in transaction
99
- ? (transaction.multisig as
100
- | MultisigOperation.TransactionOperation
98
+ 'operation' in transaction
99
+ ? (transaction.operation as
100
+ | AccountOperation.TransactionOperation
101
101
  | undefined)
102
102
  : undefined
103
103
  if (!operation)
104
- throw new Error('Expected a multisig operation transaction.')
104
+ throw new Error('Expected an account operation transaction.')
105
105
  if (!isAddressEqual(operation.account, request.account.address))
106
106
  throw new Error(
107
- 'Multisig operation account does not match the requested account.',
107
+ 'Account operation account does not match the requested account.',
108
108
  )
109
109
  const storedTransaction = Transaction.deserialize(
110
110
  operation.transaction as Transaction.TransactionSerializedTempo,
111
111
  )
112
- const hash = MultisigOperation.getHash({
112
+ const hash = AccountOperation.getHash({
113
113
  account: operation.account,
114
114
  config: operation.config,
115
115
  transaction: operation.transaction,
116
116
  type: 'transaction',
117
117
  })
118
118
  if (hash.toLowerCase() !== request.hash.toLowerCase())
119
- throw new Error('Multisig operation hash does not match transaction.')
119
+ throw new Error('Account operation hash does not match transaction.')
120
120
  return {
121
121
  ...storedTransaction,
122
122
  // Serialized zero values must not trigger a new fill of an approved transaction.
@@ -125,7 +125,7 @@ export const chainConfig = {
125
125
  maxPriorityFeePerGas: storedTransaction.maxPriorityFeePerGas ?? 0n,
126
126
  account: request.account,
127
127
  from: operation.account,
128
- multisigSimulation: getMultisigSimulation({
128
+ accountSimulation: getAccountSimulation({
129
129
  config: operation.config,
130
130
  local: request.account,
131
131
  }),
@@ -151,40 +151,40 @@ export const chainConfig = {
151
151
  return request as unknown as typeof r
152
152
  }
153
153
 
154
- const multisigIdentity = (() => {
155
- if (request.account?.source === 'multisig')
154
+ const configurableIdentity = (() => {
155
+ if (request.account?.source === 'configurable')
156
156
  return {
157
157
  account: request.account.address,
158
- config: (request.account as MultisigAccount).config,
159
- local: request.account as MultisigAccount,
158
+ config: (request.account as ConfigurableAccount).config,
159
+ local: request.account as ConfigurableAccount,
160
160
  }
161
161
  return undefined
162
162
  })()
163
- if (request.owner && !multisigIdentity)
163
+ if (request.owner && !configurableIdentity)
164
164
  throw new Error(
165
- 'A multisig account is required when an owner is provided.',
165
+ 'A configurable account is required when an owner is provided.',
166
166
  )
167
167
  if (request.owner && typeof request.owner === 'string')
168
168
  throw new Error(
169
- 'A local owner account is required to approve a multisig transaction.',
169
+ 'A local owner account is required to approve a configurable account transaction.',
170
170
  )
171
171
  if (request.owner && request.owner.source !== 'root')
172
172
  throw new Error(
173
- 'A Tempo owner account is required to approve a multisig transaction.',
173
+ 'A Tempo owner account is required to approve a configurable account transaction.',
174
174
  )
175
- const coordinatedMultisig =
176
- !!multisigIdentity &&
175
+ const coordinated =
176
+ !!configurableIdentity &&
177
177
  !!request.owner &&
178
- (client.transport as { multisig?: boolean }).multisig === true
179
- if (multisigIdentity) {
180
- const { account, local } = multisigIdentity
178
+ (client.transport as { accounts?: boolean }).accounts === true
179
+ if (configurableIdentity) {
180
+ const { account, local } = configurableIdentity
181
181
  if (!account)
182
182
  throw new Error(
183
- 'A multisig account address is required with a current config.',
183
+ 'A configurable account address is required with a current config.',
184
184
  )
185
185
  const config = await (async () => {
186
- if (multisigIdentity.config) return multisigIdentity.config
187
- if (!coordinatedMultisig) return undefined
186
+ if (configurableIdentity.config) return configurableIdentity.config
187
+ if (!coordinated) return undefined
188
188
  const cachedConfig = await getAction(
189
189
  client,
190
190
  getConfig,
@@ -192,16 +192,16 @@ export const chainConfig = {
192
192
  )({ address: account })
193
193
  if (!cachedConfig)
194
194
  throw new Error(
195
- `No current multisig config is cached for account ${account}. Provide the current config.`,
195
+ `No current account config is cached for account ${account}. Provide the current config.`,
196
196
  )
197
197
  return cachedConfig
198
198
  })()
199
199
  if (!config)
200
200
  throw new Error(
201
- 'A multisig config is required to prepare a transaction.',
201
+ 'An account config is required to prepare a transaction.',
202
202
  )
203
203
  request.from = account
204
- request.multisigSimulation = getMultisigSimulation({
204
+ request.accountSimulation = getAccountSimulation({
205
205
  config,
206
206
  local,
207
207
  })
@@ -213,12 +213,12 @@ export const chainConfig = {
213
213
  if (request.nonceKey === 'expiring' || request.nonceKey === maxUint256)
214
214
  return true
215
215
  if (typeof request.nonceKey !== 'undefined') return false
216
- if (multisigIdentity) return false
216
+ if (configurableIdentity) return false
217
217
  if (request.feePayer && typeof request.nonceKey === 'undefined')
218
218
  return true
219
219
  const account = request.account as
220
220
  | Account
221
- | MultisigAccount
221
+ | ConfigurableAccount
222
222
  | Address
223
223
  | undefined
224
224
  const address = typeof account === 'string' ? account : account?.address
@@ -227,7 +227,7 @@ export const chainConfig = {
227
227
  return false
228
228
  })()
229
229
 
230
- if (coordinatedMultisig && typeof request.nonceKey === 'undefined') {
230
+ if (coordinated && typeof request.nonceKey === 'undefined') {
231
231
  // A random nonce lane lets a stored approval ceremony remain valid
232
232
  // indefinitely without blocking other pending operations.
233
233
  request.nonceKey = Hex.toBigInt(Hex.random(31)) + 1n
@@ -294,17 +294,17 @@ export const chainConfig = {
294
294
  transaction: serializeTransaction,
295
295
  async transactionEnvelope({ serializedTransaction, transaction }) {
296
296
  const request = transaction as Transaction.TransactionSerializableTempo
297
- if (!request.multisigSimulation) return serializedTransaction
297
+ if (!request.accountSimulation) return serializedTransaction
298
298
  try {
299
299
  SignatureEnvelope.deserialize(serializedTransaction)
300
300
  } catch {
301
301
  const transaction = Transaction.deserialize(
302
302
  serializedTransaction as Transaction.TransactionSerializedTempo,
303
303
  )
304
- if (transaction.signature?.type === 'multisig')
304
+ if (transaction.signature?.type === 'configurable')
305
305
  return serializedTransaction
306
306
  throw new Error(
307
- 'A Tempo owner account is required to approve a multisig transaction.',
307
+ 'A Tempo owner account is required to approve a configurable account transaction.',
308
308
  )
309
309
  }
310
310
  return await serializeTransaction({
@@ -402,11 +402,11 @@ export const chainConfig = {
402
402
 
403
403
  export type ChainConfig = typeof chainConfig
404
404
 
405
- /** Builds a bounded multisig spec for gas simulation. */
406
- function getMultisigSimulation(options: {
407
- config: MultisigConfig.Config
408
- local?: MultisigAccount | undefined
409
- }): MultisigSimulation.Spec {
405
+ /** Builds a bounded account spec for gas simulation. */
406
+ function getAccountSimulation(options: {
407
+ config: AccountConfig.Config
408
+ local?: ConfigurableAccount | undefined
409
+ }): AccountSimulation.Spec {
410
410
  const { config, local } = options
411
411
  return {
412
412
  approvals: selectOwners(config).map((owner) => {
@@ -453,7 +453,7 @@ function randomValidAfter(): number {
453
453
  }
454
454
 
455
455
  /** Selects a deterministic minimum-cardinality owner quorum. */
456
- function selectOwners(config: MultisigConfig.Config) {
456
+ function selectOwners(config: AccountConfig.Config) {
457
457
  const owners = [...config.owners].sort(
458
458
  (a, b) =>
459
459
  Number(b.weight) - Number(a.weight) ||
@@ -461,7 +461,7 @@ function selectOwners(config: MultisigConfig.Config) {
461
461
  )
462
462
  const selected: typeof owners = []
463
463
  let weight = 0
464
- for (const owner of owners.slice(0, MultisigConfig.maxSignatures)) {
464
+ for (const owner of owners.slice(0, AccountConfig.maxSignatures)) {
465
465
  if (weight >= Number(config.threshold)) break
466
466
  selected.push(owner)
467
467
  weight += Number(owner.weight)
package/tempo/errors.ts CHANGED
@@ -1,6 +1,16 @@
1
- import type { Address } from 'abitype'
1
+ import type { AbiError, Address } from 'abitype'
2
2
  import type { Hex } from 'ox'
3
3
  import { BaseError } from '../errors/base.js'
4
+ import { prettyPrint } from '../errors/transaction.js'
5
+ import type * as accessKey from './actions/accessKey.js'
6
+ import type * as amm from './actions/amm.js'
7
+ import type * as channel from './actions/channel.js'
8
+ import type * as dex from './actions/dex.js'
9
+ import type * as fee from './actions/fee.js'
10
+ import type * as nonce from './actions/nonce.js'
11
+ import type * as policy from './actions/policy.js'
12
+ import type * as token from './actions/token.js'
13
+ import type * as ExecutionError from './ExecutionError.js'
4
14
 
5
15
  export type GetVaultEngineChangedErrorType = GetVaultEngineChangedError & {
6
16
  name: 'GetVaultEngineChangedError'
@@ -138,3 +148,106 @@ export class FeeTokenPausedError extends BaseError {
138
148
  })
139
149
  }
140
150
  }
151
+
152
+ /**
153
+ * Errors thrown by Tempo actions for decoded Tempo precompile errors. Narrow with `error.name`,
154
+ * then `error.errorName` for the base `TempoExecutionError`.
155
+ */
156
+ export type ExecutionErrorType =
157
+ | TempoExecutionErrorType
158
+ | accessKey.ExecutionErrorType
159
+ | amm.ExecutionErrorType
160
+ | channel.ExecutionErrorType
161
+ | dex.ExecutionErrorType
162
+ | fee.ExecutionErrorType
163
+ | nonce.ExecutionErrorType
164
+ | policy.ExecutionErrorType
165
+ | token.ExecutionErrorType
166
+
167
+ /** Union of `TempoExecutionError` per decoded error, so `errorName` narrows `args`. */
168
+ export type TempoExecutionErrorType<
169
+ decoded extends TempoExecutionError.Decoded = TempoExecutionError.Decoded,
170
+ > = decoded extends TempoExecutionError.Decoded
171
+ ? TempoExecutionError<decoded> & { name: 'TempoExecutionError' }
172
+ : never
173
+
174
+ /** Thrown when a Tempo action fails with a decoded Tempo precompile error. */
175
+ export class TempoExecutionError<
176
+ decoded extends TempoExecutionError.Decoded = TempoExecutionError.Decoded,
177
+ > extends BaseError {
178
+ /** ABI item of the error. */
179
+ abiItem: AbiError
180
+ /** Decoded error arguments, when the revert data carried them. */
181
+ args: decoded['args']
182
+ /** Revert data, or the error selector when only the name is known. */
183
+ data: Hex.Hex
184
+ /** Error name from `Abis.coreErrors`. */
185
+ errorName: decoded['errorName']
186
+ /** Steps to resolve the error. */
187
+ hints: readonly string[]
188
+
189
+ constructor(
190
+ { cause, error, hints }: TempoExecutionError.Parameters,
191
+ {
192
+ details,
193
+ docsPath,
194
+ name = 'TempoExecutionError',
195
+ shortMessage = error.message,
196
+ }: TempoExecutionError.Options = {},
197
+ ) {
198
+ // Keep the call or request summary from the original error.
199
+ const summary = cause.metaMessages?.findIndex((message) =>
200
+ /^(Contract Call|Request Arguments):/.test(message),
201
+ )
202
+ super(shortMessage, {
203
+ cause,
204
+ docsPath,
205
+ metaMessages: [
206
+ ...(details ? [prettyPrint(details), ' '] : []),
207
+ ...(hints.length
208
+ ? ['How to fix:', ...hints.map((hint) => `- ${hint}`), ' ']
209
+ : []),
210
+ ...(summary !== undefined && summary >= 0
211
+ ? cause.metaMessages!.slice(summary)
212
+ : []),
213
+ ],
214
+ name,
215
+ })
216
+ this.abiItem = error.abiItem as AbiError
217
+ // Subclasses narrow `decoded` to the error they are built for.
218
+ this.args = error.args as decoded['args']
219
+ this.data = error.data
220
+ this.errorName = error.errorName as decoded['errorName']
221
+ this.hints = hints
222
+ }
223
+ }
224
+
225
+ export declare namespace TempoExecutionError {
226
+ /** Decoded Tempo error, optionally narrowed to `name`. */
227
+ type Decoded<name extends string = string> = Extract<
228
+ Exclude<ExecutionError.ExecutionError, { errorName: 'unknown' }>,
229
+ { errorName: name }
230
+ >
231
+ /** Name of any decoded Tempo error. */
232
+ type ErrorName = Decoded['errorName']
233
+ /** Message options for subclasses. */
234
+ type Options = {
235
+ /** Rows printed below the short message. Empty values are omitted. */
236
+ details?: Record<string, unknown> | undefined
237
+ /** Documentation path. */
238
+ docsPath?: string | undefined
239
+ /** Error name. Defaults to `TempoExecutionError`. */
240
+ name?: string | undefined
241
+ /** Short message. Defaults to the decoded error message. */
242
+ shortMessage?: string | undefined
243
+ }
244
+ /** Constructor parameters. */
245
+ type Parameters = {
246
+ /** Original error. */
247
+ cause: BaseError
248
+ /** Decoded Tempo error. */
249
+ error: Decoded
250
+ /** Steps to resolve the error. */
251
+ hints: readonly string[]
252
+ }
253
+ }
package/tempo/index.ts CHANGED
@@ -12,10 +12,10 @@ export type {
12
12
  TxEnvelopeTempo as z_TxEnvelopeTempo,
13
13
  } from 'ox/tempo'
14
14
  export {
15
+ AccountConfig,
16
+ AccountOperation,
15
17
  Channel,
16
18
  EarnShares,
17
- MultisigConfig,
18
- MultisigOperation,
19
19
  Period,
20
20
  ReceivePolicyReceipt,
21
21
  TempoAddress,
@@ -26,8 +26,8 @@ export {
26
26
  } from 'ox/tempo'
27
27
  export type {
28
28
  /** @deprecated */
29
- Owner as z_MultisigConfigOwner,
30
- } from 'ox/tempo/MultisigConfig'
29
+ Owner as z_AccountConfigOwner,
30
+ } from 'ox/tempo/AccountConfig'
31
31
  export {
32
32
  type CustomTransport,
33
33
  type CustomTransportConfig,
@@ -73,6 +73,7 @@ export * as Expiry from './Expiry.js'
73
73
  export * from './errors.js'
74
74
  export * as Formatters from './Formatters.js'
75
75
  export * as Hardfork from './Hardfork.js'
76
+ /** Client-side storage for pending key authorizations, backed by a `Store`. */
76
77
  export * as KeyAuthorizationManager from './KeyAuthorizationManager.js'
77
78
  export * as P256 from './P256.js'
78
79
  /**
@@ -0,0 +1,110 @@
1
+ import type { Address } from 'abitype'
2
+ import { TokenId } from 'ox/tempo'
3
+ import type {
4
+ MulticallParameters,
5
+ MulticallReturnType,
6
+ } from '../../actions/public/multicall.js'
7
+ import type { Client } from '../../clients/createClient.js'
8
+ import { formatUnits } from '../../utils/unit/formatUnits.js'
9
+ import type * as ExecutionError from '../ExecutionError.js'
10
+ import type { TempoExecutionError } from '../errors.js'
11
+
12
+ /** Action-specific steps to resolve errors, keyed by error name. Listed before the default steps. */
13
+ export type Hints = {
14
+ [name in TempoExecutionError.ErrorName]?: readonly string[]
15
+ }
16
+
17
+ /** Builds a specific error for a decoded Tempo error, or returns `undefined` when it does not apply. */
18
+ type Resolver = (
19
+ context: Context,
20
+ ) => Promise<TempoExecutionError | undefined> | TempoExecutionError | undefined
21
+
22
+ /** Resolvers keyed by error signature. */
23
+ export type Resolvers = {
24
+ [signature in keyof typeof ExecutionError.messages]?: Resolver
25
+ }
26
+
27
+ export type Context = {
28
+ /** Parameters for the base `TempoExecutionError`. */
29
+ base: TempoExecutionError.Parameters
30
+ client: Client
31
+ /** Signer, with its access key when signing with one. */
32
+ signer: { address: Address; accessKey: Address | undefined } | undefined
33
+ /** Contract call that failed, when the action made one. */
34
+ call:
35
+ | {
36
+ address: Address
37
+ args: readonly unknown[]
38
+ functionName: string
39
+ /** Reads an argument by its ABI input name. */
40
+ arg: <type = unknown>(name: string) => type | undefined
41
+ }
42
+ | undefined
43
+ /** Whether the error came from transaction validation or fee payment rather than a revert. */
44
+ validation: boolean
45
+ /** Raw node message. */
46
+ details: string
47
+ parameters: Record<string, any>
48
+ /** Multicall with `allowFailure: true`. Resolves an empty array when the request fails. */
49
+ read: <const contracts extends readonly unknown[]>(
50
+ contracts: MulticallParameters<contracts>['contracts'],
51
+ ) => Promise<Partial<MulticallReturnType<contracts, true>>>
52
+ }
53
+
54
+ /**
55
+ * Wraps an action so failures with a decoded Tempo error throw a {@link TempoExecutionError}.
56
+ * Other errors are rethrown unchanged.
57
+ *
58
+ * @internal
59
+ */
60
+ export function withExecutionError<
61
+ action extends (client: any, parameters: any) => Promise<any>,
62
+ >(action: action, options: { hints?: Hints | undefined } = {}): action {
63
+ return (async (client: Client, parameters: Record<string, any>) => {
64
+ try {
65
+ return await action(client, parameters)
66
+ } catch (error) {
67
+ // Loaded on failure only, so resolvers and error tables stay out of the success path.
68
+ const { toExecutionError } = await import('./resolveError.js')
69
+ throw await toExecutionError(error, { ...options, client, parameters })
70
+ }
71
+ }) as action
72
+ }
73
+
74
+ /** Fee token from the action parameters or chain, when set. */
75
+ export function getFeeToken(context: Context) {
76
+ const feeToken =
77
+ context.parameters.feeToken ??
78
+ (
79
+ context.client.chain as
80
+ | { feeToken?: TokenId.TokenIdOrAddress }
81
+ | undefined
82
+ )?.feeToken
83
+ return feeToken === undefined || feeToken === null
84
+ ? undefined
85
+ : TokenId.toAddress(feeToken)
86
+ }
87
+
88
+ /** Whether `address` is a TIP-20 token. */
89
+ export function isTip20(address: Address | undefined): address is Address {
90
+ return !!address?.toLowerCase().startsWith('0x20c0')
91
+ }
92
+
93
+ /** Formats an amount as `formatted (raw)` when decimals are known. */
94
+ export function formatAmount(
95
+ value: bigint | undefined,
96
+ decimals: number | undefined,
97
+ ) {
98
+ if (value === undefined) return undefined
99
+ if (decimals === undefined) return value.toString()
100
+ return `${formatUnits(value, decimals)} (${value})`
101
+ }
102
+
103
+ /** Formats Unix seconds as an ISO 8601 string. */
104
+ export function formatTime(seconds: bigint | number | undefined) {
105
+ if (!seconds) return undefined
106
+ const milliseconds = Number(seconds) * 1000
107
+ // `Date` cannot represent times past ±8.64e15 milliseconds.
108
+ if (!(Math.abs(milliseconds) <= 8.64e15)) return seconds.toString()
109
+ return new Date(milliseconds).toISOString()
110
+ }