ox 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (756) hide show
  1. package/Abi/package.json +6 -0
  2. package/Abi.ts +163 -0
  3. package/AbiConstructor/package.json +6 -0
  4. package/AbiConstructor.ts +413 -0
  5. package/AbiError/package.json +6 -0
  6. package/AbiError.ts +719 -0
  7. package/AbiEvent/package.json +6 -0
  8. package/AbiEvent.ts +1284 -0
  9. package/AbiFunction/package.json +6 -0
  10. package/AbiFunction.ts +813 -0
  11. package/AbiItem/package.json +6 -0
  12. package/AbiItem.ts +779 -0
  13. package/AbiParameters/package.json +6 -0
  14. package/AbiParameters.ts +712 -0
  15. package/AccessList/package.json +6 -0
  16. package/AccessList.ts +124 -0
  17. package/AccountProof/package.json +6 -0
  18. package/AccountProof.ts +35 -0
  19. package/Address/package.json +6 -0
  20. package/Address.ts +359 -0
  21. package/AesGcm/package.json +6 -0
  22. package/AesGcm.ts +220 -0
  23. package/Authorization/package.json +6 -0
  24. package/Authorization.ts +639 -0
  25. package/Base58/package.json +6 -0
  26. package/Base58.ts +180 -0
  27. package/Base64/package.json +6 -0
  28. package/Base64.ts +333 -0
  29. package/Blobs/package.json +6 -0
  30. package/Blobs.ts +982 -0
  31. package/Block/package.json +6 -0
  32. package/Block.ts +317 -0
  33. package/Bloom/package.json +6 -0
  34. package/Bloom.ts +80 -0
  35. package/Bls/package.json +6 -0
  36. package/Bls.ts +496 -0
  37. package/BlsPoint/package.json +6 -0
  38. package/BlsPoint.ts +232 -0
  39. package/Bytes/package.json +6 -0
  40. package/Bytes.ts +963 -0
  41. package/CHANGELOG.md +7 -0
  42. package/Caches/package.json +6 -0
  43. package/Caches.ts +21 -0
  44. package/ContractAddress/package.json +6 -0
  45. package/ContractAddress.ts +181 -0
  46. package/Ens/package.json +6 -0
  47. package/Ens.ts +116 -0
  48. package/Errors/package.json +6 -0
  49. package/Errors.ts +95 -0
  50. package/Fee/package.json +6 -0
  51. package/Fee.ts +57 -0
  52. package/Filter/package.json +6 -0
  53. package/Filter.ts +144 -0
  54. package/Hash/package.json +6 -0
  55. package/Hash.ts +210 -0
  56. package/HdKey/package.json +6 -0
  57. package/HdKey.ts +175 -0
  58. package/Hex/package.json +6 -0
  59. package/Hex.ts +1040 -0
  60. package/Json/package.json +6 -0
  61. package/Json.ts +84 -0
  62. package/Kzg/package.json +6 -0
  63. package/Kzg.ts +51 -0
  64. package/LICENSE +21 -0
  65. package/Log/package.json +6 -0
  66. package/Log.ts +248 -0
  67. package/Mnemonic/package.json +6 -0
  68. package/Mnemonic.ts +249 -0
  69. package/P256/package.json +6 -0
  70. package/P256.ts +230 -0
  71. package/PersonalMessage/package.json +6 -0
  72. package/PersonalMessage.ts +70 -0
  73. package/Provider/package.json +6 -0
  74. package/Provider.ts +354 -0
  75. package/PublicKey/package.json +6 -0
  76. package/PublicKey.ts +545 -0
  77. package/README.md +75 -26
  78. package/Rlp/package.json +6 -0
  79. package/Rlp.ts +390 -0
  80. package/RpcRequest/package.json +6 -0
  81. package/RpcRequest.ts +192 -0
  82. package/RpcResponse/package.json +6 -0
  83. package/RpcResponse.ts +389 -0
  84. package/RpcSchema/package.json +6 -0
  85. package/RpcSchema.ts +273 -0
  86. package/RpcTransport/package.json +6 -0
  87. package/RpcTransport.ts +198 -0
  88. package/Secp256k1/package.json +6 -0
  89. package/Secp256k1.ts +304 -0
  90. package/Signature/package.json +6 -0
  91. package/Signature.ts +909 -0
  92. package/Siwe/package.json +6 -0
  93. package/Siwe.ts +516 -0
  94. package/Solidity/package.json +6 -0
  95. package/Solidity.ts +109 -0
  96. package/Transaction/package.json +6 -0
  97. package/Transaction.ts +429 -0
  98. package/TransactionEnvelope/package.json +6 -0
  99. package/TransactionEnvelope.ts +205 -0
  100. package/TransactionEnvelopeEip1559/package.json +6 -0
  101. package/TransactionEnvelopeEip1559.ts +656 -0
  102. package/TransactionEnvelopeEip2930/package.json +6 -0
  103. package/TransactionEnvelopeEip2930.ts +624 -0
  104. package/TransactionEnvelopeEip4844/package.json +6 -0
  105. package/TransactionEnvelopeEip4844.ts +764 -0
  106. package/TransactionEnvelopeEip7702/package.json +6 -0
  107. package/TransactionEnvelopeEip7702.ts +639 -0
  108. package/TransactionEnvelopeLegacy/package.json +6 -0
  109. package/TransactionEnvelopeLegacy.ts +674 -0
  110. package/TransactionReceipt/package.json +6 -0
  111. package/TransactionReceipt.ts +341 -0
  112. package/TransactionRequest/package.json +6 -0
  113. package/TransactionRequest.ts +151 -0
  114. package/TypedData/package.json +6 -0
  115. package/TypedData.ts +931 -0
  116. package/ValidatorData/package.json +6 -0
  117. package/ValidatorData.ts +87 -0
  118. package/Value/package.json +6 -0
  119. package/Value.ts +242 -0
  120. package/WebAuthnP256/package.json +6 -0
  121. package/WebAuthnP256.ts +803 -0
  122. package/WebCryptoP256/package.json +6 -0
  123. package/WebCryptoP256.ts +190 -0
  124. package/Withdrawal/package.json +6 -0
  125. package/Withdrawal.ts +95 -0
  126. package/_cjs/Abi.js +17 -0
  127. package/_cjs/Abi.js.map +1 -0
  128. package/_cjs/AbiConstructor.js +42 -0
  129. package/_cjs/AbiConstructor.js.map +1 -0
  130. package/_cjs/AbiError.js +98 -0
  131. package/_cjs/AbiError.js.map +1 -0
  132. package/_cjs/AbiEvent.js +338 -0
  133. package/_cjs/AbiEvent.js.map +1 -0
  134. package/_cjs/AbiFunction.js +85 -0
  135. package/_cjs/AbiFunction.js.map +1 -0
  136. package/_cjs/AbiItem.js +180 -0
  137. package/_cjs/AbiItem.js.map +1 -0
  138. package/_cjs/AbiParameters.js +229 -0
  139. package/_cjs/AbiParameters.js.map +1 -0
  140. package/_cjs/AccessList.js +51 -0
  141. package/_cjs/AccessList.js.map +1 -0
  142. package/_cjs/AccountProof.js +3 -0
  143. package/_cjs/AccountProof.js.map +1 -0
  144. package/_cjs/Address.js +121 -0
  145. package/_cjs/Address.js.map +1 -0
  146. package/_cjs/AesGcm.js +55 -0
  147. package/_cjs/AesGcm.js.map +1 -0
  148. package/_cjs/Authorization.js +99 -0
  149. package/_cjs/Authorization.js.map +1 -0
  150. package/_cjs/Base58.js +52 -0
  151. package/_cjs/Base58.js.map +1 -0
  152. package/_cjs/Base64.js +76 -0
  153. package/_cjs/Base64.js.map +1 -0
  154. package/_cjs/Blobs.js +255 -0
  155. package/_cjs/Blobs.js.map +1 -0
  156. package/_cjs/Block.js +87 -0
  157. package/_cjs/Block.js.map +1 -0
  158. package/_cjs/Bloom.js +23 -0
  159. package/_cjs/Bloom.js.map +1 -0
  160. package/_cjs/Bls.js +79 -0
  161. package/_cjs/Bls.js.map +1 -0
  162. package/_cjs/BlsPoint.js +32 -0
  163. package/_cjs/BlsPoint.js.map +1 -0
  164. package/_cjs/Bytes.js +279 -0
  165. package/_cjs/Bytes.js.map +1 -0
  166. package/_cjs/Caches.js +14 -0
  167. package/_cjs/Caches.js.map +1 -0
  168. package/_cjs/ContractAddress.js +39 -0
  169. package/_cjs/ContractAddress.js.map +1 -0
  170. package/_cjs/Ens.js +37 -0
  171. package/_cjs/Ens.js.map +1 -0
  172. package/_cjs/Errors.js +99 -0
  173. package/_cjs/Errors.js.map +1 -0
  174. package/_cjs/Fee.js +3 -0
  175. package/_cjs/Fee.js.map +1 -0
  176. package/_cjs/Filter.js +43 -0
  177. package/_cjs/Filter.js.map +1 -0
  178. package/_cjs/Hash.js +40 -0
  179. package/_cjs/Hash.js.map +1 -0
  180. package/_cjs/HdKey.js +30 -0
  181. package/_cjs/HdKey.js.map +1 -0
  182. package/_cjs/Hex.js +324 -0
  183. package/_cjs/Hex.js.map +1 -0
  184. package/_cjs/Json.js +25 -0
  185. package/_cjs/Json.js.map +1 -0
  186. package/_cjs/Kzg.js +14 -0
  187. package/_cjs/Kzg.js.map +1 -0
  188. package/_cjs/Log.js +35 -0
  189. package/_cjs/Log.js.map +1 -0
  190. package/_cjs/Mnemonic.js +56 -0
  191. package/_cjs/Mnemonic.js.map +1 -0
  192. package/_cjs/P256.js +52 -0
  193. package/_cjs/P256.js.map +1 -0
  194. package/_cjs/PersonalMessage.js +16 -0
  195. package/_cjs/PersonalMessage.js.map +1 -0
  196. package/_cjs/Provider.js +90 -0
  197. package/_cjs/Provider.js.map +1 -0
  198. package/_cjs/PublicKey.js +192 -0
  199. package/_cjs/PublicKey.js.map +1 -0
  200. package/_cjs/Rlp.js +179 -0
  201. package/_cjs/Rlp.js.map +1 -0
  202. package/_cjs/RpcRequest.js +27 -0
  203. package/_cjs/RpcRequest.js.map +1 -0
  204. package/_cjs/RpcResponse.js +368 -0
  205. package/_cjs/RpcResponse.js.map +1 -0
  206. package/_cjs/RpcSchema.js +7 -0
  207. package/_cjs/RpcSchema.js.map +1 -0
  208. package/_cjs/RpcTransport.js +95 -0
  209. package/_cjs/RpcTransport.js.map +1 -0
  210. package/_cjs/Secp256k1.js +57 -0
  211. package/_cjs/Secp256k1.js.map +1 -0
  212. package/_cjs/Signature.js +305 -0
  213. package/_cjs/Signature.js.map +1 -0
  214. package/_cjs/Siwe.js +231 -0
  215. package/_cjs/Siwe.js.map +1 -0
  216. package/_cjs/Solidity.js +104 -0
  217. package/_cjs/Solidity.js.map +1 -0
  218. package/_cjs/Transaction.js +106 -0
  219. package/_cjs/Transaction.js.map +1 -0
  220. package/_cjs/TransactionEnvelope.js +80 -0
  221. package/_cjs/TransactionEnvelope.js.map +1 -0
  222. package/_cjs/TransactionEnvelopeEip1559.js +182 -0
  223. package/_cjs/TransactionEnvelopeEip1559.js.map +1 -0
  224. package/_cjs/TransactionEnvelopeEip2930.js +166 -0
  225. package/_cjs/TransactionEnvelopeEip2930.js.map +1 -0
  226. package/_cjs/TransactionEnvelopeEip4844.js +224 -0
  227. package/_cjs/TransactionEnvelopeEip4844.js.map +1 -0
  228. package/_cjs/TransactionEnvelopeEip7702.js +156 -0
  229. package/_cjs/TransactionEnvelopeEip7702.js.map +1 -0
  230. package/_cjs/TransactionEnvelopeLegacy.js +221 -0
  231. package/_cjs/TransactionEnvelopeLegacy.js.map +1 -0
  232. package/_cjs/TransactionReceipt.js +76 -0
  233. package/_cjs/TransactionReceipt.js.map +1 -0
  234. package/_cjs/TransactionRequest.js +51 -0
  235. package/_cjs/TransactionRequest.js.map +1 -0
  236. package/_cjs/TypedData.js +318 -0
  237. package/_cjs/TypedData.js.map +1 -0
  238. package/_cjs/ValidatorData.js +16 -0
  239. package/_cjs/ValidatorData.js.map +1 -0
  240. package/_cjs/Value.js +96 -0
  241. package/_cjs/Value.js.map +1 -0
  242. package/_cjs/WebAuthnP256.js +245 -0
  243. package/_cjs/WebAuthnP256.js.map +1 -0
  244. package/_cjs/WebCryptoP256.js +46 -0
  245. package/_cjs/WebCryptoP256.js.map +1 -0
  246. package/_cjs/Withdrawal.js +24 -0
  247. package/_cjs/Withdrawal.js.map +1 -0
  248. package/_cjs/index.js +66 -0
  249. package/_cjs/index.js.map +1 -0
  250. package/_cjs/internal/abi.js +11 -0
  251. package/_cjs/internal/abi.js.map +1 -0
  252. package/_cjs/internal/abiConstructor.js +3 -0
  253. package/_cjs/internal/abiConstructor.js.map +1 -0
  254. package/_cjs/internal/abiError.js +3 -0
  255. package/_cjs/internal/abiError.js.map +1 -0
  256. package/_cjs/internal/abiEvent.js +3 -0
  257. package/_cjs/internal/abiEvent.js.map +1 -0
  258. package/_cjs/internal/abiFunction.js +3 -0
  259. package/_cjs/internal/abiFunction.js.map +1 -0
  260. package/_cjs/internal/abiItem.js +110 -0
  261. package/_cjs/internal/abiItem.js.map +1 -0
  262. package/_cjs/internal/abiParameters.js +376 -0
  263. package/_cjs/internal/abiParameters.js.map +1 -0
  264. package/_cjs/internal/base58.js +89 -0
  265. package/_cjs/internal/base58.js.map +1 -0
  266. package/_cjs/internal/bytes.js +88 -0
  267. package/_cjs/internal/bytes.js.map +1 -0
  268. package/_cjs/internal/cursor.js +210 -0
  269. package/_cjs/internal/cursor.js.map +1 -0
  270. package/_cjs/internal/ens.js +43 -0
  271. package/_cjs/internal/ens.js.map +1 -0
  272. package/_cjs/internal/errors.js +28 -0
  273. package/_cjs/internal/errors.js.map +1 -0
  274. package/_cjs/internal/hdKey.js +19 -0
  275. package/_cjs/internal/hdKey.js.map +1 -0
  276. package/_cjs/internal/hex.js +66 -0
  277. package/_cjs/internal/hex.js.map +1 -0
  278. package/_cjs/internal/lru.js +34 -0
  279. package/_cjs/internal/lru.js.map +1 -0
  280. package/_cjs/internal/mnemonic/wordlists.js +24 -0
  281. package/_cjs/internal/mnemonic/wordlists.js.map +1 -0
  282. package/_cjs/internal/promise.js +49 -0
  283. package/_cjs/internal/promise.js.map +1 -0
  284. package/_cjs/internal/register.js +3 -0
  285. package/_cjs/internal/register.js.map +1 -0
  286. package/_cjs/internal/rpcSchema.js +3 -0
  287. package/_cjs/internal/rpcSchema.js.map +1 -0
  288. package/_cjs/internal/rpcSchemas/eth.js +3 -0
  289. package/_cjs/internal/rpcSchemas/eth.js.map +1 -0
  290. package/_cjs/internal/rpcSchemas/wallet.js +3 -0
  291. package/_cjs/internal/rpcSchemas/wallet.js.map +1 -0
  292. package/_cjs/internal/rpcTransport.js +19 -0
  293. package/_cjs/internal/rpcTransport.js.map +1 -0
  294. package/_cjs/internal/types.js +3 -0
  295. package/_cjs/internal/types.js.map +1 -0
  296. package/_cjs/internal/uid.js +17 -0
  297. package/_cjs/internal/uid.js.map +1 -0
  298. package/_cjs/internal/webauthn.js +28 -0
  299. package/_cjs/internal/webauthn.js.map +1 -0
  300. package/_cjs/package.json +1 -0
  301. package/_cjs/trusted-setups/Paths.js +6 -0
  302. package/_cjs/trusted-setups/Paths.js.map +1 -0
  303. package/_cjs/trusted-setups/index.js +5 -0
  304. package/_cjs/trusted-setups/index.js.map +1 -0
  305. package/_cjs/trusted-setups/internal/paths.js +11 -0
  306. package/_cjs/trusted-setups/internal/paths.js.map +1 -0
  307. package/_cjs/version.js +5 -0
  308. package/_cjs/version.js.map +1 -0
  309. package/_cjs/window/index.js +3 -0
  310. package/_cjs/window/index.js.map +1 -0
  311. package/_esm/Abi.js +19 -0
  312. package/_esm/Abi.js.map +1 -0
  313. package/_esm/AbiConstructor.js +102 -0
  314. package/_esm/AbiConstructor.js.map +1 -0
  315. package/_esm/AbiError.js +364 -0
  316. package/_esm/AbiError.js.map +1 -0
  317. package/_esm/AbiEvent.js +1038 -0
  318. package/_esm/AbiEvent.js.map +1 -0
  319. package/_esm/AbiFunction.js +549 -0
  320. package/_esm/AbiFunction.js.map +1 -0
  321. package/_esm/AbiItem.js +574 -0
  322. package/_esm/AbiItem.js.map +1 -0
  323. package/_esm/AbiParameters.js +543 -0
  324. package/_esm/AbiParameters.js.map +1 -0
  325. package/_esm/AccessList.js +105 -0
  326. package/_esm/AccessList.js.map +1 -0
  327. package/_esm/AccountProof.js +2 -0
  328. package/_esm/AccountProof.js.map +1 -0
  329. package/_esm/Address.js +268 -0
  330. package/_esm/Address.js.map +1 -0
  331. package/_esm/AesGcm.js +124 -0
  332. package/_esm/AesGcm.js.map +1 -0
  333. package/_esm/Authorization.js +441 -0
  334. package/_esm/Authorization.js.map +1 -0
  335. package/_esm/Base58.js +142 -0
  336. package/_esm/Base58.js.map +1 -0
  337. package/_esm/Base64.js +236 -0
  338. package/_esm/Base64.js.map +1 -0
  339. package/_esm/Blobs.js +624 -0
  340. package/_esm/Blobs.js.map +1 -0
  341. package/_esm/Block.js +177 -0
  342. package/_esm/Block.js.map +1 -0
  343. package/_esm/Bloom.js +57 -0
  344. package/_esm/Bloom.js.map +1 -0
  345. package/_esm/Bls.js +141 -0
  346. package/_esm/Bls.js.map +1 -0
  347. package/_esm/BlsPoint.js +59 -0
  348. package/_esm/BlsPoint.js.map +1 -0
  349. package/_esm/Bytes.js +719 -0
  350. package/_esm/Bytes.js.map +1 -0
  351. package/_esm/Caches.js +19 -0
  352. package/_esm/Caches.js.map +1 -0
  353. package/_esm/ContractAddress.js +110 -0
  354. package/_esm/ContractAddress.js.map +1 -0
  355. package/_esm/Ens.js +84 -0
  356. package/_esm/Ens.js.map +1 -0
  357. package/_esm/Errors.js +105 -0
  358. package/_esm/Errors.js.map +1 -0
  359. package/_esm/Fee.js +2 -0
  360. package/_esm/Fee.js.map +1 -0
  361. package/_esm/Filter.js +100 -0
  362. package/_esm/Filter.js.map +1 -0
  363. package/_esm/Hash.js +126 -0
  364. package/_esm/Hash.js.map +1 -0
  365. package/_esm/HdKey.js +107 -0
  366. package/_esm/HdKey.js.map +1 -0
  367. package/_esm/Hex.js +763 -0
  368. package/_esm/Hex.js.map +1 -0
  369. package/_esm/Json.js +62 -0
  370. package/_esm/Json.js.map +1 -0
  371. package/_esm/Kzg.js +30 -0
  372. package/_esm/Kzg.js.map +1 -0
  373. package/_esm/Log.js +181 -0
  374. package/_esm/Log.js.map +1 -0
  375. package/_esm/Mnemonic.js +154 -0
  376. package/_esm/Mnemonic.js.map +1 -0
  377. package/_esm/P256.js +131 -0
  378. package/_esm/P256.js.map +1 -0
  379. package/_esm/PersonalMessage.js +46 -0
  380. package/_esm/PersonalMessage.js.map +1 -0
  381. package/_esm/Provider.js +122 -0
  382. package/_esm/Provider.js.map +1 -0
  383. package/_esm/PublicKey.js +395 -0
  384. package/_esm/PublicKey.js.map +1 -0
  385. package/_esm/Rlp.js +267 -0
  386. package/_esm/Rlp.js.map +1 -0
  387. package/_esm/RpcRequest.js +131 -0
  388. package/_esm/RpcRequest.js.map +1 -0
  389. package/_esm/RpcResponse.js +457 -0
  390. package/_esm/RpcResponse.js.map +1 -0
  391. package/_esm/RpcSchema.js +46 -0
  392. package/_esm/RpcSchema.js.map +1 -0
  393. package/_esm/RpcTransport.js +110 -0
  394. package/_esm/RpcTransport.js.map +1 -0
  395. package/_esm/Secp256k1.js +173 -0
  396. package/_esm/Secp256k1.js.map +1 -0
  397. package/_esm/Signature.js +696 -0
  398. package/_esm/Signature.js.map +1 -0
  399. package/_esm/Siwe.js +374 -0
  400. package/_esm/Siwe.js.map +1 -0
  401. package/_esm/Solidity.js +104 -0
  402. package/_esm/Solidity.js.map +1 -0
  403. package/_esm/Transaction.js +176 -0
  404. package/_esm/Transaction.js.map +1 -0
  405. package/_esm/TransactionEnvelope.js +139 -0
  406. package/_esm/TransactionEnvelope.js.map +1 -0
  407. package/_esm/TransactionEnvelopeEip1559.js +455 -0
  408. package/_esm/TransactionEnvelopeEip1559.js.map +1 -0
  409. package/_esm/TransactionEnvelopeEip2930.js +439 -0
  410. package/_esm/TransactionEnvelopeEip2930.js.map +1 -0
  411. package/_esm/TransactionEnvelopeEip4844.js +542 -0
  412. package/_esm/TransactionEnvelopeEip4844.js.map +1 -0
  413. package/_esm/TransactionEnvelopeEip7702.js +442 -0
  414. package/_esm/TransactionEnvelopeEip7702.js.map +1 -0
  415. package/_esm/TransactionEnvelopeLegacy.js +495 -0
  416. package/_esm/TransactionEnvelopeLegacy.js.map +1 -0
  417. package/_esm/TransactionReceipt.js +229 -0
  418. package/_esm/TransactionReceipt.js.map +1 -0
  419. package/_esm/TransactionRequest.js +89 -0
  420. package/_esm/TransactionRequest.js.map +1 -0
  421. package/_esm/TypedData.js +635 -0
  422. package/_esm/TypedData.js.map +1 -0
  423. package/_esm/ValidatorData.js +52 -0
  424. package/_esm/ValidatorData.js.map +1 -0
  425. package/_esm/Value.js +196 -0
  426. package/_esm/Value.js.map +1 -0
  427. package/_esm/WebAuthnP256.js +471 -0
  428. package/_esm/WebAuthnP256.js.map +1 -0
  429. package/_esm/WebCryptoP256.js +116 -0
  430. package/_esm/WebCryptoP256.js.map +1 -0
  431. package/_esm/Withdrawal.js +72 -0
  432. package/_esm/Withdrawal.js.map +1 -0
  433. package/_esm/index.js +3366 -0
  434. package/_esm/index.js.map +1 -0
  435. package/_esm/internal/abi.js +9 -0
  436. package/_esm/internal/abi.js.map +1 -0
  437. package/_esm/internal/abiConstructor.js +2 -0
  438. package/_esm/internal/abiConstructor.js.map +1 -0
  439. package/_esm/internal/abiError.js +2 -0
  440. package/_esm/internal/abiError.js.map +1 -0
  441. package/_esm/internal/abiEvent.js +2 -0
  442. package/_esm/internal/abiEvent.js.map +1 -0
  443. package/_esm/internal/abiFunction.js +2 -0
  444. package/_esm/internal/abiFunction.js.map +1 -0
  445. package/_esm/internal/abiItem.js +122 -0
  446. package/_esm/internal/abiItem.js.map +1 -0
  447. package/_esm/internal/abiParameters.js +419 -0
  448. package/_esm/internal/abiParameters.js.map +1 -0
  449. package/_esm/internal/base58.js +91 -0
  450. package/_esm/internal/base58.js.map +1 -0
  451. package/_esm/internal/bytes.js +86 -0
  452. package/_esm/internal/bytes.js.map +1 -0
  453. package/_esm/internal/cursor.js +207 -0
  454. package/_esm/internal/cursor.js.map +1 -0
  455. package/_esm/internal/ens.js +47 -0
  456. package/_esm/internal/ens.js.map +1 -0
  457. package/_esm/internal/errors.js +26 -0
  458. package/_esm/internal/errors.js.map +1 -0
  459. package/_esm/internal/hdKey.js +17 -0
  460. package/_esm/internal/hdKey.js.map +1 -0
  461. package/_esm/internal/hex.js +64 -0
  462. package/_esm/internal/hex.js.map +1 -0
  463. package/_esm/internal/lru.js +36 -0
  464. package/_esm/internal/lru.js.map +1 -0
  465. package/_esm/internal/mnemonic/wordlists.js +11 -0
  466. package/_esm/internal/mnemonic/wordlists.js.map +1 -0
  467. package/_esm/internal/promise.js +52 -0
  468. package/_esm/internal/promise.js.map +1 -0
  469. package/_esm/internal/register.js +2 -0
  470. package/_esm/internal/register.js.map +1 -0
  471. package/_esm/internal/rpcSchema.js +2 -0
  472. package/_esm/internal/rpcSchema.js.map +1 -0
  473. package/_esm/internal/rpcSchemas/eth.js +2 -0
  474. package/_esm/internal/rpcSchemas/eth.js.map +1 -0
  475. package/_esm/internal/rpcSchemas/wallet.js +2 -0
  476. package/_esm/internal/rpcSchemas/wallet.js.map +1 -0
  477. package/_esm/internal/rpcTransport.js +20 -0
  478. package/_esm/internal/rpcTransport.js.map +1 -0
  479. package/_esm/internal/types.js +2 -0
  480. package/_esm/internal/types.js.map +1 -0
  481. package/_esm/internal/uid.js +15 -0
  482. package/_esm/internal/uid.js.map +1 -0
  483. package/_esm/internal/webauthn.js +35 -0
  484. package/_esm/internal/webauthn.js.map +1 -0
  485. package/_esm/package.json +1 -0
  486. package/_esm/trusted-setups/Paths.js +3 -0
  487. package/_esm/trusted-setups/Paths.js.map +1 -0
  488. package/_esm/trusted-setups/index.js +2 -0
  489. package/_esm/trusted-setups/index.js.map +1 -0
  490. package/_esm/trusted-setups/internal/paths.js +12 -0
  491. package/_esm/trusted-setups/internal/paths.js.map +1 -0
  492. package/_esm/version.js +3 -0
  493. package/_esm/version.js.map +1 -0
  494. package/_esm/window/index.js +2 -0
  495. package/_esm/window/index.js.map +1 -0
  496. package/_test/Abi.test-d/package.json +6 -0
  497. package/_test/AbiConstructor.test-d/package.json +6 -0
  498. package/_test/AbiError.test-d/package.json +6 -0
  499. package/_test/AbiEvent.snap-d/package.json +6 -0
  500. package/_test/AbiEvent.snap-d.ts +329 -0
  501. package/_test/AbiFunction.snap-d/package.json +6 -0
  502. package/_test/AbiFunction.snap-d.ts +262 -0
  503. package/_test/AbiItem.snap-d/package.json +6 -0
  504. package/_test/AbiItem.snap-d.ts +131 -0
  505. package/_test/AbiParameters.bench/package.json +6 -0
  506. package/_test/AbiParameters.snap-d/package.json +6 -0
  507. package/_test/AbiParameters.snap-d.ts +66 -0
  508. package/_test/Address.bench/package.json +6 -0
  509. package/_test/Base58.bench/package.json +6 -0
  510. package/_test/Hex.bench/package.json +6 -0
  511. package/_test/Hex.test-d/package.json +6 -0
  512. package/_test/PublicKey.test-d/package.json +6 -0
  513. package/_test/Rlp.bench/package.json +6 -0
  514. package/_test/Rlp.test-d/package.json +6 -0
  515. package/_test/Signature.snap-d/package.json +6 -0
  516. package/_test/Signature.snap-d.ts +96 -0
  517. package/_test/TransactionEnvelopeEip1559.test-d/package.json +6 -0
  518. package/_test/TransactionEnvelopeEip2930.test-d/package.json +6 -0
  519. package/_test/TransactionEnvelopeEip4844.test-d/package.json +6 -0
  520. package/_test/TransactionEnvelopeEip7702.test-d/package.json +6 -0
  521. package/_test/TransactionEnvelopeLegacy.test-d/package.json +6 -0
  522. package/_test/TypedData.test-d/package.json +6 -0
  523. package/_types/Abi.d.ts +137 -0
  524. package/_types/Abi.d.ts.map +1 -0
  525. package/_types/AbiConstructor.d.ts +305 -0
  526. package/_types/AbiConstructor.d.ts.map +1 -0
  527. package/_types/AbiError.d.ts +522 -0
  528. package/_types/AbiError.d.ts.map +1 -0
  529. package/_types/AbiEvent.d.ts +892 -0
  530. package/_types/AbiEvent.d.ts.map +1 -0
  531. package/_types/AbiFunction.d.ts +602 -0
  532. package/_types/AbiFunction.d.ts.map +1 -0
  533. package/_types/AbiItem.d.ts +544 -0
  534. package/_types/AbiItem.d.ts.map +1 -0
  535. package/_types/AbiParameters.d.ts +466 -0
  536. package/_types/AbiParameters.d.ts.map +1 -0
  537. package/_types/AccessList.d.ts +83 -0
  538. package/_types/AccessList.d.ts.map +1 -0
  539. package/_types/AccountProof.d.ts +32 -0
  540. package/_types/AccountProof.d.ts.map +1 -0
  541. package/_types/Address.d.ts +244 -0
  542. package/_types/Address.d.ts.map +1 -0
  543. package/_types/AesGcm.d.ts +116 -0
  544. package/_types/AesGcm.d.ts.map +1 -0
  545. package/_types/Authorization.d.ts +461 -0
  546. package/_types/Authorization.d.ts.map +1 -0
  547. package/_types/Base58.d.ts +131 -0
  548. package/_types/Base58.d.ts.map +1 -0
  549. package/_types/Base64.d.ts +244 -0
  550. package/_types/Base64.d.ts.map +1 -0
  551. package/_types/Blobs.d.ts +556 -0
  552. package/_types/Blobs.d.ts.map +1 -0
  553. package/_types/Block.d.ts +190 -0
  554. package/_types/Block.d.ts.map +1 -0
  555. package/_types/Bloom.d.ts +54 -0
  556. package/_types/Bloom.d.ts.map +1 -0
  557. package/_types/Bls.d.ts +365 -0
  558. package/_types/Bls.d.ts.map +1 -0
  559. package/_types/BlsPoint.d.ts +187 -0
  560. package/_types/BlsPoint.d.ts.map +1 -0
  561. package/_types/Bytes.d.ts +674 -0
  562. package/_types/Bytes.d.ts.map +1 -0
  563. package/_types/Caches.d.ts +13 -0
  564. package/_types/Caches.d.ts.map +1 -0
  565. package/_types/ContractAddress.d.ts +115 -0
  566. package/_types/ContractAddress.d.ts.map +1 -0
  567. package/_types/Ens.d.ts +72 -0
  568. package/_types/Ens.d.ts.map +1 -0
  569. package/_types/Errors.d.ts +33 -0
  570. package/_types/Errors.d.ts.map +1 -0
  571. package/_types/Fee.d.ts +41 -0
  572. package/_types/Fee.d.ts.map +1 -0
  573. package/_types/Filter.d.ts +100 -0
  574. package/_types/Filter.d.ts.map +1 -0
  575. package/_types/Hash.d.ts +135 -0
  576. package/_types/Hash.d.ts.map +1 -0
  577. package/_types/HdKey.d.ts +146 -0
  578. package/_types/HdKey.d.ts.map +1 -0
  579. package/_types/Hex.d.ts +711 -0
  580. package/_types/Hex.d.ts.map +1 -0
  581. package/_types/Json.d.ts +53 -0
  582. package/_types/Json.d.ts.map +1 -0
  583. package/_types/Kzg.d.ts +42 -0
  584. package/_types/Kzg.d.ts.map +1 -0
  585. package/_types/Log.d.ts +194 -0
  586. package/_types/Log.d.ts.map +1 -0
  587. package/_types/Mnemonic.d.ts +176 -0
  588. package/_types/Mnemonic.d.ts.map +1 -0
  589. package/_types/P256.d.ts +207 -0
  590. package/_types/P256.d.ts.map +1 -0
  591. package/_types/PersonalMessage.d.ts +49 -0
  592. package/_types/PersonalMessage.d.ts.map +1 -0
  593. package/_types/Provider.d.ts +268 -0
  594. package/_types/Provider.d.ts.map +1 -0
  595. package/_types/PublicKey.d.ts +327 -0
  596. package/_types/PublicKey.d.ts.map +1 -0
  597. package/_types/Rlp.d.ts +153 -0
  598. package/_types/Rlp.d.ts.map +1 -0
  599. package/_types/RpcRequest.d.ts +144 -0
  600. package/_types/RpcRequest.d.ts.map +1 -0
  601. package/_types/RpcResponse.d.ts +266 -0
  602. package/_types/RpcResponse.d.ts.map +1 -0
  603. package/_types/RpcSchema.d.ts +248 -0
  604. package/_types/RpcSchema.d.ts.map +1 -0
  605. package/_types/RpcTransport.d.ts +65 -0
  606. package/_types/RpcTransport.d.ts.map +1 -0
  607. package/_types/Secp256k1.d.ts +277 -0
  608. package/_types/Secp256k1.d.ts.map +1 -0
  609. package/_types/Signature.d.ts +601 -0
  610. package/_types/Signature.d.ts.map +1 -0
  611. package/_types/Siwe.d.ts +249 -0
  612. package/_types/Siwe.d.ts.map +1 -0
  613. package/_types/Solidity.d.ts +100 -0
  614. package/_types/Solidity.d.ts.map +1 -0
  615. package/_types/Transaction.d.ts +235 -0
  616. package/_types/Transaction.d.ts.map +1 -0
  617. package/_types/TransactionEnvelope.d.ts +141 -0
  618. package/_types/TransactionEnvelope.d.ts.map +1 -0
  619. package/_types/TransactionEnvelopeEip1559.d.ts +367 -0
  620. package/_types/TransactionEnvelopeEip1559.d.ts.map +1 -0
  621. package/_types/TransactionEnvelopeEip2930.d.ts +364 -0
  622. package/_types/TransactionEnvelopeEip2930.d.ts.map +1 -0
  623. package/_types/TransactionEnvelopeEip4844.d.ts +419 -0
  624. package/_types/TransactionEnvelopeEip4844.d.ts.map +1 -0
  625. package/_types/TransactionEnvelopeEip7702.d.ts +377 -0
  626. package/_types/TransactionEnvelopeEip7702.d.ts.map +1 -0
  627. package/_types/TransactionEnvelopeLegacy.d.ts +358 -0
  628. package/_types/TransactionEnvelopeLegacy.d.ts.map +1 -0
  629. package/_types/TransactionReceipt.d.ts +271 -0
  630. package/_types/TransactionReceipt.d.ts.map +1 -0
  631. package/_types/TransactionRequest.d.ts +92 -0
  632. package/_types/TransactionRequest.d.ts.map +1 -0
  633. package/_types/TypedData.d.ts +496 -0
  634. package/_types/TypedData.d.ts.map +1 -0
  635. package/_types/ValidatorData.d.ts +64 -0
  636. package/_types/ValidatorData.d.ts.map +1 -0
  637. package/_types/Value.d.ts +159 -0
  638. package/_types/Value.d.ts.map +1 -0
  639. package/_types/WebAuthnP256.d.ts +445 -0
  640. package/_types/WebAuthnP256.d.ts.map +1 -0
  641. package/_types/WebCryptoP256.d.ts +119 -0
  642. package/_types/WebCryptoP256.d.ts.map +1 -0
  643. package/_types/Withdrawal.d.ts +74 -0
  644. package/_types/Withdrawal.d.ts.map +1 -0
  645. package/_types/index.d.ts +3367 -0
  646. package/_types/index.d.ts.map +1 -0
  647. package/_types/internal/abi.d.ts +4 -0
  648. package/_types/internal/abi.d.ts.map +1 -0
  649. package/_types/internal/abiConstructor.d.ts +11 -0
  650. package/_types/internal/abiConstructor.d.ts.map +1 -0
  651. package/_types/internal/abiError.d.ts +11 -0
  652. package/_types/internal/abiError.d.ts.map +1 -0
  653. package/_types/internal/abiEvent.d.ts +60 -0
  654. package/_types/internal/abiEvent.d.ts.map +1 -0
  655. package/_types/internal/abiFunction.d.ts +11 -0
  656. package/_types/internal/abiFunction.d.ts.map +1 -0
  657. package/_types/internal/abiItem.d.ts +100 -0
  658. package/_types/internal/abiItem.d.ts.map +1 -0
  659. package/_types/internal/abiParameters.d.ts +169 -0
  660. package/_types/internal/abiParameters.d.ts.map +1 -0
  661. package/_types/internal/base58.d.ts +17 -0
  662. package/_types/internal/base58.d.ts.map +1 -0
  663. package/_types/internal/bytes.d.ts +52 -0
  664. package/_types/internal/bytes.d.ts.map +1 -0
  665. package/_types/internal/cursor.d.ts +70 -0
  666. package/_types/internal/cursor.d.ts.map +1 -0
  667. package/_types/internal/ens.d.ts +23 -0
  668. package/_types/internal/ens.d.ts.map +1 -0
  669. package/_types/internal/errors.d.ts +7 -0
  670. package/_types/internal/errors.d.ts.map +1 -0
  671. package/_types/internal/hdKey.d.ts +10 -0
  672. package/_types/internal/hdKey.d.ts.map +1 -0
  673. package/_types/internal/hex.d.ts +39 -0
  674. package/_types/internal/hex.d.ts.map +1 -0
  675. package/_types/internal/lru.d.ts +13 -0
  676. package/_types/internal/lru.d.ts.map +1 -0
  677. package/_types/internal/mnemonic/wordlists.d.ts +11 -0
  678. package/_types/internal/mnemonic/wordlists.d.ts.map +1 -0
  679. package/_types/internal/promise.d.ts +27 -0
  680. package/_types/internal/promise.d.ts.map +1 -0
  681. package/_types/internal/register.d.ts +13 -0
  682. package/_types/internal/register.d.ts.map +1 -0
  683. package/_types/internal/rpcSchema.d.ts +12 -0
  684. package/_types/internal/rpcSchema.d.ts.map +1 -0
  685. package/_types/internal/rpcSchemas/eth.d.ts +718 -0
  686. package/_types/internal/rpcSchemas/eth.d.ts.map +1 -0
  687. package/_types/internal/rpcSchemas/wallet.d.ts +416 -0
  688. package/_types/internal/rpcSchemas/wallet.d.ts.map +1 -0
  689. package/_types/internal/rpcTransport.d.ts +38 -0
  690. package/_types/internal/rpcTransport.d.ts.map +1 -0
  691. package/_types/internal/types.d.ts +284 -0
  692. package/_types/internal/types.d.ts.map +1 -0
  693. package/_types/internal/uid.d.ts +3 -0
  694. package/_types/internal/uid.d.ts.map +1 -0
  695. package/_types/internal/webauthn.d.ts +127 -0
  696. package/_types/internal/webauthn.d.ts.map +1 -0
  697. package/_types/trusted-setups/Paths.d.ts +2 -0
  698. package/_types/trusted-setups/Paths.d.ts.map +1 -0
  699. package/_types/trusted-setups/index.d.ts +2 -0
  700. package/_types/trusted-setups/index.d.ts.map +1 -0
  701. package/_types/trusted-setups/internal/paths.d.ts +3 -0
  702. package/_types/trusted-setups/internal/paths.d.ts.map +1 -0
  703. package/_types/version.d.ts +3 -0
  704. package/_types/version.d.ts.map +1 -0
  705. package/_types/window/index.d.ts +7 -0
  706. package/_types/window/index.d.ts.map +1 -0
  707. package/index.ts +3427 -0
  708. package/internal/abi.ts +11 -0
  709. package/internal/abiConstructor.ts +32 -0
  710. package/internal/abiError.ts +30 -0
  711. package/internal/abiEvent.ts +154 -0
  712. package/internal/abiFunction.ts +32 -0
  713. package/internal/abiItem.ts +593 -0
  714. package/internal/abiParameters.ts +741 -0
  715. package/internal/base58.ts +106 -0
  716. package/internal/bytes.ts +152 -0
  717. package/internal/cursor.ts +252 -0
  718. package/internal/ens.ts +64 -0
  719. package/internal/errors.ts +26 -0
  720. package/internal/hdKey.ts +25 -0
  721. package/internal/hex.ts +123 -0
  722. package/internal/lru.ts +34 -0
  723. package/internal/mnemonic/wordlists.ts +10 -0
  724. package/internal/promise.ts +66 -0
  725. package/internal/register.ts +15 -0
  726. package/internal/rpcSchema.ts +20 -0
  727. package/internal/rpcSchemas/eth.ts +727 -0
  728. package/internal/rpcSchemas/wallet.ts +428 -0
  729. package/internal/rpcTransport.ts +74 -0
  730. package/internal/types.ts +414 -0
  731. package/internal/uid.ts +15 -0
  732. package/internal/webauthn.ts +198 -0
  733. package/package.json +500 -20
  734. package/trusted-setups/Paths/package.json +6 -0
  735. package/trusted-setups/Paths.ts +3 -0
  736. package/trusted-setups/index.ts +1 -0
  737. package/trusted-setups/internal/paths.ts +13 -0
  738. package/trusted-setups/internal/setups/mainnet.json +8265 -0
  739. package/trusted-setups/internal/setups/mainnet.txt +4163 -0
  740. package/trusted-setups/package.json +6 -0
  741. package/tsdoc.json +4 -0
  742. package/version/package.json +6 -0
  743. package/version.ts +2 -0
  744. package/window/index.ts +7 -0
  745. package/window/package.json +6 -0
  746. package/cl/ansiesc.js +0 -25
  747. package/cl/deps.js +0 -7
  748. package/cl/editor.js +0 -141
  749. package/cl/index.html +0 -19
  750. package/cl/ox.js +0 -44
  751. package/cl/socket.io.js +0 -1922
  752. package/cl/style.css +0 -37
  753. package/srv/deps.js +0 -88
  754. package/srv/httpSrv.js +0 -82
  755. package/srv/ox.js +0 -44
  756. package/srv/remoteXtermReq.js +0 -70
