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,1038 @@
1
+ import * as abitype from 'abitype';
2
+ import * as AbiItem from './AbiItem.js';
3
+ import * as AbiParameters from './AbiParameters.js';
4
+ import * as Address from './Address.js';
5
+ import * as Bytes from './Bytes.js';
6
+ import * as Errors from './Errors.js';
7
+ import * as Hash from './Hash.js';
8
+ import * as Hex from './Hex.js';
9
+ import * as Cursor from './internal/cursor.js';
10
+ import { prettyPrint } from './internal/errors.js';
11
+ /**
12
+ * Asserts that the provided arguments match the decoded log arguments.
13
+ *
14
+ * @example
15
+ * ```ts twoslash
16
+ * import { AbiEvent } from 'ox'
17
+ *
18
+ * const abiEvent = AbiEvent.from('event Transfer(address indexed from, address indexed to, uint256 value)')
19
+ *
20
+ * const args = AbiEvent.decode(abiEvent, {
21
+ * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
22
+ * topics: [
23
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
24
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
25
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
26
+ * ],
27
+ * })
28
+ *
29
+ * AbiEvent.assertArgs(abiEvent, args, {
30
+ * from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad',
31
+ * to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
32
+ * value: 1n,
33
+ * })
34
+ *
35
+ * // @error: AbiEvent.ArgsMismatchError: Given arguments to not match the arguments decoded from the log.
36
+ * // @error: Event: event Transfer(address indexed from, address indexed to, uint256 value)
37
+ * // @error: Expected Arguments:
38
+ * // @error: from: 0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac
39
+ * // @error: to: 0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad
40
+ * // @error: value: 1
41
+ * // @error: Given Arguments:
42
+ * // @error: from: 0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad
43
+ * // @error: to: 0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac
44
+ * // @error: value: 1
45
+ * ```
46
+ *
47
+ * @param abiEvent - ABI Event to check.
48
+ * @param args - Decoded arguments.
49
+ * @param matchArgs - The arguments to check.
50
+ */
51
+ export function assertArgs(abiEvent, args, matchArgs) {
52
+ if (!args || !matchArgs)
53
+ throw new ArgsMismatchError({
54
+ abiEvent,
55
+ expected: args,
56
+ given: matchArgs,
57
+ });
58
+ function isEqual(input, value, arg) {
59
+ if (input.type === 'address')
60
+ return Address.isEqual(value, arg);
61
+ if (input.type === 'string')
62
+ return Hash.keccak256(Bytes.fromString(value)) === arg;
63
+ if (input.type === 'bytes')
64
+ return Hash.keccak256(value) === arg;
65
+ return value === arg;
66
+ }
67
+ if (Array.isArray(args) && Array.isArray(matchArgs)) {
68
+ for (const [index, value] of matchArgs.entries()) {
69
+ if (value === null || value === undefined)
70
+ continue;
71
+ const input = abiEvent.inputs[index];
72
+ if (!input)
73
+ throw new InputNotFoundError({
74
+ abiEvent,
75
+ name: `${index}`,
76
+ });
77
+ const value_ = Array.isArray(value) ? value : [value];
78
+ let equal = false;
79
+ for (const value of value_) {
80
+ if (isEqual(input, value, args[index]))
81
+ equal = true;
82
+ }
83
+ if (!equal)
84
+ throw new ArgsMismatchError({
85
+ abiEvent,
86
+ expected: args,
87
+ given: matchArgs,
88
+ });
89
+ }
90
+ }
91
+ if (typeof args === 'object' &&
92
+ !Array.isArray(args) &&
93
+ typeof matchArgs === 'object' &&
94
+ !Array.isArray(matchArgs))
95
+ for (const [key, value] of Object.entries(matchArgs)) {
96
+ if (value === null || value === undefined)
97
+ continue;
98
+ const input = abiEvent.inputs.find((input) => input.name === key);
99
+ if (!input)
100
+ throw new InputNotFoundError({ abiEvent, name: key });
101
+ const value_ = Array.isArray(value) ? value : [value];
102
+ let equal = false;
103
+ for (const value of value_) {
104
+ if (isEqual(input, value, args[key]))
105
+ equal = true;
106
+ }
107
+ if (!equal)
108
+ throw new ArgsMismatchError({
109
+ abiEvent,
110
+ expected: args,
111
+ given: matchArgs,
112
+ });
113
+ }
114
+ }
115
+ assertArgs.parseError = (error) =>
116
+ /* v8 ignore next */
117
+ error;
118
+ /**
119
+ * ABI-Decodes the provided [Log Topics and Data](https://info.etherscan.com/what-is-event-logs/) according to the ABI Event's parameter types (`input`).
120
+ *
121
+ * :::tip
122
+ *
123
+ * This function is typically used to decode an [Event Log](https://info.etherscan.com/what-is-event-logs/) that may be returned from a Log Query (e.g. `eth_getLogs`) or Transaction Receipt.
124
+ *
125
+ * See the [End-to-end Example](#end-to-end).
126
+ *
127
+ * :::
128
+ *
129
+ * @example
130
+ * ```ts twoslash
131
+ * import { AbiEvent } from 'ox'
132
+ *
133
+ * const transfer = AbiEvent.from(
134
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)'
135
+ * )
136
+ *
137
+ * const log = {
138
+ * // ...
139
+ * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
140
+ * topics: [
141
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
142
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
143
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
144
+ * ],
145
+ * } as const
146
+ *
147
+ * const decoded = AbiEvent.decode(transfer, log)
148
+ * // @log: {
149
+ * // @log: from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
150
+ * // @log: to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
151
+ * // @log: value: 1n
152
+ * // @log: }
153
+ * ```
154
+ *
155
+ * @example
156
+ * ### End-to-end
157
+ *
158
+ * Below is an end-to-end example of using `AbiEvent.decode` to decode the topics of a `Transfer` event on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
159
+ *
160
+ * ```ts twoslash
161
+ * import 'ox/window'
162
+ * import { AbiEvent, Hex } from 'ox'
163
+ *
164
+ * // 1. Instantiate the `Transfer` ABI Event.
165
+ * const transfer = AbiEvent.from(
166
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)',
167
+ * )
168
+ *
169
+ * // 2. Encode the ABI Event into Event Topics.
170
+ * const { topics } = AbiEvent.encode(transfer)
171
+ *
172
+ * // 3. Query for events matching the encoded Topics.
173
+ * const logs = await window.ethereum!.request({
174
+ * method: 'eth_getLogs',
175
+ * params: [
176
+ * {
177
+ * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
178
+ * fromBlock: Hex.fromNumber(19760235n),
179
+ * toBlock: Hex.fromNumber(19760240n),
180
+ * topics,
181
+ * },
182
+ * ],
183
+ * })
184
+ *
185
+ * // 4. Decode the Log. // [!code focus]
186
+ * const decoded = AbiEvent.decode(transfer, logs[0]!) // [!code focus]
187
+ * // @log: {
188
+ * // @log: from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
189
+ * // @log: to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
190
+ * // @log: value: 603n
191
+ * // @log: }
192
+ * ```
193
+ *
194
+ * :::note
195
+ *
196
+ * For simplicity, the above example uses `window.ethereum.request`, but you can use any
197
+ * type of JSON-RPC interface.
198
+ *
199
+ * :::
200
+ *
201
+ * @param abiEvent - The ABI Event to decode.
202
+ * @param log - `topics` & `data` to decode.
203
+ * @returns The decoded event.
204
+ */
205
+ export function decode(abiEvent, log) {
206
+ const { data, topics } = log;
207
+ const [selector_, ...argTopics] = topics;
208
+ const selector = getSelector(abiEvent);
209
+ if (selector_ !== selector)
210
+ throw new SelectorTopicMismatchError({
211
+ abiEvent,
212
+ actual: selector_,
213
+ expected: selector,
214
+ });
215
+ const { inputs } = abiEvent;
216
+ const isUnnamed = inputs?.every((x) => !('name' in x && x.name));
217
+ let args = isUnnamed ? [] : {};
218
+ // Decode topics (indexed args).
219
+ const indexedInputs = inputs.filter((x) => 'indexed' in x && x.indexed);
220
+ for (let i = 0; i < indexedInputs.length; i++) {
221
+ const param = indexedInputs[i];
222
+ const topic = argTopics[i];
223
+ if (!topic)
224
+ throw new TopicsMismatchError({
225
+ abiEvent,
226
+ param: param,
227
+ });
228
+ args[isUnnamed ? i : param.name || i] = (() => {
229
+ if (param.type === 'string' ||
230
+ param.type === 'bytes' ||
231
+ param.type === 'tuple' ||
232
+ param.type.match(/^(.*)\[(\d+)?\]$/))
233
+ return topic;
234
+ const decoded = AbiParameters.decode([param], topic) || [];
235
+ return decoded[0];
236
+ })();
237
+ }
238
+ // Decode data (non-indexed args).
239
+ const nonIndexedInputs = inputs.filter((x) => !('indexed' in x && x.indexed));
240
+ if (nonIndexedInputs.length > 0) {
241
+ if (data && data !== '0x') {
242
+ try {
243
+ const decodedData = AbiParameters.decode(nonIndexedInputs, data);
244
+ if (decodedData) {
245
+ if (isUnnamed)
246
+ args = [...args, ...decodedData];
247
+ else {
248
+ for (let i = 0; i < nonIndexedInputs.length; i++) {
249
+ const index = inputs.indexOf(nonIndexedInputs[i]);
250
+ args[nonIndexedInputs[i].name || index] = decodedData[i];
251
+ }
252
+ }
253
+ }
254
+ }
255
+ catch (err) {
256
+ if (err instanceof AbiParameters.DataSizeTooSmallError ||
257
+ err instanceof Cursor.PositionOutOfBoundsError)
258
+ throw new DataMismatchError({
259
+ abiEvent,
260
+ data: data,
261
+ parameters: nonIndexedInputs,
262
+ size: Hex.size(data),
263
+ });
264
+ throw err;
265
+ }
266
+ }
267
+ else {
268
+ throw new DataMismatchError({
269
+ abiEvent,
270
+ data: '0x',
271
+ parameters: nonIndexedInputs,
272
+ size: 0,
273
+ });
274
+ }
275
+ }
276
+ return Object.values(args).length > 0 ? args : undefined;
277
+ }
278
+ decode.parseError = (error) =>
279
+ /* v8 ignore next */
280
+ error;
281
+ /**
282
+ * ABI-encodes the provided event input (`inputs`) into an array of [Event Topics](https://info.etherscan.com/what-is-event-logs/).
283
+ *
284
+ * :::tip
285
+ *
286
+ * This function is typically used to encode event arguments into [Event Topics](https://info.etherscan.com/what-is-event-logs/).
287
+ *
288
+ * See the [End-to-end Example](#end-to-end).
289
+ *
290
+ * :::
291
+ *
292
+ * @example
293
+ * ```ts twoslash
294
+ * import { AbiEvent } from 'ox'
295
+ *
296
+ * const transfer = AbiEvent.from(
297
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)'
298
+ * )
299
+ *
300
+ * const { topics } = AbiEvent.encode(transfer)
301
+ * // @log: ['0x406dade31f7ae4b5dbc276258c28dde5ae6d5c2773c5745802c493a2360e55e0']
302
+ * ```
303
+ *
304
+ * @example
305
+ * ### Passing Arguments
306
+ *
307
+ * You can pass `indexed` parameter values to `AbiEvent.encode`.
308
+ *
309
+ * TypeScript types will be inferred from the ABI Event, to guard you from inserting the wrong values.
310
+ *
311
+ * For example, the `Transfer` event below accepts an `address` type for the `from` and `to` attributes.
312
+ *
313
+ * ```ts twoslash
314
+ * import { AbiEvent } from 'ox'
315
+ *
316
+ * const transfer = AbiEvent.from(
317
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)'
318
+ * )
319
+ *
320
+ * const { topics } = AbiEvent.encode(transfer, {
321
+ * from: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', // [!code hl]
322
+ * to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8' // [!code hl]
323
+ * })
324
+ * // @log: [
325
+ * // @log: '0x406dade31f7ae4b5dbc276258c28dde5ae6d5c2773c5745802c493a2360e55e0',
326
+ * // @log: '0x00000000000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266',
327
+ * // @log: '0x0000000000000000000000000000000070997970c51812dc3a010c7d01b50e0d17dc79c8'
328
+ * // @log: ]
329
+ * ```
330
+ *
331
+ * @example
332
+ * ### End-to-end
333
+ *
334
+ * Below is an end-to-end example of using `AbiEvent.encode` to encode the topics of a `Transfer` event and query for events matching the encoded topics on the [Wagmi Mint Example contract](https://etherscan.io/address/0xfba3912ca04dd458c843e2ee08967fc04f3579c2).
335
+ *
336
+ * ```ts twoslash
337
+ * import 'ox/window'
338
+ * import { AbiEvent, Hex } from 'ox'
339
+ *
340
+ * // 1. Instantiate the `Transfer` ABI Event.
341
+ * const transfer = AbiEvent.from(
342
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)',
343
+ * )
344
+ *
345
+ * // 2. Encode the ABI Event into Event Topics.
346
+ * const { topics } = AbiEvent.encode(transfer)
347
+ *
348
+ * // 3. Query for events matching the encoded Topics.
349
+ * const logs = await window.ethereum!.request({
350
+ * method: 'eth_getLogs',
351
+ * params: [
352
+ * {
353
+ * address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2',
354
+ * fromBlock: Hex.fromNumber(19760235n),
355
+ * toBlock: Hex.fromNumber(19760240n),
356
+ * topics,
357
+ * },
358
+ * ],
359
+ * })
360
+ * // @log: [
361
+ * // @log: "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
362
+ * // @log: "0x0000000000000000000000000000000000000000000000000000000000000000",
363
+ * // @log: "0x0000000000000000000000000c04d9e9278ec5e4d424476d3ebec70cb5d648d1",
364
+ * // @log: "0x000000000000000000000000000000000000000000000000000000000000025b",
365
+ * // @log: ]
366
+ * ```
367
+ *
368
+ * :::note
369
+ *
370
+ * For simplicity, the above example uses `window.ethereum.request`, but you can use any
371
+ * type of JSON-RPC interface.
372
+ *
373
+ * :::
374
+ *
375
+ * @param abiEvent - The event to encode.
376
+ * @param args - The arguments to encode.
377
+ * @returns The encoded event topics.
378
+ */
379
+ export function encode(abiEvent, ...[args]) {
380
+ let topics = [];
381
+ if (args && abiEvent.inputs) {
382
+ const indexedInputs = abiEvent.inputs.filter((param) => 'indexed' in param && param.indexed);
383
+ const args_ = Array.isArray(args)
384
+ ? args
385
+ : Object.values(args).length > 0
386
+ ? indexedInputs?.map((x, i) => args[x.name ?? i]) ?? []
387
+ : [];
388
+ if (args_.length > 0) {
389
+ const encode = (param, value) => {
390
+ if (param.type === 'string')
391
+ return Hash.keccak256(Hex.fromString(value));
392
+ if (param.type === 'bytes')
393
+ return Hash.keccak256(value);
394
+ if (param.type === 'tuple' || param.type.match(/^(.*)\[(\d+)?\]$/))
395
+ throw new FilterTypeNotSupportedError(param.type);
396
+ return AbiParameters.encode([param], [value]);
397
+ };
398
+ topics =
399
+ indexedInputs?.map((param, i) => {
400
+ if (Array.isArray(args_[i]))
401
+ return args_[i].map((_, j) => encode(param, args_[i][j]));
402
+ return args_[i] ? encode(param, args_[i]) : null;
403
+ }) ?? [];
404
+ }
405
+ }
406
+ const selector = (() => {
407
+ if (abiEvent.hash)
408
+ return abiEvent.hash;
409
+ return getSelector(abiEvent);
410
+ })();
411
+ return { topics: [selector, ...topics] };
412
+ }
413
+ encode.parseError = (error) =>
414
+ /* v8 ignore next */
415
+ error;
416
+ /**
417
+ * Formats an {@link ox#AbiEvent.AbiEvent} into a **Human Readable ABI Error**.
418
+ *
419
+ * @example
420
+ * ```ts twoslash
421
+ * import { AbiEvent } from 'ox'
422
+ *
423
+ * const formatted = AbiEvent.format({
424
+ * type: 'event',
425
+ * name: 'Transfer',
426
+ * inputs: [
427
+ * { name: 'from', type: 'address', indexed: true },
428
+ * { name: 'to', type: 'address', indexed: true },
429
+ * { name: 'value', type: 'uint256' },
430
+ * ],
431
+ * })
432
+ *
433
+ * formatted
434
+ * // ^?
435
+ *
436
+ *
437
+ * ```
438
+ *
439
+ * @param abiEvent - The ABI Event to format.
440
+ * @returns The formatted ABI Event.
441
+ */
442
+ export function format(abiEvent) {
443
+ return abitype.formatAbiItem(abiEvent);
444
+ }
445
+ format.parseError = (error) =>
446
+ /* v8 ignore next */
447
+ error;
448
+ /**
449
+ * Parses an arbitrary **JSON ABI Event** or **Human Readable ABI Event** into a typed {@link ox#AbiEvent.AbiEvent}.
450
+ *
451
+ * @example
452
+ * ### JSON ABIs
453
+ *
454
+ * ```ts twoslash
455
+ * import { AbiEvent } from 'ox'
456
+ *
457
+ * const transfer = AbiEvent.from({
458
+ * name: 'Transfer',
459
+ * type: 'event',
460
+ * inputs: [
461
+ * { name: 'from', type: 'address', indexed: true },
462
+ * { name: 'to', type: 'address', indexed: true },
463
+ * { name: 'value', type: 'uint256' },
464
+ * ],
465
+ * })
466
+ *
467
+ * transfer
468
+ * //^?
469
+ *
470
+ *
471
+ *
472
+ *
473
+ *
474
+ *
475
+ *
476
+ *
477
+ *
478
+ *
479
+ *
480
+ *
481
+ * ```
482
+ *
483
+ * @example
484
+ * ### Human Readable ABIs
485
+ *
486
+ * A Human Readable ABI can be parsed into a typed ABI object:
487
+ *
488
+ * ```ts twoslash
489
+ * import { AbiEvent } from 'ox'
490
+ *
491
+ * const transfer = AbiEvent.from(
492
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)' // [!code hl]
493
+ * )
494
+ *
495
+ * transfer
496
+ * //^?
497
+ *
498
+ *
499
+ *
500
+ *
501
+ *
502
+ *
503
+ *
504
+ *
505
+ *
506
+ *
507
+ *
508
+ *
509
+ *
510
+ * ```
511
+ *
512
+ * @param abiEvent - The ABI Event to parse.
513
+ * @returns Typed ABI Event.
514
+ */
515
+ export function from(abiEvent, options = {}) {
516
+ return AbiItem.from(abiEvent, options);
517
+ }
518
+ from.parseEvent = (Event) =>
519
+ /* v8 ignore next */
520
+ Event;
521
+ /**
522
+ * Extracts an {@link ox#AbiEvent.AbiEvent} from an {@link ox#Abi.Abi} given a name and optional arguments.
523
+ *
524
+ * @example
525
+ * ### Extracting by Name
526
+ *
527
+ * ABI Events can be extracted by their name using the `name` option:
528
+ *
529
+ * ```ts twoslash
530
+ * import { Abi, AbiEvent } from 'ox'
531
+ *
532
+ * const abi = Abi.from([
533
+ * 'function foo()',
534
+ * 'event Transfer(address owner, address to, uint256 tokenId)',
535
+ * 'function bar(string a) returns (uint256 x)',
536
+ * ])
537
+ *
538
+ * const item = AbiEvent.fromAbi(abi, 'Transfer') // [!code focus]
539
+ * // ^?
540
+ *
541
+ *
542
+ *
543
+ *
544
+ *
545
+ *
546
+ * ```
547
+ *
548
+ * @example
549
+ * ### Extracting by Selector
550
+ *
551
+ * ABI Events can be extract by their selector when {@link ox#Hex.Hex} is provided to `name`.
552
+ *
553
+ * ```ts twoslash
554
+ * import { Abi, AbiEvent } from 'ox'
555
+ *
556
+ * const abi = Abi.from([
557
+ * 'function foo()',
558
+ * 'event Transfer(address owner, address to, uint256 tokenId)',
559
+ * 'function bar(string a) returns (uint256 x)',
560
+ * ])
561
+ * const item = AbiEvent.fromAbi(abi, '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef') // [!code focus]
562
+ * // ^?
563
+ *
564
+ *
565
+ *
566
+ *
567
+ *
568
+ *
569
+ *
570
+ *
571
+ *
572
+ * ```
573
+ *
574
+ * :::note
575
+ *
576
+ * Extracting via a hex selector is useful when extracting an ABI Event from the first topic of a Log.
577
+ *
578
+ * :::
579
+ *
580
+ * @param abi - The ABI to extract from.
581
+ * @param name - The name (or selector) of the ABI item to extract.
582
+ * @param options - Extraction options.
583
+ * @returns The ABI item.
584
+ */
585
+ export function fromAbi(abi, name, options) {
586
+ const item = AbiItem.fromAbi(abi, name, options);
587
+ if (item.type !== 'event')
588
+ throw new AbiItem.NotFoundError({ name, type: 'event' });
589
+ return item;
590
+ }
591
+ fromAbi.parseError = (error) =>
592
+ /* v8 ignore next */
593
+ error;
594
+ /**
595
+ * Computes the event selector (hash of event signature) for an {@link ox#AbiEvent.AbiEvent}.
596
+ *
597
+ * @example
598
+ * ```ts twoslash
599
+ * import { AbiEvent } from 'ox'
600
+ *
601
+ * const selector = AbiEvent.getSelector('event Transfer(address indexed from, address indexed to, uint256 value)')
602
+ * // @log: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f556a2'
603
+ * ```
604
+ *
605
+ * @example
606
+ * ```ts twoslash
607
+ * import { AbiEvent } from 'ox'
608
+ *
609
+ * const selector = AbiEvent.getSelector({
610
+ * name: 'Transfer',
611
+ * type: 'event',
612
+ * inputs: [
613
+ * { name: 'from', type: 'address', indexed: true },
614
+ * { name: 'to', type: 'address', indexed: true },
615
+ * { name: 'value', type: 'uint256' }
616
+ * ]
617
+ * })
618
+ * // @log: '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f556a2'
619
+ * ```
620
+ *
621
+ * @param abiItem - The ABI event to compute the selector for.
622
+ * @returns The {@link ox#Hash.(keccak256:function)} hash of the event signature.
623
+ */
624
+ export function getSelector(abiItem) {
625
+ return AbiItem.getSignatureHash(abiItem);
626
+ }
627
+ /* v8 ignore next */
628
+ getSelector.parseError = (error) => error;
629
+ /**
630
+ * Thrown when the provided arguments do not match the expected arguments.
631
+ *
632
+ * @example
633
+ * ```ts twoslash
634
+ * import { AbiEvent } from 'ox'
635
+ *
636
+ * const abiEvent = AbiEvent.from(
637
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)',
638
+ * )
639
+ *
640
+ * const args = AbiEvent.decode(abiEvent, {
641
+ * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
642
+ * topics: [
643
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
644
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
645
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ad',
646
+ * ],
647
+ * })
648
+ *
649
+ * AbiEvent.assertArgs(abiEvent, args, {
650
+ * from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad',
651
+ * to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
652
+ * value: 1n,
653
+ * })
654
+ * // @error: AbiEvent.ArgsMismatchError: Given arguments do not match the expected arguments.
655
+ * // @error: Event: event Transfer(address indexed from, address indexed to, uint256 value)
656
+ * // @error: Expected Arguments:
657
+ * // @error: from: 0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac
658
+ * // @error: to: 0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad
659
+ * // @error: value: 1
660
+ * // @error: Given Arguments:
661
+ * // @error: from: 0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad
662
+ * // @error: to: 0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac
663
+ * // @error: value: 1
664
+ * ```
665
+ *
666
+ * ### Solution
667
+ *
668
+ * The provided arguments need to match the expected arguments.
669
+ *
670
+ * ```ts twoslash
671
+ * // @noErrors
672
+ * import { AbiEvent } from 'ox'
673
+ *
674
+ * const abiEvent = AbiEvent.from(
675
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)',
676
+ * )
677
+ *
678
+ * const args = AbiEvent.decode(abiEvent, {
679
+ * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
680
+ * topics: [
681
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
682
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
683
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ad',
684
+ * ],
685
+ * })
686
+ *
687
+ * AbiEvent.assertArgs(abiEvent, args, {
688
+ * from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad', // [!code --]
689
+ * from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac', // [!code ++]
690
+ * to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac', // [!code --]
691
+ * to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad', // [!code ++]
692
+ * value: 1n,
693
+ * })
694
+ * ```
695
+ */
696
+ export class ArgsMismatchError extends Errors.BaseError {
697
+ constructor({ abiEvent, expected, given, }) {
698
+ super('Given arguments do not match the expected arguments.', {
699
+ metaMessages: [
700
+ `Event: ${format(abiEvent)}`,
701
+ `Expected Arguments: ${!expected ? 'None' : ''}`,
702
+ expected ? prettyPrint(expected) : undefined,
703
+ `Given Arguments: ${!given ? 'None' : ''}`,
704
+ given ? prettyPrint(given) : undefined,
705
+ ],
706
+ });
707
+ Object.defineProperty(this, "name", {
708
+ enumerable: true,
709
+ configurable: true,
710
+ writable: true,
711
+ value: 'AbiEvent.ArgsMismatchError'
712
+ });
713
+ }
714
+ }
715
+ /**
716
+ * Thrown when no argument was found on the event signature.
717
+ *
718
+ * @example
719
+ * ```ts twoslash
720
+ * // @noErrors
721
+ * import { AbiEvent } from 'ox'
722
+ *
723
+ * const abiEvent = AbiEvent.from(
724
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)',
725
+ * )
726
+ *
727
+ * const args = AbiEvent.decode(abiEvent, {
728
+ * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
729
+ * topics: [
730
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
731
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
732
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ad',
733
+ * ],
734
+ * })
735
+ *
736
+ * AbiEvent.assertArgs(abiEvent, args, {
737
+ * a: 'b',
738
+ * from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
739
+ * to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad',
740
+ * value: 1n,
741
+ * })
742
+ * // @error: AbiEvent.InputNotFoundError: Parameter "a" not found on `event Transfer(address indexed from, address indexed to, uint256 value)`.
743
+ * ```
744
+ *
745
+ * ### Solution
746
+ *
747
+ * Ensure the arguments match the event signature.
748
+ *
749
+ * ```ts twoslash
750
+ * // @noErrors
751
+ * import { AbiEvent } from 'ox'
752
+ *
753
+ * const abiEvent = AbiEvent.from(
754
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)',
755
+ * )
756
+ *
757
+ * const args = AbiEvent.decode(abiEvent, {
758
+ * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
759
+ * topics: [
760
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
761
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
762
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ad',
763
+ * ],
764
+ * })
765
+ *
766
+ * AbiEvent.assertArgs(abiEvent, args, {
767
+ * a: 'b', // [!code --]
768
+ * from: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ac',
769
+ * to: '0xa5cc3c03994db5b0d9a5eedd10cabab0813678ad',
770
+ * value: 1n,
771
+ * })
772
+ * ```
773
+ */
774
+ export class InputNotFoundError extends Errors.BaseError {
775
+ constructor({ abiEvent, name, }) {
776
+ super(`Parameter "${name}" not found on \`${format(abiEvent)}\`.`);
777
+ Object.defineProperty(this, "name", {
778
+ enumerable: true,
779
+ configurable: true,
780
+ writable: true,
781
+ value: 'AbiEvent.InputNotFoundError'
782
+ });
783
+ }
784
+ }
785
+ /**
786
+ * Thrown when the provided data size does not match the expected size from the non-indexed parameters.
787
+ *
788
+ * @example
789
+ * ```ts twoslash
790
+ * import { AbiEvent } from 'ox'
791
+ *
792
+ * const abiEvent = AbiEvent.from(
793
+ * 'event Transfer(address indexed from, address to, uint256 value)',
794
+ * // ↑ 32 bytes + ↑ 32 bytes = 64 bytes
795
+ * )
796
+ *
797
+ * const args = AbiEvent.decode(abiEvent, {
798
+ * data: '0x0000000000000000000000000000000000000000000000000000000023c34600',
799
+ * // ↑ 32 bytes ❌
800
+ * topics: [
801
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
802
+ * '0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266',
803
+ * ],
804
+ * })
805
+ * // @error: AbiEvent.DataMismatchError: Data size of 32 bytes is too small for non-indexed event parameters.
806
+ * // @error: Non-indexed Parameters: (address to, uint256 value)
807
+ * // @error: Data: 0x0000000000000000000000000000000000000000000000000000000023c34600 (32 bytes)
808
+ * ```
809
+ *
810
+ * ### Solution
811
+ *
812
+ * Ensure that the data size matches the expected size.
813
+ *
814
+ * ```ts twoslash
815
+ * import { AbiEvent } from 'ox'
816
+ *
817
+ * const abiEvent = AbiEvent.from(
818
+ * 'event Transfer(address indexed from, address to, uint256 value)',
819
+ * // ↑ 32 bytes + ↑ 32 bytes = 64 bytes
820
+ * )
821
+ *
822
+ * const args = AbiEvent.decode(abiEvent, {
823
+ * data: '0x0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb922660000000000000000000000000000000000000000000000000000000023c34600',
824
+ * // ↑ 64 bytes ✅
825
+ * topics: [
826
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
827
+ * '0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266',
828
+ * ],
829
+ * })
830
+ * ```
831
+ */
832
+ export class DataMismatchError extends Errors.BaseError {
833
+ constructor({ abiEvent, data, parameters, size, }) {
834
+ super([
835
+ `Data size of ${size} bytes is too small for non-indexed event parameters.`,
836
+ ].join('\n'), {
837
+ metaMessages: [
838
+ `Non-indexed Parameters: (${AbiParameters.format(parameters)})`,
839
+ `Data: ${data} (${size} bytes)`,
840
+ ],
841
+ });
842
+ Object.defineProperty(this, "name", {
843
+ enumerable: true,
844
+ configurable: true,
845
+ writable: true,
846
+ value: 'AbiEvent.DataMismatchError'
847
+ });
848
+ Object.defineProperty(this, "abiEvent", {
849
+ enumerable: true,
850
+ configurable: true,
851
+ writable: true,
852
+ value: void 0
853
+ });
854
+ Object.defineProperty(this, "data", {
855
+ enumerable: true,
856
+ configurable: true,
857
+ writable: true,
858
+ value: void 0
859
+ });
860
+ Object.defineProperty(this, "parameters", {
861
+ enumerable: true,
862
+ configurable: true,
863
+ writable: true,
864
+ value: void 0
865
+ });
866
+ Object.defineProperty(this, "size", {
867
+ enumerable: true,
868
+ configurable: true,
869
+ writable: true,
870
+ value: void 0
871
+ });
872
+ this.abiEvent = abiEvent;
873
+ this.data = data;
874
+ this.parameters = parameters;
875
+ this.size = size;
876
+ }
877
+ }
878
+ /**
879
+ * Thrown when the provided topics do not match the expected number of topics.
880
+ *
881
+ * @example
882
+ * ```ts twoslash
883
+ * import { AbiEvent } from 'ox'
884
+ *
885
+ * const abiEvent = AbiEvent.from(
886
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)',
887
+ * )
888
+ *
889
+ * const args = AbiEvent.decode(abiEvent, {
890
+ * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
891
+ * topics: [
892
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
893
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
894
+ * ],
895
+ * })
896
+ * // @error: AbiEvent.TopicsMismatchError: Expected a topic for indexed event parameter "to" for "event Transfer(address indexed from, address indexed to, uint256 value)".
897
+ * ```
898
+ *
899
+ * ### Solution
900
+ *
901
+ * Ensure that the topics match the expected number of topics.
902
+ *
903
+ * ```ts twoslash
904
+ * import { AbiEvent } from 'ox'
905
+ *
906
+ * const abiEvent = AbiEvent.from(
907
+ * 'event Transfer(address indexed from, address indexed to, uint256 value)',
908
+ * )
909
+ *
910
+ * const args = AbiEvent.decode(abiEvent, {
911
+ * data: '0x0000000000000000000000000000000000000000000000000000000000000001',
912
+ * topics: [
913
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
914
+ * '0x000000000000000000000000a5cc3c03994db5b0d9a5eedd10cabab0813678ac',
915
+ * '0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266', // [!code ++]
916
+ * ],
917
+ * })
918
+ * ```
919
+ *
920
+ */
921
+ export class TopicsMismatchError extends Errors.BaseError {
922
+ constructor({ abiEvent, param, }) {
923
+ super([
924
+ `Expected a topic for indexed event parameter${param.name ? ` "${param.name}"` : ''} for "${format(abiEvent)}".`,
925
+ ].join('\n'));
926
+ Object.defineProperty(this, "name", {
927
+ enumerable: true,
928
+ configurable: true,
929
+ writable: true,
930
+ value: 'AbiEvent.TopicsMismatchError'
931
+ });
932
+ Object.defineProperty(this, "abiEvent", {
933
+ enumerable: true,
934
+ configurable: true,
935
+ writable: true,
936
+ value: void 0
937
+ });
938
+ this.abiEvent = abiEvent;
939
+ }
940
+ }
941
+ /**
942
+ * Thrown when the provided selector does not match the expected selector.
943
+ *
944
+ * @example
945
+ * ```ts twoslash
946
+ * import { AbiEvent } from 'ox'
947
+ *
948
+ * const transfer = AbiEvent.from(
949
+ * 'event Transfer(address indexed from, address indexed to, bool sender)',
950
+ * )
951
+ *
952
+ * AbiEvent.decode(transfer, {
953
+ * topics: [
954
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef',
955
+ * '0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045',
956
+ * '0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266',
957
+ * ],
958
+ * })
959
+ * // @error: AbiEvent.SelectorTopicMismatchError: topics[0]="0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" does not match the expected topics[0]="0x3da3cd3cf420c78f8981e7afeefa0eab1f0de0eb56e78ad9ba918ed01c0b402f".
960
+ * // @error: Event: event Transfer(address indexed from, address indexed to, bool sender)
961
+ * // @error: Selector: 0x3da3cd3cf420c78f8981e7afeefa0eab1f0de0eb56e78ad9ba918ed01c0b402f
962
+ * ```
963
+ *
964
+ * ### Solution
965
+ *
966
+ * Ensure that the provided selector matches the selector of the event signature.
967
+ *
968
+ * ```ts twoslash
969
+ * import { AbiEvent } from 'ox'
970
+ *
971
+ * const transfer = AbiEvent.from(
972
+ * 'event Transfer(address indexed from, address indexed to, bool sender)',
973
+ * )
974
+ *
975
+ * AbiEvent.decode(transfer, {
976
+ * topics: [
977
+ * '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef', // [!code --]
978
+ * '0x3da3cd3cf420c78f8981e7afeefa0eab1f0de0eb56e78ad9ba918ed01c0b402f', // [!code ++]
979
+ * '0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045',
980
+ * '0x000000000000000000000000f39fd6e51aad88f6f4ce6ab8827279cfffb92266',
981
+ * ],
982
+ * })
983
+ * ```
984
+ */
985
+ export class SelectorTopicMismatchError extends Errors.BaseError {
986
+ constructor({ abiEvent, actual, expected, }) {
987
+ super(`topics[0]="${actual}" does not match the expected topics[0]="${expected}".`, {
988
+ metaMessages: [`Event: ${format(abiEvent)}`, `Selector: ${expected}`],
989
+ });
990
+ Object.defineProperty(this, "name", {
991
+ enumerable: true,
992
+ configurable: true,
993
+ writable: true,
994
+ value: 'AbiEvent.SelectorTopicMismatchError'
995
+ });
996
+ }
997
+ }
998
+ /**
999
+ * Thrown when the provided filter type is not supported.
1000
+ *
1001
+ * @example
1002
+ * ```ts twoslash
1003
+ * import { AbiEvent } from 'ox'
1004
+ *
1005
+ * const transfer = AbiEvent.from('event Transfer((string) indexed a, string b)')
1006
+ *
1007
+ * AbiEvent.encode(transfer, {
1008
+ * a: ['hello'],
1009
+ * })
1010
+ * // @error: AbiEvent.FilterTypeNotSupportedError: Filter type "tuple" is not supported.
1011
+ * ```
1012
+ *
1013
+ * ### Solution
1014
+ *
1015
+ * Provide a valid event input type.
1016
+ *
1017
+ * ```ts twoslash
1018
+ * // @noErrors
1019
+ * import { AbiEvent } from 'ox'
1020
+ *
1021
+ * const transfer = AbiEvent.from('event Transfer((string) indexed a, string b)') // [!code --]
1022
+ * const transfer = AbiEvent.from('event Transfer(string indexed a, string b)') // [!code ++]
1023
+ * ```
1024
+ *
1025
+ *
1026
+ */
1027
+ export class FilterTypeNotSupportedError extends Errors.BaseError {
1028
+ constructor(type) {
1029
+ super(`Filter type "${type}" is not supported.`);
1030
+ Object.defineProperty(this, "name", {
1031
+ enumerable: true,
1032
+ configurable: true,
1033
+ writable: true,
1034
+ value: 'AbiEvent.FilterTypeNotSupportedError'
1035
+ });
1036
+ }
1037
+ }
1038
+ //# sourceMappingURL=AbiEvent.js.map