viem 3.0.0-next.10 → 3.0.0-next.13

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 (716) hide show
  1. package/dist/chains/definitions/arc.d.ts +15 -1
  2. package/dist/chains/definitions/arc.d.ts.map +1 -1
  3. package/dist/chains/definitions/arc.js +19 -1
  4. package/dist/chains/definitions/arc.js.map +1 -1
  5. package/dist/chains/definitions/berachainBepolia.d.ts +1 -1
  6. package/dist/chains/definitions/berachainBepolia.js +1 -1
  7. package/dist/chains/definitions/blockdag.d.ts +18 -0
  8. package/dist/chains/definitions/blockdag.d.ts.map +1 -0
  9. package/dist/chains/definitions/blockdag.js +18 -0
  10. package/dist/chains/definitions/blockdag.js.map +1 -0
  11. package/dist/chains/definitions/candyChain.d.ts +27 -0
  12. package/dist/chains/definitions/candyChain.d.ts.map +1 -0
  13. package/dist/chains/definitions/candyChain.js +26 -0
  14. package/dist/chains/definitions/candyChain.js.map +1 -0
  15. package/dist/chains/definitions/creditCoin3Devnet.d.ts +6 -0
  16. package/dist/chains/definitions/creditCoin3Devnet.d.ts.map +1 -1
  17. package/dist/chains/definitions/creditCoin3Devnet.js +6 -0
  18. package/dist/chains/definitions/creditCoin3Devnet.js.map +1 -1
  19. package/dist/chains/definitions/creditCoin3Mainnet.d.ts +5 -1
  20. package/dist/chains/definitions/creditCoin3Mainnet.d.ts.map +1 -1
  21. package/dist/chains/definitions/creditCoin3Mainnet.js +4 -0
  22. package/dist/chains/definitions/creditCoin3Mainnet.js.map +1 -1
  23. package/dist/chains/definitions/creditCoin3Testnet.d.ts +5 -1
  24. package/dist/chains/definitions/creditCoin3Testnet.d.ts.map +1 -1
  25. package/dist/chains/definitions/creditCoin3Testnet.js +4 -0
  26. package/dist/chains/definitions/creditCoin3Testnet.js.map +1 -1
  27. package/dist/chains/definitions/crymad.d.ts +25 -0
  28. package/dist/chains/definitions/crymad.d.ts.map +1 -0
  29. package/dist/chains/definitions/crymad.js +23 -0
  30. package/dist/chains/definitions/crymad.js.map +1 -0
  31. package/dist/chains/definitions/crymadL2.d.ts +26 -0
  32. package/dist/chains/definitions/crymadL2.d.ts.map +1 -0
  33. package/dist/chains/definitions/crymadL2.js +24 -0
  34. package/dist/chains/definitions/crymadL2.js.map +1 -0
  35. package/dist/chains/definitions/eCanna.d.ts +18 -0
  36. package/dist/chains/definitions/eCanna.d.ts.map +1 -0
  37. package/dist/chains/definitions/eCanna.js +18 -0
  38. package/dist/chains/definitions/eCanna.js.map +1 -0
  39. package/dist/chains/definitions/eCannaTestnet.d.ts +19 -0
  40. package/dist/chains/definitions/eCannaTestnet.d.ts.map +1 -0
  41. package/dist/chains/definitions/eCannaTestnet.js +19 -0
  42. package/dist/chains/definitions/eCannaTestnet.js.map +1 -0
  43. package/dist/chains/definitions/hausTestnet.d.ts +20 -0
  44. package/dist/chains/definitions/hausTestnet.d.ts.map +1 -0
  45. package/dist/chains/definitions/hausTestnet.js +18 -0
  46. package/dist/chains/definitions/hausTestnet.js.map +1 -0
  47. package/dist/chains/definitions/hyveChain.d.ts +26 -0
  48. package/dist/chains/definitions/hyveChain.d.ts.map +1 -0
  49. package/dist/chains/definitions/hyveChain.js +22 -0
  50. package/dist/chains/definitions/hyveChain.js.map +1 -0
  51. package/dist/chains/definitions/kortana.d.ts +18 -0
  52. package/dist/chains/definitions/kortana.d.ts.map +1 -0
  53. package/dist/chains/definitions/kortana.js +16 -0
  54. package/dist/chains/definitions/kortana.js.map +1 -0
  55. package/dist/chains/definitions/morphTachyon.d.ts +18 -0
  56. package/dist/chains/definitions/morphTachyon.d.ts.map +1 -0
  57. package/dist/chains/definitions/morphTachyon.js +16 -0
  58. package/dist/chains/definitions/morphTachyon.js.map +1 -0
  59. package/dist/chains/definitions/morphTachyonTestnet.d.ts +19 -0
  60. package/dist/chains/definitions/morphTachyonTestnet.d.ts.map +1 -0
  61. package/dist/chains/definitions/morphTachyonTestnet.js +17 -0
  62. package/dist/chains/definitions/morphTachyonTestnet.js.map +1 -0
  63. package/dist/chains/definitions/rabbitChainTestnet.d.ts +19 -0
  64. package/dist/chains/definitions/rabbitChainTestnet.d.ts.map +1 -0
  65. package/dist/chains/definitions/rabbitChainTestnet.js +19 -0
  66. package/dist/chains/definitions/rabbitChainTestnet.js.map +1 -0
  67. package/dist/chains/definitions/robinhood.d.ts +2 -1
  68. package/dist/chains/definitions/robinhood.d.ts.map +1 -1
  69. package/dist/chains/definitions/robinhood.js +6 -2
  70. package/dist/chains/definitions/robinhood.js.map +1 -1
  71. package/dist/chains/definitions/tempo.d.ts +11 -3
  72. package/dist/chains/definitions/tempo.d.ts.map +1 -1
  73. package/dist/chains/definitions/tempo.js +10 -0
  74. package/dist/chains/definitions/tempo.js.map +1 -1
  75. package/dist/chains/definitions/tempoModerato.d.ts +11 -3
  76. package/dist/chains/definitions/tempoModerato.d.ts.map +1 -1
  77. package/dist/chains/definitions/tempoModerato.js +10 -0
  78. package/dist/chains/definitions/tempoModerato.js.map +1 -1
  79. package/dist/chains/definitions/whitechainSepolia.d.ts +54 -2
  80. package/dist/chains/definitions/whitechainSepolia.d.ts.map +1 -1
  81. package/dist/chains/definitions/whitechainSepolia.js +27 -3
  82. package/dist/chains/definitions/whitechainSepolia.js.map +1 -1
  83. package/dist/chains/definitions/xgrTestnet.d.ts +19 -0
  84. package/dist/chains/definitions/xgrTestnet.d.ts.map +1 -0
  85. package/dist/chains/definitions/xgrTestnet.js +19 -0
  86. package/dist/chains/definitions/xgrTestnet.js.map +1 -0
  87. package/dist/chains/definitions/ynxTestnet.d.ts +19 -0
  88. package/dist/chains/definitions/ynxTestnet.d.ts.map +1 -0
  89. package/dist/chains/definitions/ynxTestnet.js +17 -0
  90. package/dist/chains/definitions/ynxTestnet.js.map +1 -0
  91. package/dist/chains/definitions/zagros.d.ts +26 -0
  92. package/dist/chains/definitions/zagros.d.ts.map +1 -0
  93. package/dist/chains/definitions/zagros.js +26 -0
  94. package/dist/chains/definitions/zagros.js.map +1 -0
  95. package/dist/chains/index.d.ts +16 -0
  96. package/dist/chains/index.d.ts.map +1 -1
  97. package/dist/chains/index.js +15 -0
  98. package/dist/chains/index.js.map +1 -1
  99. package/dist/core/actions/address/getStorageValues.d.ts +30 -0
  100. package/dist/core/actions/address/getStorageValues.d.ts.map +1 -0
  101. package/dist/core/actions/address/getStorageValues.js +29 -0
  102. package/dist/core/actions/address/getStorageValues.js.map +1 -0
  103. package/dist/core/actions/address/index.d.ts +1 -0
  104. package/dist/core/actions/address/index.d.ts.map +1 -1
  105. package/dist/core/actions/address/index.js +1 -0
  106. package/dist/core/actions/address/index.js.map +1 -1
  107. package/dist/core/actions/block/simulate.d.ts +2 -0
  108. package/dist/core/actions/block/simulate.d.ts.map +1 -1
  109. package/dist/core/actions/block/simulate.js +3 -0
  110. package/dist/core/actions/block/simulate.js.map +1 -1
  111. package/dist/core/actions/multicall.d.ts.map +1 -1
  112. package/dist/core/actions/multicall.js +7 -1
  113. package/dist/core/actions/multicall.js.map +1 -1
  114. package/dist/core/actions/siwe/verify.d.ts.map +1 -1
  115. package/dist/core/actions/siwe/verify.js +2 -1
  116. package/dist/core/actions/siwe/verify.js.map +1 -1
  117. package/dist/core/actions/transaction/Errors.d.ts +1 -0
  118. package/dist/core/actions/transaction/Errors.d.ts.map +1 -1
  119. package/dist/core/actions/transaction/Errors.js +1 -0
  120. package/dist/core/actions/transaction/Errors.js.map +1 -1
  121. package/dist/core/actions/transaction/fill.d.ts +10 -1
  122. package/dist/core/actions/transaction/fill.d.ts.map +1 -1
  123. package/dist/core/actions/transaction/fill.js +71 -38
  124. package/dist/core/actions/transaction/fill.js.map +1 -1
  125. package/dist/core/actions/transaction/prepare.d.ts.map +1 -1
  126. package/dist/core/actions/transaction/prepare.js +4 -1
  127. package/dist/core/actions/transaction/prepare.js.map +1 -1
  128. package/dist/core/actions/transaction/sign.d.ts.map +1 -1
  129. package/dist/core/actions/transaction/sign.js +3 -1
  130. package/dist/core/actions/transaction/sign.js.map +1 -1
  131. package/dist/core/actions/wallet/sendCalls.d.ts.map +1 -1
  132. package/dist/core/actions/wallet/sendCalls.js +1 -0
  133. package/dist/core/actions/wallet/sendCalls.js.map +1 -1
  134. package/dist/core/internal/transport.js +1 -1
  135. package/dist/core/internal/transport.js.map +1 -1
  136. package/dist/erc4337/actions/userOperation/get.d.ts.map +1 -1
  137. package/dist/erc4337/actions/userOperation/get.js +3 -1
  138. package/dist/erc4337/actions/userOperation/get.js.map +1 -1
  139. package/dist/erc4337/actions/userOperation/waitForReceipt.js +1 -1
  140. package/dist/erc4337/actions/userOperation/waitForReceipt.js.map +1 -1
  141. package/dist/internal/inference.d.ts +24 -0
  142. package/dist/internal/inference.d.ts.map +1 -1
  143. package/dist/node/transports/ipc.d.ts.map +1 -1
  144. package/dist/node/transports/ipc.js +20 -2
  145. package/dist/node/transports/ipc.js.map +1 -1
  146. package/dist/op-stack/actions/l1/getGame.js +1 -1
  147. package/dist/op-stack/actions/l1/getGame.js.map +1 -1
  148. package/dist/op-stack/actions/l1/getGames.js +1 -1
  149. package/dist/op-stack/actions/l1/getGames.js.map +1 -1
  150. package/dist/op-stack/actions/l1/getTimeToNextGame.js +1 -1
  151. package/dist/op-stack/actions/l1/getTimeToNextGame.js.map +1 -1
  152. package/dist/op-stack/actions/l1/getTimeToNextL2Output.js +1 -1
  153. package/dist/op-stack/actions/l1/getTimeToNextL2Output.js.map +1 -1
  154. package/dist/tempo/Abis.d.ts +36662 -5677
  155. package/dist/tempo/Abis.d.ts.map +1 -1
  156. package/dist/tempo/Abis.js +5626 -1536
  157. package/dist/tempo/Abis.js.map +1 -1
  158. package/dist/tempo/Account.d.ts +86 -29
  159. package/dist/tempo/Account.d.ts.map +1 -1
  160. package/dist/tempo/Account.js +204 -70
  161. package/dist/tempo/Account.js.map +1 -1
  162. package/dist/tempo/Addresses.d.ts +16 -1
  163. package/dist/tempo/Addresses.d.ts.map +1 -1
  164. package/dist/tempo/Addresses.js +41 -1
  165. package/dist/tempo/Addresses.js.map +1 -1
  166. package/dist/tempo/Capabilities.d.ts +7 -13
  167. package/dist/tempo/Capabilities.d.ts.map +1 -1
  168. package/dist/tempo/Client.d.ts.map +1 -1
  169. package/dist/tempo/Client.js +1 -1
  170. package/dist/tempo/Client.js.map +1 -1
  171. package/dist/tempo/Decorator.d.ts +226 -7
  172. package/dist/tempo/Decorator.d.ts.map +1 -1
  173. package/dist/tempo/Decorator.js +27 -5
  174. package/dist/tempo/Decorator.js.map +1 -1
  175. package/dist/tempo/ExecutionError.d.ts +81 -0
  176. package/dist/tempo/ExecutionError.d.ts.map +1 -0
  177. package/dist/tempo/ExecutionError.js +309 -0
  178. package/dist/tempo/ExecutionError.js.map +1 -0
  179. package/dist/tempo/Relay.d.ts +303 -0
  180. package/dist/tempo/Relay.d.ts.map +1 -0
  181. package/dist/tempo/Relay.js +170 -0
  182. package/dist/tempo/Relay.js.map +1 -0
  183. package/dist/tempo/Selectors.d.ts +219 -66
  184. package/dist/tempo/Selectors.d.ts.map +1 -1
  185. package/dist/tempo/Selectors.js +220 -67
  186. package/dist/tempo/Selectors.js.map +1 -1
  187. package/dist/tempo/Store.d.ts +62 -0
  188. package/dist/tempo/Store.d.ts.map +1 -0
  189. package/dist/tempo/Store.js +107 -0
  190. package/dist/tempo/Store.js.map +1 -0
  191. package/dist/tempo/Transport.d.ts +48 -2
  192. package/dist/tempo/Transport.d.ts.map +1 -1
  193. package/dist/tempo/Transport.js +116 -34
  194. package/dist/tempo/Transport.js.map +1 -1
  195. package/dist/tempo/Zone.d.ts +51 -0
  196. package/dist/tempo/Zone.d.ts.map +1 -0
  197. package/dist/tempo/Zone.js +40 -0
  198. package/dist/tempo/Zone.js.map +1 -0
  199. package/dist/tempo/actions/accessKey/authorizeSync.d.ts.map +1 -1
  200. package/dist/tempo/actions/accessKey/authorizeSync.js +2 -0
  201. package/dist/tempo/actions/accessKey/authorizeSync.js.map +1 -1
  202. package/dist/tempo/actions/accessKey/burnWitnessSync.d.ts.map +1 -1
  203. package/dist/tempo/actions/accessKey/burnWitnessSync.js +2 -0
  204. package/dist/tempo/actions/accessKey/burnWitnessSync.js.map +1 -1
  205. package/dist/tempo/actions/accessKey/index.d.ts +1 -0
  206. package/dist/tempo/actions/accessKey/index.d.ts.map +1 -1
  207. package/dist/tempo/actions/accessKey/index.js +1 -0
  208. package/dist/tempo/actions/accessKey/index.js.map +1 -1
  209. package/dist/tempo/actions/accessKey/prepareAuthorization.d.ts +76 -0
  210. package/dist/tempo/actions/accessKey/prepareAuthorization.d.ts.map +1 -0
  211. package/dist/tempo/actions/accessKey/prepareAuthorization.js +62 -0
  212. package/dist/tempo/actions/accessKey/prepareAuthorization.js.map +1 -0
  213. package/dist/tempo/actions/accessKey/revokeSync.d.ts.map +1 -1
  214. package/dist/tempo/actions/accessKey/revokeSync.js +2 -0
  215. package/dist/tempo/actions/accessKey/revokeSync.js.map +1 -1
  216. package/dist/tempo/actions/accessKey/signAuthorization.d.ts +43 -38
  217. package/dist/tempo/actions/accessKey/signAuthorization.d.ts.map +1 -1
  218. package/dist/tempo/actions/accessKey/signAuthorization.js +102 -44
  219. package/dist/tempo/actions/accessKey/signAuthorization.js.map +1 -1
  220. package/dist/tempo/actions/accessKey/updateLimitSync.d.ts.map +1 -1
  221. package/dist/tempo/actions/accessKey/updateLimitSync.js +2 -0
  222. package/dist/tempo/actions/accessKey/updateLimitSync.js.map +1 -1
  223. package/dist/tempo/actions/amm/burnSync.d.ts.map +1 -1
  224. package/dist/tempo/actions/amm/burnSync.js +2 -0
  225. package/dist/tempo/actions/amm/burnSync.js.map +1 -1
  226. package/dist/tempo/actions/amm/mintSync.d.ts.map +1 -1
  227. package/dist/tempo/actions/amm/mintSync.js +2 -0
  228. package/dist/tempo/actions/amm/mintSync.js.map +1 -1
  229. package/dist/tempo/actions/amm/rebalanceSwapSync.d.ts.map +1 -1
  230. package/dist/tempo/actions/amm/rebalanceSwapSync.js +2 -0
  231. package/dist/tempo/actions/amm/rebalanceSwapSync.js.map +1 -1
  232. package/dist/tempo/actions/channel/closeSync.d.ts.map +1 -1
  233. package/dist/tempo/actions/channel/closeSync.js +2 -0
  234. package/dist/tempo/actions/channel/closeSync.js.map +1 -1
  235. package/dist/tempo/actions/channel/openSync.d.ts.map +1 -1
  236. package/dist/tempo/actions/channel/openSync.js +2 -0
  237. package/dist/tempo/actions/channel/openSync.js.map +1 -1
  238. package/dist/tempo/actions/channel/requestCloseSync.d.ts.map +1 -1
  239. package/dist/tempo/actions/channel/requestCloseSync.js +2 -0
  240. package/dist/tempo/actions/channel/requestCloseSync.js.map +1 -1
  241. package/dist/tempo/actions/channel/settleSync.d.ts.map +1 -1
  242. package/dist/tempo/actions/channel/settleSync.js +2 -0
  243. package/dist/tempo/actions/channel/settleSync.js.map +1 -1
  244. package/dist/tempo/actions/channel/topUpSync.d.ts.map +1 -1
  245. package/dist/tempo/actions/channel/topUpSync.js +2 -0
  246. package/dist/tempo/actions/channel/topUpSync.js.map +1 -1
  247. package/dist/tempo/actions/channel/withdrawSync.d.ts.map +1 -1
  248. package/dist/tempo/actions/channel/withdrawSync.js +2 -0
  249. package/dist/tempo/actions/channel/withdrawSync.js.map +1 -1
  250. package/dist/tempo/actions/dex/cancelStaleSync.d.ts.map +1 -1
  251. package/dist/tempo/actions/dex/cancelStaleSync.js +2 -0
  252. package/dist/tempo/actions/dex/cancelStaleSync.js.map +1 -1
  253. package/dist/tempo/actions/dex/cancelSync.d.ts.map +1 -1
  254. package/dist/tempo/actions/dex/cancelSync.js +2 -0
  255. package/dist/tempo/actions/dex/cancelSync.js.map +1 -1
  256. package/dist/tempo/actions/dex/createPairSync.d.ts.map +1 -1
  257. package/dist/tempo/actions/dex/createPairSync.js +2 -0
  258. package/dist/tempo/actions/dex/createPairSync.js.map +1 -1
  259. package/dist/tempo/actions/dex/placeFlipSync.d.ts.map +1 -1
  260. package/dist/tempo/actions/dex/placeFlipSync.js +2 -0
  261. package/dist/tempo/actions/dex/placeFlipSync.js.map +1 -1
  262. package/dist/tempo/actions/dex/placeSync.d.ts.map +1 -1
  263. package/dist/tempo/actions/dex/placeSync.js +2 -0
  264. package/dist/tempo/actions/dex/placeSync.js.map +1 -1
  265. package/dist/tempo/actions/dex/withdrawSync.d.ts.map +1 -1
  266. package/dist/tempo/actions/dex/withdrawSync.js +2 -0
  267. package/dist/tempo/actions/dex/withdrawSync.js.map +1 -1
  268. package/dist/tempo/actions/earn/deployment.d.ts +36 -21
  269. package/dist/tempo/actions/earn/deployment.d.ts.map +1 -1
  270. package/dist/tempo/actions/earn/deployment.js +96 -32
  271. package/dist/tempo/actions/earn/deployment.js.map +1 -1
  272. package/dist/tempo/actions/earn.d.ts +21 -21
  273. package/dist/tempo/actions/earn.d.ts.map +1 -1
  274. package/dist/tempo/actions/earn.js +24 -9
  275. package/dist/tempo/actions/earn.js.map +1 -1
  276. package/dist/tempo/actions/fee/setUserTokenSync.d.ts.map +1 -1
  277. package/dist/tempo/actions/fee/setUserTokenSync.js +2 -0
  278. package/dist/tempo/actions/fee/setUserTokenSync.js.map +1 -1
  279. package/dist/tempo/actions/fee/setValidatorTokenSync.d.ts.map +1 -1
  280. package/dist/tempo/actions/fee/setValidatorTokenSync.js +2 -0
  281. package/dist/tempo/actions/fee/setValidatorTokenSync.js.map +1 -1
  282. package/dist/tempo/actions/index.d.ts +3 -0
  283. package/dist/tempo/actions/index.d.ts.map +1 -1
  284. package/dist/tempo/actions/index.js +3 -0
  285. package/dist/tempo/actions/index.js.map +1 -1
  286. package/dist/tempo/actions/multisig/getConfig.d.ts +34 -0
  287. package/dist/tempo/actions/multisig/getConfig.d.ts.map +1 -0
  288. package/dist/tempo/actions/multisig/getConfig.js +27 -0
  289. package/dist/tempo/actions/multisig/getConfig.js.map +1 -0
  290. package/dist/tempo/actions/multisig/getConfigCommitment.d.ts +72 -0
  291. package/dist/tempo/actions/multisig/getConfigCommitment.d.ts.map +1 -0
  292. package/dist/tempo/actions/multisig/getConfigCommitment.js +55 -0
  293. package/dist/tempo/actions/multisig/getConfigCommitment.js.map +1 -0
  294. package/dist/tempo/actions/multisig/getOperation.d.ts +23 -0
  295. package/dist/tempo/actions/multisig/getOperation.d.ts.map +1 -0
  296. package/dist/tempo/actions/multisig/getOperation.js +18 -0
  297. package/dist/tempo/actions/multisig/getOperation.js.map +1 -0
  298. package/dist/tempo/actions/multisig/index.d.ts +6 -0
  299. package/dist/tempo/actions/multisig/index.d.ts.map +1 -0
  300. package/dist/tempo/actions/multisig/index.js +6 -0
  301. package/dist/tempo/actions/multisig/index.js.map +1 -0
  302. package/dist/tempo/actions/multisig/updateConfig.d.ts +193 -0
  303. package/dist/tempo/actions/multisig/updateConfig.d.ts.map +1 -0
  304. package/dist/tempo/actions/multisig/updateConfig.js +170 -0
  305. package/dist/tempo/actions/multisig/updateConfig.js.map +1 -0
  306. package/dist/tempo/actions/multisig/updateConfigSync.d.ts +50 -0
  307. package/dist/tempo/actions/multisig/updateConfigSync.d.ts.map +1 -0
  308. package/dist/tempo/actions/multisig/updateConfigSync.js +55 -0
  309. package/dist/tempo/actions/multisig/updateConfigSync.js.map +1 -0
  310. package/dist/tempo/actions/policy/createSync.d.ts.map +1 -1
  311. package/dist/tempo/actions/policy/createSync.js +2 -0
  312. package/dist/tempo/actions/policy/createSync.js.map +1 -1
  313. package/dist/tempo/actions/policy/modifyBlacklistSync.d.ts.map +1 -1
  314. package/dist/tempo/actions/policy/modifyBlacklistSync.js +2 -0
  315. package/dist/tempo/actions/policy/modifyBlacklistSync.js.map +1 -1
  316. package/dist/tempo/actions/policy/modifyWhitelistSync.d.ts.map +1 -1
  317. package/dist/tempo/actions/policy/modifyWhitelistSync.js +2 -0
  318. package/dist/tempo/actions/policy/modifyWhitelistSync.js.map +1 -1
  319. package/dist/tempo/actions/policy/setAdminSync.d.ts.map +1 -1
  320. package/dist/tempo/actions/policy/setAdminSync.js +2 -0
  321. package/dist/tempo/actions/policy/setAdminSync.js.map +1 -1
  322. package/dist/tempo/actions/propAmm.d.ts +1025 -0
  323. package/dist/tempo/actions/propAmm.d.ts.map +1 -0
  324. package/dist/tempo/actions/propAmm.js +541 -0
  325. package/dist/tempo/actions/propAmm.js.map +1 -0
  326. package/dist/tempo/actions/receivePolicy/burnSync.d.ts.map +1 -1
  327. package/dist/tempo/actions/receivePolicy/burnSync.js +2 -0
  328. package/dist/tempo/actions/receivePolicy/burnSync.js.map +1 -1
  329. package/dist/tempo/actions/receivePolicy/claimSync.d.ts.map +1 -1
  330. package/dist/tempo/actions/receivePolicy/claimSync.js +2 -0
  331. package/dist/tempo/actions/receivePolicy/claimSync.js.map +1 -1
  332. package/dist/tempo/actions/receivePolicy/setSync.d.ts.map +1 -1
  333. package/dist/tempo/actions/receivePolicy/setSync.js +2 -0
  334. package/dist/tempo/actions/receivePolicy/setSync.js.map +1 -1
  335. package/dist/tempo/actions/token/approveSync.d.ts.map +1 -1
  336. package/dist/tempo/actions/token/approveSync.js +2 -0
  337. package/dist/tempo/actions/token/approveSync.js.map +1 -1
  338. package/dist/tempo/actions/token/burn.d.ts +38 -9
  339. package/dist/tempo/actions/token/burn.d.ts.map +1 -1
  340. package/dist/tempo/actions/token/burn.js +12 -5
  341. package/dist/tempo/actions/token/burn.js.map +1 -1
  342. package/dist/tempo/actions/token/burnBlockedSync.d.ts.map +1 -1
  343. package/dist/tempo/actions/token/burnBlockedSync.js +2 -0
  344. package/dist/tempo/actions/token/burnBlockedSync.js.map +1 -1
  345. package/dist/tempo/actions/token/burnSync.d.ts +2 -0
  346. package/dist/tempo/actions/token/burnSync.d.ts.map +1 -1
  347. package/dist/tempo/actions/token/burnSync.js +2 -0
  348. package/dist/tempo/actions/token/burnSync.js.map +1 -1
  349. package/dist/tempo/actions/token/changeTransferPolicySync.d.ts.map +1 -1
  350. package/dist/tempo/actions/token/changeTransferPolicySync.js +2 -0
  351. package/dist/tempo/actions/token/changeTransferPolicySync.js.map +1 -1
  352. package/dist/tempo/actions/token/createSync.d.ts.map +1 -1
  353. package/dist/tempo/actions/token/createSync.js +2 -0
  354. package/dist/tempo/actions/token/createSync.js.map +1 -1
  355. package/dist/tempo/actions/token/grantRolesSync.d.ts.map +1 -1
  356. package/dist/tempo/actions/token/grantRolesSync.js +2 -0
  357. package/dist/tempo/actions/token/grantRolesSync.js.map +1 -1
  358. package/dist/tempo/actions/token/mintSync.d.ts.map +1 -1
  359. package/dist/tempo/actions/token/mintSync.js +2 -0
  360. package/dist/tempo/actions/token/mintSync.js.map +1 -1
  361. package/dist/tempo/actions/token/pauseSync.d.ts.map +1 -1
  362. package/dist/tempo/actions/token/pauseSync.js +2 -0
  363. package/dist/tempo/actions/token/pauseSync.js.map +1 -1
  364. package/dist/tempo/actions/token/prepareUpdateQuoteTokenSync.d.ts.map +1 -1
  365. package/dist/tempo/actions/token/prepareUpdateQuoteTokenSync.js +2 -0
  366. package/dist/tempo/actions/token/prepareUpdateQuoteTokenSync.js.map +1 -1
  367. package/dist/tempo/actions/token/renounceRolesSync.d.ts.map +1 -1
  368. package/dist/tempo/actions/token/renounceRolesSync.js +2 -0
  369. package/dist/tempo/actions/token/renounceRolesSync.js.map +1 -1
  370. package/dist/tempo/actions/token/revokeRolesSync.d.ts.map +1 -1
  371. package/dist/tempo/actions/token/revokeRolesSync.js +2 -0
  372. package/dist/tempo/actions/token/revokeRolesSync.js.map +1 -1
  373. package/dist/tempo/actions/token/setRoleAdminSync.d.ts.map +1 -1
  374. package/dist/tempo/actions/token/setRoleAdminSync.js +2 -0
  375. package/dist/tempo/actions/token/setRoleAdminSync.js.map +1 -1
  376. package/dist/tempo/actions/token/setSupplyCapSync.d.ts.map +1 -1
  377. package/dist/tempo/actions/token/setSupplyCapSync.js +2 -0
  378. package/dist/tempo/actions/token/setSupplyCapSync.js.map +1 -1
  379. package/dist/tempo/actions/token/transferSync.d.ts.map +1 -1
  380. package/dist/tempo/actions/token/transferSync.js +2 -0
  381. package/dist/tempo/actions/token/transferSync.js.map +1 -1
  382. package/dist/tempo/actions/token/unpauseSync.d.ts.map +1 -1
  383. package/dist/tempo/actions/token/unpauseSync.js +2 -0
  384. package/dist/tempo/actions/token/unpauseSync.js.map +1 -1
  385. package/dist/tempo/actions/token/updateQuoteTokenSync.d.ts.map +1 -1
  386. package/dist/tempo/actions/token/updateQuoteTokenSync.js +2 -0
  387. package/dist/tempo/actions/token/updateQuoteTokenSync.js.map +1 -1
  388. package/dist/tempo/actions/virtualAddress/registerMasterSync.d.ts.map +1 -1
  389. package/dist/tempo/actions/virtualAddress/registerMasterSync.js +2 -0
  390. package/dist/tempo/actions/virtualAddress/registerMasterSync.js.map +1 -1
  391. package/dist/tempo/actions/zone/deposit.d.ts +56 -13
  392. package/dist/tempo/actions/zone/deposit.d.ts.map +1 -1
  393. package/dist/tempo/actions/zone/deposit.js +8 -10
  394. package/dist/tempo/actions/zone/deposit.js.map +1 -1
  395. package/dist/tempo/actions/zone/depositSync.d.ts.map +1 -1
  396. package/dist/tempo/actions/zone/depositSync.js +2 -0
  397. package/dist/tempo/actions/zone/depositSync.js.map +1 -1
  398. package/dist/tempo/actions/zone/encryptedDeposit.d.ts +15 -15
  399. package/dist/tempo/actions/zone/encryptedDeposit.d.ts.map +1 -1
  400. package/dist/tempo/actions/zone/encryptedDeposit.js +12 -12
  401. package/dist/tempo/actions/zone/encryptedDeposit.js.map +1 -1
  402. package/dist/tempo/actions/zone/getEncryptionKey.d.ts +3 -4
  403. package/dist/tempo/actions/zone/getEncryptionKey.d.ts.map +1 -1
  404. package/dist/tempo/actions/zone/getEncryptionKey.js +18 -7
  405. package/dist/tempo/actions/zone/getEncryptionKey.js.map +1 -1
  406. package/dist/tempo/actions/zone/getPortalInfo.d.ts +61 -0
  407. package/dist/tempo/actions/zone/getPortalInfo.d.ts.map +1 -0
  408. package/dist/tempo/actions/zone/getPortalInfo.js +63 -0
  409. package/dist/tempo/actions/zone/getPortalInfo.js.map +1 -0
  410. package/dist/tempo/actions/zone/getWithdrawalFee.d.ts.map +1 -1
  411. package/dist/tempo/actions/zone/getWithdrawalFee.js +1 -1
  412. package/dist/tempo/actions/zone/getWithdrawalFee.js.map +1 -1
  413. package/dist/tempo/actions/zone/index.d.ts +1 -0
  414. package/dist/tempo/actions/zone/index.d.ts.map +1 -1
  415. package/dist/tempo/actions/zone/index.js +1 -0
  416. package/dist/tempo/actions/zone/index.js.map +1 -1
  417. package/dist/tempo/actions/zone/requestVerifiableWithdrawal.d.ts +8 -8
  418. package/dist/tempo/actions/zone/requestVerifiableWithdrawal.d.ts.map +1 -1
  419. package/dist/tempo/actions/zone/requestVerifiableWithdrawal.js +1 -1
  420. package/dist/tempo/actions/zone/requestVerifiableWithdrawal.js.map +1 -1
  421. package/dist/tempo/actions/zone/requestWithdrawal.d.ts +8 -8
  422. package/dist/tempo/actions/zone/requestWithdrawal.d.ts.map +1 -1
  423. package/dist/tempo/actions/zone/requestWithdrawal.js +1 -1
  424. package/dist/tempo/actions/zone/requestWithdrawal.js.map +1 -1
  425. package/dist/tempo/actions/zone/requestWithdrawalSync.d.ts.map +1 -1
  426. package/dist/tempo/actions/zone/requestWithdrawalSync.js +2 -0
  427. package/dist/tempo/actions/zone/requestWithdrawalSync.js.map +1 -1
  428. package/dist/tempo/actions/zone/signAuthorizationToken.d.ts +3 -3
  429. package/dist/tempo/actions/zone/signAuthorizationToken.d.ts.map +1 -1
  430. package/dist/tempo/actions/zone/signAuthorizationToken.js +5 -5
  431. package/dist/tempo/actions/zone/signAuthorizationToken.js.map +1 -1
  432. package/dist/tempo/actions/zone/types.d.ts +1 -1
  433. package/dist/tempo/actions/zone/types.d.ts.map +1 -1
  434. package/dist/tempo/chainConfig.d.ts +33 -17
  435. package/dist/tempo/chainConfig.d.ts.map +1 -1
  436. package/dist/tempo/chainConfig.js +188 -72
  437. package/dist/tempo/chainConfig.js.map +1 -1
  438. package/dist/tempo/index.d.ts +11 -5
  439. package/dist/tempo/index.d.ts.map +1 -1
  440. package/dist/tempo/index.js +9 -3
  441. package/dist/tempo/index.js.map +1 -1
  442. package/dist/tempo/internal/relay/cache.d.ts +9 -0
  443. package/dist/tempo/internal/relay/cache.d.ts.map +1 -0
  444. package/dist/tempo/internal/relay/cache.js +72 -0
  445. package/dist/tempo/internal/relay/cache.js.map +1 -0
  446. package/dist/tempo/internal/relay/deadline.d.ts +4 -0
  447. package/dist/tempo/internal/relay/deadline.d.ts.map +1 -0
  448. package/dist/tempo/internal/relay/deadline.js +34 -0
  449. package/dist/tempo/internal/relay/deadline.js.map +1 -0
  450. package/dist/tempo/internal/relay/error.d.ts +47 -0
  451. package/dist/tempo/internal/relay/error.d.ts.map +1 -0
  452. package/dist/tempo/internal/relay/error.js +101 -0
  453. package/dist/tempo/internal/relay/error.js.map +1 -0
  454. package/dist/tempo/internal/relay/feePayer.d.ts +70 -0
  455. package/dist/tempo/internal/relay/feePayer.d.ts.map +1 -0
  456. package/dist/tempo/internal/relay/feePayer.js +442 -0
  457. package/dist/tempo/internal/relay/feePayer.js.map +1 -0
  458. package/dist/tempo/internal/relay/feeToken.d.ts +38 -0
  459. package/dist/tempo/internal/relay/feeToken.d.ts.map +1 -0
  460. package/dist/tempo/internal/relay/feeToken.js +143 -0
  461. package/dist/tempo/internal/relay/feeToken.js.map +1 -0
  462. package/dist/tempo/internal/relay/multisig.d.ts +4 -0
  463. package/dist/tempo/internal/relay/multisig.d.ts.map +1 -0
  464. package/dist/tempo/internal/relay/multisig.js +1039 -0
  465. package/dist/tempo/internal/relay/multisig.js.map +1 -0
  466. package/dist/tempo/internal/relay/plugin.d.ts +5 -0
  467. package/dist/tempo/internal/relay/plugin.d.ts.map +1 -0
  468. package/dist/tempo/internal/relay/plugin.js +10 -0
  469. package/dist/tempo/internal/relay/plugin.js.map +1 -0
  470. package/dist/tempo/internal/relay/preflight.d.ts +17 -0
  471. package/dist/tempo/internal/relay/preflight.d.ts.map +1 -0
  472. package/dist/tempo/internal/relay/preflight.js +53 -0
  473. package/dist/tempo/internal/relay/preflight.js.map +1 -0
  474. package/dist/tempo/internal/relay/request.d.ts +16 -0
  475. package/dist/tempo/internal/relay/request.d.ts.map +1 -0
  476. package/dist/tempo/internal/relay/request.js +327 -0
  477. package/dist/tempo/internal/relay/request.js.map +1 -0
  478. package/dist/tempo/internal/relay/simulate.d.ts +62 -0
  479. package/dist/tempo/internal/relay/simulate.d.ts.map +1 -0
  480. package/dist/tempo/internal/relay/simulate.js +284 -0
  481. package/dist/tempo/internal/relay/simulate.js.map +1 -0
  482. package/dist/tempo/internal/relay/utils.d.ts +346 -0
  483. package/dist/tempo/internal/relay/utils.d.ts.map +1 -0
  484. package/dist/tempo/internal/relay/utils.js +185 -0
  485. package/dist/tempo/internal/relay/utils.js.map +1 -0
  486. package/dist/tempo/internal/relay/virtualAddress.d.ts +9 -0
  487. package/dist/tempo/internal/relay/virtualAddress.d.ts.map +1 -0
  488. package/dist/tempo/internal/relay/virtualAddress.js +73 -0
  489. package/dist/tempo/internal/relay/virtualAddress.js.map +1 -0
  490. package/dist/tempo/internal/relay.d.ts +4 -0
  491. package/dist/tempo/internal/relay.d.ts.map +1 -0
  492. package/dist/tempo/internal/relay.js +132 -0
  493. package/dist/tempo/internal/relay.js.map +1 -0
  494. package/dist/tempo/internal/types.d.ts +2 -2
  495. package/dist/tempo/internal/types.d.ts.map +1 -1
  496. package/dist/tempo/internal/utils.d.ts +1 -0
  497. package/dist/tempo/internal/utils.d.ts.map +1 -1
  498. package/dist/tempo/internal/utils.js +2 -1
  499. package/dist/tempo/internal/utils.js.map +1 -1
  500. package/dist/tempo/multisig/Config.d.ts +43 -0
  501. package/dist/tempo/multisig/Config.d.ts.map +1 -0
  502. package/dist/tempo/multisig/Config.js +92 -0
  503. package/dist/tempo/multisig/Config.js.map +1 -0
  504. package/dist/tempo/multisig/Operation.d.ts +34 -0
  505. package/dist/tempo/multisig/Operation.d.ts.map +1 -0
  506. package/dist/tempo/multisig/Operation.js +179 -0
  507. package/dist/tempo/multisig/Operation.js.map +1 -0
  508. package/dist/tempo/multisig/Signature.d.ts +4 -0
  509. package/dist/tempo/multisig/Signature.d.ts.map +1 -0
  510. package/dist/tempo/multisig/Signature.js +9 -0
  511. package/dist/tempo/multisig/Signature.js.map +1 -0
  512. package/dist/tempo/zones/Abis.d.ts +2 -2
  513. package/dist/tempo/zones/Abis.d.ts.map +1 -1
  514. package/dist/tempo/zones/Abis.js +2 -2
  515. package/dist/tempo/zones/Abis.js.map +1 -1
  516. package/dist/tempo/zones/transport.d.ts +1 -33
  517. package/dist/tempo/zones/transport.d.ts.map +1 -1
  518. package/dist/tempo/zones/transport.js +1 -49
  519. package/dist/tempo/zones/transport.js.map +1 -1
  520. package/dist/tokens/definitions/cirbtc.d.ts +1 -0
  521. package/dist/tokens/definitions/cirbtc.d.ts.map +1 -1
  522. package/dist/tokens/definitions/cirbtc.js +1 -0
  523. package/dist/tokens/definitions/cirbtc.js.map +1 -1
  524. package/dist/tokens/definitions/eurc.d.ts +2 -0
  525. package/dist/tokens/definitions/eurc.d.ts.map +1 -1
  526. package/dist/tokens/definitions/eurc.js +2 -0
  527. package/dist/tokens/definitions/eurc.js.map +1 -1
  528. package/dist/tokens/definitions/ousd.d.ts +26 -0
  529. package/dist/tokens/definitions/ousd.d.ts.map +1 -0
  530. package/dist/tokens/definitions/ousd.js +26 -0
  531. package/dist/tokens/definitions/ousd.js.map +1 -0
  532. package/dist/tokens/definitions/usdc.d.ts +2 -0
  533. package/dist/tokens/definitions/usdc.d.ts.map +1 -1
  534. package/dist/tokens/definitions/usdc.js +2 -0
  535. package/dist/tokens/definitions/usdc.js.map +1 -1
  536. package/dist/tokens/index.d.ts +2 -0
  537. package/dist/tokens/index.d.ts.map +1 -1
  538. package/dist/tokens/index.js +2 -0
  539. package/dist/tokens/index.js.map +1 -1
  540. package/dist/tokens/sets.d.ts +40 -0
  541. package/dist/tokens/sets.d.ts.map +1 -1
  542. package/dist/tokens/sets.js +4 -1
  543. package/dist/tokens/sets.js.map +1 -1
  544. package/dist/utils/Siwe.d.ts +7 -0
  545. package/dist/utils/Siwe.d.ts.map +1 -1
  546. package/dist/utils/Siwe.js +28 -0
  547. package/dist/utils/Siwe.js.map +1 -1
  548. package/dist/utils/TxEnvelope.d.ts.map +1 -1
  549. package/dist/utils/TxEnvelope.js +2 -1
  550. package/dist/utils/TxEnvelope.js.map +1 -1
  551. package/dist/version.d.ts +1 -1
  552. package/dist/version.js +1 -1
  553. package/package.json +2 -2
  554. package/src/chains/definitions/arc.ts +19 -1
  555. package/src/chains/definitions/berachainBepolia.ts +1 -1
  556. package/src/chains/definitions/blockdag.ts +18 -0
  557. package/src/chains/definitions/candyChain.ts +26 -0
  558. package/src/chains/definitions/creditCoin3Devnet.ts +6 -0
  559. package/src/chains/definitions/creditCoin3Mainnet.ts +4 -0
  560. package/src/chains/definitions/creditCoin3Testnet.ts +4 -0
  561. package/src/chains/definitions/crymad.ts +23 -0
  562. package/src/chains/definitions/crymadL2.ts +24 -0
  563. package/src/chains/definitions/eCanna.ts +18 -0
  564. package/src/chains/definitions/eCannaTestnet.ts +19 -0
  565. package/src/chains/definitions/hausTestnet.ts +18 -0
  566. package/src/chains/definitions/hyveChain.ts +22 -0
  567. package/src/chains/definitions/kortana.ts +16 -0
  568. package/src/chains/definitions/morphTachyon.ts +16 -0
  569. package/src/chains/definitions/morphTachyonTestnet.ts +17 -0
  570. package/src/chains/definitions/rabbitChainTestnet.ts +19 -0
  571. package/src/chains/definitions/robinhood.ts +6 -2
  572. package/src/chains/definitions/tempo.ts +10 -0
  573. package/src/chains/definitions/tempoModerato.ts +10 -0
  574. package/src/chains/definitions/whitechainSepolia.ts +28 -3
  575. package/src/chains/definitions/xgrTestnet.ts +19 -0
  576. package/src/chains/definitions/ynxTestnet.ts +17 -0
  577. package/src/chains/definitions/zagros.ts +26 -0
  578. package/src/chains/index.ts +17 -0
  579. package/src/core/actions/address/getStorageValues.ts +55 -0
  580. package/src/core/actions/address/index.ts +1 -0
  581. package/src/core/actions/block/simulate.ts +6 -0
  582. package/src/core/actions/multicall.ts +8 -1
  583. package/src/core/actions/siwe/verify.ts +3 -1
  584. package/src/core/actions/transaction/Errors.ts +1 -0
  585. package/src/core/actions/transaction/fill.ts +83 -41
  586. package/src/core/actions/transaction/prepare.ts +6 -1
  587. package/src/core/actions/transaction/sign.ts +4 -1
  588. package/src/core/actions/wallet/sendCalls.ts +1 -0
  589. package/src/core/internal/transport.ts +1 -1
  590. package/src/erc4337/actions/userOperation/get.ts +3 -1
  591. package/src/erc4337/actions/userOperation/waitForReceipt.ts +1 -1
  592. package/src/internal/inference.ts +24 -0
  593. package/src/node/transports/ipc.ts +17 -2
  594. package/src/op-stack/actions/l1/getGame.ts +1 -1
  595. package/src/op-stack/actions/l1/getGames.ts +1 -1
  596. package/src/op-stack/actions/l1/getTimeToNextGame.ts +1 -1
  597. package/src/op-stack/actions/l1/getTimeToNextL2Output.ts +1 -1
  598. package/src/tempo/Abis.ts +5619 -1513
  599. package/src/tempo/Account.ts +387 -82
  600. package/src/tempo/Addresses.ts +46 -17
  601. package/src/tempo/Capabilities.ts +7 -15
  602. package/src/tempo/Client.ts +1 -1
  603. package/src/tempo/Decorator.ts +304 -22
  604. package/src/tempo/ExecutionError.ts +428 -0
  605. package/src/tempo/Relay.ts +430 -0
  606. package/src/tempo/Selectors.ts +248 -78
  607. package/src/tempo/Store.ts +170 -0
  608. package/src/tempo/Transport.ts +202 -5
  609. package/src/tempo/Zone.ts +72 -0
  610. package/src/tempo/actions/accessKey/authorizeSync.ts +4 -0
  611. package/src/tempo/actions/accessKey/burnWitnessSync.ts +4 -0
  612. package/src/tempo/actions/accessKey/index.ts +2 -0
  613. package/src/tempo/actions/accessKey/prepareAuthorization.ts +132 -0
  614. package/src/tempo/actions/accessKey/revokeSync.ts +4 -0
  615. package/src/tempo/actions/accessKey/signAuthorization.ts +222 -53
  616. package/src/tempo/actions/accessKey/updateLimitSync.ts +4 -0
  617. package/src/tempo/actions/amm/burnSync.ts +4 -0
  618. package/src/tempo/actions/amm/mintSync.ts +4 -0
  619. package/src/tempo/actions/amm/rebalanceSwapSync.ts +4 -0
  620. package/src/tempo/actions/channel/closeSync.ts +4 -0
  621. package/src/tempo/actions/channel/openSync.ts +4 -0
  622. package/src/tempo/actions/channel/requestCloseSync.ts +4 -0
  623. package/src/tempo/actions/channel/settleSync.ts +4 -0
  624. package/src/tempo/actions/channel/topUpSync.ts +4 -0
  625. package/src/tempo/actions/channel/withdrawSync.ts +4 -0
  626. package/src/tempo/actions/dex/cancelStaleSync.ts +4 -0
  627. package/src/tempo/actions/dex/cancelSync.ts +4 -0
  628. package/src/tempo/actions/dex/createPairSync.ts +4 -0
  629. package/src/tempo/actions/dex/placeFlipSync.ts +4 -0
  630. package/src/tempo/actions/dex/placeSync.ts +4 -0
  631. package/src/tempo/actions/dex/withdrawSync.ts +4 -0
  632. package/src/tempo/actions/earn/deployment.ts +108 -42
  633. package/src/tempo/actions/earn.ts +35 -15
  634. package/src/tempo/actions/fee/setUserTokenSync.ts +4 -0
  635. package/src/tempo/actions/fee/setValidatorTokenSync.ts +4 -0
  636. package/src/tempo/actions/index.ts +4 -0
  637. package/src/tempo/actions/multisig/getConfig.ts +46 -0
  638. package/src/tempo/actions/multisig/getConfigCommitment.ts +79 -0
  639. package/src/tempo/actions/multisig/getOperation.ts +37 -0
  640. package/src/tempo/actions/multisig/index.ts +5 -0
  641. package/src/tempo/actions/multisig/updateConfig.ts +210 -0
  642. package/src/tempo/actions/multisig/updateConfigSync.ts +80 -0
  643. package/src/tempo/actions/policy/createSync.ts +4 -0
  644. package/src/tempo/actions/policy/modifyBlacklistSync.ts +4 -0
  645. package/src/tempo/actions/policy/modifyWhitelistSync.ts +4 -0
  646. package/src/tempo/actions/policy/setAdminSync.ts +4 -0
  647. package/src/tempo/actions/propAmm.ts +985 -0
  648. package/src/tempo/actions/receivePolicy/burnSync.ts +4 -0
  649. package/src/tempo/actions/receivePolicy/claimSync.ts +4 -0
  650. package/src/tempo/actions/receivePolicy/setSync.ts +5 -1
  651. package/src/tempo/actions/token/approveSync.ts +5 -1
  652. package/src/tempo/actions/token/burn.ts +21 -9
  653. package/src/tempo/actions/token/burnBlockedSync.ts +5 -1
  654. package/src/tempo/actions/token/burnSync.ts +7 -1
  655. package/src/tempo/actions/token/changeTransferPolicySync.ts +4 -0
  656. package/src/tempo/actions/token/createSync.ts +4 -0
  657. package/src/tempo/actions/token/grantRolesSync.ts +4 -0
  658. package/src/tempo/actions/token/mintSync.ts +5 -1
  659. package/src/tempo/actions/token/pauseSync.ts +4 -0
  660. package/src/tempo/actions/token/prepareUpdateQuoteTokenSync.ts +4 -0
  661. package/src/tempo/actions/token/renounceRolesSync.ts +4 -0
  662. package/src/tempo/actions/token/revokeRolesSync.ts +4 -0
  663. package/src/tempo/actions/token/setRoleAdminSync.ts +4 -0
  664. package/src/tempo/actions/token/setSupplyCapSync.ts +4 -0
  665. package/src/tempo/actions/token/transferSync.ts +5 -1
  666. package/src/tempo/actions/token/unpauseSync.ts +4 -0
  667. package/src/tempo/actions/token/updateQuoteTokenSync.ts +4 -0
  668. package/src/tempo/actions/virtualAddress/registerMasterSync.ts +4 -0
  669. package/src/tempo/actions/zone/deposit.ts +13 -24
  670. package/src/tempo/actions/zone/depositSync.ts +4 -0
  671. package/src/tempo/actions/zone/encryptedDeposit.ts +18 -26
  672. package/src/tempo/actions/zone/getEncryptionKey.ts +20 -8
  673. package/src/tempo/actions/zone/getPortalInfo.ts +126 -0
  674. package/src/tempo/actions/zone/getWithdrawalFee.ts +1 -1
  675. package/src/tempo/actions/zone/index.ts +2 -0
  676. package/src/tempo/actions/zone/requestVerifiableWithdrawal.ts +1 -1
  677. package/src/tempo/actions/zone/requestWithdrawal.ts +1 -1
  678. package/src/tempo/actions/zone/requestWithdrawalSync.ts +4 -0
  679. package/src/tempo/actions/zone/signAuthorizationToken.ts +7 -7
  680. package/src/tempo/actions/zone/types.ts +1 -1
  681. package/src/tempo/chainConfig.ts +287 -86
  682. package/src/tempo/index.ts +15 -4
  683. package/src/tempo/internal/relay/cache.ts +82 -0
  684. package/src/tempo/internal/relay/deadline.ts +45 -0
  685. package/src/tempo/internal/relay/error.ts +129 -0
  686. package/src/tempo/internal/relay/feePayer.ts +693 -0
  687. package/src/tempo/internal/relay/feeToken.ts +190 -0
  688. package/src/tempo/internal/relay/multisig.ts +1357 -0
  689. package/src/tempo/internal/relay/plugin.ts +13 -0
  690. package/src/tempo/internal/relay/preflight.ts +83 -0
  691. package/src/tempo/internal/relay/request.ts +401 -0
  692. package/src/tempo/internal/relay/simulate.ts +394 -0
  693. package/src/tempo/internal/relay/utils.ts +213 -0
  694. package/src/tempo/internal/relay/virtualAddress.ts +95 -0
  695. package/src/tempo/internal/relay.ts +149 -0
  696. package/src/tempo/internal/types.ts +2 -1
  697. package/src/tempo/internal/utils.ts +2 -0
  698. package/src/tempo/multisig/Config.ts +139 -0
  699. package/src/tempo/multisig/Operation.ts +213 -0
  700. package/src/tempo/multisig/Signature.ts +11 -0
  701. package/src/tempo/zones/Abis.ts +2 -2
  702. package/src/tempo/zones/transport.ts +1 -66
  703. package/src/tokens/definitions/cirbtc.ts +1 -0
  704. package/src/tokens/definitions/eurc.ts +2 -0
  705. package/src/tokens/definitions/ousd.ts +26 -0
  706. package/src/tokens/definitions/usdc.ts +2 -0
  707. package/src/tokens/index.ts +2 -0
  708. package/src/tokens/sets.ts +4 -1
  709. package/src/utils/Siwe.ts +36 -0
  710. package/src/utils/TxEnvelope.ts +3 -1
  711. package/src/version.ts +1 -1
  712. package/dist/tempo/Storage.d.ts +0 -43
  713. package/dist/tempo/Storage.d.ts.map +0 -1
  714. package/dist/tempo/Storage.js +0 -96
  715. package/dist/tempo/Storage.js.map +0 -1
  716. package/src/tempo/Storage.ts +0 -119
