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
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../_types/AbiParameters.d.ts",
4
+ "main": "../_cjs/AbiParameters.js",
5
+ "module": "../_esm/AbiParameters.js"
6
+ }
@@ -0,0 +1,712 @@
1
+ import * as abitype from 'abitype'
2
+ import * as Address from './Address.js'
3
+ import * as Bytes from './Bytes.js'
4
+ import * as Errors from './Errors.js'
5
+ import * as Hex from './Hex.js'
6
+ import * as Solidity from './Solidity.js'
7
+ import * as internal from './internal/abiParameters.js'
8
+ import * as Cursor from './internal/cursor.js'
9
+
10
+ /** Root type for ABI parameters. */
11
+ export type AbiParameters = readonly abitype.AbiParameter[]
12
+
13
+ /** A parameter on an {@link ox#AbiParameters.AbiParameters}. */
14
+ export type Parameter = abitype.AbiParameter
15
+
16
+ /** A packed ABI type. */
17
+ export type PackedAbiType =
18
+ | abitype.SolidityAddress
19
+ | abitype.SolidityBool
20
+ | abitype.SolidityBytes
21
+ | abitype.SolidityInt
22
+ | abitype.SolidityString
23
+ | abitype.SolidityArrayWithoutTuple
24
+
25
+ /**
26
+ * Decodes ABI-encoded data into its respective primitive values based on ABI Parameters.
27
+ *
28
+ * @example
29
+ * ```ts twoslash
30
+ * import { AbiParameters } from 'ox'
31
+ *
32
+ * const data = AbiParameters.decode(
33
+ * AbiParameters.from(['string', 'uint', 'bool']),
34
+ * '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
35
+ * )
36
+ * // @log: ['wagmi', 420n, true]
37
+ * ```
38
+ *
39
+ * @example
40
+ * ### JSON Parameters
41
+ *
42
+ * You can pass **JSON ABI** Parameters:
43
+ *
44
+ * ```ts twoslash
45
+ * import { AbiParameters } from 'ox'
46
+ *
47
+ * const data = AbiParameters.decode(
48
+ * [
49
+ * { name: 'x', type: 'string' },
50
+ * { name: 'y', type: 'uint' },
51
+ * { name: 'z', type: 'bool' },
52
+ * ],
53
+ * '0x000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000001a4000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000057761676d69000000000000000000000000000000000000000000000000000000',
54
+ * )
55
+ * // @log: ['wagmi', 420n, true]
56
+ * ```
57
+ *
58
+ * @param parameters - The set of ABI parameters to decode, in the shape of the `inputs` or `outputs` attribute of an ABI Item. These parameters must include valid [ABI types](https://docs.soliditylang.org/en/latest/types.html).
59
+ * @param data - ABI encoded data.
60
+ * @param options - Decoding options.
61
+ * @returns Array of decoded values.
62
+ */
63
+ export function decode<
64
+ const parameters extends AbiParameters,
65
+ as extends 'Object' | 'Array' = 'Array',
66
+ >(
67
+ parameters: parameters,
68
+ data: Bytes.Bytes | Hex.Hex,
69
+ options?: decode.Options<as>,
70
+ ): decode.ReturnType<parameters, as>
71
+
72
+ // eslint-disable-next-line jsdoc/require-jsdoc
73
+ export function decode(
74
+ parameters: AbiParameters,
75
+ data: Bytes.Bytes | Hex.Hex,
76
+ options: { as?: 'Array' | 'Object' | undefined } = {},
77
+ ): readonly unknown[] | Record<string, unknown> {
78
+ const { as = 'Array' } = options
79
+
80
+ const bytes = typeof data === 'string' ? Bytes.fromHex(data) : data
81
+ const cursor = Cursor.create(bytes)
82
+
83
+ if (Bytes.size(bytes) === 0 && parameters.length > 0)
84
+ throw new ZeroDataError()
85
+ if (Bytes.size(bytes) && Bytes.size(bytes) < 32)
86
+ throw new DataSizeTooSmallError({
87
+ data: typeof data === 'string' ? data : Hex.fromBytes(data),
88
+ parameters: parameters as readonly Parameter[],
89
+ size: Bytes.size(bytes),
90
+ })
91
+
92
+ let consumed = 0
93
+ const values: any = as === 'Array' ? [] : {}
94
+ for (let i = 0; i < parameters.length; ++i) {
95
+ const param = parameters[i] as Parameter
96
+ cursor.setPosition(consumed)
97
+ const [data, consumed_] = internal.decodeParameter(cursor, param, {
98
+ staticPosition: 0,
99
+ })
100
+ consumed += consumed_
101
+ if (as === 'Array') values.push(data)
102
+ else values[param.name ?? i] = data
103
+ }
104
+ return values
105
+ }
106
+
107
+ export declare namespace decode {
108
+ type Options<as extends 'Object' | 'Array'> = {
109
+ /**
110
+ * Whether the decoded values should be returned as an `Object` or `Array`.
111
+ *
112
+ * @default "Array"
113
+ */
114
+ as?: as | 'Object' | 'Array' | undefined
115
+ }
116
+
117
+ type ReturnType<
118
+ parameters extends AbiParameters = AbiParameters,
119
+ as extends 'Object' | 'Array' = 'Array',
120
+ > = parameters extends readonly []
121
+ ? as extends 'Object'
122
+ ? {}
123
+ : []
124
+ : as extends 'Object'
125
+ ? internal.ToObject<parameters>
126
+ : internal.ToPrimitiveTypes<parameters>
127
+
128
+ type ErrorType =
129
+ | Bytes.fromHex.ErrorType
130
+ | internal.decodeParameter.ErrorType
131
+ | ZeroDataError
132
+ | DataSizeTooSmallError
133
+ | Errors.GlobalErrorType
134
+ }
135
+
136
+ decode.parseError = (error: unknown) =>
137
+ /* v8 ignore next */
138
+ error as decode.ErrorType
139
+
140
+ /**
141
+ * Encodes primitive values into ABI encoded data as per the [Application Binary Interface (ABI) Specification](https://docs.soliditylang.org/en/latest/abi-spec).
142
+ *
143
+ * @example
144
+ * ```ts twoslash
145
+ * import { AbiParameters } from 'ox'
146
+ *
147
+ * const data = AbiParameters.encode(
148
+ * AbiParameters.from(['string', 'uint', 'bool']),
149
+ * ['wagmi', 420n, true],
150
+ * )
151
+ * ```
152
+ *
153
+ * @example
154
+ * ### JSON Parameters
155
+ *
156
+ * Specify **JSON ABI** Parameters as schema:
157
+ *
158
+ * ```ts twoslash
159
+ * import { AbiParameters } from 'ox'
160
+ *
161
+ * const data = AbiParameters.encode(
162
+ * [
163
+ * { type: 'string', name: 'name' },
164
+ * { type: 'uint', name: 'age' },
165
+ * { type: 'bool', name: 'isOwner' },
166
+ * ],
167
+ * ['wagmi', 420n, true],
168
+ * )
169
+ * ```
170
+ *
171
+ * @param parameters - The set of ABI parameters to encode, in the shape of the `inputs` or `outputs` attribute of an ABI Item. These parameters must include valid [ABI types](https://docs.soliditylang.org/en/latest/types.html).
172
+ * @param values - The set of primitive values that correspond to the ABI types defined in `parameters`.
173
+ * @returns ABI encoded data.
174
+ */
175
+ export function encode<
176
+ const parameters extends AbiParameters | readonly unknown[],
177
+ >(
178
+ parameters: parameters,
179
+ values: parameters extends AbiParameters
180
+ ? internal.ToPrimitiveTypes<parameters>
181
+ : never,
182
+ ): Hex.Hex {
183
+ if (parameters.length !== values.length)
184
+ throw new LengthMismatchError({
185
+ expectedLength: parameters.length as number,
186
+ givenLength: values.length as any,
187
+ })
188
+ // Prepare the parameters to determine dynamic types to encode.
189
+ const preparedParameters = internal.prepareParameters({
190
+ parameters: parameters as readonly Parameter[],
191
+ values: values as any,
192
+ })
193
+ const data = internal.encode(preparedParameters)
194
+ if (data.length === 0) return '0x'
195
+ return data
196
+ }
197
+
198
+ export declare namespace encode {
199
+ type ErrorType =
200
+ | LengthMismatchError
201
+ | internal.encode.ErrorType
202
+ | internal.prepareParameters.ErrorType
203
+ | Errors.GlobalErrorType
204
+ }
205
+
206
+ encode.parseError = (error: unknown) =>
207
+ /* v8 ignore next */
208
+ error as encode.ErrorType
209
+
210
+ /**
211
+ * Encodes an array of primitive values to a [packed ABI encoding](https://docs.soliditylang.org/en/latest/abi-spec.html#non-standard-packed-mode).
212
+ *
213
+ * @example
214
+ * ```ts twoslash
215
+ * import { AbiParameters } from 'ox'
216
+ *
217
+ * const encoded = AbiParameters.encodePacked(
218
+ * ['address', 'string'],
219
+ * ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045', 'hello world'],
220
+ * )
221
+ * // @log: '0xd8da6bf26964af9d7eed9e03e53415d37aa9604568656c6c6f20776f726c64'
222
+ * ```
223
+ *
224
+ * @param types - Set of ABI types to pack encode.
225
+ * @param values - The set of primitive values that correspond to the ABI types defined in `types`.
226
+ * @returns The encoded packed data.
227
+ */
228
+ export function encodePacked<
229
+ const packedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],
230
+ >(types: packedAbiTypes, values: encodePacked.Values<packedAbiTypes>): Hex.Hex {
231
+ if (types.length !== values.length)
232
+ throw new LengthMismatchError({
233
+ expectedLength: types.length as number,
234
+ givenLength: values.length as number,
235
+ })
236
+
237
+ const data: Hex.Hex[] = []
238
+ for (let i = 0; i < (types as unknown[]).length; i++) {
239
+ const type = types[i]
240
+ const value = values[i]
241
+ data.push(encodePacked.encode(type, value))
242
+ }
243
+ return Hex.concat(...data)
244
+ }
245
+
246
+ export namespace encodePacked {
247
+ export type ErrorType =
248
+ | Hex.concat.ErrorType
249
+ | LengthMismatchError
250
+ | Errors.GlobalErrorType
251
+
252
+ export type Values<
253
+ packedAbiTypes extends readonly PackedAbiType[] | readonly unknown[],
254
+ > = {
255
+ [key in keyof packedAbiTypes]: packedAbiTypes[key] extends abitype.AbiType
256
+ ? abitype.AbiParameterToPrimitiveType<{ type: packedAbiTypes[key] }>
257
+ : unknown
258
+ }
259
+
260
+ // eslint-disable-next-line jsdoc/require-jsdoc
261
+ export function encode<const packedAbiType extends PackedAbiType | unknown>(
262
+ type: packedAbiType,
263
+ value: Values<[packedAbiType]>[0],
264
+ isArray = false,
265
+ ): Hex.Hex {
266
+ if (type === 'address') {
267
+ const address = value as Address.Address
268
+ Address.assert(address)
269
+ return Hex.padLeft(
270
+ address.toLowerCase() as Hex.Hex,
271
+ isArray ? 32 : 0,
272
+ ) as Address.Address
273
+ }
274
+ if (type === 'string') return Hex.fromString(value as string)
275
+ if (type === 'bytes') return value as Hex.Hex
276
+ if (type === 'bool')
277
+ return Hex.padLeft(Hex.fromBoolean(value as boolean), isArray ? 32 : 1)
278
+
279
+ const intMatch = (type as string).match(Solidity.integerRegex)
280
+ if (intMatch) {
281
+ const [_type, baseType, bits = '256'] = intMatch
282
+ const size = Number.parseInt(bits) / 8
283
+ return Hex.fromNumber(value as number, {
284
+ size: isArray ? 32 : size,
285
+ signed: baseType === 'int',
286
+ })
287
+ }
288
+
289
+ const bytesMatch = (type as string).match(Solidity.bytesRegex)
290
+ if (bytesMatch) {
291
+ const [_type, size] = bytesMatch
292
+ if (Number.parseInt(size!) !== ((value as Hex.Hex).length - 2) / 2)
293
+ throw new BytesSizeMismatchError({
294
+ expectedSize: Number.parseInt(size!),
295
+ value: value as Hex.Hex,
296
+ })
297
+ return Hex.padRight(value as Hex.Hex, isArray ? 32 : 0) as Hex.Hex
298
+ }
299
+
300
+ const arrayMatch = (type as string).match(Solidity.arrayRegex)
301
+ if (arrayMatch && Array.isArray(value)) {
302
+ const [_type, childType] = arrayMatch
303
+ const data: Hex.Hex[] = []
304
+ for (let i = 0; i < value.length; i++) {
305
+ data.push(encode(childType, value[i], true))
306
+ }
307
+ if (data.length === 0) return '0x'
308
+ return Hex.concat(...data)
309
+ }
310
+
311
+ throw new InvalidTypeError(type as string)
312
+ }
313
+ }
314
+
315
+ /* v8 ignore next */
316
+ encodePacked.parseError = (error: unknown) => error as encodePacked.ErrorType
317
+
318
+ /**
319
+ * Formats {@link ox#AbiParameters.AbiParameters} into **Human Readable ABI Parameters**.
320
+ *
321
+ * @example
322
+ * ```ts twoslash
323
+ * import { AbiParameters } from 'ox'
324
+ *
325
+ * const formatted = AbiParameters.format([
326
+ * {
327
+ * name: 'spender',
328
+ * type: 'address',
329
+ * },
330
+ * {
331
+ * name: 'amount',
332
+ * type: 'uint256',
333
+ * },
334
+ * ])
335
+ *
336
+ * formatted
337
+ * // ^?
338
+ *
339
+ *
340
+ * ```
341
+ *
342
+ * @param parameters - The ABI Parameters to format.
343
+ * @returns The formatted ABI Parameters .
344
+ */
345
+ export function format<
346
+ const parameters extends readonly [
347
+ Parameter | abitype.AbiEventParameter,
348
+ ...(readonly (Parameter | abitype.AbiEventParameter)[]),
349
+ ],
350
+ >(
351
+ parameters:
352
+ | parameters
353
+ | readonly [
354
+ Parameter | abitype.AbiEventParameter,
355
+ ...(readonly (Parameter | abitype.AbiEventParameter)[]),
356
+ ],
357
+ ): abitype.FormatAbiParameters<parameters> {
358
+ return abitype.formatAbiParameters(parameters)
359
+ }
360
+
361
+ export declare namespace format {
362
+ type ErrorType = Errors.GlobalErrorType
363
+ }
364
+
365
+ format.parseError = (error: unknown) =>
366
+ /* v8 ignore next */
367
+ error as format.ErrorType
368
+
369
+ /**
370
+ * Parses arbitrary **JSON ABI Parameters** or **Human Readable ABI Parameters** into typed {@link ox#AbiParameters.AbiParameters}.
371
+ *
372
+ * @example
373
+ * ### JSON Parameters
374
+ *
375
+ * ```ts twoslash
376
+ * import { AbiParameters } from 'ox'
377
+ *
378
+ * const parameters = AbiParameters.from([
379
+ * {
380
+ * name: 'spender',
381
+ * type: 'address',
382
+ * },
383
+ * {
384
+ * name: 'amount',
385
+ * type: 'uint256',
386
+ * },
387
+ * ])
388
+ *
389
+ * parameters
390
+ * //^?
391
+ *
392
+ *
393
+ *
394
+ *
395
+ *
396
+ *
397
+ *
398
+ * ```
399
+ *
400
+ * @example
401
+ * ### Human Readable Parameters
402
+ *
403
+ * Human Readable ABI Parameters can be parsed into a typed {@link ox#AbiParameters.AbiParameters}:
404
+ *
405
+ * ```ts twoslash
406
+ * import { AbiParameters } from 'ox'
407
+ *
408
+ * const parameters = AbiParameters.from('address spender, uint256 amount')
409
+ *
410
+ * parameters
411
+ * //^?
412
+ *
413
+ *
414
+ *
415
+ *
416
+ *
417
+ *
418
+ *
419
+ * ```
420
+ *
421
+ * @example
422
+ * It is possible to specify `struct`s along with your definitions:
423
+ *
424
+ * ```ts twoslash
425
+ * import { AbiParameters } from 'ox'
426
+ *
427
+ * const parameters = AbiParameters.from([
428
+ * 'struct Foo { address spender; uint256 amount; }', // [!code hl]
429
+ * 'Foo foo, address bar',
430
+ * ])
431
+ *
432
+ * parameters
433
+ * //^?
434
+ *
435
+ *
436
+ *
437
+ *
438
+ *
439
+ *
440
+ *
441
+ *
442
+ *
443
+ *
444
+ *
445
+ *
446
+ * ```
447
+ *
448
+ *
449
+ *
450
+ * @param parameters - The ABI Parameters to parse.
451
+ * @returns The typed ABI Parameters.
452
+ */
453
+ export function from<
454
+ const parameters extends AbiParameters | string | readonly string[],
455
+ >(
456
+ parameters: parameters | AbiParameters | string | readonly string[],
457
+ ): from.ReturnType<parameters> {
458
+ if (Array.isArray(parameters) && typeof parameters[0] === 'string')
459
+ return abitype.parseAbiParameters(parameters) as never
460
+ if (typeof parameters === 'string')
461
+ return abitype.parseAbiParameters(parameters) as never
462
+ return parameters as never
463
+ }
464
+
465
+ export declare namespace from {
466
+ type ReturnType<
467
+ parameters extends AbiParameters | string | readonly string[],
468
+ > = parameters extends string
469
+ ? abitype.ParseAbiParameters<parameters>
470
+ : parameters extends readonly string[]
471
+ ? abitype.ParseAbiParameters<parameters>
472
+ : parameters
473
+
474
+ type ErrorType = Errors.GlobalErrorType
475
+ }
476
+
477
+ from.parseError = (error: unknown) =>
478
+ /* v8 ignore next */
479
+ error as from.ErrorType
480
+
481
+ /**
482
+ * Throws when the data size is too small for the given parameters.
483
+ *
484
+ * @example
485
+ * ```ts twoslash
486
+ * import { AbiParameters } from 'ox'
487
+ *
488
+ * AbiParameters.decode([{ type: 'uint256' }], '0x010f')
489
+ * // ↑ ❌ 2 bytes
490
+ * // @error: AbiParameters.DataSizeTooSmallError: Data size of 2 bytes is too small for given parameters.
491
+ * // @error: Params: (uint256)
492
+ * // @error: Data: 0x010f (2 bytes)
493
+ * ```
494
+ *
495
+ * ### Solution
496
+ *
497
+ * Pass a valid data size.
498
+ *
499
+ * ```ts twoslash
500
+ * import { AbiParameters } from 'ox'
501
+ *
502
+ * AbiParameters.decode([{ type: 'uint256' }], '0x00000000000000000000000000000000000000000000000000000000000010f')
503
+ * // ↑ ✅ 32 bytes
504
+ * ```
505
+ */
506
+ export class DataSizeTooSmallError extends Errors.BaseError {
507
+ override readonly name = 'AbiParameters.DataSizeTooSmallError'
508
+ constructor({
509
+ data,
510
+ parameters,
511
+ size,
512
+ }: { data: Hex.Hex; parameters: readonly Parameter[]; size: number }) {
513
+ super(`Data size of ${size} bytes is too small for given parameters.`, {
514
+ metaMessages: [
515
+ `Params: (${abitype.formatAbiParameters(parameters as readonly [Parameter])})`,
516
+ `Data: ${data} (${size} bytes)`,
517
+ ],
518
+ })
519
+ }
520
+ }
521
+
522
+ /**
523
+ * Throws when zero data is provided, but data is expected.
524
+ *
525
+ * @example
526
+ * ```ts twoslash
527
+ * import { AbiParameters } from 'ox'
528
+ *
529
+ * AbiParameters.decode([{ type: 'uint256' }], '0x')
530
+ * // ↑ ❌ zero data
531
+ * // @error: AbiParameters.DataSizeTooSmallError: Data size of 2 bytes is too small for given parameters.
532
+ * // @error: Params: (uint256)
533
+ * // @error: Data: 0x010f (2 bytes)
534
+ * ```
535
+ *
536
+ * ### Solution
537
+ *
538
+ * Pass valid data.
539
+ *
540
+ * ```ts twoslash
541
+ * import { AbiParameters } from 'ox'
542
+ *
543
+ * AbiParameters.decode([{ type: 'uint256' }], '0x00000000000000000000000000000000000000000000000000000000000010f')
544
+ * // ↑ ✅ 32 bytes
545
+ * ```
546
+ */
547
+ export class ZeroDataError extends Errors.BaseError {
548
+ override readonly name = 'AbiParameters.ZeroDataError'
549
+ constructor() {
550
+ super('Cannot decode zero data ("0x") with ABI parameters.')
551
+ }
552
+ }
553
+
554
+ /**
555
+ * The length of the array value does not match the length specified in the corresponding ABI parameter.
556
+ *
557
+ * ### Example
558
+ *
559
+ * ```ts twoslash
560
+ * // @noErrors
561
+ * import { AbiParameters } from 'ox'
562
+ * // ---cut---
563
+ * AbiParameters.encode(AbiParameters.from('uint256[3]'), [[69n, 420n]])
564
+ * // ↑ expected: 3 ↑ ❌ length: 2
565
+ * // @error: AbiParameters.ArrayLengthMismatchError: ABI encoding array length mismatch
566
+ * // @error: for type `uint256[3]`. Expected: `3`. Given: `2`.
567
+ * ```
568
+ *
569
+ * ### Solution
570
+ *
571
+ * Pass an array of the correct length.
572
+ *
573
+ * ```ts twoslash
574
+ * import { AbiParameters } from 'ox'
575
+ * // ---cut---
576
+ * AbiParameters.encode(AbiParameters.from(['uint256[3]']), [[69n, 420n, 69n]])
577
+ * // ↑ ✅ length: 3
578
+ * ```
579
+ */
580
+ export class ArrayLengthMismatchError extends Errors.BaseError {
581
+ override readonly name = 'AbiParameters.ArrayLengthMismatchError'
582
+ constructor({
583
+ expectedLength,
584
+ givenLength,
585
+ type,
586
+ }: { expectedLength: number; givenLength: number; type: string }) {
587
+ super(
588
+ `Array length mismatch for type \`${type}\`. Expected: \`${expectedLength}\`. Given: \`${givenLength}\`.`,
589
+ )
590
+ }
591
+ }
592
+
593
+ /**
594
+ * The size of the bytes value does not match the size specified in the corresponding ABI parameter.
595
+ *
596
+ * ### Example
597
+ *
598
+ * ```ts twoslash
599
+ * // @noErrors
600
+ * import { AbiParameters } from 'ox'
601
+ * // ---cut---
602
+ * AbiParameters.encode(AbiParameters.from('bytes8'), [['0xdeadbeefdeadbeefdeadbeef']])
603
+ * // ↑ expected: 8 bytes ↑ ❌ size: 12 bytes
604
+ * // @error: BytesSizeMismatchError: Size of bytes "0xdeadbeefdeadbeefdeadbeef"
605
+ * // @error: (bytes12) does not match expected size (bytes8).
606
+ * ```
607
+ *
608
+ * ### Solution
609
+ *
610
+ * Pass a bytes value of the correct size.
611
+ *
612
+ * ```ts twoslash
613
+ * import { AbiParameters } from 'ox'
614
+ * // ---cut---
615
+ * AbiParameters.encode(AbiParameters.from(['bytes8']), ['0xdeadbeefdeadbeef'])
616
+ * // ↑ ✅ size: 8 bytes
617
+ * ```
618
+ */
619
+ export class BytesSizeMismatchError extends Errors.BaseError {
620
+ override readonly name = 'AbiParameters.BytesSizeMismatchError'
621
+ constructor({
622
+ expectedSize,
623
+ value,
624
+ }: { expectedSize: number; value: Hex.Hex }) {
625
+ super(
626
+ `Size of bytes "${value}" (bytes${Hex.size(
627
+ value,
628
+ )}) does not match expected size (bytes${expectedSize}).`,
629
+ )
630
+ }
631
+ }
632
+
633
+ /**
634
+ * The length of the values to encode does not match the length of the ABI parameters.
635
+ *
636
+ * ### Example
637
+ *
638
+ * ```ts twoslash
639
+ * // @noErrors
640
+ * import { AbiParameters } from 'ox'
641
+ * // ---cut---
642
+ * AbiParameters.encode(AbiParameters.from(['string', 'uint256']), ['hello'])
643
+ * // @error: LengthMismatchError: ABI encoding params/values length mismatch.
644
+ * // @error: Expected length (params): 2
645
+ * // @error: Given length (values): 1
646
+ * ```
647
+ *
648
+ * ### Solution
649
+ *
650
+ * Pass the correct number of values to encode.
651
+ *
652
+ * ### Solution
653
+ *
654
+ * Pass a [valid ABI type](https://docs.soliditylang.org/en/develop/abi-spec.html#types).
655
+ */
656
+ export class LengthMismatchError extends Errors.BaseError {
657
+ override readonly name = 'AbiParameters.LengthMismatchError'
658
+ constructor({
659
+ expectedLength,
660
+ givenLength,
661
+ }: { expectedLength: number; givenLength: number }) {
662
+ super(
663
+ [
664
+ 'ABI encoding parameters/values length mismatch.',
665
+ `Expected length (parameters): ${expectedLength}`,
666
+ `Given length (values): ${givenLength}`,
667
+ ].join('\n'),
668
+ )
669
+ }
670
+ }
671
+
672
+ /**
673
+ * The value provided is not a valid array as specified in the corresponding ABI parameter.
674
+ *
675
+ * ### Example
676
+ *
677
+ * ```ts twoslash
678
+ * // @noErrors
679
+ * import { AbiParameters } from 'ox'
680
+ * // ---cut---
681
+ * AbiParameters.encode(AbiParameters.from(['uint256[3]']), [69])
682
+ * ```
683
+ *
684
+ * ### Solution
685
+ *
686
+ * Pass an array value.
687
+ */
688
+ export class InvalidArrayError extends Errors.BaseError {
689
+ override readonly name = 'AbiParameters.InvalidArrayError'
690
+ constructor(value: unknown) {
691
+ super(`Value \`${value}\` is not a valid array.`)
692
+ }
693
+ }
694
+
695
+ /**
696
+ * Throws when the ABI parameter type is invalid.
697
+ *
698
+ * @example
699
+ * ```ts twoslash
700
+ * import { AbiParameters } from 'ox'
701
+ *
702
+ * AbiParameters.decode([{ type: 'lol' }], '0x00000000000000000000000000000000000000000000000000000000000010f')
703
+ * // ↑ ❌ invalid type
704
+ * // @error: AbiParameters.InvalidTypeError: Type `lol` is not a valid ABI Type.
705
+ * ```
706
+ */
707
+ export class InvalidTypeError extends Errors.BaseError {
708
+ override readonly name = 'AbiParameters.InvalidTypeError'
709
+ constructor(type: string) {
710
+ super(`Type \`${type}\` is not a valid ABI Type.`)
711
+ }
712
+ }