ox 1.0.0-beta.2 → 1.0.0-beta.20

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 (664) hide show
  1. package/dist/core/Abi.d.ts +6 -2
  2. package/dist/core/Abi.d.ts.map +1 -1
  3. package/dist/core/Abi.js +6 -3
  4. package/dist/core/Abi.js.map +1 -1
  5. package/dist/core/AbiConstructor.d.ts +2 -1
  6. package/dist/core/AbiConstructor.d.ts.map +1 -1
  7. package/dist/core/AbiConstructor.js +2 -2
  8. package/dist/core/AbiConstructor.js.map +1 -1
  9. package/dist/core/AbiError.d.ts +3 -1
  10. package/dist/core/AbiError.d.ts.map +1 -1
  11. package/dist/core/AbiError.js +2 -2
  12. package/dist/core/AbiError.js.map +1 -1
  13. package/dist/core/AbiEvent.d.ts +3 -1
  14. package/dist/core/AbiEvent.d.ts.map +1 -1
  15. package/dist/core/AbiEvent.js +2 -2
  16. package/dist/core/AbiEvent.js.map +1 -1
  17. package/dist/core/AbiFunction.d.ts +3 -1
  18. package/dist/core/AbiFunction.d.ts.map +1 -1
  19. package/dist/core/AbiFunction.js +2 -2
  20. package/dist/core/AbiFunction.js.map +1 -1
  21. package/dist/core/AbiItem.d.ts +6 -3
  22. package/dist/core/AbiItem.d.ts.map +1 -1
  23. package/dist/core/AbiItem.js +9 -7
  24. package/dist/core/AbiItem.js.map +1 -1
  25. package/dist/core/AbiParameter.d.ts +88 -0
  26. package/dist/core/AbiParameter.d.ts.map +1 -0
  27. package/dist/core/AbiParameter.js +82 -0
  28. package/dist/core/AbiParameter.js.map +1 -0
  29. package/dist/core/AbiParameters.d.ts +58 -2
  30. package/dist/core/AbiParameters.d.ts.map +1 -1
  31. package/dist/core/AbiParameters.js +60 -6
  32. package/dist/core/AbiParameters.js.map +1 -1
  33. package/dist/core/AccountProof.d.ts +3 -1
  34. package/dist/core/AccountProof.d.ts.map +1 -1
  35. package/dist/core/AccountProof.js +3 -4
  36. package/dist/core/AccountProof.js.map +1 -1
  37. package/dist/core/Authorization.d.ts +6 -2
  38. package/dist/core/Authorization.d.ts.map +1 -1
  39. package/dist/core/Authorization.js +3 -2
  40. package/dist/core/Authorization.js.map +1 -1
  41. package/dist/core/Block.d.ts +3 -1
  42. package/dist/core/Block.d.ts.map +1 -1
  43. package/dist/core/Block.js +12 -13
  44. package/dist/core/Block.js.map +1 -1
  45. package/dist/core/BlockOverrides.d.ts +5 -1
  46. package/dist/core/BlockOverrides.d.ts.map +1 -1
  47. package/dist/core/BlockOverrides.js +12 -12
  48. package/dist/core/BlockOverrides.js.map +1 -1
  49. package/dist/core/Filter.d.ts +3 -1
  50. package/dist/core/Filter.d.ts.map +1 -1
  51. package/dist/core/Filter.js +4 -4
  52. package/dist/core/Filter.js.map +1 -1
  53. package/dist/core/Log.d.ts +4 -2
  54. package/dist/core/Log.d.ts.map +1 -1
  55. package/dist/core/Log.js +4 -4
  56. package/dist/core/Log.js.map +1 -1
  57. package/dist/core/Rlp.d.ts +27 -5
  58. package/dist/core/Rlp.d.ts.map +1 -1
  59. package/dist/core/Rlp.js +40 -4
  60. package/dist/core/Rlp.js.map +1 -1
  61. package/dist/core/RpcSchema.d.ts +2 -2
  62. package/dist/core/Signature.d.ts +3 -1
  63. package/dist/core/Signature.d.ts.map +1 -1
  64. package/dist/core/Signature.js +2 -1
  65. package/dist/core/Signature.js.map +1 -1
  66. package/dist/core/StateOverrides.d.ts +5 -1
  67. package/dist/core/StateOverrides.d.ts.map +1 -1
  68. package/dist/core/StateOverrides.js +4 -4
  69. package/dist/core/StateOverrides.js.map +1 -1
  70. package/dist/core/Transaction.d.ts +3 -1
  71. package/dist/core/Transaction.d.ts.map +1 -1
  72. package/dist/core/Transaction.js +26 -26
  73. package/dist/core/Transaction.js.map +1 -1
  74. package/dist/core/TransactionReceipt.d.ts +3 -1
  75. package/dist/core/TransactionReceipt.d.ts.map +1 -1
  76. package/dist/core/TransactionReceipt.js +8 -8
  77. package/dist/core/TransactionReceipt.js.map +1 -1
  78. package/dist/core/TransactionRequest.d.ts +3 -1
  79. package/dist/core/TransactionRequest.d.ts.map +1 -1
  80. package/dist/core/TransactionRequest.js +11 -10
  81. package/dist/core/TransactionRequest.js.map +1 -1
  82. package/dist/core/TxEnvelope.d.ts +3 -1
  83. package/dist/core/TxEnvelope.d.ts.map +1 -1
  84. package/dist/core/TxEnvelope.js.map +1 -1
  85. package/dist/core/TxEnvelopeEip1559.d.ts +3 -1
  86. package/dist/core/TxEnvelopeEip1559.d.ts.map +1 -1
  87. package/dist/core/TxEnvelopeEip1559.js +12 -11
  88. package/dist/core/TxEnvelopeEip1559.js.map +1 -1
  89. package/dist/core/TxEnvelopeEip2930.d.ts +3 -1
  90. package/dist/core/TxEnvelopeEip2930.d.ts.map +1 -1
  91. package/dist/core/TxEnvelopeEip2930.js +10 -9
  92. package/dist/core/TxEnvelopeEip2930.js.map +1 -1
  93. package/dist/core/TxEnvelopeEip4844.d.ts +3 -1
  94. package/dist/core/TxEnvelopeEip4844.d.ts.map +1 -1
  95. package/dist/core/TxEnvelopeEip4844.js +16 -13
  96. package/dist/core/TxEnvelopeEip4844.js.map +1 -1
  97. package/dist/core/TxEnvelopeEip7702.d.ts +3 -1
  98. package/dist/core/TxEnvelopeEip7702.d.ts.map +1 -1
  99. package/dist/core/TxEnvelopeEip7702.js +12 -11
  100. package/dist/core/TxEnvelopeEip7702.js.map +1 -1
  101. package/dist/core/TxEnvelopeLegacy.d.ts +7 -1
  102. package/dist/core/TxEnvelopeLegacy.d.ts.map +1 -1
  103. package/dist/core/TxEnvelopeLegacy.js +9 -8
  104. package/dist/core/TxEnvelopeLegacy.js.map +1 -1
  105. package/dist/core/Withdrawal.d.ts +4 -2
  106. package/dist/core/Withdrawal.d.ts.map +1 -1
  107. package/dist/core/Withdrawal.js +4 -4
  108. package/dist/core/Withdrawal.js.map +1 -1
  109. package/dist/core/internal/abiParameters.d.ts.map +1 -1
  110. package/dist/core/internal/abiParameters.js +21 -3
  111. package/dist/core/internal/abiParameters.js.map +1 -1
  112. package/dist/core/internal/human-readable/errors.d.ts +103 -0
  113. package/dist/core/internal/human-readable/errors.d.ts.map +1 -0
  114. package/dist/core/internal/human-readable/errors.js +142 -0
  115. package/dist/core/internal/human-readable/errors.js.map +1 -0
  116. package/dist/core/internal/human-readable/formatAbi.d.ts +19 -0
  117. package/dist/core/internal/human-readable/formatAbi.d.ts.map +1 -0
  118. package/dist/core/internal/human-readable/formatAbi.js +18 -0
  119. package/dist/core/internal/human-readable/formatAbi.js.map +1 -0
  120. package/dist/core/internal/human-readable/formatAbiItem.d.ts +23 -0
  121. package/dist/core/internal/human-readable/formatAbiItem.d.ts.map +1 -0
  122. package/dist/core/internal/human-readable/formatAbiItem.js +25 -0
  123. package/dist/core/internal/human-readable/formatAbiItem.js.map +1 -0
  124. package/dist/core/internal/human-readable/formatAbiParameter.d.ts +41 -0
  125. package/dist/core/internal/human-readable/formatAbiParameter.d.ts.map +1 -0
  126. package/dist/core/internal/human-readable/formatAbiParameter.js +36 -0
  127. package/dist/core/internal/human-readable/formatAbiParameter.js.map +1 -0
  128. package/dist/core/internal/human-readable/formatAbiParameters.d.ts +26 -0
  129. package/dist/core/internal/human-readable/formatAbiParameters.d.ts.map +1 -0
  130. package/dist/core/internal/human-readable/formatAbiParameters.js +19 -0
  131. package/dist/core/internal/human-readable/formatAbiParameters.js.map +1 -0
  132. package/dist/core/internal/human-readable/parseAbi.d.ts +22 -0
  133. package/dist/core/internal/human-readable/parseAbi.d.ts.map +1 -0
  134. package/dist/core/internal/human-readable/parseAbi.js +22 -0
  135. package/dist/core/internal/human-readable/parseAbi.js.map +1 -0
  136. package/dist/core/internal/human-readable/parseAbiItem.d.ts +23 -0
  137. package/dist/core/internal/human-readable/parseAbiItem.d.ts.map +1 -0
  138. package/dist/core/internal/human-readable/parseAbiItem.js +30 -0
  139. package/dist/core/internal/human-readable/parseAbiItem.js.map +1 -0
  140. package/dist/core/internal/human-readable/parseAbiParameter.d.ts +28 -0
  141. package/dist/core/internal/human-readable/parseAbiParameter.d.ts.map +1 -0
  142. package/dist/core/internal/human-readable/parseAbiParameter.js +32 -0
  143. package/dist/core/internal/human-readable/parseAbiParameter.js.map +1 -0
  144. package/dist/core/internal/human-readable/parseAbiParameters.d.ts +38 -0
  145. package/dist/core/internal/human-readable/parseAbiParameters.d.ts.map +1 -0
  146. package/dist/core/internal/human-readable/parseAbiParameters.js +39 -0
  147. package/dist/core/internal/human-readable/parseAbiParameters.js.map +1 -0
  148. package/dist/core/internal/human-readable/regex.d.ts +9 -0
  149. package/dist/core/internal/human-readable/regex.d.ts.map +1 -0
  150. package/dist/core/internal/human-readable/regex.js +12 -0
  151. package/dist/core/internal/human-readable/regex.js.map +1 -0
  152. package/dist/core/internal/human-readable/runtime/cache.d.ts +22 -0
  153. package/dist/core/internal/human-readable/runtime/cache.d.ts.map +1 -0
  154. package/dist/core/internal/human-readable/runtime/cache.js +86 -0
  155. package/dist/core/internal/human-readable/runtime/cache.js.map +1 -0
  156. package/dist/core/internal/human-readable/runtime/signatures.d.ts +39 -0
  157. package/dist/core/internal/human-readable/runtime/signatures.d.ts.map +1 -0
  158. package/dist/core/internal/human-readable/runtime/signatures.js +67 -0
  159. package/dist/core/internal/human-readable/runtime/signatures.js.map +1 -0
  160. package/dist/core/internal/human-readable/runtime/structs.d.ts +3 -0
  161. package/dist/core/internal/human-readable/runtime/structs.d.ts.map +1 -0
  162. package/dist/core/internal/human-readable/runtime/structs.js +79 -0
  163. package/dist/core/internal/human-readable/runtime/structs.js.map +1 -0
  164. package/dist/core/internal/human-readable/runtime/utils.d.ts +205 -0
  165. package/dist/core/internal/human-readable/runtime/utils.d.ts.map +1 -0
  166. package/dist/core/internal/human-readable/runtime/utils.js +232 -0
  167. package/dist/core/internal/human-readable/runtime/utils.js.map +1 -0
  168. package/dist/core/internal/human-readable/types/signatures.d.ts +38 -0
  169. package/dist/core/internal/human-readable/types/signatures.d.ts.map +1 -0
  170. package/dist/core/internal/human-readable/types/signatures.js +2 -0
  171. package/dist/core/internal/human-readable/types/signatures.js.map +1 -0
  172. package/dist/core/internal/human-readable/types/structs.d.ts +48 -0
  173. package/dist/core/internal/human-readable/types/structs.d.ts.map +1 -0
  174. package/dist/core/internal/human-readable/types/structs.js +2 -0
  175. package/dist/core/internal/human-readable/types/structs.js.map +1 -0
  176. package/dist/core/internal/human-readable/types/utils.d.ts +163 -0
  177. package/dist/core/internal/human-readable/types/utils.d.ts.map +1 -0
  178. package/dist/core/internal/human-readable/types/utils.js +2 -0
  179. package/dist/core/internal/human-readable/types/utils.js.map +1 -0
  180. package/dist/core/internal/human-readable/types.d.ts +29 -0
  181. package/dist/core/internal/human-readable/types.d.ts.map +1 -0
  182. package/dist/core/internal/human-readable/types.js +2 -0
  183. package/dist/core/internal/human-readable/types.js.map +1 -0
  184. package/dist/core/internal/quantity.d.ts +15 -0
  185. package/dist/core/internal/quantity.d.ts.map +1 -1
  186. package/dist/core/internal/quantity.js +23 -0
  187. package/dist/core/internal/quantity.js.map +1 -1
  188. package/dist/core/internal/rpcSchemas/eth.d.ts +56 -10
  189. package/dist/core/internal/rpcSchemas/eth.d.ts.map +1 -1
  190. package/dist/erc4337/UserOperation.d.ts +3 -1
  191. package/dist/erc4337/UserOperation.d.ts.map +1 -1
  192. package/dist/erc4337/UserOperation.js +11 -10
  193. package/dist/erc4337/UserOperation.js.map +1 -1
  194. package/dist/erc4337/UserOperationGas.d.ts +5 -1
  195. package/dist/erc4337/UserOperationGas.d.ts.map +1 -1
  196. package/dist/erc4337/UserOperationGas.js +8 -8
  197. package/dist/erc4337/UserOperationGas.js.map +1 -1
  198. package/dist/erc4337/UserOperationReceipt.d.ts +5 -1
  199. package/dist/erc4337/UserOperationReceipt.d.ts.map +1 -1
  200. package/dist/erc4337/UserOperationReceipt.js +4 -4
  201. package/dist/erc4337/UserOperationReceipt.js.map +1 -1
  202. package/dist/index.d.ts +37 -0
  203. package/dist/index.d.ts.map +1 -1
  204. package/dist/index.js +37 -0
  205. package/dist/index.js.map +1 -1
  206. package/dist/tempo/AuthorizationTempo.d.ts +6 -2
  207. package/dist/tempo/AuthorizationTempo.d.ts.map +1 -1
  208. package/dist/tempo/AuthorizationTempo.js +3 -2
  209. package/dist/tempo/AuthorizationTempo.js.map +1 -1
  210. package/dist/tempo/Channel.d.ts +8 -14
  211. package/dist/tempo/Channel.d.ts.map +1 -1
  212. package/dist/tempo/Channel.js +4 -8
  213. package/dist/tempo/Channel.js.map +1 -1
  214. package/dist/tempo/KeyAuthorization.d.ts +8 -6
  215. package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
  216. package/dist/tempo/KeyAuthorization.js +10 -8
  217. package/dist/tempo/KeyAuthorization.js.map +1 -1
  218. package/dist/tempo/MultisigConfig.d.ts +37 -85
  219. package/dist/tempo/MultisigConfig.d.ts.map +1 -1
  220. package/dist/tempo/MultisigConfig.js +39 -83
  221. package/dist/tempo/MultisigConfig.js.map +1 -1
  222. package/dist/tempo/PoolId.d.ts +8 -7
  223. package/dist/tempo/PoolId.d.ts.map +1 -1
  224. package/dist/tempo/PoolId.js +10 -6
  225. package/dist/tempo/PoolId.js.map +1 -1
  226. package/dist/tempo/RpcSchemaTempo.d.ts +1 -1
  227. package/dist/tempo/RpcSchemaTempo.d.ts.map +1 -1
  228. package/dist/tempo/SignatureEnvelope.d.ts +35 -31
  229. package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
  230. package/dist/tempo/SignatureEnvelope.js +56 -51
  231. package/dist/tempo/SignatureEnvelope.js.map +1 -1
  232. package/dist/tempo/Transaction.d.ts +19 -6
  233. package/dist/tempo/Transaction.d.ts.map +1 -1
  234. package/dist/tempo/Transaction.js +41 -13
  235. package/dist/tempo/Transaction.js.map +1 -1
  236. package/dist/tempo/TransactionReceipt.d.ts +3 -1
  237. package/dist/tempo/TransactionReceipt.d.ts.map +1 -1
  238. package/dist/tempo/TransactionReceipt.js.map +1 -1
  239. package/dist/tempo/TransactionRequest.d.ts +18 -3
  240. package/dist/tempo/TransactionRequest.d.ts.map +1 -1
  241. package/dist/tempo/TransactionRequest.js +72 -35
  242. package/dist/tempo/TransactionRequest.js.map +1 -1
  243. package/dist/tempo/TxEnvelopeTempo.d.ts +2 -3
  244. package/dist/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  245. package/dist/tempo/TxEnvelopeTempo.js +5 -6
  246. package/dist/tempo/TxEnvelopeTempo.js.map +1 -1
  247. package/dist/tempo/index.d.ts +6 -26
  248. package/dist/tempo/index.d.ts.map +1 -1
  249. package/dist/tempo/index.js +6 -26
  250. package/dist/tempo/index.js.map +1 -1
  251. package/dist/zod/Abi.d.ts +214 -0
  252. package/dist/zod/Abi.d.ts.map +1 -0
  253. package/dist/zod/Abi.js +5 -0
  254. package/dist/zod/Abi.js.map +1 -0
  255. package/dist/zod/AbiConstructor.d.ts +58 -0
  256. package/dist/zod/AbiConstructor.d.ts.map +1 -0
  257. package/dist/zod/AbiConstructor.js +18 -0
  258. package/dist/zod/AbiConstructor.js.map +1 -0
  259. package/dist/zod/AbiError.d.ts +20 -0
  260. package/dist/zod/AbiError.d.ts.map +1 -0
  261. package/dist/zod/AbiError.js +9 -0
  262. package/dist/zod/AbiError.js.map +1 -0
  263. package/dist/zod/AbiEvent.d.ts +23 -0
  264. package/dist/zod/AbiEvent.d.ts.map +1 -0
  265. package/dist/zod/AbiEvent.js +11 -0
  266. package/dist/zod/AbiEvent.js.map +1 -0
  267. package/dist/zod/AbiFallback.d.ts +16 -0
  268. package/dist/zod/AbiFallback.d.ts.map +1 -0
  269. package/dist/zod/AbiFallback.js +16 -0
  270. package/dist/zod/AbiFallback.js.map +1 -0
  271. package/dist/zod/AbiFunction.d.ts +109 -0
  272. package/dist/zod/AbiFunction.d.ts.map +1 -0
  273. package/dist/zod/AbiFunction.js +26 -0
  274. package/dist/zod/AbiFunction.js.map +1 -0
  275. package/dist/zod/AbiItem.d.ts +216 -0
  276. package/dist/zod/AbiItem.d.ts.map +1 -0
  277. package/dist/zod/AbiItem.js +26 -0
  278. package/dist/zod/AbiItem.js.map +1 -0
  279. package/dist/zod/AbiParameter.d.ts +32 -0
  280. package/dist/zod/AbiParameter.d.ts.map +1 -0
  281. package/dist/zod/AbiParameter.js +28 -0
  282. package/dist/zod/AbiParameter.js.map +1 -0
  283. package/dist/zod/AbiParameters.d.ts +30 -0
  284. package/dist/zod/AbiParameters.d.ts.map +1 -0
  285. package/dist/zod/AbiParameters.js +6 -0
  286. package/dist/zod/AbiParameters.js.map +1 -0
  287. package/dist/zod/AbiReceive.d.ts +6 -0
  288. package/dist/zod/AbiReceive.d.ts.map +1 -0
  289. package/dist/zod/AbiReceive.js +7 -0
  290. package/dist/zod/AbiReceive.js.map +1 -0
  291. package/dist/zod/AccountProof.d.ts +20 -0
  292. package/dist/zod/AccountProof.d.ts.map +1 -1
  293. package/dist/zod/AccountProof.js +24 -14
  294. package/dist/zod/AccountProof.js.map +1 -1
  295. package/dist/zod/Authorization.d.ts +43 -0
  296. package/dist/zod/Authorization.d.ts.map +1 -1
  297. package/dist/zod/Authorization.js +36 -16
  298. package/dist/zod/Authorization.js.map +1 -1
  299. package/dist/zod/BigInt.d.ts +2 -0
  300. package/dist/zod/BigInt.d.ts.map +1 -1
  301. package/dist/zod/BigInt.js +6 -1
  302. package/dist/zod/BigInt.js.map +1 -1
  303. package/dist/zod/Block.d.ts +219 -0
  304. package/dist/zod/Block.d.ts.map +1 -1
  305. package/dist/zod/Block.js +24 -20
  306. package/dist/zod/Block.js.map +1 -1
  307. package/dist/zod/BlockOverrides.d.ts +16 -0
  308. package/dist/zod/BlockOverrides.d.ts.map +1 -1
  309. package/dist/zod/BlockOverrides.js +15 -10
  310. package/dist/zod/BlockOverrides.js.map +1 -1
  311. package/dist/zod/Filter.d.ts +14 -0
  312. package/dist/zod/Filter.d.ts.map +1 -1
  313. package/dist/zod/Filter.js +24 -19
  314. package/dist/zod/Filter.js.map +1 -1
  315. package/dist/zod/Log.d.ts +15 -2
  316. package/dist/zod/Log.d.ts.map +1 -1
  317. package/dist/zod/Log.js +18 -13
  318. package/dist/zod/Log.js.map +1 -1
  319. package/dist/zod/Number.d.ts +2 -0
  320. package/dist/zod/Number.d.ts.map +1 -1
  321. package/dist/zod/Number.js +6 -1
  322. package/dist/zod/Number.js.map +1 -1
  323. package/dist/zod/RpcSchema.d.ts +318 -112
  324. package/dist/zod/RpcSchema.d.ts.map +1 -1
  325. package/dist/zod/RpcSchema.js +30 -82
  326. package/dist/zod/RpcSchema.js.map +1 -1
  327. package/dist/zod/Signature.d.ts +6 -0
  328. package/dist/zod/Signature.d.ts.map +1 -1
  329. package/dist/zod/Signature.js +9 -1
  330. package/dist/zod/Signature.js.map +1 -1
  331. package/dist/zod/Solidity.d.ts +15 -0
  332. package/dist/zod/Solidity.d.ts.map +1 -0
  333. package/dist/zod/Solidity.js +41 -0
  334. package/dist/zod/Solidity.js.map +1 -0
  335. package/dist/zod/StateOverrides.d.ts +32 -0
  336. package/dist/zod/StateOverrides.d.ts.map +1 -1
  337. package/dist/zod/StateOverrides.js +25 -18
  338. package/dist/zod/StateOverrides.js.map +1 -1
  339. package/dist/zod/Transaction.d.ts +312 -0
  340. package/dist/zod/Transaction.d.ts.map +1 -1
  341. package/dist/zod/Transaction.js +138 -93
  342. package/dist/zod/Transaction.js.map +1 -1
  343. package/dist/zod/TransactionEnvelope.d.ts +222 -0
  344. package/dist/zod/TransactionEnvelope.d.ts.map +1 -1
  345. package/dist/zod/TransactionEnvelope.js +19 -3
  346. package/dist/zod/TransactionEnvelope.js.map +1 -1
  347. package/dist/zod/TransactionReceipt.d.ts +32 -1
  348. package/dist/zod/TransactionReceipt.d.ts.map +1 -1
  349. package/dist/zod/TransactionReceipt.js +24 -19
  350. package/dist/zod/TransactionReceipt.js.map +1 -1
  351. package/dist/zod/TransactionRequest.d.ts +34 -0
  352. package/dist/zod/TransactionRequest.d.ts.map +1 -1
  353. package/dist/zod/TransactionRequest.js +28 -23
  354. package/dist/zod/TransactionRequest.js.map +1 -1
  355. package/dist/zod/TxEnvelopeEip1559.d.ts +44 -0
  356. package/dist/zod/TxEnvelopeEip1559.d.ts.map +1 -1
  357. package/dist/zod/TxEnvelopeEip1559.js +23 -14
  358. package/dist/zod/TxEnvelopeEip1559.js.map +1 -1
  359. package/dist/zod/TxEnvelopeEip2930.d.ts +42 -0
  360. package/dist/zod/TxEnvelopeEip2930.d.ts.map +1 -1
  361. package/dist/zod/TxEnvelopeEip2930.js +21 -12
  362. package/dist/zod/TxEnvelopeEip2930.js.map +1 -1
  363. package/dist/zod/TxEnvelopeEip4844.d.ts +58 -0
  364. package/dist/zod/TxEnvelopeEip4844.d.ts.map +1 -1
  365. package/dist/zod/TxEnvelopeEip4844.js +29 -20
  366. package/dist/zod/TxEnvelopeEip4844.js.map +1 -1
  367. package/dist/zod/TxEnvelopeEip7702.d.ts +60 -0
  368. package/dist/zod/TxEnvelopeEip7702.d.ts.map +1 -1
  369. package/dist/zod/TxEnvelopeEip7702.js +25 -16
  370. package/dist/zod/TxEnvelopeEip7702.js.map +1 -1
  371. package/dist/zod/TxEnvelopeLegacy.d.ts +34 -0
  372. package/dist/zod/TxEnvelopeLegacy.d.ts.map +1 -1
  373. package/dist/zod/TxEnvelopeLegacy.js +19 -10
  374. package/dist/zod/TxEnvelopeLegacy.js.map +1 -1
  375. package/dist/zod/TypedData.d.ts +226 -0
  376. package/dist/zod/TypedData.d.ts.map +1 -0
  377. package/dist/zod/TypedData.js +84 -0
  378. package/dist/zod/TypedData.js.map +1 -0
  379. package/dist/zod/Uint.d.ts +4 -0
  380. package/dist/zod/Uint.d.ts.map +1 -1
  381. package/dist/zod/Uint.js +14 -1
  382. package/dist/zod/Uint.js.map +1 -1
  383. package/dist/zod/Withdrawal.d.ts +7 -0
  384. package/dist/zod/Withdrawal.d.ts.map +1 -1
  385. package/dist/zod/Withdrawal.js +11 -6
  386. package/dist/zod/Withdrawal.js.map +1 -1
  387. package/dist/zod/internal/Integer.d.ts +15 -0
  388. package/dist/zod/internal/Integer.d.ts.map +1 -1
  389. package/dist/zod/internal/Integer.js +39 -0
  390. package/dist/zod/internal/Integer.js.map +1 -1
  391. package/dist/zod/internal/TransactionEnvelope.d.ts +38 -28
  392. package/dist/zod/internal/TransactionEnvelope.d.ts.map +1 -1
  393. package/dist/zod/internal/TransactionEnvelope.js +22 -15
  394. package/dist/zod/internal/TransactionEnvelope.js.map +1 -1
  395. package/dist/zod/internal/rpcSchemas/Eth.d.ts +260 -123
  396. package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
  397. package/dist/zod/internal/rpcSchemas/Eth.js +17 -6
  398. package/dist/zod/internal/rpcSchemas/Eth.js.map +1 -1
  399. package/dist/zod/internal/rpcSchemas/Wallet.d.ts +1 -1
  400. package/dist/zod/tempo/AuthorizationTempo.d.ts +405 -12
  401. package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
  402. package/dist/zod/tempo/AuthorizationTempo.js +20 -0
  403. package/dist/zod/tempo/AuthorizationTempo.js.map +1 -1
  404. package/dist/zod/tempo/KeyAuthorization.d.ts +838 -69
  405. package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
  406. package/dist/zod/tempo/KeyAuthorization.js +49 -8
  407. package/dist/zod/tempo/KeyAuthorization.js.map +1 -1
  408. package/dist/zod/tempo/RpcSchemaTempo.d.ts +218 -36
  409. package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
  410. package/dist/zod/tempo/SignatureEnvelope.d.ts +0 -6
  411. package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
  412. package/dist/zod/tempo/SignatureEnvelope.js +0 -2
  413. package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
  414. package/dist/zod/tempo/Transaction.d.ts +2203 -192
  415. package/dist/zod/tempo/Transaction.d.ts.map +1 -1
  416. package/dist/zod/tempo/Transaction.js +113 -33
  417. package/dist/zod/tempo/Transaction.js.map +1 -1
  418. package/dist/zod/tempo/TransactionReceipt.d.ts +34 -1
  419. package/dist/zod/tempo/TransactionReceipt.d.ts.map +1 -1
  420. package/dist/zod/tempo/TransactionReceipt.js +26 -21
  421. package/dist/zod/tempo/TransactionReceipt.js.map +1 -1
  422. package/dist/zod/tempo/TransactionRequest.d.ts +1049 -57
  423. package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
  424. package/dist/zod/tempo/TransactionRequest.js +141 -26
  425. package/dist/zod/tempo/TransactionRequest.js.map +1 -1
  426. package/dist/zod/tempo/TxEnvelopeTempo.d.ts +225 -18
  427. package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
  428. package/dist/zod/tempo/TxEnvelopeTempo.js +1 -1
  429. package/dist/zod/tempo/TxEnvelopeTempo.js.map +1 -1
  430. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +0 -3
  431. package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
  432. package/dist/zod/tempo/z.d.ts +0 -1
  433. package/dist/zod/tempo/z.d.ts.map +1 -1
  434. package/dist/zod/tempo/z.js +0 -1
  435. package/dist/zod/tempo/z.js.map +1 -1
  436. package/dist/zod/z.d.ts +15 -3
  437. package/dist/zod/z.d.ts.map +1 -1
  438. package/dist/zod/z.js +15 -3
  439. package/dist/zod/z.js.map +1 -1
  440. package/package.json +66 -11
  441. package/src/CHANGELOG.md +18 -0
  442. package/src/core/Abi.bench.ts +30 -0
  443. package/src/core/Abi.ts +13 -4
  444. package/src/core/AbiConstructor.ts +3 -2
  445. package/src/core/AbiError.ts +6 -2
  446. package/src/core/AbiEvent.ts +6 -2
  447. package/src/core/AbiFunction.ts +6 -2
  448. package/src/core/AbiItem.bench.ts +19 -0
  449. package/src/core/AbiItem.ts +20 -10
  450. package/src/core/AbiParameter.bench.ts +35 -0
  451. package/src/core/AbiParameter.ts +126 -0
  452. package/src/core/AbiParameters.bench.ts +22 -0
  453. package/src/core/AbiParameters.ts +77 -8
  454. package/src/core/AccountProof.ts +7 -4
  455. package/src/core/Authorization.ts +11 -4
  456. package/src/core/Block.ts +24 -13
  457. package/src/core/BlockOverrides.ts +18 -13
  458. package/src/core/Filter.ts +8 -5
  459. package/src/core/Log.ts +10 -6
  460. package/src/core/Rlp.ts +66 -3
  461. package/src/core/RpcSchema.ts +2 -2
  462. package/src/core/Signature.ts +6 -2
  463. package/src/core/StateOverrides.ts +10 -5
  464. package/src/core/Transaction.ts +37 -26
  465. package/src/core/TransactionReceipt.ts +17 -8
  466. package/src/core/TransactionRequest.ts +21 -11
  467. package/src/core/TxEnvelope.ts +9 -2
  468. package/src/core/TxEnvelopeEip1559.ts +21 -12
  469. package/src/core/TxEnvelopeEip2930.ts +17 -10
  470. package/src/core/TxEnvelopeEip4844.ts +25 -14
  471. package/src/core/TxEnvelopeEip7702.ts +21 -12
  472. package/src/core/TxEnvelopeLegacy.ts +20 -9
  473. package/src/core/Withdrawal.ts +9 -5
  474. package/src/core/_test/Abi.test.ts +4 -0
  475. package/src/core/_test/AbiItem.test.ts +3 -0
  476. package/src/core/_test/AbiParameter.test-d.ts +41 -0
  477. package/src/core/_test/AbiParameter.test.ts +84 -0
  478. package/src/core/_test/AbiParameters.decode.test.ts +88 -12
  479. package/src/core/_test/AbiParameters.encode.test.ts +68 -0
  480. package/src/core/_test/AbiParameters.test.ts +7 -0
  481. package/src/core/_test/AccountProof.test.ts +56 -0
  482. package/src/core/_test/Authorization.test.ts +29 -0
  483. package/src/core/_test/Block.test.ts +98 -0
  484. package/src/core/_test/BlockOverrides.test.ts +50 -0
  485. package/src/core/_test/Filter.test.ts +32 -0
  486. package/src/core/_test/Log.test.ts +42 -0
  487. package/src/core/_test/Rlp.test.ts +101 -0
  488. package/src/core/_test/RpcSchema.test-d.ts +12 -0
  489. package/src/core/_test/Signature.test.ts +14 -0
  490. package/src/core/_test/StateOverrides.test.ts +51 -0
  491. package/src/core/_test/Transaction.test.ts +64 -0
  492. package/src/core/_test/TransactionEnvelopeEip1559.test.ts +41 -0
  493. package/src/core/_test/TransactionEnvelopeEip2930.test.ts +38 -0
  494. package/src/core/_test/TransactionEnvelopeEip4844.test.ts +47 -0
  495. package/src/core/_test/TransactionEnvelopeEip7702.test.ts +71 -0
  496. package/src/core/_test/TransactionEnvelopeLegacy.test.ts +38 -0
  497. package/src/core/_test/TransactionReceipt.test.ts +54 -0
  498. package/src/core/_test/Withdrawal.test.ts +33 -0
  499. package/src/core/_test/index.test.ts +1 -0
  500. package/src/core/internal/abiParameters.ts +21 -3
  501. package/src/core/internal/human-readable/_snap/formatAbi.test.ts.snap +74 -0
  502. package/src/core/internal/human-readable/_snap/parseAbi.test.ts.snap +2353 -0
  503. package/src/core/internal/human-readable/errors.test.ts +258 -0
  504. package/src/core/internal/human-readable/errors.ts +205 -0
  505. package/src/core/internal/human-readable/formatAbi.test-d.ts +144 -0
  506. package/src/core/internal/human-readable/formatAbi.test.ts +23 -0
  507. package/src/core/internal/human-readable/formatAbi.ts +37 -0
  508. package/src/core/internal/human-readable/formatAbiItem.test-d.ts +115 -0
  509. package/src/core/internal/human-readable/formatAbiItem.test.ts +102 -0
  510. package/src/core/internal/human-readable/formatAbiItem.ts +136 -0
  511. package/src/core/internal/human-readable/formatAbiParameter.test-d.ts +125 -0
  512. package/src/core/internal/human-readable/formatAbiParameter.test.ts +126 -0
  513. package/src/core/internal/human-readable/formatAbiParameter.ts +86 -0
  514. package/src/core/internal/human-readable/formatAbiParameters.test-d.ts +92 -0
  515. package/src/core/internal/human-readable/formatAbiParameters.test.ts +32 -0
  516. package/src/core/internal/human-readable/formatAbiParameters.ts +46 -0
  517. package/src/core/internal/human-readable/human-readable.bench-d.ts +58 -0
  518. package/src/core/internal/human-readable/integration.test.ts +68 -0
  519. package/src/core/internal/human-readable/parseAbi.test-d.ts +188 -0
  520. package/src/core/internal/human-readable/parseAbi.test.ts +82 -0
  521. package/src/core/internal/human-readable/parseAbi.ts +59 -0
  522. package/src/core/internal/human-readable/parseAbiItem.test-d.ts +183 -0
  523. package/src/core/internal/human-readable/parseAbiItem.test.ts +264 -0
  524. package/src/core/internal/human-readable/parseAbiItem.ts +91 -0
  525. package/src/core/internal/human-readable/parseAbiParameter.test-d.ts +68 -0
  526. package/src/core/internal/human-readable/parseAbiParameter.test.ts +207 -0
  527. package/src/core/internal/human-readable/parseAbiParameter.ts +95 -0
  528. package/src/core/internal/human-readable/parseAbiParameters.test-d.ts +160 -0
  529. package/src/core/internal/human-readable/parseAbiParameters.test.ts +80 -0
  530. package/src/core/internal/human-readable/parseAbiParameters.ts +123 -0
  531. package/src/core/internal/human-readable/regex.ts +15 -0
  532. package/src/core/internal/human-readable/runtime/cache.ts +96 -0
  533. package/src/core/internal/human-readable/runtime/signatures.test.ts +236 -0
  534. package/src/core/internal/human-readable/runtime/signatures.ts +106 -0
  535. package/src/core/internal/human-readable/runtime/structs.test.ts +210 -0
  536. package/src/core/internal/human-readable/runtime/structs.ts +97 -0
  537. package/src/core/internal/human-readable/runtime/utils.test.ts +717 -0
  538. package/src/core/internal/human-readable/runtime/utils.ts +344 -0
  539. package/src/core/internal/human-readable/types/signatures.test-d.ts +255 -0
  540. package/src/core/internal/human-readable/types/signatures.ts +369 -0
  541. package/src/core/internal/human-readable/types/structs.test-d.ts +221 -0
  542. package/src/core/internal/human-readable/types/structs.ts +88 -0
  543. package/src/core/internal/human-readable/types/utils.test-d.ts +1029 -0
  544. package/src/core/internal/human-readable/types/utils.ts +392 -0
  545. package/src/core/internal/human-readable/types.ts +69 -0
  546. package/src/core/internal/quantity.ts +29 -0
  547. package/src/core/internal/rpcSchemas/eth.ts +76 -10
  548. package/src/erc4337/UserOperation.ts +26 -11
  549. package/src/erc4337/UserOperationGas.ts +19 -8
  550. package/src/erc4337/UserOperationReceipt.ts +14 -4
  551. package/src/index.ts +38 -0
  552. package/src/tempo/AuthorizationTempo.ts +11 -4
  553. package/src/tempo/Channel.test.ts +2 -23
  554. package/src/tempo/Channel.ts +10 -22
  555. package/src/tempo/KeyAuthorization.test.ts +22 -0
  556. package/src/tempo/KeyAuthorization.ts +20 -14
  557. package/src/tempo/MultisigConfig.test.ts +54 -37
  558. package/src/tempo/MultisigConfig.ts +59 -134
  559. package/src/tempo/PoolId.test.ts +7 -41
  560. package/src/tempo/PoolId.ts +15 -10
  561. package/src/tempo/RpcSchemaTempo.ts +1 -1
  562. package/src/tempo/SignatureEnvelope.test.ts +118 -17
  563. package/src/tempo/SignatureEnvelope.ts +81 -73
  564. package/src/tempo/Transaction.test.ts +0 -15
  565. package/src/tempo/Transaction.ts +78 -19
  566. package/src/tempo/TransactionReceipt.ts +9 -1
  567. package/src/tempo/TransactionRequest.test.ts +174 -1
  568. package/src/tempo/TransactionRequest.ts +98 -39
  569. package/src/tempo/TxEnvelopeTempo.test.ts +2 -2
  570. package/src/tempo/TxEnvelopeTempo.ts +7 -7
  571. package/src/tempo/e2e.test.ts +221 -43
  572. package/src/tempo/index.ts +6 -26
  573. package/src/version.ts +1 -1
  574. package/src/zod/Abi.ts +5 -0
  575. package/src/zod/AbiConstructor.ts +24 -0
  576. package/src/zod/AbiError.ts +9 -0
  577. package/src/zod/AbiEvent.ts +11 -0
  578. package/src/zod/AbiFallback.ts +22 -0
  579. package/src/zod/AbiFunction.ts +32 -0
  580. package/src/zod/AbiItem.ts +28 -0
  581. package/src/zod/AbiParameter.ts +36 -0
  582. package/src/zod/AbiParameters.ts +7 -0
  583. package/src/zod/AbiReceive.ts +7 -0
  584. package/src/zod/AccountProof.ts +36 -14
  585. package/src/zod/Authorization.ts +65 -18
  586. package/src/zod/BigInt.ts +12 -1
  587. package/src/zod/Block.ts +68 -26
  588. package/src/zod/BlockOverrides.ts +24 -10
  589. package/src/zod/Filter.ts +26 -21
  590. package/src/zod/Log.ts +23 -13
  591. package/src/zod/Number.ts +12 -1
  592. package/src/zod/RpcSchema.ts +123 -29
  593. package/src/zod/Signature.ts +18 -3
  594. package/src/zod/Solidity.ts +83 -0
  595. package/src/zod/StateOverrides.ts +31 -19
  596. package/src/zod/Transaction.ts +254 -101
  597. package/src/zod/TransactionEnvelope.ts +27 -3
  598. package/src/zod/TransactionReceipt.ts +34 -19
  599. package/src/zod/TransactionRequest.ts +42 -23
  600. package/src/zod/TxEnvelopeEip1559.ts +34 -13
  601. package/src/zod/TxEnvelopeEip2930.ts +32 -11
  602. package/src/zod/TxEnvelopeEip4844.ts +40 -19
  603. package/src/zod/TxEnvelopeEip7702.ts +46 -15
  604. package/src/zod/TxEnvelopeLegacy.ts +30 -9
  605. package/src/zod/TypedData.ts +111 -0
  606. package/src/zod/Uint.ts +19 -0
  607. package/src/zod/Withdrawal.ts +18 -6
  608. package/src/zod/_test/Abi.test-d.ts +46 -0
  609. package/src/zod/_test/Abi.test.ts +163 -0
  610. package/src/zod/_test/AccountProof.test.ts +32 -0
  611. package/src/zod/_test/Authorization.test.ts +42 -0
  612. package/src/zod/_test/BigInt.test.ts +9 -1
  613. package/src/zod/_test/Block.test.ts +54 -0
  614. package/src/zod/_test/BlockOverrides.test.ts +35 -0
  615. package/src/zod/_test/Filter.test.ts +34 -0
  616. package/src/zod/_test/Log.test.ts +49 -0
  617. package/src/zod/_test/Number.test.ts +8 -1
  618. package/src/zod/_test/RpcSchema.test-d.ts +46 -0
  619. package/src/zod/_test/RpcSchema.test.ts +70 -0
  620. package/src/zod/_test/Signature.test.ts +10 -0
  621. package/src/zod/_test/StateOverrides.test.ts +26 -0
  622. package/src/zod/_test/Transaction.test.ts +30 -0
  623. package/src/zod/_test/TransactionEnvelope.test.ts +34 -0
  624. package/src/zod/_test/TransactionReceipt.test.ts +45 -1
  625. package/src/zod/_test/TransactionRequest.test.ts +31 -0
  626. package/src/zod/_test/TxEnvelope.test.ts +32 -0
  627. package/src/zod/_test/TypedData.test-d.ts +20 -0
  628. package/src/zod/_test/TypedData.test.ts +87 -0
  629. package/src/zod/_test/Uint.test.ts +15 -0
  630. package/src/zod/_test/Withdrawal.test.ts +35 -0
  631. package/src/zod/_test/z.test-d.ts +6 -0
  632. package/src/zod/_test/z.test.ts +17 -0
  633. package/src/zod/internal/Integer.ts +58 -0
  634. package/src/zod/internal/TransactionEnvelope.ts +33 -17
  635. package/src/zod/internal/rpcSchemas/Eth.ts +20 -6
  636. package/src/zod/tempo/AuthorizationTempo.ts +25 -0
  637. package/src/zod/tempo/KeyAuthorization.ts +58 -8
  638. package/src/zod/tempo/SignatureEnvelope.ts +0 -2
  639. package/src/zod/tempo/Transaction.ts +148 -33
  640. package/src/zod/tempo/TransactionReceipt.ts +36 -21
  641. package/src/zod/tempo/TransactionRequest.ts +154 -28
  642. package/src/zod/tempo/TxEnvelopeTempo.ts +1 -1
  643. package/src/zod/tempo/_test/AuthorizationTempo.test.ts +24 -0
  644. package/src/zod/tempo/_test/KeyAuthorization.test.ts +85 -0
  645. package/src/zod/tempo/_test/SignatureEnvelope.test.ts +0 -2
  646. package/src/zod/tempo/_test/Transaction.test.ts +178 -0
  647. package/src/zod/tempo/_test/TransactionReceipt.test.ts +26 -0
  648. package/src/zod/tempo/_test/TransactionRequest.test.ts +73 -0
  649. package/src/zod/tempo/z.ts +0 -1
  650. package/src/zod/z.ts +16 -2
  651. package/dist/tempo/TokenId.d.ts +0 -87
  652. package/dist/tempo/TokenId.d.ts.map +0 -1
  653. package/dist/tempo/TokenId.js +0 -123
  654. package/dist/tempo/TokenId.js.map +0 -1
  655. package/dist/zod/tempo/TokenId.d.ts +0 -6
  656. package/dist/zod/tempo/TokenId.d.ts.map +0 -1
  657. package/dist/zod/tempo/TokenId.js +0 -14
  658. package/dist/zod/tempo/TokenId.js.map +0 -1
  659. package/src/tempo/TokenId.bench.ts +0 -36
  660. package/src/tempo/TokenId.test.ts +0 -79
  661. package/src/tempo/TokenId.ts +0 -141
  662. package/src/zod/tempo/TokenId.ts +0 -15
  663. package/src/zod/tempo/_test/TokenId.test-d.ts +0 -17
  664. package/src/zod/tempo/_test/TokenId.test.ts +0 -21