package/Hex.ts ADDED
@@ -0,0 +1,1040 @@
1
+ import { equalBytes } from '@noble/curves/abstract/utils'
2
+ import * as Bytes from './Bytes.js'
3
+ import * as Errors from './Errors.js'
4
+ import * as Json from './Json.js'
5
+ import * as internal_bytes from './internal/bytes.js'
6
+ import * as internal from './internal/hex.js'
7
+
8
+ const encoder = /*#__PURE__*/ new TextEncoder()
9
+
10
+ const hexes = /*#__PURE__*/ Array.from({ length: 256 }, (_v, i) =>
11
+ i.toString(16).padStart(2, '0'),
12
+ )
13
+
14
+ /** Root type for a Hex string. */
15
+ export type Hex = `0x${string}`
16
+
17
+ /**
18
+ * Asserts if the given value is {@link ox#Hex.Hex}.
19
+ *
20
+ * @example
21
+ * ```ts twoslash
22
+ * import { Hex } from 'ox'
23
+ *
24
+ * Hex.assert('abc')
25
+ * // @error: InvalidHexValueTypeError:
26
+ * // @error: Value `"abc"` of type `string` is an invalid hex type.
27
+ * // @error: Hex types must be represented as `"0x\${string}"`.
28
+ * ```
29
+ *
30
+ * @param value - The value to assert.
31
+ * @param options - Options.
32
+ */
33
+ export function assert(
34
+ value: unknown,
35
+ options: assert.Options = {},
36
+ ): asserts value is Hex {
37
+ const { strict = false } = options
38
+ if (!value) throw new InvalidHexTypeError(value)
39
+ if (typeof value !== 'string') throw new InvalidHexTypeError(value)
40
+ if (strict) {
41
+ if (!/^0x[0-9a-fA-F]*$/.test(value)) throw new InvalidHexValueError(value)
42
+ }
43
+ if (!value.startsWith('0x')) throw new InvalidHexValueError(value)
44
+ }
45
+
46
+ export declare namespace assert {
47
+ type Options = {
48
+ /** Checks if the {@link ox#Hex.Hex} value contains invalid hexadecimal characters. @default false */
49
+ strict?: boolean | undefined
50
+ }
51
+
52
+ type ErrorType =
53
+ | InvalidHexTypeError
54
+ | InvalidHexValueError
55
+ | Errors.GlobalErrorType
56
+ }
57
+
58
+ /* v8 ignore next */
59
+ assert.parseError = (error: unknown) => error as assert.ErrorType
60
+
61
+ /**
62
+ * Concatenates two or more {@link ox#Hex.Hex}.
63
+ *
64
+ * @example
65
+ * ```ts twoslash
66
+ * import { Hex } from 'ox'
67
+ *
68
+ * Hex.concat('0x123', '0x456')
69
+ * // @log: '0x123456'
70
+ * ```
71
+ *
72
+ * @param values - The {@link ox#Hex.Hex} values to concatenate.
73
+ * @returns The concatenated {@link ox#Hex.Hex} value.
74
+ */
75
+ export function concat(...values: readonly Hex[]): Hex {
76
+ return `0x${(values as Hex[]).reduce((acc, x) => acc + x.replace('0x', ''), '')}`
77
+ }
78
+
79
+ export declare namespace concat {
80
+ type ErrorType = Errors.GlobalErrorType
81
+ }
82
+
83
+ /* v8 ignore next */
84
+ concat.parseError = (error: unknown) => error as concat.ErrorType
85
+
86
+ /**
87
+ * Instantiates a {@link ox#Hex.Hex} value from a hex string or {@link ox#Bytes.Bytes} value.
88
+ *
89
+ * :::tip
90
+ *
91
+ * To instantiate from a **Boolean**, **String**, or **Number**, use one of the following:
92
+ *
93
+ * - `Hex.fromBoolean`
94
+ *
95
+ * - `Hex.fromString`
96
+ *
97
+ * - `Hex.fromNumber`
98
+ *
99
+ * :::
100
+ *
101
+ * @example
102
+ * ```ts twoslash
103
+ * import { Bytes, Hex } from 'ox'
104
+ *
105
+ * Hex.from('0x48656c6c6f20576f726c6421')
106
+ * // @log: '0x48656c6c6f20576f726c6421'
107
+ *
108
+ * Hex.from(Bytes.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))
109
+ * // @log: '0x48656c6c6f20576f726c6421'
110
+ * ```
111
+ *
112
+ * @param value - The {@link ox#Bytes.Bytes} value to encode.
113
+ * @returns The encoded {@link ox#Hex.Hex} value.
114
+ */
115
+ export function from(value: Hex | Bytes.Bytes | readonly number[]): Hex {
116
+ if (value instanceof Uint8Array) return fromBytes(value)
117
+ if (Array.isArray(value)) return fromBytes(new Uint8Array(value))
118
+ return value as never
119
+ }
120
+
121
+ export declare namespace from {
122
+ type Options = {
123
+ /** The size (in bytes) of the output hex value. */
124
+ size?: number | undefined
125
+ }
126
+
127
+ type ErrorType = fromBytes.ErrorType | Errors.GlobalErrorType
128
+ }
129
+
130
+ /* v8 ignore next */
131
+ from.parseError = (error: unknown) => error as from.ErrorType
132
+
133
+ /**
134
+ * Encodes a boolean into a {@link ox#Hex.Hex} value.
135
+ *
136
+ * @example
137
+ * ```ts twoslash
138
+ * import { Hex } from 'ox'
139
+ *
140
+ * Hex.fromBoolean(true)
141
+ * // @log: '0x1'
142
+ *
143
+ * Hex.fromBoolean(false)
144
+ * // @log: '0x0'
145
+ *
146
+ * Hex.fromBoolean(true, { size: 32 })
147
+ * // @log: '0x0000000000000000000000000000000000000000000000000000000000000001'
148
+ * ```
149
+ *
150
+ * @param value - The boolean value to encode.
151
+ * @param options - Options.
152
+ * @returns The encoded {@link ox#Hex.Hex} value.
153
+ */
154
+ export function fromBoolean(
155
+ value: boolean,
156
+ options: fromBoolean.Options = {},
157
+ ): Hex {
158
+ const hex: Hex = `0x0${Number(value)}`
159
+ if (typeof options.size === 'number') {
160
+ internal.assertSize(hex, options.size)
161
+ return padLeft(hex, options.size)
162
+ }
163
+ return hex
164
+ }
165
+
166
+ export declare namespace fromBoolean {
167
+ type Options = {
168
+ /** The size (in bytes) of the output hex value. */
169
+ size?: number | undefined
170
+ }
171
+
172
+ type ErrorType =
173
+ | internal.assertSize.ErrorType
174
+ | padLeft.ErrorType
175
+ | Errors.GlobalErrorType
176
+ }
177
+
178
+ fromBoolean.parseError = (error: unknown) =>
179
+ /* v8 ignore next */
180
+ error as fromBoolean.ErrorType
181
+
182
+ /**
183
+ * Encodes a {@link ox#Bytes.Bytes} value into a {@link ox#Hex.Hex} value.
184
+ *
185
+ * @example
186
+ * ```ts twoslash
187
+ * import { Bytes, Hex } from 'ox'
188
+ *
189
+ * Hex.fromBytes(Bytes.from([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33]))
190
+ * // @log: '0x48656c6c6f20576f726c6421'
191
+ * ```
192
+ *
193
+ * @param value - The {@link ox#Bytes.Bytes} value to encode.
194
+ * @param options - Options.
195
+ * @returns The encoded {@link ox#Hex.Hex} value.
196
+ */
197
+ export function fromBytes(
198
+ value: Bytes.Bytes,
199
+ options: fromBytes.Options = {},
200
+ ): Hex {
201
+ let string = ''
202
+ for (let i = 0; i < value.length; i++) string += hexes[value[i]!]
203
+ const hex = `0x${string}` as const
204
+
205
+ if (typeof options.size === 'number') {
206
+ internal.assertSize(hex, options.size)
207
+ return padRight(hex, options.size)
208
+ }
209
+ return hex
210
+ }
211
+
212
+ export declare namespace fromBytes {
213
+ type Options = {
214
+ /** The size (in bytes) of the output hex value. */
215
+ size?: number | undefined
216
+ }
217
+
218
+ type ErrorType =
219
+ | internal.assertSize.ErrorType
220
+ | padRight.ErrorType
221
+ | Errors.GlobalErrorType
222
+ }
223
+
224
+ /* v8 ignore next */
225
+ fromBytes.parseError = (error: unknown) => error as fromBytes.ErrorType
226
+
227
+ /**
228
+ * Encodes a number or bigint into a {@link ox#Hex.Hex} value.
229
+ *
230
+ * @example
231
+ * ```ts twoslash
232
+ * import { Hex } from 'ox'
233
+ *
234
+ * Hex.fromNumber(420)
235
+ * // @log: '0x1a4'
236
+ *
237
+ * Hex.fromNumber(420, { size: 32 })
238
+ * // @log: '0x00000000000000000000000000000000000000000000000000000000000001a4'
239
+ * ```
240
+ *
241
+ * @param value - The number or bigint value to encode.
242
+ * @param options - Options.
243
+ * @returns The encoded {@link ox#Hex.Hex} value.
244
+ */
245
+ export function fromNumber(
246
+ value: number | bigint,
247
+ options: fromNumber.Options = {},
248
+ ): Hex {
249
+ const { signed, size } = options
250
+
251
+ const value_ = BigInt(value)
252
+
253
+ let maxValue: bigint | number | undefined
254
+ if (size) {
255
+ if (signed) maxValue = (1n << (BigInt(size) * 8n - 1n)) - 1n
256
+ else maxValue = 2n ** (BigInt(size) * 8n) - 1n
257
+ } else if (typeof value === 'number') {
258
+ maxValue = BigInt(Number.MAX_SAFE_INTEGER)
259
+ }
260
+
261
+ const minValue = typeof maxValue === 'bigint' && signed ? -maxValue - 1n : 0
262
+
263
+ if ((maxValue && value_ > maxValue) || value_ < minValue) {
264
+ const suffix = typeof value === 'bigint' ? 'n' : ''
265
+ throw new IntegerOutOfRangeError({
266
+ max: maxValue ? `${maxValue}${suffix}` : undefined,
267
+ min: `${minValue}${suffix}`,
268
+ signed,
269
+ size,
270
+ value: `${value}${suffix}`,
271
+ })
272
+ }
273
+
274
+ const stringValue = (
275
+ signed && value_ < 0 ? (1n << BigInt(size * 8)) + BigInt(value_) : value_
276
+ ).toString(16)
277
+
278
+ const hex =
279
+ `0x${stringValue.length % 2 === 0 ? stringValue : `0${stringValue}`}` as Hex
280
+ if (size) return padLeft(hex, size) as Hex
281
+ return hex
282
+ }
283
+
284
+ export declare namespace fromNumber {
285
+ type Options =
286
+ | {
287
+ /** Whether or not the number of a signed representation. */
288
+ signed?: boolean | undefined
289
+ /** The size (in bytes) of the output hex value. */
290
+ size: number
291
+ }
292
+ | {
293
+ signed?: undefined
294
+ /** The size (in bytes) of the output hex value. */
295
+ size?: number | undefined
296
+ }
297
+
298
+ type ErrorType =
299
+ | IntegerOutOfRangeError
300
+ | padLeft.ErrorType
301
+ | Errors.GlobalErrorType
302
+ }
303
+
304
+ fromNumber.parseError = (error: unknown) =>
305
+ /* v8 ignore next */
306
+ error as fromNumber.ErrorType
307
+
308
+ /**
309
+ * Encodes a string into a {@link ox#Hex.Hex} value.
310
+ *
311
+ * @example
312
+ * ```ts twoslash
313
+ * import { Hex } from 'ox'
314
+ * Hex.fromString('Hello World!')
315
+ * // '0x48656c6c6f20576f726c6421'
316
+ *
317
+ * Hex.fromString('Hello World!', { size: 32 })
318
+ * // '0x48656c6c6f20576f726c64210000000000000000000000000000000000000000'
319
+ * ```
320
+ *
321
+ * @param value - The string value to encode.
322
+ * @param options - Options.
323
+ * @returns The encoded {@link ox#Hex.Hex} value.
324
+ */
325
+ export function fromString(
326
+ value: string,
327
+ options: fromString.Options = {},
328
+ ): Hex {
329
+ return fromBytes(encoder.encode(value), options)
330
+ }
331
+
332
+ export declare namespace fromString {
333
+ type Options = {
334
+ /** The size (in bytes) of the output hex value. */
335
+ size?: number | undefined
336
+ }
337
+
338
+ type ErrorType = fromBytes.ErrorType | Errors.GlobalErrorType
339
+ }
340
+
341
+ fromString.parseError = (error: unknown) =>
342
+ /* v8 ignore next */
343
+ error as fromString.ErrorType
344
+
345
+ /**
346
+ * Checks if two {@link ox#Hex.Hex} values are equal.
347
+ *
348
+ * @example
349
+ * ```ts twoslash
350
+ * import { Hex } from 'ox'
351
+ *
352
+ * Hex.isEqual('0xdeadbeef', '0xdeadbeef')
353
+ * // @log: true
354
+ *
355
+ * Hex.isEqual('0xda', '0xba')
356
+ * // @log: false
357
+ * ```
358
+ *
359
+ * @param hexA - The first {@link ox#Hex.Hex} value.
360
+ * @param hexB - The second {@link ox#Hex.Hex} value.
361
+ * @returns `true` if the two {@link ox#Hex.Hex} values are equal, `false` otherwise.
362
+ */
363
+ export function isEqual(hexA: Hex, hexB: Hex) {
364
+ return equalBytes(Bytes.fromHex(hexA), Bytes.fromHex(hexB))
365
+ }
366
+
367
+ export declare namespace isEqual {
368
+ type ErrorType = Bytes.fromHex.ErrorType | Errors.GlobalErrorType
369
+ }
370
+
371
+ /* v8 ignore next */
372
+ isEqual.parseError = (error: unknown) => error as isEqual.ErrorType
373
+
374
+ /**
375
+ * Pads a {@link ox#Hex.Hex} value to the left with zero bytes until it reaches the given `size` (default: 32 bytes).
376
+ *
377
+ * @example
378
+ * ```ts twoslash
379
+ * import { Hex } from 'ox'
380
+ *
381
+ * Hex.padLeft('0x1234', 4)
382
+ * // @log: '0x00001234'
383
+ * ```
384
+ *
385
+ * @param value - The {@link ox#Hex.Hex} value to pad.
386
+ * @param size - The size (in bytes) of the output hex value.
387
+ * @returns The padded {@link ox#Hex.Hex} value.
388
+ */
389
+ export function padLeft(
390
+ value: Hex,
391
+ size?: number | undefined,
392
+ ): padLeft.ReturnType {
393
+ return internal.pad(value, { dir: 'left', size })
394
+ }
395
+
396
+ export declare namespace padLeft {
397
+ type ReturnType = Hex
398
+ type ErrorType = internal.pad.ErrorType | Errors.GlobalErrorType
399
+ }
400
+
401
+ /* v8 ignore next */
402
+ padLeft.parseError = (error: unknown) => error as padLeft.ErrorType
403
+
404
+ /**
405
+ * Pads a {@link ox#Hex.Hex} value to the right with zero bytes until it reaches the given `size` (default: 32 bytes).
406
+ *
407
+ * @example
408
+ * ```ts
409
+ * import { Hex } from 'ox'
410
+ *
411
+ * Hex.padRight('0x1234', 4)
412
+ * // @log: '0x12340000'
413
+ * ```
414
+ *
415
+ * @param value - The {@link ox#Hex.Hex} value to pad.
416
+ * @param size - The size (in bytes) of the output hex value.
417
+ * @returns The padded {@link ox#Hex.Hex} value.
418
+ */
419
+ export function padRight(
420
+ value: Hex,
421
+ size?: number | undefined,
422
+ ): padRight.ReturnType {
423
+ return internal.pad(value, { dir: 'right', size })
424
+ }
425
+
426
+ export declare namespace padRight {
427
+ type ReturnType = Hex
428
+ type ErrorType = internal.pad.ErrorType | Errors.GlobalErrorType
429
+ }
430
+
431
+ /* v8 ignore next */
432
+ padRight.parseError = (error: unknown) => error as padRight.ErrorType
433
+
434
+ /**
435
+ * Generates a random {@link ox#Hex.Hex} value of the specified length.
436
+ *
437
+ * @example
438
+ * ```ts twoslash
439
+ * import { Hex } from 'ox'
440
+ *
441
+ * const hex = Hex.random(32)
442
+ * // @log: '0x...'
443
+ * ```
444
+ *
445
+ * @returns Random {@link ox#Hex.Hex} value.
446
+ */
447
+ export function random(length: number): Hex {
448
+ return fromBytes(Bytes.random(length))
449
+ }
450
+
451
+ export declare namespace random {
452
+ type ErrorType = Errors.GlobalErrorType
453
+ }
454
+
455
+ /* v8 ignore next */
456
+ random.parseError = (error: unknown) => error as random.ErrorType
457
+
458
+ /**
459
+ * Returns a section of a {@link ox#Bytes.Bytes} value given a start/end bytes offset.
460
+ *
461
+ * @example
462
+ * ```ts twoslash
463
+ * import { Hex } from 'ox'
464
+ *
465
+ * Hex.slice('0x0123456789', 1, 4)
466
+ * // @log: '0x234567'
467
+ * ```
468
+ *
469
+ * @param value - The {@link ox#Hex.Hex} value to slice.
470
+ * @param start - The start offset (in bytes).
471
+ * @param end - The end offset (in bytes).
472
+ * @param options - Options.
473
+ * @returns The sliced {@link ox#Hex.Hex} value.
474
+ */
475
+ export function slice(
476
+ value: Hex,
477
+ start?: number | undefined,
478
+ end?: number | undefined,
479
+ options: slice.Options = {},
480
+ ): Hex {
481
+ const { strict } = options
482
+ internal.assertStartOffset(value, start)
483
+ const value_ = `0x${value
484
+ .replace('0x', '')
485
+ .slice((start ?? 0) * 2, (end ?? value.length) * 2)}` as const
486
+ if (strict) internal.assertEndOffset(value_, start, end)
487
+ return value_
488
+ }
489
+
490
+ export declare namespace slice {
491
+ type Options = {
492
+ /** Asserts that the sliced value is the same size as the given start/end offsets. */
493
+ strict?: boolean | undefined
494
+ }
495
+
496
+ type ErrorType =
497
+ | internal.assertStartOffset.ErrorType
498
+ | internal.assertEndOffset.ErrorType
499
+ | Errors.GlobalErrorType
500
+ }
501
+
502
+ /* v8 ignore next */
503
+ slice.parseError = (error: unknown) => error as slice.ErrorType
504
+
505
+ /**
506
+ * Retrieves the size of a {@link ox#Hex.Hex} value (in bytes).
507
+ *
508
+ * @example
509
+ * ```ts twoslash
510
+ * import { Hex } from 'ox'
511
+ *
512
+ * Hex.size('0xdeadbeef')
513
+ * // @log: 4
514
+ * ```
515
+ *
516
+ * @param value - The {@link ox#Hex.Hex} value to get the size of.
517
+ * @returns The size of the {@link ox#Hex.Hex} value (in bytes).
518
+ */
519
+ export function size(value: Hex): number {
520
+ return Math.ceil((value.length - 2) / 2)
521
+ }
522
+
523
+ export declare namespace size {
524
+ export type ErrorType = Errors.GlobalErrorType
525
+ }
526
+
527
+ /* v8 ignore next */
528
+ size.parseError = (error: unknown) => error as size.ErrorType
529
+
530
+ /**
531
+ * Trims leading zeros from a {@link ox#Hex.Hex} value.
532
+ *
533
+ * @example
534
+ * ```ts twoslash
535
+ * import { Hex } from 'ox'
536
+ *
537
+ * Hex.trimLeft('0x00000000deadbeef')
538
+ * // @log: '0xdeadbeef'
539
+ * ```
540
+ *
541
+ * @param value - The {@link ox#Hex.Hex} value to trim.
542
+ * @returns The trimmed {@link ox#Hex.Hex} value.
543
+ */
544
+ export function trimLeft(value: Hex): trimLeft.ReturnType {
545
+ return internal.trim(value, { dir: 'left' })
546
+ }
547
+
548
+ export declare namespace trimLeft {
549
+ type ReturnType = Hex
550
+
551
+ type ErrorType = internal.trim.ErrorType | Errors.GlobalErrorType
552
+ }
553
+
554
+ /* v8 ignore next */
555
+ trimLeft.parseError = (error: unknown) => error as trimLeft.ErrorType
556
+
557
+ /**
558
+ * Trims trailing zeros from a {@link ox#Hex.Hex} value.
559
+ *
560
+ * @example
561
+ * ```ts twoslash
562
+ * import { Hex } from 'ox'
563
+ *
564
+ * Hex.trimRight('0xdeadbeef00000000')
565
+ * // @log: '0xdeadbeef'
566
+ * ```
567
+ *
568
+ * @param value - The {@link ox#Hex.Hex} value to trim.
569
+ * @returns The trimmed {@link ox#Hex.Hex} value.
570
+ */
571
+ export function trimRight(value: Hex): trimRight.ReturnType {
572
+ return internal.trim(value, { dir: 'right' })
573
+ }
574
+
575
+ export declare namespace trimRight {
576
+ type ReturnType = Hex
577
+
578
+ type ErrorType = internal.trim.ErrorType | Errors.GlobalErrorType
579
+ }
580
+
581
+ /* v8 ignore next */
582
+ trimRight.parseError = (error: unknown) => error as trimRight.ErrorType
583
+
584
+ /**
585
+ * Decodes a {@link ox#Hex.Hex} value into a BigInt.
586
+ *
587
+ * @example
588
+ * ```ts twoslash
589
+ * import { Hex } from 'ox'
590
+ *
591
+ * Hex.toBigInt('0x1a4')
592
+ * // @log: 420n
593
+ *
594
+ * Hex.toBigInt('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })
595
+ * // @log: 420n
596
+ * ```
597
+ *
598
+ * @param hex - The {@link ox#Hex.Hex} value to decode.
599
+ * @param options - Options.
600
+ * @returns The decoded BigInt.
601
+ */
602
+ export function toBigInt(hex: Hex, options: toBigInt.Options = {}): bigint {
603
+ const { signed } = options
604
+
605
+ if (options.size) internal.assertSize(hex, options.size)
606
+
607
+ const value = BigInt(hex)
608
+ if (!signed) return value
609
+
610
+ const size = (hex.length - 2) / 2
611
+
612
+ const max_unsigned = (1n << (BigInt(size) * 8n)) - 1n
613
+ const max_signed = max_unsigned >> 1n
614
+
615
+ if (value <= max_signed) return value
616
+ return value - max_unsigned - 1n
617
+ }
618
+
619
+ export declare namespace toBigInt {
620
+ type Options = {
621
+ /** Whether or not the number of a signed representation. */
622
+ signed?: boolean | undefined
623
+ /** Size (in bytes) of the hex value. */
624
+ size?: number | undefined
625
+ }
626
+
627
+ type ErrorType = internal.assertSize.ErrorType | Errors.GlobalErrorType
628
+ }
629
+
630
+ /* v8 ignore next */
631
+ toBigInt.parseError = (error: unknown) => error as toBigInt.ErrorType
632
+
633
+ /**
634
+ * Decodes a {@link ox#Hex.Hex} value into a boolean.
635
+ *
636
+ * @example
637
+ * ```ts twoslash
638
+ * import { Hex } from 'ox'
639
+ *
640
+ * Hex.toBoolean('0x01')
641
+ * // @log: true
642
+ *
643
+ * Hex.toBoolean('0x0000000000000000000000000000000000000000000000000000000000000001', { size: 32 })
644
+ * // @log: true
645
+ * ```
646
+ *
647
+ * @param hex - The {@link ox#Hex.Hex} value to decode.
648
+ * @param options - Options.
649
+ * @returns The decoded boolean.
650
+ */
651
+ export function toBoolean(hex: Hex, options: toBoolean.Options = {}): boolean {
652
+ let hex_ = hex
653
+ if (options.size) {
654
+ internal.assertSize(hex, options.size)
655
+ hex_ = trimLeft(hex_)
656
+ }
657
+ if (trimLeft(hex_) === '0x00') return false
658
+ if (trimLeft(hex_) === '0x01') return true
659
+ throw new InvalidHexBooleanError(hex_)
660
+ }
661
+
662
+ export declare namespace toBoolean {
663
+ type Options = {
664
+ /** Size (in bytes) of the hex value. */
665
+ size?: number | undefined
666
+ }
667
+
668
+ type ErrorType =
669
+ | internal.assertSize.ErrorType
670
+ | trimLeft.ErrorType
671
+ | InvalidHexBooleanError
672
+ | Errors.GlobalErrorType
673
+ }
674
+
675
+ /* v8 ignore next */
676
+ toBoolean.parseError = (error: unknown) => error as toBoolean.ErrorType
677
+
678
+ /**
679
+ * Decodes a {@link ox#Hex.Hex} value into a {@link ox#Bytes.Bytes}.
680
+ *
681
+ * @example
682
+ * ```ts twoslash
683
+ * import { Hex } from 'ox'
684
+ *
685
+ * const data = Hex.toBytes('0x48656c6c6f20776f726c6421')
686
+ * // @log: Uint8Array([72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100, 33])
687
+ * ```
688
+ *
689
+ * @param hex - The {@link ox#Hex.Hex} value to decode.
690
+ * @param options - Options.
691
+ * @returns The decoded {@link ox#Bytes.Bytes}.
692
+ */
693
+ export function toBytes(hex: Hex, options: toBytes.Options = {}): Bytes.Bytes {
694
+ return Bytes.fromHex(hex, options)
695
+ }
696
+
697
+ export declare namespace toBytes {
698
+ type Options = {
699
+ /** Size (in bytes) of the hex value. */
700
+ size?: number | undefined
701
+ }
702
+
703
+ type ErrorType = Bytes.fromHex.ErrorType | Errors.GlobalErrorType
704
+ }
705
+
706
+ /* v8 ignore next */
707
+ toBytes.parseError = (error: unknown) => error as toBytes.ErrorType
708
+
709
+ /**
710
+ * Decodes a {@link ox#Hex.Hex} value into a number.
711
+ *
712
+ * @example
713
+ * ```ts twoslash
714
+ * import { Hex } from 'ox'
715
+ *
716
+ * Hex.toNumber('0x1a4')
717
+ * // @log: 420
718
+ *
719
+ * Hex.toNumber('0x00000000000000000000000000000000000000000000000000000000000001a4', { size: 32 })
720
+ * // @log: 420
721
+ * ```
722
+ *
723
+ * @param hex - The {@link ox#Hex.Hex} value to decode.
724
+ * @param options - Options.
725
+ * @returns The decoded number.
726
+ */
727
+ export function toNumber(hex: Hex, options: toNumber.Options = {}): number {
728
+ const { signed, size } = options
729
+ if (!signed && !size) return Number(hex)
730
+ return Number(toBigInt(hex, options))
731
+ }
732
+
733
+ export declare namespace toNumber {
734
+ type Options = toBigInt.Options
735
+
736
+ type ErrorType = toBigInt.ErrorType | Errors.GlobalErrorType
737
+ }
738
+
739
+ /* v8 ignore next */
740
+ toNumber.parseError = (error: unknown) => error as toNumber.ErrorType
741
+
742
+ /**
743
+ * Decodes a {@link ox#Hex.Hex} value into a string.
744
+ *
745
+ * @example
746
+ * ```ts twoslash
747
+ * import { Hex } from 'ox'
748
+ *
749
+ * Hex.toString('0x48656c6c6f20576f726c6421')
750
+ * // @log: 'Hello world!'
751
+ *
752
+ * Hex.toString('0x48656c6c6f20576f726c64210000000000000000000000000000000000000000', {
753
+ * size: 32,
754
+ * })
755
+ * // @log: 'Hello world'
756
+ * ```
757
+ *
758
+ * @param hex - The {@link ox#Hex.Hex} value to decode.
759
+ * @param options - Options.
760
+ * @returns The decoded string.
761
+ */
762
+ export function toString(hex: Hex, options: toString.Options = {}): string {
763
+ const { size } = options
764
+
765
+ let bytes = Bytes.fromHex(hex)
766
+ if (size) {
767
+ internal_bytes.assertSize(bytes, size)
768
+ bytes = Bytes.trimRight(bytes)
769
+ }
770
+ return new TextDecoder().decode(bytes)
771
+ }
772
+
773
+ export declare namespace toString {
774
+ type Options = {
775
+ /** Size (in bytes) of the hex value. */
776
+ size?: number | undefined
777
+ }
778
+
779
+ type ErrorType =
780
+ | internal_bytes.assertSize.ErrorType
781
+ | Bytes.fromHex.ErrorType
782
+ | Bytes.trimRight.ErrorType
783
+ | Errors.GlobalErrorType
784
+ }
785
+
786
+ /* v8 ignore next */
787
+ toString.parseError = (error: unknown) => error as toString.ErrorType
788
+
789
+ /**
790
+ * Checks if the given value is {@link ox#Hex.Hex}.
791
+ *
792
+ * @example
793
+ * ```ts twoslash
794
+ * import { Bytes, Hex } from 'ox'
795
+ *
796
+ * Hex.validate('0xdeadbeef')
797
+ * // @log: true
798
+ *
799
+ * Hex.validate(Bytes.from([1, 2, 3]))
800
+ * // @log: false
801
+ * ```
802
+ *
803
+ * @param value - The value to check.
804
+ * @param options - Options.
805
+ * @returns `true` if the value is a {@link ox#Hex.Hex}, `false` otherwise.
806
+ */
807
+ export function validate(
808
+ value: unknown,
809
+ options: validate.Options = {},
810
+ ): value is Hex {
811
+ const { strict = false } = options
812
+ try {
813
+ assert(value, { strict })
814
+ return true
815
+ } catch {
816
+ return false
817
+ }
818
+ }
819
+
820
+ export declare namespace validate {
821
+ type Options = {
822
+ /** Checks if the {@link ox#Hex.Hex} value contains invalid hexadecimal characters. @default false */
823
+ strict?: boolean | undefined
824
+ }
825
+
826
+ type ErrorType = Errors.GlobalErrorType
827
+ }
828
+
829
+ /* v8 ignore next */
830
+ validate.parseError = (error: unknown) => error as validate.ErrorType
831
+
832
+ /**
833
+ * Thrown when the provided integer is out of range, and cannot be represented as a hex value.
834
+ *
835
+ * @example
836
+ * ```ts twoslash
837
+ * import { Hex } from 'ox'
838
+ *
839
+ * Hex.fromNumber(420182738912731283712937129)
840
+ * // @error: Hex.IntegerOutOfRangeError: Number \`4.2018273891273126e+26\` is not in safe unsigned integer range (`0` to `9007199254740991`)
841
+ * ```
842
+ */
843
+ export class IntegerOutOfRangeError extends Errors.BaseError {
844
+ override readonly name = 'Hex.IntegerOutOfRangeError'
845
+
846
+ constructor({
847
+ max,
848
+ min,
849
+ signed,
850
+ size,
851
+ value,
852
+ }: {
853
+ max?: string | undefined
854
+ min: string
855
+ signed?: boolean | undefined
856
+ size?: number | undefined
857
+ value: string
858
+ }) {
859
+ super(
860
+ `Number \`${value}\` is not in safe${
861
+ size ? ` ${size * 8}-bit` : ''
862
+ }${signed ? ' signed' : ' unsigned'} integer range ${max ? `(\`${min}\` to \`${max}\`)` : `(above \`${min}\`)`}`,
863
+ )
864
+ }
865
+ }
866
+
867
+ /**
868
+ * Thrown when the provided hex value cannot be represented as a boolean.
869
+ *
870
+ * @example
871
+ * ```ts twoslash
872
+ * import { Hex } from 'ox'
873
+ *
874
+ * Hex.toBoolean('0xa')
875
+ * // @error: Hex.InvalidHexBooleanError: Hex value `"0xa"` is not a valid boolean.
876
+ * // @error: The hex value must be `"0x0"` (false) or `"0x1"` (true).
877
+ * ```
878
+ */
879
+ export class InvalidHexBooleanError extends Errors.BaseError {
880
+ override readonly name = 'Hex.InvalidHexBooleanError'
881
+
882
+ constructor(hex: Hex) {
883
+ super(`Hex value \`"${hex}"\` is not a valid boolean.`, {
884
+ metaMessages: [
885
+ 'The hex value must be `"0x0"` (false) or `"0x1"` (true).',
886
+ ],
887
+ })
888
+ }
889
+ }
890
+
891
+ /**
892
+ * Thrown when the provided value is not a valid hex type.
893
+ *
894
+ * @example
895
+ * ```ts twoslash
896
+ * import { Hex } from 'ox'
897
+ *
898
+ * Hex.assert(1)
899
+ * // @error: Hex.InvalidHexTypeError: Value `1` of type `number` is an invalid hex type.
900
+ * ```
901
+ */
902
+ export class InvalidHexTypeError extends Errors.BaseError {
903
+ override readonly name = 'Hex.InvalidHexTypeError'
904
+
905
+ constructor(value: unknown) {
906
+ super(
907
+ `Value \`${typeof value === 'object' ? Json.stringify(value) : value}\` of type \`${typeof value}\` is an invalid hex type.`,
908
+ {
909
+ metaMessages: ['Hex types must be represented as `"0x${string}"`.'],
910
+ },
911
+ )
912
+ }
913
+ }
914
+
915
+ /**
916
+ * Thrown when the provided hex value is invalid.
917
+ *
918
+ * @example
919
+ * ```ts twoslash
920
+ * import { Hex } from 'ox'
921
+ *
922
+ * Hex.assert('0x0123456789abcdefg')
923
+ * // @error: Hex.InvalidHexValueError: Value `0x0123456789abcdefg` is an invalid hex value.
924
+ * // @error: Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).
925
+ * ```
926
+ */
927
+ export class InvalidHexValueError extends Errors.BaseError {
928
+ override readonly name = 'Hex.InvalidHexValueError'
929
+
930
+ constructor(value: unknown) {
931
+ super(`Value \`${value}\` is an invalid hex value.`, {
932
+ metaMessages: [
933
+ 'Hex values must start with `"0x"` and contain only hexadecimal characters (0-9, a-f, A-F).',
934
+ ],
935
+ })
936
+ }
937
+ }
938
+
939
+ /**
940
+ * Thrown when the provided hex value is an odd length.
941
+ *
942
+ * @example
943
+ * ```ts twoslash
944
+ * import { Bytes } from 'ox'
945
+ *
946
+ * Bytes.fromHex('0xabcde')
947
+ * // @error: Hex.InvalidLengthError: Hex value `"0xabcde"` is an odd length (5 nibbles).
948
+ * ```
949
+ */
950
+ export class InvalidLengthError extends Errors.BaseError {
951
+ override readonly name = 'Hex.InvalidLengthError'
952
+
953
+ constructor(value: Hex) {
954
+ super(
955
+ `Hex value \`"${value}"\` is an odd length (${value.length - 2} nibbles).`,
956
+ {
957
+ metaMessages: ['It must be an even length.'],
958
+ },
959
+ )
960
+ }
961
+ }
962
+
963
+ /**
964
+ * Thrown when the size of the value exceeds the expected max size.
965
+ *
966
+ * @example
967
+ * ```ts twoslash
968
+ * import { Hex } from 'ox'
969
+ *
970
+ * Hex.fromString('Hello World!', { size: 8 })
971
+ * // @error: Hex.SizeOverflowError: Size cannot exceed `8` bytes. Given size: `12` bytes.
972
+ * ```
973
+ */
974
+ export class SizeOverflowError extends Errors.BaseError {
975
+ override readonly name = 'Hex.SizeOverflowError'
976
+
977
+ constructor({ givenSize, maxSize }: { givenSize: number; maxSize: number }) {
978
+ super(
979
+ `Size cannot exceed \`${maxSize}\` bytes. Given size: \`${givenSize}\` bytes.`,
980
+ )
981
+ }
982
+ }
983
+
984
+ /**
985
+ * Thrown when the slice offset exceeds the bounds of the value.
986
+ *
987
+ * @example
988
+ * ```ts twoslash
989
+ * import { Hex } from 'ox'
990
+ *
991
+ * Hex.slice('0x0123456789', 6)
992
+ * // @error: Hex.SliceOffsetOutOfBoundsError: Slice starting at offset `6` is out-of-bounds (size: `5`).
993
+ * ```
994
+ */
995
+ export class SliceOffsetOutOfBoundsError extends Errors.BaseError {
996
+ override readonly name = 'Hex.SliceOffsetOutOfBoundsError'
997
+
998
+ constructor({
999
+ offset,
1000
+ position,
1001
+ size,
1002
+ }: { offset: number; position: 'start' | 'end'; size: number }) {
1003
+ super(
1004
+ `Slice ${
1005
+ position === 'start' ? 'starting' : 'ending'
1006
+ } at offset \`${offset}\` is out-of-bounds (size: \`${size}\`).`,
1007
+ )
1008
+ }
1009
+ }
1010
+
1011
+ /**
1012
+ * Thrown when the size of the value exceeds the pad size.
1013
+ *
1014
+ * @example
1015
+ * ```ts twoslash
1016
+ * import { Hex } from 'ox'
1017
+ *
1018
+ * Hex.padLeft('0x1a4e12a45a21323123aaa87a897a897a898a6567a578a867a98778a667a85a875a87a6a787a65a675a6a9', 32)
1019
+ * // @error: Hex.SizeExceedsPaddingSizeError: Hex size (`43`) exceeds padding size (`32`).
1020
+ * ```
1021
+ */
1022
+ export class SizeExceedsPaddingSizeError extends Errors.BaseError {
1023
+ override readonly name = 'Hex.SizeExceedsPaddingSizeError'
1024
+
1025
+ constructor({
1026
+ size,
1027
+ targetSize,
1028
+ type,
1029
+ }: {
1030
+ size: number
1031
+ targetSize: number
1032
+ type: 'Hex' | 'Bytes'
1033
+ }) {
1034
+ super(
1035
+ `${type.charAt(0).toUpperCase()}${type
1036
+ .slice(1)
1037
+ .toLowerCase()} size (\`${size}\`) exceeds padding size (\`${targetSize}\`).`,
1038
+ )
1039
+ }
1040
+ }