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/PublicKey.ts ADDED
@@ -0,0 +1,545 @@
1
+ import * as Bytes from './Bytes.js'
2
+ import * as Errors from './Errors.js'
3
+ import * as Hex from './Hex.js'
4
+ import * as Json from './Json.js'
5
+ import type { Compute, ExactPartial } from './internal/types.js'
6
+
7
+ /** Root type for an ECDSA Public Key. */
8
+ export type PublicKey<
9
+ compressed extends boolean = false,
10
+ bigintType = bigint,
11
+ numberType = number,
12
+ > = Compute<
13
+ compressed extends true
14
+ ? {
15
+ prefix: numberType
16
+ x: bigintType
17
+ y?: undefined
18
+ }
19
+ : {
20
+ prefix: numberType
21
+ x: bigintType
22
+ y: bigintType
23
+ }
24
+ >
25
+
26
+ /**
27
+ * Asserts that a {@link ox#PublicKey.PublicKey} is valid.
28
+ *
29
+ * @example
30
+ * ```ts twoslash
31
+ * import { PublicKey } from 'ox'
32
+ *
33
+ * PublicKey.assert({
34
+ * prefix: 4,
35
+ * y: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
36
+ * })
37
+ * // @error: PublicKey.InvalidError: Value \`{"y":"1"}\` is not a valid public key.
38
+ * // @error: Public key must contain:
39
+ * // @error: - an `x` and `prefix` value (compressed)
40
+ * // @error: - an `x`, `y`, and `prefix` value (uncompressed)
41
+ * ```
42
+ *
43
+ * @param publicKey - The public key object to assert.
44
+ */
45
+ export function assert(
46
+ publicKey: ExactPartial<PublicKey>,
47
+ options: assert.Options = {},
48
+ ): asserts publicKey is PublicKey {
49
+ const { compressed } = options
50
+ const { prefix, x, y } = publicKey
51
+
52
+ // Uncompressed
53
+ if (
54
+ compressed === false ||
55
+ (typeof x === 'bigint' && typeof y === 'bigint')
56
+ ) {
57
+ if (prefix !== 4)
58
+ throw new InvalidPrefixError({
59
+ prefix,
60
+ cause: new InvalidUncompressedPrefixError(),
61
+ })
62
+ return
63
+ }
64
+
65
+ // Compressed
66
+ if (
67
+ compressed === true ||
68
+ (typeof x === 'bigint' && typeof y === 'undefined')
69
+ ) {
70
+ if (prefix !== 3 && prefix !== 2)
71
+ throw new InvalidPrefixError({
72
+ prefix,
73
+ cause: new InvalidCompressedPrefixError(),
74
+ })
75
+ return
76
+ }
77
+
78
+ // Unknown/invalid
79
+ throw new InvalidError({ publicKey })
80
+ }
81
+
82
+ export declare namespace assert {
83
+ type Options = {
84
+ /** Whether or not the public key should be compressed. */
85
+ compressed?: boolean
86
+ }
87
+
88
+ type ErrorType = InvalidError | InvalidPrefixError | Errors.GlobalErrorType
89
+ }
90
+
91
+ /**
92
+ * Compresses a {@link ox#PublicKey.PublicKey}.
93
+ *
94
+ * @example
95
+ * ```ts twoslash
96
+ * import { PublicKey } from 'ox'
97
+ *
98
+ * const publicKey = PublicKey.from({
99
+ * prefix: 4,
100
+ * x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
101
+ * y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
102
+ * })
103
+ *
104
+ * const compressed = PublicKey.compress(publicKey) // [!code focus]
105
+ * // @log: {
106
+ * // @log: prefix: 3,
107
+ * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
108
+ * // @log: }
109
+ * ```
110
+ *
111
+ * @param publicKey - The public key to compress.
112
+ * @returns The compressed public key.
113
+ */
114
+ export function compress(publicKey: PublicKey<false>): PublicKey<true> {
115
+ const { x, y } = publicKey
116
+ return {
117
+ prefix: y % 2n === 0n ? 2 : 3,
118
+ x,
119
+ }
120
+ }
121
+
122
+ export declare namespace compress {
123
+ type ErrorType = Errors.GlobalErrorType
124
+ }
125
+
126
+ compress.parseError = (error: unknown) =>
127
+ /* v8 ignore next */
128
+ error as compress.ErrorType
129
+
130
+ /**
131
+ * Instantiates a typed {@link ox#PublicKey.PublicKey} object from a {@link ox#PublicKey.PublicKey}, {@link ox#Bytes.Bytes}, or {@link ox#Hex.Hex}.
132
+ *
133
+ * @example
134
+ * ```ts twoslash
135
+ * import { PublicKey } from 'ox'
136
+ *
137
+ * const publicKey = PublicKey.from({
138
+ * prefix: 4,
139
+ * x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
140
+ * y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
141
+ * })
142
+ * // @log: {
143
+ * // @log: prefix: 4,
144
+ * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
145
+ * // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
146
+ * // @log: }
147
+ * ```
148
+ *
149
+ * @example
150
+ * ### From Serialized
151
+ *
152
+ * ```ts twoslash
153
+ * import { PublicKey } from 'ox'
154
+ *
155
+ * const publicKey = PublicKey.from('0x048318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5')
156
+ * // @log: {
157
+ * // @log: prefix: 4,
158
+ * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
159
+ * // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
160
+ * // @log: }
161
+ * ```
162
+ *
163
+ * @param value - The public key value to instantiate.
164
+ * @returns The instantiated {@link ox#PublicKey.PublicKey}.
165
+ */
166
+ export function from<
167
+ const publicKey extends
168
+ | CompressedPublicKey
169
+ | UncompressedPublicKey
170
+ | Hex.Hex
171
+ | Bytes.Bytes,
172
+ >(value: from.Value<publicKey>): from.ReturnType<publicKey> {
173
+ const publicKey = (() => {
174
+ if (Hex.validate(value)) return fromHex(value)
175
+ if (Bytes.validate(value)) return fromBytes(value)
176
+
177
+ const { prefix, x, y } = value
178
+ if (typeof x === 'bigint' && typeof y === 'bigint')
179
+ return { prefix: prefix ?? 0x04, x, y }
180
+ return { prefix, x }
181
+ })()
182
+
183
+ assert(publicKey)
184
+
185
+ return publicKey as never
186
+ }
187
+
188
+ /** @internal */
189
+ type CompressedPublicKey = PublicKey<true>
190
+
191
+ /** @internal */
192
+ type UncompressedPublicKey = Omit<PublicKey<false>, 'prefix'> & {
193
+ prefix?: PublicKey['prefix'] | undefined
194
+ }
195
+
196
+ export declare namespace from {
197
+ type Value<
198
+ publicKey extends
199
+ | CompressedPublicKey
200
+ | UncompressedPublicKey
201
+ | Hex.Hex
202
+ | Bytes.Bytes = PublicKey,
203
+ > = publicKey | CompressedPublicKey | UncompressedPublicKey
204
+
205
+ type ReturnType<
206
+ publicKey extends
207
+ | CompressedPublicKey
208
+ | UncompressedPublicKey
209
+ | Hex.Hex
210
+ | Bytes.Bytes = PublicKey,
211
+ > = publicKey extends CompressedPublicKey | UncompressedPublicKey
212
+ ? publicKey extends UncompressedPublicKey
213
+ ? Compute<publicKey & { readonly prefix: 0x04 }>
214
+ : publicKey
215
+ : PublicKey
216
+
217
+ type ErrorType = assert.ErrorType | Errors.GlobalErrorType
218
+ }
219
+
220
+ from.parseError = (error: unknown) =>
221
+ /* v8 ignore next */
222
+ error as from.ErrorType
223
+
224
+ /**
225
+ * Deserializes a {@link ox#PublicKey.PublicKey} from a {@link ox#Bytes.Bytes} value.
226
+ *
227
+ * @example
228
+ * ```ts twoslash
229
+ * // @noErrors
230
+ * import { PublicKey } from 'ox'
231
+ *
232
+ * const publicKey = PublicKey.fromBytes(new Uint8Array([128, 3, 131, ...]))
233
+ * // @log: {
234
+ * // @log: prefix: 4,
235
+ * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
236
+ * // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
237
+ * // @log: }
238
+ * ```
239
+ *
240
+ * @param publicKey - The serialized public key.
241
+ * @returns The deserialized public key.
242
+ */
243
+ export function fromBytes(publicKey: Bytes.Bytes): PublicKey {
244
+ return fromHex(Hex.fromBytes(publicKey))
245
+ }
246
+
247
+ export declare namespace fromBytes {
248
+ type ErrorType =
249
+ | fromHex.ErrorType
250
+ | Hex.fromBytes.ErrorType
251
+ | Errors.GlobalErrorType
252
+ }
253
+
254
+ fromBytes.parseError = (error: unknown) =>
255
+ /* v8 ignore next */
256
+ error as fromBytes.ErrorType
257
+
258
+ /**
259
+ * Deserializes a {@link ox#PublicKey.PublicKey} from a {@link ox#Hex.Hex} value.
260
+ *
261
+ * @example
262
+ * ```ts twoslash
263
+ * import { PublicKey } from 'ox'
264
+ *
265
+ * const publicKey = PublicKey.fromHex('0x8318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5')
266
+ * // @log: {
267
+ * // @log: prefix: 4,
268
+ * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
269
+ * // @log: y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
270
+ * // @log: }
271
+ * ```
272
+ *
273
+ * @example
274
+ * ### Deserializing a Compressed Public Key
275
+ *
276
+ * ```ts twoslash
277
+ * import { PublicKey } from 'ox'
278
+ *
279
+ * const publicKey = PublicKey.fromHex('0x038318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed75')
280
+ * // @log: {
281
+ * // @log: prefix: 3,
282
+ * // @log: x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
283
+ * // @log: }
284
+ * ```
285
+ *
286
+ * @param publicKey - The serialized public key.
287
+ * @returns The deserialized public key.
288
+ */
289
+ export function fromHex(publicKey: Hex.Hex): PublicKey {
290
+ if (
291
+ publicKey.length !== 132 &&
292
+ publicKey.length !== 130 &&
293
+ publicKey.length !== 68
294
+ )
295
+ throw new InvalidSerializedSizeError({ publicKey })
296
+
297
+ if (publicKey.length === 130) {
298
+ const x = BigInt(Hex.slice(publicKey, 0, 32))
299
+ const y = BigInt(Hex.slice(publicKey, 32, 64))
300
+ return {
301
+ prefix: 4,
302
+ x,
303
+ y,
304
+ } as never
305
+ }
306
+
307
+ if (publicKey.length === 132) {
308
+ const prefix = Number(Hex.slice(publicKey, 0, 1))
309
+ const x = BigInt(Hex.slice(publicKey, 1, 33))
310
+ const y = BigInt(Hex.slice(publicKey, 33, 65))
311
+ return {
312
+ prefix,
313
+ x,
314
+ y,
315
+ } as never
316
+ }
317
+
318
+ const prefix = Number(Hex.slice(publicKey, 0, 1))
319
+ const x = BigInt(Hex.slice(publicKey, 1, 33))
320
+ return {
321
+ prefix,
322
+ x,
323
+ } as never
324
+ }
325
+
326
+ export declare namespace fromHex {
327
+ type ErrorType = Hex.slice.ErrorType | Errors.GlobalErrorType
328
+ }
329
+
330
+ fromHex.parseError = (error: unknown) =>
331
+ /* v8 ignore next */
332
+ error as fromHex.ErrorType
333
+
334
+ /**
335
+ * Serializes a {@link ox#PublicKey.PublicKey} to {@link ox#Bytes.Bytes}.
336
+ *
337
+ * @example
338
+ * ```ts twoslash
339
+ * import { PublicKey } from 'ox'
340
+ *
341
+ * const publicKey = PublicKey.from({
342
+ * prefix: 4,
343
+ * x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
344
+ * y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
345
+ * })
346
+ *
347
+ * const bytes = PublicKey.toBytes(publicKey) // [!code focus]
348
+ * // @log: Uint8Array [128, 3, 131, ...]
349
+ * ```
350
+ *
351
+ * @param publicKey - The public key to serialize.
352
+ * @returns The serialized public key.
353
+ */
354
+ export function toBytes(
355
+ publicKey: PublicKey<boolean>,
356
+ options: toBytes.Options = {},
357
+ ): Bytes.Bytes {
358
+ return Bytes.fromHex(toHex(publicKey, options))
359
+ }
360
+
361
+ export declare namespace toBytes {
362
+ type Options = {
363
+ /**
364
+ * Whether to include the prefix in the serialized public key.
365
+ * @default true
366
+ */
367
+ includePrefix?: boolean | undefined
368
+ }
369
+
370
+ type ErrorType =
371
+ | Hex.fromNumber.ErrorType
372
+ | Bytes.fromHex.ErrorType
373
+ | Errors.GlobalErrorType
374
+ }
375
+
376
+ toBytes.parseError = (error: unknown) =>
377
+ /* v8 ignore next */
378
+ error as toBytes.ErrorType
379
+
380
+ /**
381
+ * Serializes a {@link ox#PublicKey.PublicKey} to {@link ox#Hex.Hex}.
382
+ *
383
+ * @example
384
+ * ```ts twoslash
385
+ * import { PublicKey } from 'ox'
386
+ *
387
+ * const publicKey = PublicKey.from({
388
+ * prefix: 4,
389
+ * x: 59295962801117472859457908919941473389380284132224861839820747729565200149877n,
390
+ * y: 24099691209996290925259367678540227198235484593389470330605641003500238088869n,
391
+ * })
392
+ *
393
+ * const hex = PublicKey.toHex(publicKey) // [!code focus]
394
+ * // @log: '0x048318535b54105d4a7aae60c08fc45f9687181b4fdfc625bd1a753fa7397fed753547f11ca8696646f2f3acb08e31016afac23e630c5d11f59f61fef57b0d2aa5'
395
+ * ```
396
+ *
397
+ * @param publicKey - The public key to serialize.
398
+ * @returns The serialized public key.
399
+ */
400
+ export function toHex(
401
+ publicKey: PublicKey<boolean>,
402
+ options: toHex.Options = {},
403
+ ): Hex.Hex {
404
+ assert(publicKey)
405
+
406
+ const { prefix, x, y } = publicKey
407
+ const { includePrefix = true } = options
408
+
409
+ const publicKey_ = Hex.concat(
410
+ includePrefix ? Hex.fromNumber(prefix, { size: 1 }) : '0x',
411
+ Hex.fromNumber(x, { size: 32 }),
412
+ // If the public key is not compressed, add the y coordinate.
413
+ typeof y === 'bigint' ? Hex.fromNumber(y, { size: 32 }) : '0x',
414
+ )
415
+
416
+ return publicKey_
417
+ }
418
+
419
+ export declare namespace toHex {
420
+ type Options = {
421
+ /**
422
+ * Whether to include the prefix in the serialized public key.
423
+ * @default true
424
+ */
425
+ includePrefix?: boolean | undefined
426
+ }
427
+
428
+ type ErrorType = Hex.fromNumber.ErrorType | Errors.GlobalErrorType
429
+ }
430
+
431
+ toHex.parseError = (error: unknown) =>
432
+ /* v8 ignore next */
433
+ error as toHex.ErrorType
434
+
435
+ /**
436
+ * Validates a {@link ox#PublicKey.PublicKey}. Returns `true` if valid, `false` otherwise.
437
+ *
438
+ * @example
439
+ * ```ts twoslash
440
+ * import { PublicKey } from 'ox'
441
+ *
442
+ * const valid = PublicKey.validate({
443
+ * prefix: 4,
444
+ * y: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
445
+ * })
446
+ * // @log: false
447
+ * ```
448
+ *
449
+ * @param publicKey - The public key object to assert.
450
+ */
451
+ export function validate(
452
+ publicKey: ExactPartial<PublicKey>,
453
+ options: validate.Options = {},
454
+ ): boolean {
455
+ try {
456
+ assert(publicKey, options)
457
+ return true
458
+ } catch (error) {
459
+ return false
460
+ }
461
+ }
462
+
463
+ export declare namespace validate {
464
+ type Options = {
465
+ /** Whether or not the public key should be compressed. */
466
+ compressed?: boolean
467
+ }
468
+
469
+ type ErrorType = Errors.GlobalErrorType
470
+ }
471
+
472
+ /**
473
+ * Thrown when a public key is invalid.
474
+ *
475
+ * @example
476
+ * ```ts twoslash
477
+ * import { PublicKey } from 'ox'
478
+ *
479
+ * PublicKey.assert({ y: 1n })
480
+ * // @error: PublicKey.InvalidError: Value `{"y":1n}` is not a valid public key.
481
+ * // @error: Public key must contain:
482
+ * // @error: - an `x` and `prefix` value (compressed)
483
+ * // @error: - an `x`, `y`, and `prefix` value (uncompressed)
484
+ * ```
485
+ */
486
+ export class InvalidError extends Errors.BaseError {
487
+ override readonly name = 'PublicKey.InvalidError'
488
+
489
+ constructor({ publicKey }: { publicKey: unknown }) {
490
+ super(`Value \`${Json.stringify(publicKey)}\` is not a valid public key.`, {
491
+ metaMessages: [
492
+ 'Public key must contain:',
493
+ '- an `x` and `prefix` value (compressed)',
494
+ '- an `x`, `y`, and `prefix` value (uncompressed)',
495
+ ],
496
+ })
497
+ }
498
+ }
499
+
500
+ /** Thrown when a public key has an invalid prefix. */
501
+ export class InvalidPrefixError<
502
+ cause extends InvalidCompressedPrefixError | InvalidUncompressedPrefixError =
503
+ | InvalidCompressedPrefixError
504
+ | InvalidUncompressedPrefixError,
505
+ > extends Errors.BaseError<cause> {
506
+ override readonly name = 'PublicKey.InvalidPrefixError'
507
+
508
+ constructor({ prefix, cause }: { prefix: number | undefined; cause: cause }) {
509
+ super(`Prefix "${prefix}" is invalid.`, {
510
+ cause,
511
+ })
512
+ }
513
+ }
514
+
515
+ /** Thrown when the public key has an invalid prefix for a compressed public key. */
516
+ export class InvalidCompressedPrefixError extends Errors.BaseError {
517
+ override readonly name = 'PublicKey.InvalidCompressedPrefixError'
518
+
519
+ constructor() {
520
+ super('Prefix must be 2 or 3 for compressed public keys.')
521
+ }
522
+ }
523
+
524
+ /** Thrown when the public key has an invalid prefix for an uncompressed public key. */
525
+ export class InvalidUncompressedPrefixError extends Errors.BaseError {
526
+ override readonly name = 'PublicKey.InvalidUncompressedPrefixError'
527
+
528
+ constructor() {
529
+ super('Prefix must be 4 for uncompressed public keys.')
530
+ }
531
+ }
532
+
533
+ /** Thrown when the public key has an invalid serialized size. */
534
+ export class InvalidSerializedSizeError extends Errors.BaseError {
535
+ override readonly name = 'PublicKey.InvalidSerializedSizeError'
536
+
537
+ constructor({ publicKey }: { publicKey: Hex.Hex | Bytes.Bytes }) {
538
+ super(`Value \`${publicKey}\` is an invalid public key size.`, {
539
+ metaMessages: [
540
+ 'Expected: 33 bytes (compressed + prefix), 64 bytes (uncompressed) or 65 bytes (uncompressed + prefix).',
541
+ `Received ${Hex.size(Hex.from(publicKey))} bytes.`,
542
+ ],
543
+ })
544
+ }
545
+ }
package/README.md CHANGED
@@ -1,43 +1,92 @@
1
- # ox: Online X-Terminal
1
+ <br/>
2
+
3
+ <p align="center">
4
+ <picture>
5
+ <source media="(prefers-color-scheme: dark)" srcset="https://github.com/wevm/ox/blob/main/.github/ox-dark.svg">
6
+ <img alt="ox logo" src="https://github.com/wevm/ox/blob/main/.github/ox-light.svg" width="auto" height="200">
7
+ </picture>
8
+ </p>
9
+
10
+ <p align="center">
11
+ <a href="https://www.npmjs.com/package/ox">
12
+ <picture>
13
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/v/ox?colorA=21262d&colorB=21262d&style=flat">
14
+ <img src="https://img.shields.io/npm/v/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Version">
15
+ </picture>
16
+ </a>
17
+ <a href="https://github.com/wevm/ox/blob/main/LICENSE">
18
+ <picture>
19
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/npm/l/ox?colorA=21262d&colorB=21262d&style=flat">
20
+ <img src="https://img.shields.io/npm/l/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="MIT License">
21
+ </picture>
22
+ </a>
23
+ <a href="https://app.codecov.io/gh/wevm/ox">
24
+ <picture>
25
+ <source media="(prefers-color-scheme: dark)" srcset="https://img.shields.io/codecov/c/github/wevm/ox?colorA=21262d&colorB=21262d&style=flat">
26
+ <img src="https://img.shields.io/codecov/c/github/wevm/ox?colorA=f6f8fa&colorB=f6f8fa&style=flat" alt="Code coverage">
27
+ </picture>
28
+ </a>
29
+ </p>
2
30
 
