ox 0.0.1 → 0.1.0

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 (756) hide show
  1. package/Abi/package.json +6 -0
  2. package/Abi.ts +163 -0
  3. package/AbiConstructor/package.json +6 -0
  4. package/AbiConstructor.ts +413 -0
  5. package/AbiError/package.json +6 -0
  6. package/AbiError.ts +719 -0
  7. package/AbiEvent/package.json +6 -0
  8. package/AbiEvent.ts +1284 -0
  9. package/AbiFunction/package.json +6 -0
  10. package/AbiFunction.ts +813 -0
  11. package/AbiItem/package.json +6 -0
  12. package/AbiItem.ts +779 -0
  13. package/AbiParameters/package.json +6 -0
  14. package/AbiParameters.ts +712 -0
  15. package/AccessList/package.json +6 -0
  16. package/AccessList.ts +124 -0
  17. package/AccountProof/package.json +6 -0
  18. package/AccountProof.ts +35 -0
  19. package/Address/package.json +6 -0
  20. package/Address.ts +359 -0
  21. package/AesGcm/package.json +6 -0
  22. package/AesGcm.ts +220 -0
  23. package/Authorization/package.json +6 -0
  24. package/Authorization.ts +639 -0
  25. package/Base58/package.json +6 -0
  26. package/Base58.ts +180 -0
  27. package/Base64/package.json +6 -0
  28. package/Base64.ts +333 -0
  29. package/Blobs/package.json +6 -0
  30. package/Blobs.ts +982 -0
  31. package/Block/package.json +6 -0
  32. package/Block.ts +317 -0
  33. package/Bloom/package.json +6 -0
  34. package/Bloom.ts +80 -0
  35. package/Bls/package.json +6 -0
  36. package/Bls.ts +496 -0
  37. package/BlsPoint/package.json +6 -0
  38. package/BlsPoint.ts +232 -0
  39. package/Bytes/package.json +6 -0
  40. package/Bytes.ts +963 -0
  41. package/CHANGELOG.md +7 -0
  42. package/Caches/package.json +6 -0
  43. package/Caches.ts +21 -0
  44. package/ContractAddress/package.json +6 -0
  45. package/ContractAddress.ts +181 -0
  46. package/Ens/package.json +6 -0
  47. package/Ens.ts +116 -0
  48. package/Errors/package.json +6 -0
  49. package/Errors.ts +95 -0
  50. package/Fee/package.json +6 -0
  51. package/Fee.ts +57 -0
  52. package/Filter/package.json +6 -0
  53. package/Filter.ts +144 -0
  54. package/Hash/package.json +6 -0
  55. package/Hash.ts +210 -0
  56. package/HdKey/package.json +6 -0
  57. package/HdKey.ts +175 -0
  58. package/Hex/package.json +6 -0
  59. package/Hex.ts +1040 -0
  60. package/Json/package.json +6 -0
  61. package/Json.ts +84 -0
  62. package/Kzg/package.json +6 -0
  63. package/Kzg.ts +51 -0
  64. package/LICENSE +21 -0
  65. package/Log/package.json +6 -0
  66. package/Log.ts +248 -0
  67. package/Mnemonic/package.json +6 -0
  68. package/Mnemonic.ts +249 -0
  69. package/P256/package.json +6 -0
  70. package/P256.ts +230 -0
  71. package/PersonalMessage/package.json +6 -0
  72. package/PersonalMessage.ts +70 -0
  73. package/Provider/package.json +6 -0
  74. package/Provider.ts +354 -0
  75. package/PublicKey/package.json +6 -0
  76. package/PublicKey.ts +545 -0
  77. package/README.md +75 -26
  78. package/Rlp/package.json +6 -0
  79. package/Rlp.ts +390 -0
  80. package/RpcRequest/package.json +6 -0
  81. package/RpcRequest.ts +192 -0
  82. package/RpcResponse/package.json +6 -0
  83. package/RpcResponse.ts +389 -0
  84. package/RpcSchema/package.json +6 -0
  85. package/RpcSchema.ts +273 -0
  86. package/RpcTransport/package.json +6 -0
  87. package/RpcTransport.ts +198 -0
  88. package/Secp256k1/package.json +6 -0
  89. package/Secp256k1.ts +304 -0
  90. package/Signature/package.json +6 -0
  91. package/Signature.ts +909 -0
  92. package/Siwe/package.json +6 -0
  93. package/Siwe.ts +516 -0
  94. package/Solidity/package.json +6 -0
  95. package/Solidity.ts +109 -0
  96. package/Transaction/package.json +6 -0
  97. package/Transaction.ts +429 -0
  98. package/TransactionEnvelope/package.json +6 -0
  99. package/TransactionEnvelope.ts +205 -0
  100. package/TransactionEnvelopeEip1559/package.json +6 -0
  101. package/TransactionEnvelopeEip1559.ts +656 -0
  102. package/TransactionEnvelopeEip2930/package.json +6 -0
  103. package/TransactionEnvelopeEip2930.ts +624 -0
  104. package/TransactionEnvelopeEip4844/package.json +6 -0
  105. package/TransactionEnvelopeEip4844.ts +764 -0
  106. package/TransactionEnvelopeEip7702/package.json +6 -0
  107. package/TransactionEnvelopeEip7702.ts +639 -0
  108. package/TransactionEnvelopeLegacy/package.json +6 -0
  109. package/TransactionEnvelopeLegacy.ts +674 -0
  110. package/TransactionReceipt/package.json +6 -0
  111. package/TransactionReceipt.ts +341 -0
  112. package/TransactionRequest/package.json +6 -0
  113. package/TransactionRequest.ts +151 -0
  114. package/TypedData/package.json +6 -0
  115. package/TypedData.ts +931 -0
  116. package/ValidatorData/package.json +6 -0
  117. package/ValidatorData.ts +87 -0
  118. package/Value/package.json +6 -0
  119. package/Value.ts +242 -0
  120. package/WebAuthnP256/package.json +6 -0
  121. package/WebAuthnP256.ts +803 -0
  122. package/WebCryptoP256/package.json +6 -0
  123. package/WebCryptoP256.ts +190 -0
  124. package/Withdrawal/package.json +6 -0
  125. package/Withdrawal.ts +95 -0
  126. package/_cjs/Abi.js +17 -0
  127. package/_cjs/Abi.js.map +1 -0
  128. package/_cjs/AbiConstructor.js +42 -0
  129. package/_cjs/AbiConstructor.js.map +1 -0
  130. package/_cjs/AbiError.js +98 -0
  131. package/_cjs/AbiError.js.map +1 -0
  132. package/_cjs/AbiEvent.js +338 -0
  133. package/_cjs/AbiEvent.js.map +1 -0
  134. package/_cjs/AbiFunction.js +85 -0
  135. package/_cjs/AbiFunction.js.map +1 -0
  136. package/_cjs/AbiItem.js +180 -0
  137. package/_cjs/AbiItem.js.map +1 -0
  138. package/_cjs/AbiParameters.js +229 -0
  139. package/_cjs/AbiParameters.js.map +1 -0
  140. package/_cjs/AccessList.js +51 -0
  141. package/_cjs/AccessList.js.map +1 -0
  142. package/_cjs/AccountProof.js +3 -0
  143. package/_cjs/AccountProof.js.map +1 -0
  144. package/_cjs/Address.js +121 -0
  145. package/_cjs/Address.js.map +1 -0
  146. package/_cjs/AesGcm.js +55 -0
  147. package/_cjs/AesGcm.js.map +1 -0
  148. package/_cjs/Authorization.js +99 -0
  149. package/_cjs/Authorization.js.map +1 -0
  150. package/_cjs/Base58.js +52 -0
  151. package/_cjs/Base58.js.map +1 -0
  152. package/_cjs/Base64.js +76 -0
  153. package/_cjs/Base64.js.map +1 -0
  154. package/_cjs/Blobs.js +255 -0
  155. package/_cjs/Blobs.js.map +1 -0
  156. package/_cjs/Block.js +87 -0
  157. package/_cjs/Block.js.map +1 -0
  158. package/_cjs/Bloom.js +23 -0
  159. package/_cjs/Bloom.js.map +1 -0
  160. package/_cjs/Bls.js +79 -0
  161. package/_cjs/Bls.js.map +1 -0
  162. package/_cjs/BlsPoint.js +32 -0
  163. package/_cjs/BlsPoint.js.map +1 -0
  164. package/_cjs/Bytes.js +279 -0
  165. package/_cjs/Bytes.js.map +1 -0
  166. package/_cjs/Caches.js +14 -0
  167. package/_cjs/Caches.js.map +1 -0
  168. package/_cjs/ContractAddress.js +39 -0
  169. package/_cjs/ContractAddress.js.map +1 -0
  170. package/_cjs/Ens.js +37 -0
  171. package/_cjs/Ens.js.map +1 -0
  172. package/_cjs/Errors.js +99 -0
  173. package/_cjs/Errors.js.map +1 -0
  174. package/_cjs/Fee.js +3 -0
  175. package/_cjs/Fee.js.map +1 -0
  176. package/_cjs/Filter.js +43 -0
  177. package/_cjs/Filter.js.map +1 -0
  178. package/_cjs/Hash.js +40 -0
  179. package/_cjs/Hash.js.map +1 -0
  180. package/_cjs/HdKey.js +30 -0
  181. package/_cjs/HdKey.js.map +1 -0
  182. package/_cjs/Hex.js +324 -0
  183. package/_cjs/Hex.js.map +1 -0
  184. package/_cjs/Json.js +25 -0
  185. package/_cjs/Json.js.map +1 -0
  186. package/_cjs/Kzg.js +14 -0
  187. package/_cjs/Kzg.js.map +1 -0
  188. package/_cjs/Log.js +35 -0
  189. package/_cjs/Log.js.map +1 -0
  190. package/_cjs/Mnemonic.js +56 -0
  191. package/_cjs/Mnemonic.js.map +1 -0
  192. package/_cjs/P256.js +52 -0
  193. package/_cjs/P256.js.map +1 -0
  194. package/_cjs/PersonalMessage.js +16 -0
  195. package/_cjs/PersonalMessage.js.map +1 -0
  196. package/_cjs/Provider.js +90 -0
  197. package/_cjs/Provider.js.map +1 -0
  198. package/_cjs/PublicKey.js +192 -0
  199. package/_cjs/PublicKey.js.map +1 -0
  200. package/_cjs/Rlp.js +179 -0
  201. package/_cjs/Rlp.js.map +1 -0
  202. package/_cjs/RpcRequest.js +27 -0
  203. package/_cjs/RpcRequest.js.map +1 -0
  204. package/_cjs/RpcResponse.js +368 -0
  205. package/_cjs/RpcResponse.js.map +1 -0
  206. package/_cjs/RpcSchema.js +7 -0
  207. package/_cjs/RpcSchema.js.map +1 -0
  208. package/_cjs/RpcTransport.js +95 -0
  209. package/_cjs/RpcTransport.js.map +1 -0
  210. package/_cjs/Secp256k1.js +57 -0
  211. package/_cjs/Secp256k1.js.map +1 -0
  212. package/_cjs/Signature.js +305 -0
  213. package/_cjs/Signature.js.map +1 -0
  214. package/_cjs/Siwe.js +231 -0
  215. package/_cjs/Siwe.js.map +1 -0
  216. package/_cjs/Solidity.js +104 -0
  217. package/_cjs/Solidity.js.map +1 -0
  218. package/_cjs/Transaction.js +106 -0
  219. package/_cjs/Transaction.js.map +1 -0
  220. package/_cjs/TransactionEnvelope.js +80 -0
  221. package/_cjs/TransactionEnvelope.js.map +1 -0
  222. package/_cjs/TransactionEnvelopeEip1559.js +182 -0
  223. package/_cjs/TransactionEnvelopeEip1559.js.map +1 -0
  224. package/_cjs/TransactionEnvelopeEip2930.js +166 -0
  225. package/_cjs/TransactionEnvelopeEip2930.js.map +1 -0
  226. package/_cjs/TransactionEnvelopeEip4844.js +224 -0
  227. package/_cjs/TransactionEnvelopeEip4844.js.map +1 -0
  228. package/_cjs/TransactionEnvelopeEip7702.js +156 -0
  229. package/_cjs/TransactionEnvelopeEip7702.js.map +1 -0
  230. package/_cjs/TransactionEnvelopeLegacy.js +221 -0
  231. package/_cjs/TransactionEnvelopeLegacy.js.map +1 -0
  232. package/_cjs/TransactionReceipt.js +76 -0
  233. package/_cjs/TransactionReceipt.js.map +1 -0
  234. package/_cjs/TransactionRequest.js +51 -0
  235. package/_cjs/TransactionRequest.js.map +1 -0
  236. package/_cjs/TypedData.js +318 -0
  237. package/_cjs/TypedData.js.map +1 -0
  238. package/_cjs/ValidatorData.js +16 -0
  239. package/_cjs/ValidatorData.js.map +1 -0
  240. package/_cjs/Value.js +96 -0
  241. package/_cjs/Value.js.map +1 -0
  242. package/_cjs/WebAuthnP256.js +245 -0
  243. package/_cjs/WebAuthnP256.js.map +1 -0
  244. package/_cjs/WebCryptoP256.js +46 -0
  245. package/_cjs/WebCryptoP256.js.map +1 -0
  246. package/_cjs/Withdrawal.js +24 -0
  247. package/_cjs/Withdrawal.js.map +1 -0
  248. package/_cjs/index.js +66 -0
  249. package/_cjs/index.js.map +1 -0
  250. package/_cjs/internal/abi.js +11 -0
  251. package/_cjs/internal/abi.js.map +1 -0
  252. package/_cjs/internal/abiConstructor.js +3 -0
  253. package/_cjs/internal/abiConstructor.js.map +1 -0
  254. package/_cjs/internal/abiError.js +3 -0
  255. package/_cjs/internal/abiError.js.map +1 -0
  256. package/_cjs/internal/abiEvent.js +3 -0
  257. package/_cjs/internal/abiEvent.js.map +1 -0
  258. package/_cjs/internal/abiFunction.js +3 -0
  259. package/_cjs/internal/abiFunction.js.map +1 -0
  260. package/_cjs/internal/abiItem.js +110 -0
  261. package/_cjs/internal/abiItem.js.map +1 -0
  262. package/_cjs/internal/abiParameters.js +376 -0
  263. package/_cjs/internal/abiParameters.js.map +1 -0
  264. package/_cjs/internal/base58.js +89 -0
  265. package/_cjs/internal/base58.js.map +1 -0
  266. package/_cjs/internal/bytes.js +88 -0
  267. package/_cjs/internal/bytes.js.map +1 -0
  268. package/_cjs/internal/cursor.js +210 -0
  269. package/_cjs/internal/cursor.js.map +1 -0
  270. package/_cjs/internal/ens.js +43 -0
  271. package/_cjs/internal/ens.js.map +1 -0
  272. package/_cjs/internal/errors.js +28 -0
  273. package/_cjs/internal/errors.js.map +1 -0
  274. package/_cjs/internal/hdKey.js +19 -0
  275. package/_cjs/internal/hdKey.js.map +1 -0
  276. package/_cjs/internal/hex.js +66 -0
  277. package/_cjs/internal/hex.js.map +1 -0
  278. package/_cjs/internal/lru.js +34 -0
  279. package/_cjs/internal/lru.js.map +1 -0
  280. package/_cjs/internal/mnemonic/wordlists.js +24 -0
  281. package/_cjs/internal/mnemonic/wordlists.js.map +1 -0
  282. package/_cjs/internal/promise.js +49 -0
  283. package/_cjs/internal/promise.js.map +1 -0
  284. package/_cjs/internal/register.js +3 -0
  285. package/_cjs/internal/register.js.map +1 -0
  286. package/_cjs/internal/rpcSchema.js +3 -0
  287. package/_cjs/internal/rpcSchema.js.map +1 -0
  288. package/_cjs/internal/rpcSchemas/eth.js +3 -0
  289. package/_cjs/internal/rpcSchemas/eth.js.map +1 -0
  290. package/_cjs/internal/rpcSchemas/wallet.js +3 -0
  291. package/_cjs/internal/rpcSchemas/wallet.js.map +1 -0
  292. package/_cjs/internal/rpcTransport.js +19 -0
  293. package/_cjs/internal/rpcTransport.js.map +1 -0
  294. package/_cjs/internal/types.js +3 -0
  295. package/_cjs/internal/types.js.map +1 -0
  296. package/_cjs/internal/uid.js +17 -0
  297. package/_cjs/internal/uid.js.map +1 -0
  298. package/_cjs/internal/webauthn.js +28 -0
  299. package/_cjs/internal/webauthn.js.map +1 -0
  300. package/_cjs/package.json +1 -0
  301. package/_cjs/trusted-setups/Paths.js +6 -0
  302. package/_cjs/trusted-setups/Paths.js.map +1 -0
  303. package/_cjs/trusted-setups/index.js +5 -0
  304. package/_cjs/trusted-setups/index.js.map +1 -0
  305. package/_cjs/trusted-setups/internal/paths.js +11 -0
  306. package/_cjs/trusted-setups/internal/paths.js.map +1 -0
  307. package/_cjs/version.js +5 -0
  308. package/_cjs/version.js.map +1 -0
  309. package/_cjs/window/index.js +3 -0
  310. package/_cjs/window/index.js.map +1 -0
  311. package/_esm/Abi.js +19 -0
  312. package/_esm/Abi.js.map +1 -0
  313. package/_esm/AbiConstructor.js +102 -0
  314. package/_esm/AbiConstructor.js.map +1 -0
  315. package/_esm/AbiError.js +364 -0
  316. package/_esm/AbiError.js.map +1 -0
  317. package/_esm/AbiEvent.js +1038 -0
  318. package/_esm/AbiEvent.js.map +1 -0
  319. package/_esm/AbiFunction.js +549 -0
  320. package/_esm/AbiFunction.js.map +1 -0
  321. package/_esm/AbiItem.js +574 -0
  322. package/_esm/AbiItem.js.map +1 -0
  323. package/_esm/AbiParameters.js +543 -0
  324. package/_esm/AbiParameters.js.map +1 -0
  325. package/_esm/AccessList.js +105 -0
  326. package/_esm/AccessList.js.map +1 -0
  327. package/_esm/AccountProof.js +2 -0
  328. package/_esm/AccountProof.js.map +1 -0
  329. package/_esm/Address.js +268 -0
  330. package/_esm/Address.js.map +1 -0
  331. package/_esm/AesGcm.js +124 -0
  332. package/_esm/AesGcm.js.map +1 -0
  333. package/_esm/Authorization.js +441 -0
  334. package/_esm/Authorization.js.map +1 -0
  335. package/_esm/Base58.js +142 -0
  336. package/_esm/Base58.js.map +1 -0
  337. package/_esm/Base64.js +236 -0
  338. package/_esm/Base64.js.map +1 -0
  339. package/_esm/Blobs.js +624 -0
  340. package/_esm/Blobs.js.map +1 -0
  341. package/_esm/Block.js +177 -0
  342. package/_esm/Block.js.map +1 -0
  343. package/_esm/Bloom.js +57 -0
  344. package/_esm/Bloom.js.map +1 -0
  345. package/_esm/Bls.js +141 -0
  346. package/_esm/Bls.js.map +1 -0
  347. package/_esm/BlsPoint.js +59 -0
  348. package/_esm/BlsPoint.js.map +1 -0
  349. package/_esm/Bytes.js +719 -0
  350. package/_esm/Bytes.js.map +1 -0
  351. package/_esm/Caches.js +19 -0
  352. package/_esm/Caches.js.map +1 -0
  353. package/_esm/ContractAddress.js +110 -0
  354. package/_esm/ContractAddress.js.map +1 -0
  355. package/_esm/Ens.js +84 -0
  356. package/_esm/Ens.js.map +1 -0
  357. package/_esm/Errors.js +105 -0
  358. package/_esm/Errors.js.map +1 -0
  359. package/_esm/Fee.js +2 -0
  360. package/_esm/Fee.js.map +1 -0
  361. package/_esm/Filter.js +100 -0
  362. package/_esm/Filter.js.map +1 -0
  363. package/_esm/Hash.js +126 -0
  364. package/_esm/Hash.js.map +1 -0
  365. package/_esm/HdKey.js +107 -0
  366. package/_esm/HdKey.js.map +1 -0
  367. package/_esm/Hex.js +763 -0
  368. package/_esm/Hex.js.map +1 -0
  369. package/_esm/Json.js +62 -0
  370. package/_esm/Json.js.map +1 -0
  371. package/_esm/Kzg.js +30 -0
  372. package/_esm/Kzg.js.map +1 -0
  373. package/_esm/Log.js +181 -0
  374. package/_esm/Log.js.map +1 -0
  375. package/_esm/Mnemonic.js +154 -0
  376. package/_esm/Mnemonic.js.map +1 -0
  377. package/_esm/P256.js +131 -0
  378. package/_esm/P256.js.map +1 -0
  379. package/_esm/PersonalMessage.js +46 -0
  380. package/_esm/PersonalMessage.js.map +1 -0
  381. package/_esm/Provider.js +122 -0
  382. package/_esm/Provider.js.map +1 -0
  383. package/_esm/PublicKey.js +395 -0
  384. package/_esm/PublicKey.js.map +1 -0
  385. package/_esm/Rlp.js +267 -0
  386. package/_esm/Rlp.js.map +1 -0
  387. package/_esm/RpcRequest.js +131 -0
  388. package/_esm/RpcRequest.js.map +1 -0
  389. package/_esm/RpcResponse.js +457 -0
  390. package/_esm/RpcResponse.js.map +1 -0
  391. package/_esm/RpcSchema.js +46 -0
  392. package/_esm/RpcSchema.js.map +1 -0
  393. package/_esm/RpcTransport.js +110 -0
  394. package/_esm/RpcTransport.js.map +1 -0
  395. package/_esm/Secp256k1.js +173 -0
  396. package/_esm/Secp256k1.js.map +1 -0
  397. package/_esm/Signature.js +696 -0
  398. package/_esm/Signature.js.map +1 -0
  399. package/_esm/Siwe.js +374 -0
  400. package/_esm/Siwe.js.map +1 -0
  401. package/_esm/Solidity.js +104 -0
  402. package/_esm/Solidity.js.map +1 -0
  403. package/_esm/Transaction.js +176 -0
  404. package/_esm/Transaction.js.map +1 -0
  405. package/_esm/TransactionEnvelope.js +139 -0
  406. package/_esm/TransactionEnvelope.js.map +1 -0
  407. package/_esm/TransactionEnvelopeEip1559.js +455 -0
  408. package/_esm/TransactionEnvelopeEip1559.js.map +1 -0
  409. package/_esm/TransactionEnvelopeEip2930.js +439 -0
  410. package/_esm/TransactionEnvelopeEip2930.js.map +1 -0
  411. package/_esm/TransactionEnvelopeEip4844.js +542 -0
  412. package/_esm/TransactionEnvelopeEip4844.js.map +1 -0
  413. package/_esm/TransactionEnvelopeEip7702.js +442 -0
  414. package/_esm/TransactionEnvelopeEip7702.js.map +1 -0
  415. package/_esm/TransactionEnvelopeLegacy.js +495 -0
  416. package/_esm/TransactionEnvelopeLegacy.js.map +1 -0
  417. package/_esm/TransactionReceipt.js +229 -0
  418. package/_esm/TransactionReceipt.js.map +1 -0
  419. package/_esm/TransactionRequest.js +89 -0
  420. package/_esm/TransactionRequest.js.map +1 -0
  421. package/_esm/TypedData.js +635 -0
  422. package/_esm/TypedData.js.map +1 -0
  423. package/_esm/ValidatorData.js +52 -0
  424. package/_esm/ValidatorData.js.map +1 -0
  425. package/_esm/Value.js +196 -0
  426. package/_esm/Value.js.map +1 -0
  427. package/_esm/WebAuthnP256.js +471 -0
  428. package/_esm/WebAuthnP256.js.map +1 -0
  429. package/_esm/WebCryptoP256.js +116 -0
  430. package/_esm/WebCryptoP256.js.map +1 -0
  431. package/_esm/Withdrawal.js +72 -0
  432. package/_esm/Withdrawal.js.map +1 -0
  433. package/_esm/index.js +3366 -0
  434. package/_esm/index.js.map +1 -0
  435. package/_esm/internal/abi.js +9 -0
  436. package/_esm/internal/abi.js.map +1 -0
  437. package/_esm/internal/abiConstructor.js +2 -0
  438. package/_esm/internal/abiConstructor.js.map +1 -0
  439. package/_esm/internal/abiError.js +2 -0
  440. package/_esm/internal/abiError.js.map +1 -0
  441. package/_esm/internal/abiEvent.js +2 -0
  442. package/_esm/internal/abiEvent.js.map +1 -0
  443. package/_esm/internal/abiFunction.js +2 -0
  444. package/_esm/internal/abiFunction.js.map +1 -0
  445. package/_esm/internal/abiItem.js +122 -0
  446. package/_esm/internal/abiItem.js.map +1 -0
  447. package/_esm/internal/abiParameters.js +419 -0
  448. package/_esm/internal/abiParameters.js.map +1 -0
  449. package/_esm/internal/base58.js +91 -0
  450. package/_esm/internal/base58.js.map +1 -0
  451. package/_esm/internal/bytes.js +86 -0
  452. package/_esm/internal/bytes.js.map +1 -0
  453. package/_esm/internal/cursor.js +207 -0
  454. package/_esm/internal/cursor.js.map +1 -0
  455. package/_esm/internal/ens.js +47 -0
  456. package/_esm/internal/ens.js.map +1 -0
  457. package/_esm/internal/errors.js +26 -0
  458. package/_esm/internal/errors.js.map +1 -0
  459. package/_esm/internal/hdKey.js +17 -0
  460. package/_esm/internal/hdKey.js.map +1 -0
  461. package/_esm/internal/hex.js +64 -0
  462. package/_esm/internal/hex.js.map +1 -0
  463. package/_esm/internal/lru.js +36 -0
  464. package/_esm/internal/lru.js.map +1 -0
  465. package/_esm/internal/mnemonic/wordlists.js +11 -0
  466. package/_esm/internal/mnemonic/wordlists.js.map +1 -0
  467. package/_esm/internal/promise.js +52 -0
  468. package/_esm/internal/promise.js.map +1 -0
  469. package/_esm/internal/register.js +2 -0
  470. package/_esm/internal/register.js.map +1 -0
  471. package/_esm/internal/rpcSchema.js +2 -0
  472. package/_esm/internal/rpcSchema.js.map +1 -0
  473. package/_esm/internal/rpcSchemas/eth.js +2 -0
  474. package/_esm/internal/rpcSchemas/eth.js.map +1 -0
  475. package/_esm/internal/rpcSchemas/wallet.js +2 -0
  476. package/_esm/internal/rpcSchemas/wallet.js.map +1 -0
  477. package/_esm/internal/rpcTransport.js +20 -0
  478. package/_esm/internal/rpcTransport.js.map +1 -0
  479. package/_esm/internal/types.js +2 -0
  480. package/_esm/internal/types.js.map +1 -0
  481. package/_esm/internal/uid.js +15 -0
  482. package/_esm/internal/uid.js.map +1 -0
  483. package/_esm/internal/webauthn.js +35 -0
  484. package/_esm/internal/webauthn.js.map +1 -0
  485. package/_esm/package.json +1 -0
  486. package/_esm/trusted-setups/Paths.js +3 -0
  487. package/_esm/trusted-setups/Paths.js.map +1 -0
  488. package/_esm/trusted-setups/index.js +2 -0
  489. package/_esm/trusted-setups/index.js.map +1 -0
  490. package/_esm/trusted-setups/internal/paths.js +12 -0
  491. package/_esm/trusted-setups/internal/paths.js.map +1 -0
  492. package/_esm/version.js +3 -0
  493. package/_esm/version.js.map +1 -0
  494. package/_esm/window/index.js +2 -0
  495. package/_esm/window/index.js.map +1 -0
  496. package/_test/Abi.test-d/package.json +6 -0
  497. package/_test/AbiConstructor.test-d/package.json +6 -0
  498. package/_test/AbiError.test-d/package.json +6 -0
  499. package/_test/AbiEvent.snap-d/package.json +6 -0
  500. package/_test/AbiEvent.snap-d.ts +329 -0
  501. package/_test/AbiFunction.snap-d/package.json +6 -0
  502. package/_test/AbiFunction.snap-d.ts +262 -0
  503. package/_test/AbiItem.snap-d/package.json +6 -0
  504. package/_test/AbiItem.snap-d.ts +131 -0
  505. package/_test/AbiParameters.bench/package.json +6 -0
  506. package/_test/AbiParameters.snap-d/package.json +6 -0
  507. package/_test/AbiParameters.snap-d.ts +66 -0
  508. package/_test/Address.bench/package.json +6 -0
  509. package/_test/Base58.bench/package.json +6 -0
  510. package/_test/Hex.bench/package.json +6 -0
  511. package/_test/Hex.test-d/package.json +6 -0
  512. package/_test/PublicKey.test-d/package.json +6 -0
  513. package/_test/Rlp.bench/package.json +6 -0
  514. package/_test/Rlp.test-d/package.json +6 -0
  515. package/_test/Signature.snap-d/package.json +6 -0
  516. package/_test/Signature.snap-d.ts +96 -0
  517. package/_test/TransactionEnvelopeEip1559.test-d/package.json +6 -0
  518. package/_test/TransactionEnvelopeEip2930.test-d/package.json +6 -0
  519. package/_test/TransactionEnvelopeEip4844.test-d/package.json +6 -0
  520. package/_test/TransactionEnvelopeEip7702.test-d/package.json +6 -0
  521. package/_test/TransactionEnvelopeLegacy.test-d/package.json +6 -0
  522. package/_test/TypedData.test-d/package.json +6 -0
  523. package/_types/Abi.d.ts +137 -0
  524. package/_types/Abi.d.ts.map +1 -0
  525. package/_types/AbiConstructor.d.ts +305 -0
  526. package/_types/AbiConstructor.d.ts.map +1 -0
  527. package/_types/AbiError.d.ts +522 -0
  528. package/_types/AbiError.d.ts.map +1 -0
  529. package/_types/AbiEvent.d.ts +892 -0
  530. package/_types/AbiEvent.d.ts.map +1 -0
  531. package/_types/AbiFunction.d.ts +602 -0
  532. package/_types/AbiFunction.d.ts.map +1 -0
  533. package/_types/AbiItem.d.ts +544 -0
  534. package/_types/AbiItem.d.ts.map +1 -0
  535. package/_types/AbiParameters.d.ts +466 -0
  536. package/_types/AbiParameters.d.ts.map +1 -0
  537. package/_types/AccessList.d.ts +83 -0
  538. package/_types/AccessList.d.ts.map +1 -0
  539. package/_types/AccountProof.d.ts +32 -0
  540. package/_types/AccountProof.d.ts.map +1 -0
  541. package/_types/Address.d.ts +244 -0
  542. package/_types/Address.d.ts.map +1 -0
  543. package/_types/AesGcm.d.ts +116 -0
  544. package/_types/AesGcm.d.ts.map +1 -0
  545. package/_types/Authorization.d.ts +461 -0
  546. package/_types/Authorization.d.ts.map +1 -0
  547. package/_types/Base58.d.ts +131 -0
  548. package/_types/Base58.d.ts.map +1 -0
  549. package/_types/Base64.d.ts +244 -0
  550. package/_types/Base64.d.ts.map +1 -0
  551. package/_types/Blobs.d.ts +556 -0
  552. package/_types/Blobs.d.ts.map +1 -0
  553. package/_types/Block.d.ts +190 -0
  554. package/_types/Block.d.ts.map +1 -0
  555. package/_types/Bloom.d.ts +54 -0
  556. package/_types/Bloom.d.ts.map +1 -0
  557. package/_types/Bls.d.ts +365 -0
  558. package/_types/Bls.d.ts.map +1 -0
  559. package/_types/BlsPoint.d.ts +187 -0
  560. package/_types/BlsPoint.d.ts.map +1 -0
  561. package/_types/Bytes.d.ts +674 -0
  562. package/_types/Bytes.d.ts.map +1 -0
  563. package/_types/Caches.d.ts +13 -0
  564. package/_types/Caches.d.ts.map +1 -0
  565. package/_types/ContractAddress.d.ts +115 -0
  566. package/_types/ContractAddress.d.ts.map +1 -0
  567. package/_types/Ens.d.ts +72 -0
  568. package/_types/Ens.d.ts.map +1 -0
  569. package/_types/Errors.d.ts +33 -0
  570. package/_types/Errors.d.ts.map +1 -0
  571. package/_types/Fee.d.ts +41 -0
  572. package/_types/Fee.d.ts.map +1 -0
  573. package/_types/Filter.d.ts +100 -0
  574. package/_types/Filter.d.ts.map +1 -0
  575. package/_types/Hash.d.ts +135 -0
  576. package/_types/Hash.d.ts.map +1 -0
  577. package/_types/HdKey.d.ts +146 -0
  578. package/_types/HdKey.d.ts.map +1 -0
  579. package/_types/Hex.d.ts +711 -0
  580. package/_types/Hex.d.ts.map +1 -0
  581. package/_types/Json.d.ts +53 -0
  582. package/_types/Json.d.ts.map +1 -0
  583. package/_types/Kzg.d.ts +42 -0
  584. package/_types/Kzg.d.ts.map +1 -0
  585. package/_types/Log.d.ts +194 -0
  586. package/_types/Log.d.ts.map +1 -0
  587. package/_types/Mnemonic.d.ts +176 -0
  588. package/_types/Mnemonic.d.ts.map +1 -0
  589. package/_types/P256.d.ts +207 -0
  590. package/_types/P256.d.ts.map +1 -0
  591. package/_types/PersonalMessage.d.ts +49 -0
  592. package/_types/PersonalMessage.d.ts.map +1 -0
  593. package/_types/Provider.d.ts +268 -0
  594. package/_types/Provider.d.ts.map +1 -0
  595. package/_types/PublicKey.d.ts +327 -0
  596. package/_types/PublicKey.d.ts.map +1 -0
  597. package/_types/Rlp.d.ts +153 -0
  598. package/_types/Rlp.d.ts.map +1 -0
  599. package/_types/RpcRequest.d.ts +144 -0
  600. package/_types/RpcRequest.d.ts.map +1 -0
  601. package/_types/RpcResponse.d.ts +266 -0
  602. package/_types/RpcResponse.d.ts.map +1 -0
  603. package/_types/RpcSchema.d.ts +248 -0
  604. package/_types/RpcSchema.d.ts.map +1 -0
  605. package/_types/RpcTransport.d.ts +65 -0
  606. package/_types/RpcTransport.d.ts.map +1 -0
  607. package/_types/Secp256k1.d.ts +277 -0
  608. package/_types/Secp256k1.d.ts.map +1 -0
  609. package/_types/Signature.d.ts +601 -0
  610. package/_types/Signature.d.ts.map +1 -0
  611. package/_types/Siwe.d.ts +249 -0
  612. package/_types/Siwe.d.ts.map +1 -0
  613. package/_types/Solidity.d.ts +100 -0
  614. package/_types/Solidity.d.ts.map +1 -0
  615. package/_types/Transaction.d.ts +235 -0
  616. package/_types/Transaction.d.ts.map +1 -0
  617. package/_types/TransactionEnvelope.d.ts +141 -0
  618. package/_types/TransactionEnvelope.d.ts.map +1 -0
  619. package/_types/TransactionEnvelopeEip1559.d.ts +367 -0
  620. package/_types/TransactionEnvelopeEip1559.d.ts.map +1 -0
  621. package/_types/TransactionEnvelopeEip2930.d.ts +364 -0
  622. package/_types/TransactionEnvelopeEip2930.d.ts.map +1 -0
  623. package/_types/TransactionEnvelopeEip4844.d.ts +419 -0
  624. package/_types/TransactionEnvelopeEip4844.d.ts.map +1 -0
  625. package/_types/TransactionEnvelopeEip7702.d.ts +377 -0
  626. package/_types/TransactionEnvelopeEip7702.d.ts.map +1 -0
  627. package/_types/TransactionEnvelopeLegacy.d.ts +358 -0
  628. package/_types/TransactionEnvelopeLegacy.d.ts.map +1 -0
  629. package/_types/TransactionReceipt.d.ts +271 -0
  630. package/_types/TransactionReceipt.d.ts.map +1 -0
  631. package/_types/TransactionRequest.d.ts +92 -0
  632. package/_types/TransactionRequest.d.ts.map +1 -0
  633. package/_types/TypedData.d.ts +496 -0
  634. package/_types/TypedData.d.ts.map +1 -0
  635. package/_types/ValidatorData.d.ts +64 -0
  636. package/_types/ValidatorData.d.ts.map +1 -0
  637. package/_types/Value.d.ts +159 -0
  638. package/_types/Value.d.ts.map +1 -0
  639. package/_types/WebAuthnP256.d.ts +445 -0
  640. package/_types/WebAuthnP256.d.ts.map +1 -0
  641. package/_types/WebCryptoP256.d.ts +119 -0
  642. package/_types/WebCryptoP256.d.ts.map +1 -0
  643. package/_types/Withdrawal.d.ts +74 -0
  644. package/_types/Withdrawal.d.ts.map +1 -0
  645. package/_types/index.d.ts +3367 -0
  646. package/_types/index.d.ts.map +1 -0
  647. package/_types/internal/abi.d.ts +4 -0
  648. package/_types/internal/abi.d.ts.map +1 -0
  649. package/_types/internal/abiConstructor.d.ts +11 -0
  650. package/_types/internal/abiConstructor.d.ts.map +1 -0
  651. package/_types/internal/abiError.d.ts +11 -0
  652. package/_types/internal/abiError.d.ts.map +1 -0
  653. package/_types/internal/abiEvent.d.ts +60 -0
  654. package/_types/internal/abiEvent.d.ts.map +1 -0
  655. package/_types/internal/abiFunction.d.ts +11 -0
  656. package/_types/internal/abiFunction.d.ts.map +1 -0
  657. package/_types/internal/abiItem.d.ts +100 -0
  658. package/_types/internal/abiItem.d.ts.map +1 -0
  659. package/_types/internal/abiParameters.d.ts +169 -0
  660. package/_types/internal/abiParameters.d.ts.map +1 -0
  661. package/_types/internal/base58.d.ts +17 -0
  662. package/_types/internal/base58.d.ts.map +1 -0
  663. package/_types/internal/bytes.d.ts +52 -0
  664. package/_types/internal/bytes.d.ts.map +1 -0
  665. package/_types/internal/cursor.d.ts +70 -0
  666. package/_types/internal/cursor.d.ts.map +1 -0
  667. package/_types/internal/ens.d.ts +23 -0
  668. package/_types/internal/ens.d.ts.map +1 -0
  669. package/_types/internal/errors.d.ts +7 -0
  670. package/_types/internal/errors.d.ts.map +1 -0
  671. package/_types/internal/hdKey.d.ts +10 -0
  672. package/_types/internal/hdKey.d.ts.map +1 -0
  673. package/_types/internal/hex.d.ts +39 -0
  674. package/_types/internal/hex.d.ts.map +1 -0
  675. package/_types/internal/lru.d.ts +13 -0
  676. package/_types/internal/lru.d.ts.map +1 -0
  677. package/_types/internal/mnemonic/wordlists.d.ts +11 -0
  678. package/_types/internal/mnemonic/wordlists.d.ts.map +1 -0
  679. package/_types/internal/promise.d.ts +27 -0
  680. package/_types/internal/promise.d.ts.map +1 -0
  681. package/_types/internal/register.d.ts +13 -0
  682. package/_types/internal/register.d.ts.map +1 -0
  683. package/_types/internal/rpcSchema.d.ts +12 -0
  684. package/_types/internal/rpcSchema.d.ts.map +1 -0
  685. package/_types/internal/rpcSchemas/eth.d.ts +718 -0
  686. package/_types/internal/rpcSchemas/eth.d.ts.map +1 -0
  687. package/_types/internal/rpcSchemas/wallet.d.ts +416 -0
  688. package/_types/internal/rpcSchemas/wallet.d.ts.map +1 -0
  689. package/_types/internal/rpcTransport.d.ts +38 -0
  690. package/_types/internal/rpcTransport.d.ts.map +1 -0
  691. package/_types/internal/types.d.ts +284 -0
  692. package/_types/internal/types.d.ts.map +1 -0
  693. package/_types/internal/uid.d.ts +3 -0
  694. package/_types/internal/uid.d.ts.map +1 -0
  695. package/_types/internal/webauthn.d.ts +127 -0
  696. package/_types/internal/webauthn.d.ts.map +1 -0
  697. package/_types/trusted-setups/Paths.d.ts +2 -0
  698. package/_types/trusted-setups/Paths.d.ts.map +1 -0
  699. package/_types/trusted-setups/index.d.ts +2 -0
  700. package/_types/trusted-setups/index.d.ts.map +1 -0
  701. package/_types/trusted-setups/internal/paths.d.ts +3 -0
  702. package/_types/trusted-setups/internal/paths.d.ts.map +1 -0
  703. package/_types/version.d.ts +3 -0
  704. package/_types/version.d.ts.map +1 -0
  705. package/_types/window/index.d.ts +7 -0
  706. package/_types/window/index.d.ts.map +1 -0
  707. package/index.ts +3427 -0
  708. package/internal/abi.ts +11 -0
  709. package/internal/abiConstructor.ts +32 -0
  710. package/internal/abiError.ts +30 -0
  711. package/internal/abiEvent.ts +154 -0
  712. package/internal/abiFunction.ts +32 -0
  713. package/internal/abiItem.ts +593 -0
  714. package/internal/abiParameters.ts +741 -0
  715. package/internal/base58.ts +106 -0
  716. package/internal/bytes.ts +152 -0
  717. package/internal/cursor.ts +252 -0
  718. package/internal/ens.ts +64 -0
  719. package/internal/errors.ts +26 -0
  720. package/internal/hdKey.ts +25 -0
  721. package/internal/hex.ts +123 -0
  722. package/internal/lru.ts +34 -0
  723. package/internal/mnemonic/wordlists.ts +10 -0
  724. package/internal/promise.ts +66 -0
  725. package/internal/register.ts +15 -0
  726. package/internal/rpcSchema.ts +20 -0
  727. package/internal/rpcSchemas/eth.ts +727 -0
  728. package/internal/rpcSchemas/wallet.ts +428 -0
  729. package/internal/rpcTransport.ts +74 -0
  730. package/internal/types.ts +414 -0
  731. package/internal/uid.ts +15 -0
  732. package/internal/webauthn.ts +198 -0
  733. package/package.json +500 -20
  734. package/trusted-setups/Paths/package.json +6 -0
  735. package/trusted-setups/Paths.ts +3 -0
  736. package/trusted-setups/index.ts +1 -0
  737. package/trusted-setups/internal/paths.ts +13 -0
  738. package/trusted-setups/internal/setups/mainnet.json +8265 -0
  739. package/trusted-setups/internal/setups/mainnet.txt +4163 -0
  740. package/trusted-setups/package.json +6 -0
  741. package/tsdoc.json +4 -0
  742. package/version/package.json +6 -0
  743. package/version.ts +2 -0
  744. package/window/index.ts +7 -0
  745. package/window/package.json +6 -0
  746. package/cl/ansiesc.js +0 -25
  747. package/cl/deps.js +0 -7
  748. package/cl/editor.js +0 -141
  749. package/cl/index.html +0 -19
  750. package/cl/ox.js +0 -44
  751. package/cl/socket.io.js +0 -1922
  752. package/cl/style.css +0 -37
  753. package/srv/deps.js +0 -88
  754. package/srv/httpSrv.js +0 -82
  755. package/srv/ox.js +0 -44
  756. package/srv/remoteXtermReq.js +0 -70