@@ -44,6 +44,50 @@ describe('TransactionRequest', () => {
44
44
  )
45
45
  })
46
46
 
47
+ test('gas-model hints and capabilities round-trip', () => {
48
+ const hints = {
49
+ capabilities: { balanceDiffs: true },
50
+ keyData: '0x0578',
51
+ keyId: '0xcccccccccccccccccccccccccccccccccccccccc',
52
+ keyType: 'webAuthn',
53
+ multisigInit: {
54
+ salt: '0x0000000000000000000000000000000000000000000000000000000000000000',
55
+ threshold: 2,
56
+ owners: [
57
+ {
58
+ owner: '0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
59
+ weight: 1,
60
+ },
61
+ {
62
+ owner: '0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb',
63
+ weight: 1,
64
+ },
65
+ ],
66
+ },
67
+ multisigSignatureCount: 2,
68
+ } as const
69
+
70
+ const decoded = z.decode(z_TransactionRequest.TransactionRequest, {
71
+ ...rpc,
72
+ ...hints,
73
+ })
74
+ expect(decoded).toMatchObject(hints)
75
+
76
+ const encoded = z.encode(z_TransactionRequest.TransactionRequest, decoded)
77
+ expect(encoded).toMatchObject(hints)
78
+ expect(encoded).toEqual(core_TransactionRequest.toRpc(decoded))
79
+ })
80
+
81
+ test('feeToken is withheld until the fee payer signs (TIP-76)', () => {
82
+ const decoded = z.decode(z_TransactionRequest.TransactionRequest, rpc)
83
+ const pending = z.encode(z_TransactionRequest.TransactionRequest, {
84
+ ...decoded,
85
+ feePayer: true,
86
+ })
87
+ expect(pending.feeToken).toBeUndefined()
88
+ expect(pending.feePayer).toBe(true)
89
+ })
90
+
47
91
  test('rejects an invalid request', () => {
48
92
  expect(
49
93
  z.safeDecode(z_TransactionRequest.TransactionRequest, {
@@ -52,3 +96,32 @@ describe('TransactionRequest', () => {
52
96
  ).toBe(false)
53
97
  })
54
98
  })
99
+
100
+ describe('TransactionRequestToRpc', () => {
101
+ test('accepts numberish encode inputs', () => {
102
+ const decoded = z.decode(z_TransactionRequest.TransactionRequest, rpc)
103
+ const strict = z.encode(z_TransactionRequest.TransactionRequest, decoded)
104
+
105
+ // numberish: bigint quantities as `number`/hex, calls value as `number`
106
+ expect(
107
+ z.encode(z_TransactionRequest.TransactionRequestToRpc, {
108
+ ...decoded,
109
+ maxFeePerGas: 2,
110
+ calls: [
111
+ {
112
+ data: '0xdeadbeef',
113
+ to: '0xcafebabecafebabecafebabecafebabecafebabe',
114
+ value: 700000000000000000n,
115
+ },
116
+ ],
117
+ }),
118
+ ).toEqual(strict)
119
+
120
+ expect(
121
+ z.encode(z_TransactionRequest.TransactionRequestToRpc, {
122
+ ...decoded,
123
+ maxFeePerGas: '0x2',
124
+ }),
125
+ ).toEqual(strict)
126
+ })
127
+ })
@@ -6,7 +6,6 @@ export * as PoolId from './PoolId.js'
6
6
  export * as RpcSchemaTempo from './RpcSchemaTempo.js'
7
7
  export * as SignatureEnvelope from './SignatureEnvelope.js'
8
8
  export * as Tick from './Tick.js'
9
- export * as TokenId from './TokenId.js'
10
9
  export * as TokenRole from './TokenRole.js'
11
10
  export * as Transaction from './Transaction.js'
12
11
  export * as TransactionReceipt from './TransactionReceipt.js'
package/src/zod/z.ts CHANGED
@@ -1,5 +1,15 @@
1
1
  /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
2
  export * from 'zod/mini'
3
+ export * as Abi from './Abi.js'
4
+ export * as AbiConstructor from './AbiConstructor.js'
5
+ export * as AbiError from './AbiError.js'
6
+ export * as AbiEvent from './AbiEvent.js'
7
+ export * as AbiFallback from './AbiFallback.js'
8
+ export * as AbiFunction from './AbiFunction.js'
9
+ export * as AbiItem from './AbiItem.js'
10
+ export * as AbiParameter from './AbiParameter.js'
11
+ export * as AbiParameters from './AbiParameters.js'
12
+ export * as AbiReceive from './AbiReceive.js'
3
13
  export * as AccountProof from './AccountProof.js'
4
14
  export * as AccessList from './AccessList.js'
5
15
  export * as Address from './Address.js'
@@ -15,11 +25,13 @@ export * as Log from './Log.js'
15
25
  export * as RpcResponse from './RpcResponse.js'
16
26
  export * as RpcSchema from './RpcSchema.js'
17
27
  export * as Signature from './Signature.js'
28
+ export * as Solidity from './Solidity.js'
18
29
  export * as StateOverrides from './StateOverrides.js'
19
30
  export * as Transaction from './Transaction.js'
20
31
  export * as TransactionEnvelope from './TransactionEnvelope.js'
21
32
  export * as TransactionReceipt from './TransactionReceipt.js'
22
33
  export * as TransactionRequest from './TransactionRequest.js'
34
+ export * as TypedData from './TypedData.js'
23
35
  export * as TxEnvelopeEip1559 from './TxEnvelopeEip1559.js'
24
36
  export * as TxEnvelopeEip2930 from './TxEnvelopeEip2930.js'
25
37
  export * as TxEnvelopeEip4844 from './TxEnvelopeEip4844.js'
@@ -27,7 +39,7 @@ export * as TxEnvelopeEip7702 from './TxEnvelopeEip7702.js'
27
39
  export * as TxEnvelopeLegacy from './TxEnvelopeLegacy.js'
28
40
  export * as Withdrawal from './Withdrawal.js'
29
41
  export * as tempo from './tempo/z.js'
30
- export { BigInt } from './BigInt.js'
42
+ export { BigInt, BigIntToRpc } from './BigInt.js'
31
43
  export {
32
44
  Int,
33
45
  Int8,
@@ -63,9 +75,11 @@ export {
63
75
  Int248,
64
76
  Int256,
65
77
  } from './Int.js'
66
- export { Number } from './Number.js'
78
+ export { Number, NumberToRpc } from './Number.js'
67
79
  export {
68
80
  Uint,
81
+ UintToRpc,
82
+ Uint8ToRpc,
69
83
  Uint8,
70
84
  Uint16,
71
85
  Uint24,
@@ -1,87 +0,0 @@
1
- import * as Address from '../core/Address.js';
2
- import * as Hex from '../core/Hex.js';
3
- export type TokenId = bigint;
4
- export type TokenIdOrAddress = TokenId | Address.Address;
5
- /**
6
- * Converts a token ID or address to a token ID.
7
- *
8
- * TIP-20 is Tempo's native token standard for stablecoins with deterministic addresses
9
- * derived from sequential token IDs (prefix `0x20c0`).
10
- *
11
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
12
- *
13
- * @example
14
- * ```ts twoslash
15
- * import { TokenId } from 'ox/tempo'
16
- *
17
- * const tokenId = TokenId.from(1n)
18
- * ```
19
- *
20
- * @param tokenIdOrAddress - The token ID or address.
21
- * @returns The token ID.
22
- */
23
- export declare function from(tokenIdOrAddress: TokenIdOrAddress | number): TokenId;
24
- /**
25
- * Converts a TIP-20 token address to a token ID.
26
- *
27
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
28
- *
29
- * @example
30
- * ```ts twoslash
31
- * import { TokenId } from 'ox/tempo'
32
- *
33
- * const tokenId = TokenId.fromAddress(
34
- * '0x20c0000000000000000000000000000000000001'
35
- * )
36
- * ```
37
- *
38
- * @param address - The token address.
39
- * @returns The token ID.
40
- */
41
- export declare function fromAddress(address: Address.Address): TokenId;
42
- /**
43
- * Converts a TIP-20 token ID to an address.
44
- *
45
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
46
- *
47
- * @example
48
- * ```ts twoslash
49
- * import { TokenId } from 'ox/tempo'
50
- *
51
- * const address = TokenId.toAddress(1n)
52
- * ```
53
- *
54
- * @param tokenId - The token ID.
55
- * @returns The address.
56
- */
57
- export declare function toAddress(tokenId: TokenIdOrAddress): Address.Address;
58
- /**
59
- * Computes a deterministic TIP-20 token address from a sender address and salt.
60
- *
61
- * The address is computed as: `TIP20_PREFIX (12 bytes) || keccak256(abi.encode(sender, salt))[:8]`
62
- *
63
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
64
- *
65
- * @example
66
- * ```ts twoslash
67
- * import { TokenId } from 'ox/tempo'
68
- *
69
- * const id = TokenId.compute({
70
- * sender: '0x1234567890123456789012345678901234567890',
71
- * salt: '0x0000000000000000000000000000000000000000000000000000000000000001'
72
- * })
73
- * ```
74
- *
75
- * @param value - The sender address and salt.
76
- * @returns The computed TIP-20 token id.
77
- */
78
- export declare function compute(value: compute.Value): bigint;
79
- export declare namespace compute {
80
- type Value = {
81
- /** The salt (32 bytes). */
82
- salt: Hex.Hex;
83
- /** The sender address. */
84
- sender: Address.Address;
85
- };
86
- }
87
- //# sourceMappingURL=TokenId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenId.d.ts","sourceRoot":"","sources":["../../src/tempo/TokenId.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAE7C,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAIrC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAA;AAC5B,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;AAExD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,IAAI,CAAC,gBAAgB,EAAE,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAOzE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAiB7D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAQpE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,GAAG,MAAM,CAapD;AAED,MAAM,CAAC,OAAO,WAAW,OAAO,CAAC;IAC/B,KAAY,KAAK,GAAG;QAClB,2BAA2B;QAC3B,IAAI,EAAE,GAAG,CAAC,GAAG,CAAA;QACb,0BAA0B;QAC1B,MAAM,EAAE,OAAO,CAAC,OAAO,CAAA;KACxB,CAAA;CACF"}
@@ -1,123 +0,0 @@
1
- import { keccak_256 } from '@noble/hashes/sha3.js';
2
- import * as Address from '../core/Address.js';
3
- import * as Bytes from '../core/Bytes.js';
4
- import * as Hex from '../core/Hex.js';
5
- const tip20Prefix = '0x20c0';
6
- /**
7
- * Converts a token ID or address to a token ID.
8
- *
9
- * TIP-20 is Tempo's native token standard for stablecoins with deterministic addresses
10
- * derived from sequential token IDs (prefix `0x20c0`).
11
- *
12
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
13
- *
14
- * @example
15
- * ```ts twoslash
16
- * import { TokenId } from 'ox/tempo'
17
- *
18
- * const tokenId = TokenId.from(1n)
19
- * ```
20
- *
21
- * @param tokenIdOrAddress - The token ID or address.
22
- * @returns The token ID.
23
- */
24
- export function from(tokenIdOrAddress) {
25
- if (typeof tokenIdOrAddress === 'bigint' ||
26
- typeof tokenIdOrAddress === 'number')
27
- return BigInt(tokenIdOrAddress);
28
- return fromAddress(tokenIdOrAddress);
29
- }
30
- /**
31
- * Converts a TIP-20 token address to a token ID.
32
- *
33
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
34
- *
35
- * @example
36
- * ```ts twoslash
37
- * import { TokenId } from 'ox/tempo'
38
- *
39
- * const tokenId = TokenId.fromAddress(
40
- * '0x20c0000000000000000000000000000000000001'
41
- * )
42
- * ```
43
- *
44
- * @param address - The token address.
45
- * @returns The token ID.
46
- */
47
- export function fromAddress(address) {
48
- const resolved = address;
49
- // The TIP-20 prefix check is case-insensitive, but most inputs are already
50
- // lowercase, so peek the prefix bytes before falling back to a full
51
- // `.toLowerCase()`.
52
- const c2 = resolved.charCodeAt(2);
53
- const c3 = resolved.charCodeAt(3);
54
- const c4 = resolved.charCodeAt(4);
55
- const c5 = resolved.charCodeAt(5);
56
- const isPrefix = c2 === 50 /* '2' */ &&
57
- c3 === 48 /* '0' */ &&
58
- (c4 === 99 || c4 === 67) /* 'c' or 'C' */ &&
59
- c5 === 48; /* '0' */
60
- if (!isPrefix)
61
- throw new Error('invalid tip20 address.');
62
- // The trailing 36 hex characters encode the token id big-endian.
63
- return BigInt(`0x${resolved.slice(tip20Prefix.length)}`);
64
- }
65
- /**
66
- * Converts a TIP-20 token ID to an address.
67
- *
68
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
69
- *
70
- * @example
71
- * ```ts twoslash
72
- * import { TokenId } from 'ox/tempo'
73
- *
74
- * const address = TokenId.toAddress(1n)
75
- * ```
76
- *
77
- * @param tokenId - The token ID.
78
- * @returns The address.
79
- */
80
- export function toAddress(tokenId) {
81
- if (typeof tokenId === 'string') {
82
- Address.assert(tokenId);
83
- return tokenId;
84
- }
85
- const tokenIdHex = Hex.fromNumber(tokenId, { size: 18 });
86
- return Hex.concat(tip20Prefix, tokenIdHex);
87
- }
88
- /**
89
- * Computes a deterministic TIP-20 token address from a sender address and salt.
90
- *
91
- * The address is computed as: `TIP20_PREFIX (12 bytes) || keccak256(abi.encode(sender, salt))[:8]`
92
- *
93
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
94
- *
95
- * @example
96
- * ```ts twoslash
97
- * import { TokenId } from 'ox/tempo'
98
- *
99
- * const id = TokenId.compute({
100
- * sender: '0x1234567890123456789012345678901234567890',
101
- * salt: '0x0000000000000000000000000000000000000000000000000000000000000001'
102
- * })
103
- * ```
104
- *
105
- * @param value - The sender address and salt.
106
- * @returns The computed TIP-20 token id.
107
- */
108
- export function compute(value) {
109
- // ABI encoding of (address, bytes32) is the 32-byte left-padded address
110
- // followed by the 32-byte salt. Build that 64-byte buffer directly and hash
111
- // it, instead of round-tripping through `AbiParameters.encode`.
112
- const buffer = new Uint8Array(64);
113
- const addressBytes = Bytes.fromHex(value.sender);
114
- buffer.set(addressBytes, 12);
115
- buffer.set(Bytes.fromHex(value.salt, { size: 32 }), 32);
116
- const hash = keccak_256(buffer);
117
- // First 8 bytes of the digest, big-endian.
118
- let id = 0n;
119
- for (let i = 0; i < 8; i++)
120
- id = (id << 8n) | BigInt(hash[i]);
121
- return id;
122
- }
123
- //# sourceMappingURL=TokenId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenId.js","sourceRoot":"","sources":["../../src/tempo/TokenId.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,KAAK,MAAM,kBAAkB,CAAA;AACzC,OAAO,KAAK,GAAG,MAAM,gBAAgB,CAAA;AAErC,MAAM,WAAW,GAAG,QAAQ,CAAA;AAK5B;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,IAAI,CAAC,gBAA2C;IAC9D,IACE,OAAO,gBAAgB,KAAK,QAAQ;QACpC,OAAO,gBAAgB,KAAK,QAAQ;QAEpC,OAAO,MAAM,CAAC,gBAAgB,CAAC,CAAA;IACjC,OAAO,WAAW,CAAC,gBAAgB,CAAC,CAAA;AACtC,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,WAAW,CAAC,OAAwB;IAClD,MAAM,QAAQ,GAAG,OAAO,CAAA;IACxB,2EAA2E;IAC3E,oEAAoE;IACpE,oBAAoB;IACpB,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;IACjC,MAAM,QAAQ,GACZ,EAAE,KAAK,EAAE,CAAC,SAAS;QACnB,EAAE,KAAK,EAAE,CAAC,SAAS;QACnB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,gBAAgB;QACzC,EAAE,KAAK,EAAE,CAAA,CAAC,SAAS;IACrB,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;IACxD,iEAAiE;IACjE,OAAO,MAAM,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAC1D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,SAAS,CAAC,OAAyB;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvB,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;IACxD,OAAO,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;AAC5C,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,KAAoB;IAC1C,wEAAwE;IACxE,4EAA4E;IAC5E,gEAAgE;IAChE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAA;IACjC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAChD,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;IAC5B,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;IACvD,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAA;IAC/B,2CAA2C;IAC3C,IAAI,EAAE,GAAG,EAAE,CAAA;IACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAE,CAAC,CAAA;IAC9D,OAAO,EAAE,CAAA;AACX,CAAC"}
@@ -1,6 +0,0 @@
1
- import * as z from 'zod/mini';
2
- /** TIP-20 token id schema (non-negative bigint). */
3
- export declare const TokenId: z.ZodMiniBigInt<bigint>;
4
- /** Codec decoding a TIP-20 token address into a token id. */
5
- export declare const address: z.ZodMiniCodec<z.ZodMiniTemplateLiteral<`0x${string}`>, z.ZodMiniBigInt<bigint>>;
6
- //# sourceMappingURL=TokenId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenId.d.ts","sourceRoot":"","sources":["../../../src/zod/tempo/TokenId.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,oDAAoD;AACpD,eAAO,MAAM,OAAO,yBAE2C,CAAA;AAE/D,6DAA6D;AAC7D,eAAO,MAAM,OAAO,kFAGlB,CAAA"}
@@ -1,14 +0,0 @@
1
- /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
- import * as core_TokenId from '../../tempo/TokenId.js';
3
- import * as z_Address from '../Address.js';
4
- import * as z from 'zod/mini';
5
- /** TIP-20 token id schema (non-negative bigint). */
6
- export const TokenId = z
7
- .bigint()
8
- .check(z.refine((value) => value >= 0n, 'expected token id'));
9
- /** Codec decoding a TIP-20 token address into a token id. */
10
- export const address = z.codec(z_Address.Address, TokenId, {
11
- decode: (value) => core_TokenId.fromAddress(value),
12
- encode: (value) => core_TokenId.toAddress(value),
13
- });
14
- //# sourceMappingURL=TokenId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"TokenId.js","sourceRoot":"","sources":["../../../src/zod/tempo/TokenId.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,OAAO,KAAK,YAAY,MAAM,wBAAwB,CAAA;AACtD,OAAO,KAAK,SAAS,MAAM,eAAe,CAAA;AAC1C,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,oDAAoD;AACpD,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC;KACrB,MAAM,EAAE;KACR,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAA;AAE/D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE;IACzD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC;IAClD,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;CACjD,CAAC,CAAA"}
@@ -1,36 +0,0 @@
1
- import { bench, describe } from 'vp/test'
2
- import * as TokenId from './TokenId.js'
3
-
4
- const sender = '0x1234567890123456789012345678901234567890' as const
5
- const salt =
6
- '0x0000000000000000000000000000000000000000000000000000000000000001' as const
7
-
8
- const tokenIdAddress = '0x20c0000000000000000000000000000000000001' as const
9
- const tokenIdBigInt = 1n
10
- const tokenIdLargeBigInt = 0xdeadbeefcafebabe1234n
11
-
12
- describe('TokenId.compute', () => {
13
- bench('hex sender', () => {
14
- TokenId.compute({ sender, salt })
15
- })
16
- })
17
-
18
- describe('TokenId.fromAddress', () => {
19
- bench('hex address', () => {
20
- TokenId.fromAddress(tokenIdAddress)
21
- })
22
- })
23
-
24
- describe('TokenId.toAddress', () => {
25
- bench('small bigint', () => {
26
- TokenId.toAddress(tokenIdBigInt)
27
- })
28
-
29
- bench('large bigint', () => {
30
- TokenId.toAddress(tokenIdLargeBigInt)
31
- })
32
-
33
- bench('hex address passthrough', () => {
34
- TokenId.toAddress(tokenIdAddress)
35
- })
36
- })
@@ -1,79 +0,0 @@
1
- import { Hex } from 'ox'
2
- import { TokenId } from 'ox/tempo'
3
- import { expect, test } from 'vp/test'
4
-
5
- test('from', () => {
6
- expect(TokenId.from(0n)).toBe(0n)
7
- expect(TokenId.from(0x1)).toBe(1n)
8
- expect(TokenId.from(0xdef)).toBe(0xdefn)
9
- expect(TokenId.from('0x20c0000000000000000000000000000000000000')).toBe(0n)
10
- expect(TokenId.from('0x20c0000000000000000000000000000000000001')).toBe(1n)
11
- expect(TokenId.from('0x20c0000000000000000000000000000000000def')).toBe(
12
- 0xdefn,
13
- )
14
- })
15
-
16
- test('fromAddress', () => {
17
- expect(
18
- TokenId.fromAddress('0x20c0000000000000000000000000000000000000'),
19
- ).toBe(0n)
20
- expect(
21
- TokenId.fromAddress('0x20c0000000000000000000000000000000000001'),
22
- ).toBe(1n)
23
- expect(
24
- TokenId.fromAddress('0x20c0000000000000000000000000000000000def'),
25
- ).toBe(0xdefn)
26
- })
27
-
28
- test('toAddress', () => {
29
- expect(TokenId.toAddress(0n)).toBe(
30
- '0x20c0000000000000000000000000000000000000',
31
- )
32
- expect(TokenId.toAddress('0x20c0000000000000000000000000000000000000')).toBe(
33
- '0x20c0000000000000000000000000000000000000',
34
- )
35
- expect(TokenId.toAddress(1n)).toBe(
36
- '0x20c0000000000000000000000000000000000001',
37
- )
38
- expect(TokenId.toAddress(0xdefn)).toBe(
39
- '0x20c0000000000000000000000000000000000def',
40
- )
41
- })
42
-
43
- test('compute', () => {
44
- const sender = '0x1234567890123456789012345678901234567890'
45
- const salt1 =
46
- '0x0000000000000000000000000000000000000000000000000000000000000001'
47
- const salt2 =
48
- '0x0000000000000000000000000000000000000000000000000000000000000002'
49
-
50
- const id1 = TokenId.compute({ sender, salt: salt1 })
51
- const id2 = TokenId.compute({ sender, salt: salt2 })
52
- const address1 = TokenId.toAddress(id1)
53
- const address2 = TokenId.toAddress(id2)
54
-
55
- // deterministic: same inputs produce same output
56
- expect(TokenId.compute({ sender, salt: salt1 })).toBe(id1)
57
-
58
- // different salts produce different addresses
59
- expect(address1).not.toBe(address2)
60
-
61
- // address suffix matches id
62
- expect(Hex.slice(address1, 12)).toBe(Hex.fromNumber(id1, { size: 8 }))
63
-
64
- // addresses have TIP-20 prefix (0x20c0 followed by zeroes for 12 bytes total)
65
- expect(address1.toLowerCase().startsWith('0x20c000000000000000000000')).toBe(
66
- true,
67
- )
68
- expect(address2.toLowerCase().startsWith('0x20c000000000000000000000')).toBe(
69
- true,
70
- )
71
-
72
- // addresses are 20 bytes (40 hex chars + 0x prefix)
73
- expect(address1.length).toBe(42)
74
-
75
- // different senders produce different addresses
76
- const otherSender = '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd'
77
- const address3 = TokenId.compute({ sender: otherSender, salt: salt1 })
78
- expect(address3).not.toBe(address1)
79
- })
@@ -1,141 +0,0 @@
1
- import { keccak_256 } from '@noble/hashes/sha3.js'
2
- import * as Address from '../core/Address.js'
3
- import * as Bytes from '../core/Bytes.js'
4
- import * as Hex from '../core/Hex.js'
5
-
6
- const tip20Prefix = '0x20c0'
7
-
8
- export type TokenId = bigint
9
- export type TokenIdOrAddress = TokenId | Address.Address
10
-
11
- /**
12
- * Converts a token ID or address to a token ID.
13
- *
14
- * TIP-20 is Tempo's native token standard for stablecoins with deterministic addresses
15
- * derived from sequential token IDs (prefix `0x20c0`).
16
- *
17
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
18
- *
19
- * @example
20
- * ```ts twoslash
21
- * import { TokenId } from 'ox/tempo'
22
- *
23
- * const tokenId = TokenId.from(1n)
24
- * ```
25
- *
26
- * @param tokenIdOrAddress - The token ID or address.
27
- * @returns The token ID.
28
- */
29
- export function from(tokenIdOrAddress: TokenIdOrAddress | number): TokenId {
30
- if (
31
- typeof tokenIdOrAddress === 'bigint' ||
32
- typeof tokenIdOrAddress === 'number'
33
- )
34
- return BigInt(tokenIdOrAddress)
35
- return fromAddress(tokenIdOrAddress)
36
- }
37
-
38
- /**
39
- * Converts a TIP-20 token address to a token ID.
40
- *
41
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
42
- *
43
- * @example
44
- * ```ts twoslash
45
- * import { TokenId } from 'ox/tempo'
46
- *
47
- * const tokenId = TokenId.fromAddress(
48
- * '0x20c0000000000000000000000000000000000001'
49
- * )
50
- * ```
51
- *
52
- * @param address - The token address.
53
- * @returns The token ID.
54
- */
55
- export function fromAddress(address: Address.Address): TokenId {
56
- const resolved = address
57
- // The TIP-20 prefix check is case-insensitive, but most inputs are already
58
- // lowercase, so peek the prefix bytes before falling back to a full
59
- // `.toLowerCase()`.
60
- const c2 = resolved.charCodeAt(2)
61
- const c3 = resolved.charCodeAt(3)
62
- const c4 = resolved.charCodeAt(4)
63
- const c5 = resolved.charCodeAt(5)
64
- const isPrefix =
65
- c2 === 50 /* '2' */ &&
66
- c3 === 48 /* '0' */ &&
67
- (c4 === 99 || c4 === 67) /* 'c' or 'C' */ &&
68
- c5 === 48 /* '0' */
69
- if (!isPrefix) throw new Error('invalid tip20 address.')
70
- // The trailing 36 hex characters encode the token id big-endian.
71
- return BigInt(`0x${resolved.slice(tip20Prefix.length)}`)
72
- }
73
-
74
- /**
75
- * Converts a TIP-20 token ID to an address.
76
- *
77
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
78
- *
79
- * @example
80
- * ```ts twoslash
81
- * import { TokenId } from 'ox/tempo'
82
- *
83
- * const address = TokenId.toAddress(1n)
84
- * ```
85
- *
86
- * @param tokenId - The token ID.
87
- * @returns The address.
88
- */
89
- export function toAddress(tokenId: TokenIdOrAddress): Address.Address {
90
- if (typeof tokenId === 'string') {
91
- Address.assert(tokenId)
92
- return tokenId
93
- }
94
-
95
- const tokenIdHex = Hex.fromNumber(tokenId, { size: 18 })
96
- return Hex.concat(tip20Prefix, tokenIdHex)
97
- }
98
-
99
- /**
100
- * Computes a deterministic TIP-20 token address from a sender address and salt.
101
- *
102
- * The address is computed as: `TIP20_PREFIX (12 bytes) || keccak256(abi.encode(sender, salt))[:8]`
103
- *
104
- * [TIP-20 Token Standard](https://docs.tempo.xyz/protocol/tip20/overview)
105
- *
106
- * @example
107
- * ```ts twoslash
108
- * import { TokenId } from 'ox/tempo'
109
- *
110
- * const id = TokenId.compute({
111
- * sender: '0x1234567890123456789012345678901234567890',
112
- * salt: '0x0000000000000000000000000000000000000000000000000000000000000001'
113
- * })
114
- * ```
115
- *
116
- * @param value - The sender address and salt.
117
- * @returns The computed TIP-20 token id.
118
- */
119
- export function compute(value: compute.Value): bigint {
120
- // ABI encoding of (address, bytes32) is the 32-byte left-padded address
121
- // followed by the 32-byte salt. Build that 64-byte buffer directly and hash
122
- // it, instead of round-tripping through `AbiParameters.encode`.
123
- const buffer = new Uint8Array(64)
124
- const addressBytes = Bytes.fromHex(value.sender)
125
- buffer.set(addressBytes, 12)
126
- buffer.set(Bytes.fromHex(value.salt, { size: 32 }), 32)
127
- const hash = keccak_256(buffer)
128
- // First 8 bytes of the digest, big-endian.
129
- let id = 0n
130
- for (let i = 0; i < 8; i++) id = (id << 8n) | BigInt(hash[i]!)
131
- return id
132
- }
133
-
134
- export declare namespace compute {
135
- export type Value = {
136
- /** The salt (32 bytes). */
137
- salt: Hex.Hex
138
- /** The sender address. */
139
- sender: Address.Address
140
- }
141
- }
@@ -1,15 +0,0 @@
1
- /* eslint-disable jsdoc-js/require-jsdoc, jsdoc-js/require-description, jsdoc-js/require-example */
2
- import * as core_TokenId from '../../tempo/TokenId.js'
3
- import * as z_Address from '../Address.js'
4
- import * as z from 'zod/mini'
5
-
6
- /** TIP-20 token id schema (non-negative bigint). */
7
- export const TokenId = z
8
- .bigint()
9
- .check(z.refine((value) => value >= 0n, 'expected token id'))
10
-
11
- /** Codec decoding a TIP-20 token address into a token id. */
12
- export const address = z.codec(z_Address.Address, TokenId, {
13
- decode: (value) => core_TokenId.fromAddress(value),
14
- encode: (value) => core_TokenId.toAddress(value),
15
- })