3
31
  ## Overview
4
32
 
5
- ox is a highly *un*secure but *awesome* way to get terminals open on your
6
- machine from anywhere in the cosmos (with internets).
33
+ Ox (⦻) is the foundation of robust Ethereum software written in TypeScript. It is an Ethereum Standard Library that provides a set of lightweight, performant, and type-safe TypeScript modules for Ethereum.
7
34
 
8
- Just run the server and browse to get your xterm up in your browser.
35
+ It offers core utilities & types for primitives such as: ABIs, Addresses, Blocks, Bytes, ECDSA, Hex, JSON-RPC, RLP, Signing & Signatures, Transaction Envelopes, and more.
9
36
 
10
- ## Installation
37
+ As an unopinionated Standard Library, it is designed to be used by higher-level consumers (such as [Viem](https://viem.sh), [Tevm](https://tevm.sh), or their alternatives) to provide their own opinionated interfaces, and/or when reaching for low-level primitives may be needed without buying into a Client Abstraction stack (Viem, Ethers, Web3.js, etc).
11
38
 
12
- This project depends on nclosure. So...
39
+ ## Documentation
13
40
 
14
- // install nclosure
15
- git clone git://github.com/gatapia/nclosure.git
16
- cd nclosure
17
- npm link
41
+ [Head to the documentation](https://oxlib.sh) to read and learn more about Ox.
18
42
 
19
- // install ox
20
- git clone git://github.com/gatapia/ox.git
43
+ ## Example Usage
21
44
 
22
- ## Running!
45
+ The example below demonstrates how to construct, sign, and broadcast a transaction envelope using Ox:
23
46
 
24
- node srv/ox.js
47
+ ```ts
48
+ import { Provider, Secp256k1, TransactionEnvelopeEip1559, Value } from 'ox'
49
+
50
+ // 1. Construct a transaction envelope.
51
+ const envelope = TransactionEnvelopeEip1559.from({
52
+ chainId: 1,
53
+ gas: 21000n,
54
+ nonce: 0n,
55
+ maxFeePerGas: Value.fromGwei('10'),
56
+ maxPriorityFeePerGas: Value.fromGwei('1'),
57
+ to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8',
58
+ value: Value.fromEther('1'),
59
+ })
60
+
61
+ // 2. Get the signing payload for the envelope.
62
+ const payload = TransactionEnvelopeEip1559.getSignPayload(envelope)
63
+
64
+ // 3. Sign the payload with your private key using secp256k1.
65
+ const signature = Secp256k1.sign({ payload, privateKey: '0x...' })
25
66
 
26
- Browse -> http://127.0.0.1:8124/
67
+ // 4. Serialize the envelope with the signature.
68
+ const serialized = TransactionEnvelopeEip1559.serialize(envelope, { signature })
27
69
 
70
+ // 5. Broadcast the envelope to the network.
71
+ const provider = Provider.from(window.ethereum)
72
+ const hash = await provider.request({
73
+ method: 'eth_sendRawTransaction',
74
+ params: [serialized],
75
+ })
76
+ ```
28
77
 
29
- ## License
78
+ > [!NOTE]
79
+ > Ox's APIs are purposely stateless, unopinionated, and verbose. The example above can definitely be achieved in a few lines of code in a more concise manner, however, the goal is for higher-level abstractions (Viem, etc) built on top of Ox to handle this for you.
30
80
 
31
- Copyright 2011 Guido Tapia (guido@tapia.com.au)
81
+ ## Community
32
82
 
33
- Licensed under the Apache License, Version 2.0 (the "License");
34
- you may not use this file except in compliance with the License.
35
- You may obtain a copy of the License at
83
+ Check out the following places for more Ox-related content:
36
84
 
37
- http://www.apache.org/licenses/LICENSE-2.0
85
+ - Follow [@wevm_dev](https://x.com/wevm_dev), [@jxom](https://x.com/_jxom), and [@awkweb](https://x.com/awkweb) on Twitter for project updates
86
+ - Join the [discussions on GitHub](https://github.com/wevm/ox/discussions)
38
87
 
39
- Unless required by applicable law or agreed to in writing, software
40
- distributed under the License is distributed on an "AS IS" BASIS,
41
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
42
- See the License for the specific language governing permissions and
43
- limitations under the License.
88
+ ## Support
89
+
90
+ - [GitHub Sponsors](https://github.com/sponsors/wevm?metadata_campaign=docs_support)
91
+ - [Gitcoin Grant](https://wagmi.sh/gitcoin)
92
+ - [wevm.eth](https://etherscan.io/enslookup-search?search=wevm.eth)
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../_types/Rlp.d.ts",
4
+ "main": "../_cjs/Rlp.js",
5
+ "module": "../_esm/Rlp.js"
6
+ }