package/AbiFunction.ts ADDED
@@ -0,0 +1,813 @@
1
+ import * as abitype from 'abitype'
2
+ import type * as Abi from './Abi.js'
3
+ import * as AbiItem from './AbiItem.js'
4
+ import * as AbiParameters from './AbiParameters.js'
5
+ import type * as Errors from './Errors.js'
6
+ import * as Hex from './Hex.js'
7
+ import type * as internal from './internal/abiFunction.js'
8
+ import type * as AbiItem_internal from './internal/abiItem.js'
9
+ import type * as AbiParameters_internal from './internal/abiParameters.js'
10
+ import type { IsNarrowable } from './internal/types.js'
11
+
12
+ /** Root type for an {@link ox#AbiItem.AbiItem} with a `function` type. */
13
+ export type AbiFunction = abitype.AbiFunction & {
14
+ hash?: Hex.Hex | undefined
15
+ overloads?: readonly AbiFunction[] | undefined
16
+ }
17
+
18
+ /**
19
+ * Extracts an {@link ox#AbiFunction.AbiFunction} item from an {@link ox#Abi.Abi}, given a name.
20
+ *
21
+ * @example
22
+ * ```ts twoslash
23
+ * import { Abi, AbiFunction } from 'ox'
24
+ *
25
+ * const abi = Abi.from([
26
+ * 'function foo(string)',
27
+ * 'function bar(uint256)',
28
+ * ])
29
+ *
30
+ * type Foo = AbiFunction.FromAbi<typeof abi, 'foo'>
31
+ * // ^?
32
+ *
33
+ *
34
+ *
35
+ *
36
+ *
37
+ *
38
+ *
39
+ *
40
+ * ```
41
+ */
42
+ export type FromAbi<
43
+ abi extends Abi.Abi,
44
+ name extends ExtractNames<abi>,
45
+ > = abitype.ExtractAbiFunction<abi, name>
46
+
47
+ /**
48
+ * Extracts the names of all {@link ox#AbiFunction.AbiFunction} items in an {@link ox#Abi.Abi}.
49
+ *
50
+ * @example
51
+ * ```ts twoslash
52
+ * import { Abi, AbiFunction } from 'ox'
53
+ *
54
+ * const abi = Abi.from([
55
+ * 'function foo(string)',
56
+ * 'function bar(uint256)',
57
+ * ])
58
+ *
59
+ * type names = AbiFunction.Name<typeof abi>
60
+ * // ^?
61
+ *
62
+ *
63
+ * ```
64
+ */
65
+ export type Name<abi extends Abi.Abi | readonly unknown[] = Abi.Abi> =
66
+ abi extends Abi.Abi ? ExtractNames<abi> : string
67
+
68
+ export type ExtractNames<
69
+ abi extends Abi.Abi,
70
+ abiStateMutability extends
71
+ abitype.AbiStateMutability = abitype.AbiStateMutability,
72
+ > = abitype.ExtractAbiFunctionNames<abi, abiStateMutability>
73
+
74
+ /**
75
+ * ABI-decodes function arguments according to the ABI Item's input types (`inputs`).
76
+ *
77
+ * @example
78
+ * ```ts twoslash
79
+ * import { AbiFunction } from 'ox'
80
+ *
81
+ * const approve = AbiFunction.from('function approve(address, uint256)')
82
+ *
83
+ * const data = AbiFunction.encodeData(
84
+ * approve,
85
+ * ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n]
86
+ * )
87
+ * // '0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000010f2c'
88
+ *
89
+ * const input = AbiFunction.decodeData(approve, data) // [!code focus]
90
+ * // @log: ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n]
91
+ * ```
92
+ *
93
+ * @param abiFunction - The ABI Item to decode.
94
+ * @param data - The data to decode.
95
+ */
96
+ export function decodeData<const abiItem extends AbiFunction>(
97
+ abiFunction: abiItem | AbiFunction,
98
+ data: Hex.Hex,
99
+ ): decodeData.ReturnType<abiItem> {
100
+ const { overloads } = abiFunction
101
+
102
+ if (Hex.size(data) < 4) throw new AbiItem.InvalidSelectorSizeError({ data })
103
+ if (abiFunction.inputs.length === 0) return undefined
104
+
105
+ const item = overloads
106
+ ? fromAbi([abiFunction, ...overloads], data as never)
107
+ : abiFunction
108
+
109
+ if (Hex.size(data) <= 4) return undefined
110
+ return AbiParameters.decode(item.inputs, Hex.slice(data, 4))
111
+ }
112
+
113
+ export declare namespace decodeData {
114
+ type ReturnType<abiFunction extends AbiFunction = AbiFunction> = IsNarrowable<
115
+ abiFunction,
116
+ AbiFunction
117
+ > extends true
118
+ ? abiFunction['inputs'] extends readonly []
119
+ ? undefined
120
+ :
121
+ | AbiParameters_internal.ToPrimitiveTypes<abiFunction['inputs']>
122
+ | (abiFunction['overloads'] extends readonly AbiFunction[]
123
+ ? AbiParameters_internal.ToPrimitiveTypes<
124
+ abiFunction['overloads'][number]['inputs']
125
+ >
126
+ : never)
127
+ : unknown
128
+
129
+ type ErrorType =
130
+ | fromAbi.ErrorType
131
+ | AbiParameters.decode.ErrorType
132
+ | Hex.size.ErrorType
133
+ | Hex.slice.ErrorType
134
+ | Errors.GlobalErrorType
135
+ }
136
+
137
+ /**
138
+ * ABI-decodes a function's result according to the ABI Item's output types (`outputs`).
139
+ *
140
+ * :::tip
141
+ *
142
+ * This function is typically used to decode contract function return values (e.g. the response of an `eth_call` or the `input` property of a Transaction).
143
+ *
144
+ * See the [End-to-end Example](#end-to-end).
145
+ *
146
+ * :::
147
+ *
148
+ * @example
149
+ * ```ts twoslash
150
+ * import { AbiFunction } from 'ox'
151
+ *
152
+ * const data = '0x000000000000000000000000000000000000000000000000000000000000002a'
153
+ *
154
+ * const totalSupply = AbiFunction.from('function totalSupply() returns (uint256)')
155
+ *
156
+ * const output = AbiFunction.decodeResult(totalSupply, data)
157
+ * // @log: 42n
158
+ * ```
159
+ *
160
+ * @example
161
+ * You can extract an ABI Function from a JSON ABI with {@link ox#AbiFunction.(fromAbi:function)}:
162
+ *
163
+ * ```ts twoslash
164
+ * // @noErrors
165
+ * import { Abi, AbiFunction } from 'ox'
166
+ *
167
+ * const data = '0x000000000000000000000000000000000000000000000000000000000000002a'
168
+ *
169
+ * const erc20Abi = Abi.from([...]) // [!code hl]
170
+ * const totalSupply = AbiFunction.fromAbi(erc20Abi, 'totalSupply') // [!code hl]
171
+ *
172
+ * const output = AbiFunction.decodeResult(totalSupply, data)
173
+ * // @log: 42n
174
+ * ```
175
+ *
176
+ * @example
177
+ * ### End-to-end
178
+ *
179
+ * Below is an end-to-end example of using `AbiFunction.decodeResult` to decode the result of a `balanceOf` contract call on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
180
+ *
181
+ * ```ts twoslash
182
+ * import 'ox/window'
183
+ * import { Abi, AbiFunction } from 'ox'
184
+ *
185
+ * // 1. Extract the Function from the Contract's ABI.
186
+ * const abi = Abi.from([
187
+ * // ...
188
+ * {
189
+ * name: 'balanceOf',
190
+ * type: 'function',
191
+ * inputs: [{ name: 'account', type: 'address' }],
192
+ * outputs: [{ name: 'balance', type: 'uint256' }],
193
+ * stateMutability: 'view',
194
+ * },
195
+ * // ...
196
+ * ])
197
+ * const balanceOf = AbiFunction.fromAbi(abi, 'balanceOf')
198
+ *
199
+ * // 2. Encode the Function Input.
200
+ * const data = AbiFunction.encodeData(
201
+ * balanceOf,
202
+ * ['0xd2135CfB216b74109775236E36d4b433F1DF507B']
203
+ * )
204
+ *
205
+ * // 3. Perform the Contract Call.
206
+ * const response = await window.ethereum!.request({
207
+ * method: 'eth_call',
208
+ * params: [
209
+ * {
210
+ * data,
211
+ * to: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
212
+ * },
213
+ * ],
214
+ * })
215
+ *
216
+ * // 4. Decode the Function Output. // [!code focus]
217
+ * const balance = AbiFunction.decodeResult(balanceOf, response) // [!code focus]
218
+ * // @log: 42n
219
+ * ```
220
+ *
221
+ * :::note
222
+ *
223
+ * For simplicity, the above example uses `window.ethereum.request`, but you can use any
224
+ * type of JSON-RPC interface.
225
+ *
226
+ * :::
227
+ *
228
+ * @param abiFunction - ABI Function to decode
229
+ * @param data - ABI-encoded function output
230
+ * @param options - Decoding options
231
+ * @returns Decoded function output
232
+ */
233
+ export function decodeResult<
234
+ const abiFunction extends AbiFunction,
235
+ as extends 'Object' | 'Array' = 'Array',
236
+ >(
237
+ abiFunction: abiFunction | AbiFunction,
238
+ data: Hex.Hex,
239
+ options: decodeResult.Options<as> = {},
240
+ ): decodeResult.ReturnType<abiFunction, as> {
241
+ const values = AbiParameters.decode(abiFunction.outputs, data, options)
242
+ if (values && Object.keys(values).length === 0) return undefined
243
+ if (values && Object.keys(values).length === 1) {
244
+ if (Array.isArray(values)) return values[0]
245
+ return Object.values(values)[0]
246
+ }
247
+ return values
248
+ }
249
+
250
+ export declare namespace decodeResult {
251
+ type Options<as extends 'Object' | 'Array'> = {
252
+ /**
253
+ * Whether the decoded values should be returned as an `Object` or `Array`.
254
+ *
255
+ * @default "Array"
256
+ */
257
+ as?: as | 'Array' | 'Object' | undefined
258
+ }
259
+
260
+ type ReturnType<
261
+ abiFunction extends AbiFunction = AbiFunction,
262
+ as extends 'Object' | 'Array' = 'Array',
263
+ > = IsNarrowable<abiFunction, AbiFunction> extends true
264
+ ? abiFunction['outputs'] extends readonly []
265
+ ? undefined
266
+ : abiFunction['outputs'] extends readonly [
267
+ infer type extends abitype.AbiParameter,
268
+ ]
269
+ ? abitype.AbiParameterToPrimitiveType<type>
270
+ : AbiParameters.decode.ReturnType<
271
+ abiFunction['outputs'],
272
+ as
273
+ > extends infer types
274
+ ? types extends readonly []
275
+ ? undefined
276
+ : types extends readonly [infer type]
277
+ ? type
278
+ : types
279
+ : never
280
+ : unknown
281
+
282
+ type ErrorType = AbiParameters.decode.ErrorType | Errors.GlobalErrorType
283
+ }
284
+
285
+ /**
286
+ * ABI-encodes function arguments (`inputs`), prefixed with the 4 byte function selector.
287
+ *
288
+ * :::tip
289
+ *
290
+ * This function is typically used to encode a contract function and its arguments for contract calls (e.g. `data` parameter of an `eth_call` or `eth_sendTransaction`).
291
+ *
292
+ * See the [End-to-end Example](#end-to-end).
293
+ *
294
+ * :::
295
+ *
296
+ * @example
297
+ * ```ts twoslash
298
+ * import { AbiFunction } from 'ox'
299
+ *
300
+ * const approve = AbiFunction.from('function approve(address, uint256)')
301
+ *
302
+ * const data = AbiFunction.encodeData( // [!code focus]
303
+ * approve, // [!code focus]
304
+ * ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n] // [!code focus]
305
+ * ) // [!code focus]
306
+ * // @log: '0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000010f2c'
307
+ * ```
308
+ *
309
+ * @example
310
+ * You can extract an ABI Function from a JSON ABI with {@link ox#AbiFunction.(fromAbi:function)}:
311
+ *
312
+ * ```ts twoslash
313
+ * // @noErrors
314
+ * import { Abi, AbiFunction } from 'ox'
315
+ *
316
+ * const erc20Abi = Abi.from([...]) // [!code hl]
317
+ * const approve = AbiFunction.fromAbi(erc20Abi, 'approve') // [!code hl]
318
+ *
319
+ * const data = AbiFunction.encodeData(
320
+ * approve,
321
+ * ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 69420n]
322
+ * )
323
+ * // @log: '0x095ea7b3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa960450000000000000000000000000000000000000000000000000000000000010f2c'
324
+ * ```
325
+ *
326
+ * @example
327
+ * ### End-to-end
328
+ *
329
+ * Below is an end-to-end example of using `AbiFunction.encodeData` to encode the input of a `balanceOf` contract call on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
330
+ *
331
+ * ```ts twoslash
332
+ * import 'ox/window'
333
+ * import { Abi, AbiFunction } from 'ox'
334
+ *
335
+ * // 1. Extract the Function from the Contract's ABI.
336
+ * const abi = Abi.from([
337
+ * // ...
338
+ * {
339
+ * name: 'balanceOf',
340
+ * type: 'function',
341
+ * inputs: [{ name: 'account', type: 'address' }],
342
+ * outputs: [{ name: 'balance', type: 'uint256' }],
343
+ * stateMutability: 'view',
344
+ * },
345
+ * // ...
346
+ * ])
347
+ * const balanceOf = AbiFunction.fromAbi(abi, 'balanceOf')
348
+ *
349
+ * // 2. Encode the Function Input. // [!code focus]
350
+ * const data = AbiFunction.encodeData( // [!code focus]
351
+ * balanceOf, // [!code focus]
352
+ * ['0xd2135CfB216b74109775236E36d4b433F1DF507B'] // [!code focus]
353
+ * ) // [!code focus]
354
+ *
355
+ * // 3. Perform the Contract Call.
356
+ * const response = await window.ethereum!.request({
357
+ * method: 'eth_call',
358
+ * params: [
359
+ * {
360
+ * data,
361
+ * to: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
362
+ * },
363
+ * ],
364
+ * })
365
+ *
366
+ * // 4. Decode the Function Output.
367
+ * const balance = AbiFunction.decodeResult(balanceOf, response)
368
+ * ```
369
+ *
370
+ * :::note
371
+ *
372
+ * For simplicity, the above example uses `window.ethereum.request`, but you can use any
373
+ * type of JSON-RPC interface.
374
+ *
375
+ * :::
376
+ *
377
+ * @param abiFunction - ABI Function to encode
378
+ * @param args - Function arguments
379
+ * @returns ABI-encoded function name and arguments
380
+ */
381
+ export function encodeData<const abiFunction extends AbiFunction>(
382
+ abiFunction: abiFunction | AbiFunction,
383
+ ...args: encodeData.Args<abiFunction>
384
+ ): Hex.Hex {
385
+ const { overloads } = abiFunction
386
+
387
+ const item = overloads
388
+ ? (fromAbi([abiFunction as AbiFunction, ...overloads], abiFunction.name, {
389
+ args: (args as any)[0],
390
+ }) as AbiFunction)
391
+ : abiFunction
392
+
393
+ const selector = getSelector(item)
394
+
395
+ const data =
396
+ args.length > 0
397
+ ? AbiParameters.encode(item.inputs, (args as any)[0])
398
+ : undefined
399
+
400
+ return data ? Hex.concat(selector, data) : selector
401
+ }
402
+
403
+ export declare namespace encodeData {
404
+ type Args<abiFunction extends AbiFunction = AbiFunction> = IsNarrowable<
405
+ abiFunction,
406
+ AbiFunction
407
+ > extends true
408
+ ?
409
+ | (abitype.AbiParametersToPrimitiveTypes<
410
+ abiFunction['inputs']
411
+ > extends readonly []
412
+ ? []
413
+ : [abitype.AbiParametersToPrimitiveTypes<abiFunction['inputs']>])
414
+ | (abiFunction['overloads'] extends readonly AbiFunction[]
415
+ ? [
416
+ abitype.AbiParametersToPrimitiveTypes<
417
+ abiFunction['overloads'][number]['inputs']
418
+ >,
419
+ ]
420
+ : [])
421
+ : readonly unknown[]
422
+
423
+ type ErrorType = Errors.GlobalErrorType
424
+ }
425
+
426
+ encodeData.parseError = (error: unknown) =>
427
+ /* v8 ignore next */
428
+ error as encodeData.ErrorType
429
+
430
+ /**
431
+ * ABI-encodes a function's result (`outputs`).
432
+ *
433
+ * @example
434
+ * ```ts twoslash
435
+ * import { AbiFunction } from 'ox'
436
+ *
437
+ * const totalSupply = AbiFunction.from('function totalSupply() returns (uint256)')
438
+ * const output = AbiFunction.decodeResult(totalSupply, '0x000000000000000000000000000000000000000000000000000000000000002a')
439
+ * // 42n
440
+ *
441
+ * const data = AbiFunction.encodeResult(totalSupply, 42n) // [!code focus]
442
+ * // @log: '0x000000000000000000000000000000000000000000000000000000000000002a'
443
+ * ```
444
+ *
445
+ * @param abiFunction - The ABI item to encode the function output for.
446
+ * @param output - The function output to encode.
447
+ * @param options - Encoding options.
448
+ * @returns The encoded function output.
449
+ */
450
+ export function encodeResult<
451
+ const abiFunction extends AbiFunction,
452
+ as extends 'Object' | 'Array' = 'Array',
453
+ >(
454
+ abiFunction: abiFunction | AbiFunction,
455
+ output: encodeResult.Output<abiFunction, as>,
456
+ options: encodeResult.Options<as> = {},
457
+ ): Hex.Hex {
458
+ const { as = 'Array' } = options
459
+
460
+ const values = (() => {
461
+ if (abiFunction.outputs.length === 1) return [output]
462
+ if (Array.isArray(output)) return output
463
+ if (as === 'Object') return Object.values(output as any)
464
+ return [output]
465
+ })()
466
+
467
+ return AbiParameters.encode(abiFunction.outputs, values)
468
+ }
469
+
470
+ export declare namespace encodeResult {
471
+ type Output<
472
+ abiFunction extends AbiFunction = AbiFunction,
473
+ as extends 'Object' | 'Array' = 'Array',
474
+ > = abiFunction['outputs'] extends readonly []
475
+ ? never
476
+ : abiFunction['outputs']['length'] extends 1
477
+ ? AbiParameters_internal.ToPrimitiveTypes<abiFunction['outputs']>[0]
478
+ : as extends 'Object'
479
+ ? AbiParameters_internal.ToObject<abiFunction['outputs']>
480
+ : AbiParameters_internal.ToPrimitiveTypes<abiFunction['outputs']>
481
+
482
+ type Options<as extends 'Object' | 'Array'> = {
483
+ as?: as | 'Object' | 'Array' | undefined
484
+ }
485
+
486
+ type ErrorType = AbiParameters.encode.ErrorType | Errors.GlobalErrorType
487
+ }
488
+
489
+ /**
490
+ * Formats an {@link ox#AbiFunction.AbiFunction} into a **Human Readable ABI Function**.
491
+ *
492
+ * @example
493
+ * ```ts twoslash
494
+ * import { AbiFunction } from 'ox'
495
+ *
496
+ * const formatted = AbiFunction.format({
497
+ * type: 'function',
498
+ * name: 'approve',
499
+ * stateMutability: 'nonpayable',
500
+ * inputs: [
501
+ * {
502
+ * name: 'spender',
503
+ * type: 'address',
504
+ * },
505
+ * {
506
+ * name: 'amount',
507
+ * type: 'uint256',
508
+ * },
509
+ * ],
510
+ * outputs: [{ type: 'bool' }],
511
+ * })
512
+ *
513
+ * formatted
514
+ * // ^?
515
+ *
516
+ *
517
+ * ```
518
+ *
519
+ * @param abiFunction - The ABI Function to format.
520
+ * @returns The formatted ABI Function.
521
+ */
522
+ export function format<const abiFunction extends AbiFunction>(
523
+ abiFunction: abiFunction | AbiFunction,
524
+ ): abitype.FormatAbiItem<abiFunction> {
525
+ return abitype.formatAbiItem(abiFunction) as never
526
+ }
527
+
528
+ export declare namespace format {
529
+ type ErrorType = Errors.GlobalErrorType
530
+ }
531
+
532
+ format.parseError = (error: unknown) =>
533
+ /* v8 ignore next */
534
+ error as format.ErrorType
535
+
536
+ /**
537
+ * Parses an arbitrary **JSON ABI Function** or **Human Readable ABI Function** into a typed {@link ox#AbiFunction.AbiFunction}.
538
+ *
539
+ * @example
540
+ * ### JSON ABIs
541
+ *
542
+ * ```ts twoslash
543
+ * import { AbiFunction } from 'ox'
544
+ *
545
+ * const approve = AbiFunction.from({
546
+ * type: 'function',
547
+ * name: 'approve',
548
+ * stateMutability: 'nonpayable',
549
+ * inputs: [
550
+ * {
551
+ * name: 'spender',
552
+ * type: 'address',
553
+ * },
554
+ * {
555
+ * name: 'amount',
556
+ * type: 'uint256',
557
+ * },
558
+ * ],
559
+ * outputs: [{ type: 'bool' }],
560
+ * })
561
+ *
562
+ * approve
563
+ * //^?
564
+ *
565
+ *
566
+ *
567
+ *
568
+ *
569
+ *
570
+ *
571
+ *
572
+ *
573
+ *
574
+ *
575
+ *
576
+ * ```
577
+ *
578
+ * @example
579
+ * ### Human Readable ABIs
580
+ *
581
+ * A Human Readable ABI can be parsed into a typed ABI object:
582
+ *
583
+ * ```ts twoslash
584
+ * import { AbiFunction } from 'ox'
585
+ *
586
+ * const approve = AbiFunction.from(
587
+ * 'function approve(address spender, uint256 amount) returns (bool)' // [!code hl]
588
+ * )
589
+ *
590
+ * approve
591
+ * //^?
592
+ *
593
+ *
594
+ *
595
+ *
596
+ *
597
+ *
598
+ *
599
+ *
600
+ *
601
+ *
602
+ *
603
+ *
604
+ *
605
+ * ```
606
+ *
607
+ * @example
608
+ * It is possible to specify `struct`s along with your definitions:
609
+ *
610
+ * ```ts twoslash
611
+ * import { AbiFunction } from 'ox'
612
+ *
613
+ * const approve = AbiFunction.from([
614
+ * 'struct Foo { address spender; uint256 amount; }', // [!code hl]
615
+ * 'function approve(Foo foo) returns (bool)',
616
+ * ])
617
+ *
618
+ * approve
619
+ * //^?
620
+ *
621
+ *
622
+ *
623
+ *
624
+ *
625
+ *
626
+ *
627
+ *
628
+ *
629
+ *
630
+ *
631
+ *
632
+ * ```
633
+ *
634
+ *
635
+ *
636
+ * @param abiFunction - The ABI Function to parse.
637
+ * @returns Typed ABI Function.
638
+ */
639
+ export function from<
640
+ const abiFunction extends AbiFunction | string | readonly string[],
641
+ >(
642
+ abiFunction: (abiFunction | AbiFunction | string | readonly string[]) &
643
+ (
644
+ | (abiFunction extends string ? internal.Signature<abiFunction> : never)
645
+ | (abiFunction extends readonly string[]
646
+ ? internal.Signatures<abiFunction>
647
+ : never)
648
+ | AbiFunction
649
+ ),
650
+ options: from.Options = {},
651
+ ): from.ReturnType<abiFunction> {
652
+ return AbiItem.from(abiFunction as AbiFunction, options) as never
653
+ }
654
+
655
+ export declare namespace from {
656
+ type Options = {
657
+ /**
658
+ * Whether or not to prepare the extracted function (optimization for encoding performance).
659
+ * When `true`, the `hash` property is computed and included in the returned value.
660
+ *
661
+ * @default true
662
+ */
663
+ prepare?: boolean | undefined
664
+ }
665
+
666
+ type ReturnType<
667
+ abiFunction extends AbiFunction | string | readonly string[],
668
+ > = AbiItem.from.ReturnType<abiFunction>
669
+
670
+ type ErrorType = AbiItem.from.ErrorType | Errors.GlobalErrorType
671
+ }
672
+
673
+ from.parseError = (error: unknown) =>
674
+ /* v8 ignore next */
675
+ error as from.ErrorType
676
+
677
+ /**
678
+ * Extracts an {@link ox#AbiFunction.AbiFunction} from an {@link ox#Abi.Abi} given a name and optional arguments.
679
+ *
680
+ * @example
681
+ * ### Extracting by Name
682
+ *
683
+ * ABI Functions can be extracted by their name using the `name` option:
684
+ *
685
+ * ```ts twoslash
686
+ * import { Abi, AbiFunction } from 'ox'
687
+ *
688
+ * const abi = Abi.from([
689
+ * 'function foo()',
690
+ * 'event Transfer(address owner, address to, uint256 tokenId)',
691
+ * 'function bar(string a) returns (uint256 x)',
692
+ * ])
693
+ *
694
+ * const item = AbiFunction.fromAbi(abi, 'foo') // [!code focus]
695
+ * // ^?
696
+ *
697
+ *
698
+ *
699
+ *
700
+ *
701
+ *
702
+ * ```
703
+ *
704
+ * @example
705
+ * ### Extracting by Selector
706
+ *
707
+ * ABI Functions can be extract by their selector when {@link ox#Hex.Hex} is provided to `name`.
708
+ *
709
+ * ```ts twoslash
710
+ * import { Abi, AbiFunction } from 'ox'
711
+ *
712
+ * const abi = Abi.from([
713
+ * 'function foo()',
714
+ * 'event Transfer(address owner, address to, uint256 tokenId)',
715
+ * 'function bar(string a) returns (uint256 x)',
716
+ * ])
717
+ * const item = AbiFunction.fromAbi(abi, '0x095ea7b3') // [!code focus]
718
+ * // ^?
719
+ *
720
+ *
721
+ *
722
+ *
723
+ *
724
+ *
725
+ *
726
+ *
727
+ *
728
+ * ```
729
+ *
730
+ * :::note
731
+ *
732
+ * Extracting via a hex selector is useful when extracting an ABI Function from an `eth_call` RPC response or
733
+ * from a Transaction `input`.
734
+ *
735
+ * :::
736
+ *
737
+ * @param abi - The ABI to extract from.
738
+ * @param name - The name (or selector) of the ABI item to extract.
739
+ * @param options - Extraction options.
740
+ * @returns The ABI item.
741
+ */
742
+ export function fromAbi<
743
+ const abi extends Abi.Abi | readonly unknown[],
744
+ name extends Name<abi>,
745
+ const args extends
746
+ | AbiItem_internal.ExtractArgs<abi, name>
747
+ | undefined = undefined,
748
+ //
749
+ allNames = Name<abi>,
750
+ >(
751
+ abi: abi | Abi.Abi | readonly unknown[],
752
+ name: Hex.Hex | (name extends allNames ? name : never),
753
+ options?: AbiItem.fromAbi.Options<
754
+ abi,
755
+ name,
756
+ args,
757
+ AbiItem_internal.ExtractArgs<abi, name>
758
+ >,
759
+ ): AbiItem.fromAbi.ReturnType<abi, name, args, AbiFunction> {
760
+ const item = AbiItem.fromAbi(abi, name, options as any)
761
+ if (item.type !== 'function')
762
+ throw new AbiItem.NotFoundError({ name, type: 'function' })
763
+ return item as never
764
+ }
765
+
766
+ export declare namespace fromAbi {
767
+ type ErrorType = AbiItem.fromAbi.ErrorType | Errors.GlobalErrorType
768
+ }
769
+
770
+ fromAbi.parseError = (error: unknown) =>
771
+ /* v8 ignore next */
772
+ error as fromAbi.ErrorType
773
+
774
+ /**
775
+ * Computes the [4-byte selector](https://solidity-by-example.org/function-selector/) for an {@link ox#AbiFunction.AbiFunction}.
776
+ *
777
+ * Useful for computing function selectors for calldata.
778
+ *
779
+ * @example
780
+ * ```ts twoslash
781
+ * import { AbiFunction } from 'ox'
782
+ *
783
+ * const selector = AbiFunction.getSelector('function ownerOf(uint256 tokenId)')
784
+ * // @log: '0x6352211e'
785
+ * ```
786
+ *
787
+ * @example
788
+ * ```ts twoslash
789
+ * import { AbiFunction } from 'ox'
790
+ *
791
+ * const selector = AbiFunction.getSelector({
792
+ * inputs: [{ type: 'uint256' }],
793
+ * name: 'ownerOf',
794
+ * outputs: [],
795
+ * stateMutability: 'view',
796
+ * type: 'function'
797
+ * })
798
+ * // @log: '0x6352211e'
799
+ * ```
800
+ *
801
+ * @param abiItem - The ABI item to compute the selector for.
802
+ * @returns The first 4 bytes of the {@link ox#Hash.(keccak256:function)} hash of the function signature.
803
+ */
804
+ export function getSelector(abiItem: string | AbiFunction): Hex.Hex {
805
+ return AbiItem.getSelector(abiItem)
806
+ }
807
+
808
+ export declare namespace getSelector {
809
+ type ErrorType = AbiItem.getSelector.ErrorType | Errors.GlobalErrorType
810
+ }
811
+
812
+ /* v8 ignore next */
813
+ getSelector.parseError = (error: unknown) => error as getSelector.ErrorType