@@ -0,0 +1,442 @@
1
+ import { Hash, RpcResponse, Signature } from 'ox';
2
+ import { TxEnvelopeTempo } from 'ox/tempo';
3
+ import { create as createClient } from '../../../core/Client.js';
4
+ import { http } from '../../../core/transports/http.js';
5
+ import * as Transaction from 'ox/tempo/TxEnvelopeTempo';
6
+ import * as Request from './request.js';
7
+ import * as Utils from './utils.js';
8
+ export function create(options) {
9
+ // Bind signing permission to the middleware invocation and its validated payload.
10
+ const authorized = new WeakMap();
11
+ const allowedFeePayers = new Set(options.allowedFeePayers?.map((url) => ExternalFeePayerUrl.normalize(url, {
12
+ allowUnsafe: options.internal_allowUnsafeUrls,
13
+ })));
14
+ return {
15
+ async handleRequest(context, next) {
16
+ const { request } = context;
17
+ if (![
18
+ 'eth_fillTransaction',
19
+ 'eth_signRawTransaction',
20
+ 'eth_sendRawTransaction',
21
+ 'eth_sendRawTransactionSync',
22
+ ].includes(request.method))
23
+ return next();
24
+ const { client, getClient, options: requestOptions } = context;
25
+ const chainId = requestOptions.chainId;
26
+ const getTokens = (id) => context.resolveTokens(id);
27
+ const record = (details) => {
28
+ if (details && requestOptions.response)
29
+ requestOptions.response.sponsorship_details = details;
30
+ };
31
+ if (request.method !== 'eth_fillTransaction') {
32
+ if (!options.account) {
33
+ if (request.method === 'eth_signRawTransaction')
34
+ throw new RpcResponse.MethodNotFoundError({
35
+ message: 'eth_signRawTransaction requires a fee payer to be configured on the relay. Add `Relay.feePayer({ account })` to enable transaction sponsorship.',
36
+ });
37
+ return next();
38
+ }
39
+ const serialized = request.params?.[0];
40
+ if (typeof serialized !== 'string' ||
41
+ !requestsRawSponsorship(serialized))
42
+ return next();
43
+ const result = await handleRawTransaction({
44
+ ...options,
45
+ account: options.account,
46
+ getClient,
47
+ getFeeToken: async (id) => (await getTokens(id))[0],
48
+ method: request.method,
49
+ request,
50
+ });
51
+ record(result.sponsorshipDetails);
52
+ return result.result;
53
+ }
54
+ const parameters = request.params[0];
55
+ const { feePayer: _, ...normalized } = Utils.normalizeFillTransactionRequest(parameters);
56
+ const external = typeof parameters.feePayer === 'string'
57
+ ? ExternalFeePayerUrl.normalize(parameters.feePayer, {
58
+ allowUnsafe: options.internal_allowUnsafeUrls ?? false,
59
+ })
60
+ : undefined;
61
+ if (external && !allowedFeePayers.has(external))
62
+ throw new RpcResponse.InvalidParamsError({
63
+ message: 'External fee payer URL is not allowed.',
64
+ });
65
+ const wantsSponsorship = (!!options.account || !!external) && parameters.feePayer !== false;
66
+ if (options.account && !external)
67
+ delete normalized.feePayerSignature;
68
+ const base = { ...normalized, chainId };
69
+ if (!wantsSponsorship)
70
+ return Request.fill(client, base);
71
+ const token = options.feeToken ??
72
+ parameters.feeToken ??
73
+ (!options.validate || external
74
+ ? (await getTokens(chainId))[0]
75
+ : undefined);
76
+ const transaction = {
77
+ ...base,
78
+ feePayer: true,
79
+ ...(token ? { feeToken: token } : {}),
80
+ };
81
+ const prepared = isPreparedTransaction(transaction);
82
+ const fillClient = external
83
+ ? createClient({
84
+ chain: client.chain,
85
+ transport: http(external, {
86
+ fetchOptions: { redirect: 'error' },
87
+ retryCount: 0,
88
+ }),
89
+ })
90
+ : client;
91
+ const result = prepared && !external
92
+ ? { tx: transaction }
93
+ : await Request.fill(fillClient, transaction, external ? { ...requestOptions, retryCount: 0 } : requestOptions);
94
+ const filled = Utils.normalizeTempoTransaction(result.tx);
95
+ // Reserve intrinsic gas for larger signatures before validating and signing the candidate.
96
+ if ((!prepared || parameters.feePayer !== true) &&
97
+ filled.gas &&
98
+ !filled.feePayerSignature)
99
+ filled.gas += 20000n;
100
+ if (token && (!external || filled.feeToken == null))
101
+ Object.assign(filled, { feeToken: token });
102
+ const sponsored = external ||
103
+ !options.validate ||
104
+ (await shouldSponsor({
105
+ sender: parameters.from,
106
+ transaction: filled,
107
+ validate: options.validate,
108
+ }));
109
+ if (!sponsored)
110
+ return Request.fill(client, { ...base, feePayer: false });
111
+ const defer = typeof normalized.multisigSimulation === 'object' &&
112
+ normalized.multisigSimulation !== null;
113
+ const sponsor = sponsored
114
+ ? external
115
+ ? (result.capabilities?.sponsor ?? result.sponsor)
116
+ : options.account
117
+ ? getSponsor({ ...options, account: options.account })
118
+ : undefined
119
+ : undefined;
120
+ if (options.account && !external && !defer) {
121
+ delete filled.signature;
122
+ if (!filled.from)
123
+ filled.from = parameters.from;
124
+ authorized.set(context, TxEnvelopeTempo.getFeePayerSignPayload(TxEnvelopeTempo.from(filled), { sender: filled.from }));
125
+ }
126
+ return {
127
+ ...result,
128
+ ...(sponsor ? { sponsor } : {}),
129
+ tx: Utils.formatTempoTransaction(filled),
130
+ capabilities: {
131
+ ...result.capabilities,
132
+ sponsored: external
133
+ ? (result.capabilities?.sponsored ?? !!sponsor)
134
+ : !!sponsor,
135
+ ...(sponsor ? { sponsor } : {}),
136
+ },
137
+ };
138
+ },
139
+ async signTransaction(result, context) {
140
+ const approved = authorized.get(context);
141
+ authorized.delete(context);
142
+ const parameters = context.request.params[0];
143
+ if (!approved ||
144
+ !options.account ||
145
+ typeof parameters.feePayer === 'string' ||
146
+ parameters.feePayer === false ||
147
+ !result.capabilities?.sponsored ||
148
+ (typeof parameters.multisigSimulation === 'object' &&
149
+ parameters.multisigSimulation !== null))
150
+ return undefined;
151
+ const transaction = Utils.normalizeTempoTransaction(result.tx);
152
+ const payload = TxEnvelopeTempo.getFeePayerSignPayload(TxEnvelopeTempo.from(transaction), { sender: (transaction.from ?? parameters.from) });
153
+ if (payload !== approved)
154
+ throw new RpcResponse.InvalidParamsError({
155
+ message: 'Sponsored transaction changed after validation.',
156
+ });
157
+ const signed = await sign({
158
+ account: options.account,
159
+ onSponsored: options.onSponsored,
160
+ sender: parameters.from,
161
+ transaction,
162
+ signal: context.options.signal,
163
+ });
164
+ if (signed.sponsorshipDetails && context.options.response)
165
+ context.options.response.sponsorship_details = signed.sponsorshipDetails;
166
+ const tx = Utils.formatTempoTransaction(signed.transaction);
167
+ return tx.feePayerSignature;
168
+ },
169
+ };
170
+ }
171
+ /** Refusal messages keyed by named validation reason. */
172
+ const refusalMessages = {
173
+ billing_past_due: 'Billing past due.',
174
+ billing_required: 'Billing required.',
175
+ fee_token_unsupported: 'Fee token unsupported.',
176
+ spend_limit_exceeded: 'Spend limit exceeded.',
177
+ tx_fee_limit_exceeded: 'Transaction fee limit exceeded.',
178
+ };
179
+ /** Returns sponsor metadata for `eth_fillTransaction` responses. */
180
+ // biome-ignore lint/correctness/noUnusedVariables: declaration merge
181
+ function getSponsor(options) {
182
+ const { account, name, url } = options;
183
+ return {
184
+ address: account.address,
185
+ ...(name ? { name } : {}),
186
+ ...(url ? { url } : {}),
187
+ };
188
+ }
189
+ /** Returns whether the fee payer approves a filled transaction. */
190
+ // biome-ignore lint/correctness/noUnusedVariables: declaration merge
191
+ async function shouldSponsor(options) {
192
+ const { sender, transaction, validate } = options;
193
+ if (!validate)
194
+ return true;
195
+ // Named refusal reasons collapse to false: fills fall back to an
196
+ // unsponsored fill instead of surfacing the reason.
197
+ const verdict = await validate({
198
+ ...transaction,
199
+ from: sender,
200
+ });
201
+ return verdict === true;
202
+ }
203
+ /** Returns whether a raw Tempo transaction is explicitly requesting sponsorship. */
204
+ function requestsRawSponsorship(serialized) {
205
+ if (!Utils.isSerializedTempoTransaction(serialized))
206
+ return false;
207
+ const transaction = Transaction.deserialize(serialized);
208
+ return ('feePayerSignature' in transaction && transaction.feePayerSignature === null);
209
+ }
210
+ /** Returns `true` when a fill request already has the fields needed for sponsorship signing. */
211
+ function isPreparedTransaction(value) {
212
+ return (typeof value.from === 'string' &&
213
+ typeof Utils.resolveChainId(value.chainId) === 'number' &&
214
+ typeof value.gas !== 'undefined' &&
215
+ typeof value.nonce !== 'undefined' &&
216
+ (typeof value.maxFeePerGas !== 'undefined' ||
217
+ typeof value.gasPrice !== 'undefined'));
218
+ }
219
+ /** Signs a filled transaction as the fee payer. */
220
+ export async function sign(options) {
221
+ const { account, transaction, sender } = options;
222
+ const from = transaction.from ?? sender;
223
+ const { signature: _, ...withoutSenderSig } = transaction;
224
+ const prepared = { ...withoutSenderSig, from };
225
+ if (!prepared.from)
226
+ throw new RpcResponse.InvalidParamsError({
227
+ message: 'Transaction sender must be provided before fee payer signing.',
228
+ });
229
+ if (!account.sign)
230
+ throw new Error('Fee payer account cannot sign transactions.');
231
+ const chainId = Utils.resolveChainId(transaction.chainId);
232
+ if (chainId === undefined)
233
+ throw new RpcResponse.InvalidParamsError({
234
+ message: 'Transaction chainId must be provided before fee payer signing.',
235
+ });
236
+ const envelope = TxEnvelopeTempo.from(prepared);
237
+ const signPayload = TxEnvelopeTempo.getFeePayerSignPayload(envelope, {
238
+ sender: prepared.from,
239
+ });
240
+ options.signal?.throwIfAborted();
241
+ const feePayerSignature = Signature.from(await account.sign({ hash: signPayload }));
242
+ options.signal?.throwIfAborted();
243
+ // Record the commitment before releasing the signature, since the signed fill can be broadcast through another endpoint.
244
+ const feeToken = transaction.feeToken;
245
+ const sponsorshipDetails = await options.onSponsored?.({
246
+ chainId,
247
+ ...(feeToken ? { feeToken } : {}),
248
+ method: 'eth_fillTransaction',
249
+ sender: prepared.from,
250
+ signPayload,
251
+ transaction: TxEnvelopeTempo.serialize(envelope, { feePayerSignature }),
252
+ });
253
+ return {
254
+ ...(sponsorshipDetails ? { sponsorshipDetails } : {}),
255
+ transaction: { ...prepared, feePayerSignature },
256
+ };
257
+ }
258
+ /** Handles `eth_signRawTransaction` and broadcast methods for sponsored Tempo transactions. */
259
+ // biome-ignore lint/correctness/noUnusedVariables: declaration merge
260
+ async function handleRawTransaction(options) {
261
+ const { account, feeToken: sponsorFeeToken, getClient, method, request, validate, } = options;
262
+ const serialized = request.params?.[0];
263
+ if (!Utils.isSerializedTempoTransaction(serialized))
264
+ throw new RpcResponse.InvalidParamsError({
265
+ message: 'Only Tempo (0x76/0x78) transactions are supported.',
266
+ });
267
+ const transaction = Transaction.deserialize(serialized);
268
+ // Prefer sender recovered from raw envelope; multisig finalize path supplies fallback sender.
269
+ const sender = transaction.from ?? options.sender;
270
+ // Sponsorship only applies after sender has signed original transaction.
271
+ if (!transaction.signature || !sender)
272
+ throw new RpcResponse.InvalidParamsError({
273
+ message: 'Transaction must be signed by the sender before fee payer signing.',
274
+ });
275
+ if (!account.sign)
276
+ throw new Error('Fee payer account cannot sign transactions.');
277
+ const client = getClient(transaction.chainId);
278
+ const feeToken_chain = client.chain?.feeToken;
279
+ const feeToken = transaction.feeToken ??
280
+ sponsorFeeToken ??
281
+ (await options.getFeeToken?.(transaction.chainId)) ??
282
+ feeToken_chain;
283
+ const transaction_sponsored = feeToken
284
+ ? { ...transaction, feeToken }
285
+ : transaction;
286
+ if (validate) {
287
+ const verdict = await validate(transaction_sponsored);
288
+ if (verdict !== true)
289
+ throw new RpcResponse.InvalidParamsError(verdict === false
290
+ ? { message: 'Sponsorship rejected.' }
291
+ : { data: { code: verdict }, message: refusalMessages[verdict] });
292
+ }
293
+ const envelope = TxEnvelopeTempo.from(transaction_sponsored);
294
+ const signPayload = TxEnvelopeTempo.getFeePayerSignPayload(envelope, {
295
+ sender,
296
+ });
297
+ const feePayerSignature = Signature.from(await account.sign({ hash: signPayload }));
298
+ const serializedTransaction = TxEnvelopeTempo.serialize(envelope, {
299
+ feePayerSignature,
300
+ signature: transaction.signature,
301
+ });
302
+ // Awaited before any broadcast so a recording failure refuses sponsorship;
303
+ // no sponsored transaction ever reaches the chain unrecorded.
304
+ const sponsorshipDetails = await options.onSponsored?.({
305
+ chainId: transaction.chainId,
306
+ ...(feeToken ? { feeToken } : {}),
307
+ method,
308
+ sender,
309
+ signPayload,
310
+ transaction: serializedTransaction,
311
+ transactionHash: Hash.keccak256(serializedTransaction),
312
+ });
313
+ // Raw-sign requests stop after fee-payer signature is added; send methods broadcast it.
314
+ const result = method === 'eth_signRawTransaction'
315
+ ? serializedTransaction
316
+ : await client.request({
317
+ method: method,
318
+ params: [
319
+ serializedTransaction,
320
+ ...(request.params?.slice(1) ?? []),
321
+ ],
322
+ });
323
+ return { result, ...(sponsorshipDetails ? { sponsorshipDetails } : {}) };
324
+ }
325
+ export var ExternalFeePayerUrl;
326
+ (function (ExternalFeePayerUrl) {
327
+ /** Normalizes external fee-payer relay URLs before forwarding fill payloads. */
328
+ function normalize(value, options = {}) {
329
+ let url;
330
+ try {
331
+ url = new URL(value);
332
+ }
333
+ catch {
334
+ throw new RpcResponse.InvalidParamsError({
335
+ message: 'Invalid fee payer URL.',
336
+ });
337
+ }
338
+ const allowUnsafe = options.allowUnsafe === true;
339
+ if (url.protocol !== 'http:' && url.protocol !== 'https:')
340
+ throw new RpcResponse.InvalidParamsError({
341
+ message: 'Invalid fee payer URL protocol.',
342
+ });
343
+ if (!allowUnsafe && url.protocol !== 'https:')
344
+ throw new RpcResponse.InvalidParamsError({
345
+ message: 'Invalid fee payer URL protocol.',
346
+ });
347
+ if (!allowUnsafe && isUnsafeHostname(url.hostname))
348
+ throw new RpcResponse.InvalidParamsError({
349
+ message: 'Invalid fee payer URL host.',
350
+ });
351
+ url.username = '';
352
+ url.password = '';
353
+ url.hash = '';
354
+ return url.href;
355
+ }
356
+ ExternalFeePayerUrl.normalize = normalize;
357
+ function isUnsafeHostname(hostname) {
358
+ const host = normalizeHostname(hostname);
359
+ if (host === 'localhost' || host.endsWith('.localhost'))
360
+ return true;
361
+ const ipv4 = parseIpv4(host);
362
+ if (ipv4)
363
+ return isUnsafeIpv4(ipv4);
364
+ if (!host.includes(':'))
365
+ return false;
366
+ const ipv6 = parseIpv6(host);
367
+ if (!ipv6)
368
+ return true;
369
+ return isUnsafeIpv6(ipv6);
370
+ }
371
+ function normalizeHostname(hostname) {
372
+ return hostname
373
+ .toLowerCase()
374
+ .replace(/^\[|\]$/g, '')
375
+ .split('%')[0];
376
+ }
377
+ function parseIpv4(value) {
378
+ const parts = value.split('.');
379
+ if (parts.length !== 4 || parts.some((part) => !/^\d+$/.test(part)))
380
+ return undefined;
381
+ const numbers = parts.map((part) => Number(part));
382
+ if (numbers.some((part) => !Number.isInteger(part) || part < 0 || part > 255))
383
+ return undefined;
384
+ return numbers;
385
+ }
386
+ function isUnsafeIpv4(parts) {
387
+ const [a, b] = parts;
388
+ if (a === 0 || a === 10 || a === 127)
389
+ return true;
390
+ if (a === 100 && b >= 64 && b <= 127)
391
+ return true;
392
+ if (a === 169 && b === 254)
393
+ return true;
394
+ if (a === 172 && b >= 16 && b <= 31)
395
+ return true;
396
+ if (a === 192 && b === 168)
397
+ return true;
398
+ return a >= 224;
399
+ }
400
+ function parseIpv6(value) {
401
+ const halves = value.split('::');
402
+ if (halves.length > 2)
403
+ return undefined;
404
+ const left = halves[0] ? halves[0].split(':') : [];
405
+ const right = halves[1] ? halves[1].split(':') : [];
406
+ const missing = halves.length === 2 ? 8 - left.length - right.length : 0;
407
+ if (missing < 0)
408
+ return undefined;
409
+ const parts = [...left, ...Array(missing).fill('0'), ...right];
410
+ if (parts.length !== 8)
411
+ return undefined;
412
+ const numbers = parts.map((part) => /^[\da-f]{1,4}$/i.test(part) ? Number.parseInt(part, 16) : NaN);
413
+ if (numbers.some((part) => !Number.isInteger(part) || part < 0 || part > 0xffff))
414
+ return undefined;
415
+ return numbers;
416
+ }
417
+ function isUnsafeIpv6(parts) {
418
+ const [a] = parts;
419
+ if (parts.every((part) => part === 0))
420
+ return true;
421
+ if (parts.slice(0, 7).every((part) => part === 0) && parts[7] === 1)
422
+ return true;
423
+ if ((a & 0xfe00) === 0xfc00)
424
+ return true;
425
+ if ((a & 0xffc0) === 0xfe80)
426
+ return true;
427
+ if ((a & 0xffc0) === 0xfec0)
428
+ return true;
429
+ if ((a & 0xff00) === 0xff00)
430
+ return true;
431
+ const ipv4 = ipv4FromIpv6(parts);
432
+ return ipv4 ? isUnsafeIpv4(ipv4) : false;
433
+ }
434
+ function ipv4FromIpv6(parts) {
435
+ const mapped = parts.slice(0, 5).every((part) => part === 0) && parts[5] === 0xffff;
436
+ const compatible = parts.slice(0, 6).every((part) => part === 0);
437
+ if (!mapped && !compatible)
438
+ return undefined;
439
+ return [parts[6] >> 8, parts[6] & 0xff, parts[7] >> 8, parts[7] & 0xff];
440
+ }
441
+ })(ExternalFeePayerUrl || (ExternalFeePayerUrl = {}));
442
+ //# sourceMappingURL=feePayer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feePayer.js","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/feePayer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { Address } from 'abitype';
2
+ import type { Client } from '../../../core/Client.js';
3
+ import type * as Relay from '../../Relay.js';
4
+ import * as Store from './cache.js';
5
+ export declare function create(): Relay.Plugin;
6
+ export declare function getDefaultTokens(chainId: number): Promise<readonly Address[]>;
7
+ /** Resolves a funded fee-token candidate with fee AMM liquidity. @internal */
8
+ export declare function resolveFeeToken(client: Client, options: resolveFeeToken.Options): Promise<{
9
+ feeToken: `0x${string}` | undefined;
10
+ virtualAddresses: Record<`0x${string}`, `0x${string}` | null> | undefined;
11
+ }>;
12
+ export declare namespace resolveFeeToken {
13
+ type Options = {
14
+ minimumBalance?: bigint | undefined;
15
+ exclude?: Address | undefined;
16
+ feeToken?: Address | undefined;
17
+ account?: Address | undefined;
18
+ tokens?: readonly Address[] | undefined;
19
+ targets?: readonly Address[] | undefined;
20
+ };
21
+ }
22
+ export declare function resolveTokenMetadata(client: Client, options: resolveTokenMetadata.Options): Promise<{
23
+ decimals: number;
24
+ symbol: string;
25
+ name: string;
26
+ }>;
27
+ export declare namespace resolveTokenMetadata {
28
+ type Options = {
29
+ token: Address;
30
+ tokenMetadata?: Record<Address, {
31
+ name: string;
32
+ symbol: string;
33
+ currency: string;
34
+ }> | undefined;
35
+ store?: Store.Store | undefined;
36
+ };
37
+ }
38
+ //# sourceMappingURL=feeToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feeToken.d.ts","sourceRoot":"","sources":["../../../../src/tempo/internal/relay/feeToken.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAA;AAGrD,OAAO,KAAK,KAAK,KAAK,MAAM,gBAAgB,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,YAAY,CAAA;AAKnC,wBAAgB,MAAM,IAAI,KAAK,CAAC,MAAM,CA2DrC;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,SAAS,OAAO,EAAE,CAAC,CAK7B;AAED,8EAA8E;AAC9E,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,eAAe,CAAC,OAAO;;;GAkCjC;AAED,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,KAAK,OAAO,GAAG;QACb,cAAc,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACnC,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC7B,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC9B,OAAO,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;QAC7B,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAA;QACvC,OAAO,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAA;KACzC,CAAA;CACF;AAyBD,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,oBAAoB,CAAC,OAAO;;;;GAuBtC;AAED,MAAM,CAAC,OAAO,WAAW,oBAAoB,CAAC;IAC5C,KAAK,OAAO,GAAG;QACb,KAAK,EAAE,OAAO,CAAA;QACd,aAAa,CAAC,EACV,MAAM,CAAC,OAAO,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,QAAQ,EAAE,MAAM,CAAA;SAAE,CAAC,GACnE,SAAS,CAAA;QACb,KAAK,CAAC,EAAE,KAAK,CAAC,KAAK,GAAG,SAAS,CAAA;KAChC,CAAA;CACF"}
@@ -0,0 +1,143 @@
1
+ import { RpcResponse } from 'ox';
2
+ import { tokens as tokenSets } from '../../../tokens/sets.js';
3
+ import * as Actions from '../../actions/index.js';
4
+ import * as Store from './cache.js';
5
+ import * as Preflight from './preflight.js';
6
+ import * as Utils from './utils.js';
7
+ import { extractCalls, getVirtualAddressTargets } from './virtualAddress.js';
8
+ export function create() {
9
+ return {
10
+ async handleRequest(context, next) {
11
+ const { request } = context;
12
+ if (request.method !== 'eth_fillTransaction')
13
+ return next();
14
+ const parameters = request.params[0];
15
+ const transaction = Utils.normalizeFillTransactionRequest(parameters);
16
+ if (transaction.feeToken) {
17
+ context.request = {
18
+ ...request,
19
+ params: [
20
+ Utils.formatFillTransactionRequest(context.client, transaction),
21
+ ],
22
+ };
23
+ return next();
24
+ }
25
+ const tokens = await context.resolveTokens();
26
+ const candidates = [
27
+ ...tokens,
28
+ ...callTargetTokens(transaction).filter((token) => !tokens.some((candidate) => candidate.toLowerCase() === token.toLowerCase())),
29
+ ];
30
+ const resolved = transaction.feePayer
31
+ ? { feeToken: tokens[0], virtualAddresses: undefined }
32
+ : await resolveFeeToken(context.client, {
33
+ account: transaction.from,
34
+ feeToken: transaction.feeToken,
35
+ targets: getVirtualAddressTargets(extractCalls(transaction)),
36
+ tokens: candidates,
37
+ });
38
+ const { feeToken, virtualAddresses } = resolved;
39
+ const selected = { ...transaction, ...(feeToken ? { feeToken } : {}) };
40
+ context.request = {
41
+ ...request,
42
+ params: [Utils.formatFillTransactionRequest(context.client, selected)],
43
+ };
44
+ await next();
45
+ const result = context.result;
46
+ context.result = {
47
+ ...result,
48
+ // Unsigned sponsored estimates can omit the fee token selected by this plugin.
49
+ tx: {
50
+ ...result.tx,
51
+ ...(!result.tx.feeToken && feeToken ? { feeToken } : {}),
52
+ },
53
+ ...(virtualAddresses
54
+ ? { capabilities: { ...result.capabilities, virtualAddresses } }
55
+ : {}),
56
+ };
57
+ },
58
+ };
59
+ }
60
+ export async function getDefaultTokens(chainId) {
61
+ return tokenSets.tempo.flatMap((token) => {
62
+ const address = token.addresses[chainId];
63
+ return address ? [address] : [];
64
+ });
65
+ }
66
+ /** Resolves a funded fee-token candidate with fee AMM liquidity. @internal */
67
+ export async function resolveFeeToken(client, options) {
68
+ const { feeToken, account, exclude, tokens } = options;
69
+ if (feeToken || !account)
70
+ return { feeToken, virtualAddresses: undefined };
71
+ const candidates = [
72
+ ...new Set(tokens?.map((token) => token.toLowerCase())),
73
+ ];
74
+ if (candidates.length > 100)
75
+ throw new RpcResponse.InvalidParamsError({
76
+ message: 'Fee-token candidates exceed the limit of 100 tokens.',
77
+ });
78
+ const { preferredToken, preferredBalance, balances, virtualAddresses } = await Preflight.read(client, {
79
+ account,
80
+ tokens: candidates,
81
+ targets: options.targets,
82
+ });
83
+ const minimumBalance = options.minimumBalance ?? 1n;
84
+ if (preferredToken.toLowerCase() !== exclude?.toLowerCase() &&
85
+ preferredBalance >= minimumBalance)
86
+ return { feeToken: preferredToken, virtualAddresses };
87
+ let best;
88
+ for (const asset of balances) {
89
+ if (asset.balance < minimumBalance ||
90
+ asset.address.toLowerCase() === exclude?.toLowerCase())
91
+ continue;
92
+ if (!best || asset.balance > best.balance)
93
+ best = asset;
94
+ }
95
+ return { feeToken: best?.address, virtualAddresses };
96
+ }
97
+ /** Includes call-target TIP20 tokens as fee candidates, allowing transfers to pay fees with the transferred token. */
98
+ function callTargetTokens(transaction) {
99
+ const calls = transaction.calls;
100
+ if (!calls)
101
+ return [];
102
+ const out = [];
103
+ const seen = new Set();
104
+ for (const c of calls) {
105
+ if (!c.to)
106
+ continue;
107
+ const lower = c.to.toLowerCase();
108
+ if (!lower.startsWith('0x20c0'))
109
+ continue;
110
+ if (seen.has(lower))
111
+ continue;
112
+ seen.add(lower);
113
+ out.push(c.to);
114
+ if (out.length > 100)
115
+ throw new RpcResponse.InvalidParamsError({
116
+ message: 'Fee-token candidates exceed the limit of 100 tokens.',
117
+ });
118
+ }
119
+ return out;
120
+ }
121
+ export async function resolveTokenMetadata(client, options) {
122
+ const { token, tokenMetadata, store } = options;
123
+ const meta = tokenMetadata?.[token] ?? tokenMetadata?.[token.toLowerCase()];
124
+ // Tempo simulation metadata covers TIP-20 tokens, whose decimals are always six.
125
+ if (token.toLowerCase().startsWith('0x20c0') && meta)
126
+ return { decimals: 6, symbol: meta.symbol, name: meta.name };
127
+ // TIP-20 metadata (decimals/symbol/name) is immutable per token, so cache
128
+ // long-term. Skips the multicall RPC on cache hits.
129
+ const fetcher = () => Actions.token.getMetadata(client, { token });
130
+ const fallback = store
131
+ ? await Store.memoize(fetcher, {
132
+ key: `tokenMetadata:${client.chain?.id ?? 0}:${token.toLowerCase()}`,
133
+ store,
134
+ ttl: 24 * 60 * 60 * 1000,
135
+ })
136
+ : await fetcher();
137
+ return {
138
+ decimals: fallback.decimals ?? 6,
139
+ symbol: meta?.symbol || fallback.symbol,
140
+ name: meta?.name || fallback.name,
141
+ };
142
+ }
143
+ //# sourceMappingURL=feeToken.js.map