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/P256.ts ADDED
@@ -0,0 +1,230 @@
1
+ import { secp256r1 } from '@noble/curves/p256'
2
+ import * as Bytes from './Bytes.js'
3
+ import type * as Errors from './Errors.js'
4
+ import * as Hex from './Hex.js'
5
+ import * as PublicKey from './PublicKey.js'
6
+ import type * as Signature from './Signature.js'
7
+
8
+ /** Re-export of noble/curves P256 utilities. */
9
+ export const noble = secp256r1
10
+
11
+ /**
12
+ * Computes the P256 ECDSA public key from a provided private key.
13
+ *
14
+ * @example
15
+ * ```ts twoslash
16
+ * import { P256 } from 'ox'
17
+ *
18
+ * const publicKey = P256.getPublicKey({ privateKey: '0x...' })
19
+ * ```
20
+ *
21
+ * @param options - The options to compute the public key.
22
+ * @returns The computed public key.
23
+ */
24
+ export function getPublicKey(
25
+ options: getPublicKey.Options,
26
+ ): PublicKey.PublicKey {
27
+ const { privateKey } = options
28
+ const point = secp256r1.ProjectivePoint.fromPrivateKey(
29
+ typeof privateKey === 'string'
30
+ ? privateKey.slice(2)
31
+ : Hex.fromBytes(privateKey).slice(2),
32
+ )
33
+ return PublicKey.from(point)
34
+ }
35
+
36
+ export declare namespace getPublicKey {
37
+ type Options = {
38
+ /**
39
+ * Private key to compute the public key from.
40
+ */
41
+ privateKey: Hex.Hex | Bytes.Bytes
42
+ }
43
+
44
+ type ErrorType = Errors.GlobalErrorType
45
+ }
46
+
47
+ /**
48
+ * Generates a random P256 ECDSA private key.
49
+ *
50
+ * @example
51
+ * ```ts twoslash
52
+ * import { P256 } from 'ox'
53
+ *
54
+ * const privateKey = P256.randomPrivateKey()
55
+ * ```
56
+ *
57
+ * @param options - The options to generate the private key.
58
+ * @returns The generated private key.
59
+ */
60
+ export function randomPrivateKey<as extends 'Hex' | 'Bytes' = 'Hex'>(
61
+ options: randomPrivateKey.Options<as> = {},
62
+ ): randomPrivateKey.ReturnType<as> {
63
+ const { as = 'Hex' } = options
64
+ const bytes = secp256r1.utils.randomPrivateKey()
65
+ if (as === 'Hex') return Hex.fromBytes(bytes) as never
66
+ return bytes as never
67
+ }
68
+
69
+ export declare namespace randomPrivateKey {
70
+ type Options<as extends 'Hex' | 'Bytes' = 'Hex'> = {
71
+ /**
72
+ * Format of the returned private key.
73
+ * @default 'Hex'
74
+ */
75
+ as?: as | 'Hex' | 'Bytes' | undefined
76
+ }
77
+
78
+ type ReturnType<as extends 'Hex' | 'Bytes'> =
79
+ | (as extends 'Bytes' ? Bytes.Bytes : never)
80
+ | (as extends 'Hex' ? Hex.Hex : never)
81
+
82
+ type ErrorType = Hex.fromBytes.ErrorType | Errors.GlobalErrorType
83
+ }
84
+
85
+ /**
86
+ * Recovers the signing public key from the signed payload and signature.
87
+ *
88
+ * @example
89
+ * ```ts twoslash
90
+ * import { P256 } from 'ox'
91
+ *
92
+ * const signature = P256.sign({ payload: '0xdeadbeef', privateKey: '0x...' })
93
+ *
94
+ * const publicKey = P256.recoverPublicKey({ // [!code focus]
95
+ * payload: '0xdeadbeef', // [!code focus]
96
+ * signature, // [!code focus]
97
+ * }) // [!code focus]
98
+ * ```
99
+ *
100
+ * @param options - The recovery options.
101
+ * @returns The recovered public key.
102
+ */
103
+ export function recoverPublicKey(
104
+ options: recoverPublicKey.Options,
105
+ ): PublicKey.PublicKey {
106
+ const { payload, signature } = options
107
+ const { r, s, yParity } = signature
108
+ const signature_ = new secp256r1.Signature(
109
+ BigInt(r),
110
+ BigInt(s),
111
+ ).addRecoveryBit(yParity)
112
+ const payload_ =
113
+ payload instanceof Uint8Array ? Hex.fromBytes(payload) : payload
114
+ const point = signature_.recoverPublicKey(payload_.substring(2))
115
+ return PublicKey.from(point)
116
+ }
117
+
118
+ export declare namespace recoverPublicKey {
119
+ type Options = {
120
+ /** Payload that was signed. */
121
+ payload: Hex.Hex | Bytes.Bytes
122
+ /** Signature of the payload. */
123
+ signature: Signature.Signature
124
+ }
125
+
126
+ type ErrorType =
127
+ | PublicKey.from.ErrorType
128
+ | Hex.fromBytes.ErrorType
129
+ | Errors.GlobalErrorType
130
+ }
131
+
132
+ recoverPublicKey.parseError = (error: unknown) =>
133
+ /* v8 ignore next */
134
+ error as recoverPublicKey.ErrorType
135
+
136
+ /**
137
+ * Signs the payload with the provided private key and returns a P256 signature.
138
+ *
139
+ * @example
140
+ * ```ts twoslash
141
+ * import { P256 } from 'ox'
142
+ *
143
+ * const signature = P256.sign({ // [!code focus]
144
+ * payload: '0xdeadbeef', // [!code focus]
145
+ * privateKey: '0x...' // [!code focus]
146
+ * }) // [!code focus]
147
+ * ```
148
+ *
149
+ * @param options - The signing options.
150
+ * @returns The ECDSA {@link ox#Signature.Signature}.
151
+ */
152
+ export function sign(options: sign.Options): Signature.Signature {
153
+ const { hash, payload, privateKey } = options
154
+ const { r, s, recovery } = secp256r1.sign(
155
+ payload instanceof Uint8Array ? payload : Bytes.fromHex(payload),
156
+ privateKey instanceof Uint8Array ? privateKey : Bytes.fromHex(privateKey),
157
+ ...(hash ? [{ prehash: true, lowS: true }] : []),
158
+ )
159
+ return {
160
+ r,
161
+ s,
162
+ yParity: recovery,
163
+ }
164
+ }
165
+
166
+ export declare namespace sign {
167
+ type Options = {
168
+ /** If set to `true`, the payload will be hashed (sha256) before being signed. */
169
+ hash?: boolean | undefined
170
+ /** Payload to sign. */
171
+ payload: Hex.Hex | Bytes.Bytes
172
+ /** ECDSA private key. */
173
+ privateKey: Hex.Hex | Bytes.Bytes
174
+ }
175
+
176
+ type ErrorType = Bytes.fromHex.ErrorType | Errors.GlobalErrorType
177
+ }
178
+
179
+ /* v8 ignore next */
180
+ sign.parseError = (error: unknown) => error as sign.ErrorType
181
+
182
+ /**
183
+ * Verifies a payload was signed by the provided public key.
184
+ *
185
+ * @example
186
+ *
187
+ * ```ts twoslash
188
+ * import { P256 } from 'ox'
189
+ *
190
+ * const privateKey = P256.randomPrivateKey()
191
+ * const publicKey = P256.getPublicKey({ privateKey })
192
+ * const signature = P256.sign({ payload: '0xdeadbeef', privateKey })
193
+ *
194
+ * const verified = P256.verify({ // [!code focus]
195
+ * publicKey, // [!code focus]
196
+ * payload: '0xdeadbeef', // [!code focus]
197
+ * signature, // [!code focus]
198
+ * }) // [!code focus]
199
+ * ```
200
+ *
201
+ * @param options - The verification options.
202
+ * @returns Whether the payload was signed by the provided public key.
203
+ */
204
+ export function verify(options: verify.Options): boolean {
205
+ const { hash, payload, publicKey, signature } = options
206
+ return secp256r1.verify(
207
+ signature,
208
+ payload instanceof Uint8Array ? payload : Bytes.fromHex(payload),
209
+ PublicKey.toHex(publicKey).substring(2),
210
+ ...(hash ? [{ prehash: true, lowS: true }] : []),
211
+ )
212
+ }
213
+
214
+ export declare namespace verify {
215
+ type Options = {
216
+ /** If set to `true`, the payload will be hashed (sha256) before being verified. */
217
+ hash?: boolean | undefined
218
+ /** Payload that was signed. */
219
+ payload: Hex.Hex | Bytes.Bytes
220
+ /** Public key that signed the payload. */
221
+ publicKey: PublicKey.PublicKey<boolean>
222
+ /** Signature of the payload. */
223
+ signature: Signature.Signature<boolean>
224
+ }
225
+
226
+ type ErrorType = Errors.GlobalErrorType
227
+ }
228
+
229
+ /* v8 ignore next */
230
+ verify.parseError = (error: unknown) => error as verify.ErrorType
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../_types/PersonalMessage.d.ts",
4
+ "main": "../_cjs/PersonalMessage.js",
5
+ "module": "../_esm/PersonalMessage.js"
6
+ }
@@ -0,0 +1,70 @@
1
+ import type * as Bytes from './Bytes.js'
2
+ import type * as Errors from './Errors.js'
3
+ import * as Hash from './Hash.js'
4
+ import * as Hex from './Hex.js'
5
+
6
+ /**
7
+ * Encodes a personal sign message in [ERC-191 format](https://eips.ethereum.org/EIPS/eip-191#version-0x45-e): `0x19 ‖ "Ethereum Signed Message:\n" + message.length ‖ message`.
8
+ *
9
+ * @example
10
+ * ```ts twoslash
11
+ * import { Hex, PersonalMessage } from 'ox'
12
+ *
13
+ * const data = PersonalMessage.encode(Hex.fromString('hello world'))
14
+ * // @log: '0x19457468657265756d205369676e6564204d6573736167653a0a313168656c6c6f20776f726c64'
15
+ * // @log: (0x19 ‖ 'Ethereum Signed Message:\n11' ‖ 'hello world')
16
+ * ```
17
+ *
18
+ * @param data - The data to encode.
19
+ * @returns The encoded personal sign message.
20
+ */
21
+ export function encode(data: Hex.Hex | Bytes.Bytes): Hex.Hex {
22
+ const message = Hex.from(data)
23
+ return Hex.concat(
24
+ // Personal Sign Format: `0x19 ‖ "Ethereum Signed Message:\n" ‖ message.length ‖ message`
25
+ '0x19',
26
+ Hex.fromString('Ethereum Signed Message:\n' + Hex.size(message)),
27
+ message,
28
+ )
29
+ }
30
+
31
+ export declare namespace encode {
32
+ type ErrorType =
33
+ | Hex.concat.ErrorType
34
+ | Hex.from.ErrorType
35
+ | Hex.fromString.ErrorType
36
+ | Errors.GlobalErrorType
37
+ }
38
+
39
+ /* v8 ignore next */
40
+ encode.parseError = (error: unknown) => error as encode.ErrorType
41
+
42
+ /**
43
+ * Gets the payload to use for signing an [ERC-191 formatted](https://eips.ethereum.org/EIPS/eip-191#version-0x45-e) personal message.
44
+ *
45
+ * @example
46
+ * ```ts twoslash
47
+ * import { Hex, PersonalMessage, Secp256k1 } from 'ox'
48
+ *
49
+ * const payload = PersonalMessage.getSignPayload(Hex.fromString('hello world')) // [!code focus]
50
+ *
51
+ * const signature = Secp256k1.sign({ payload, privateKey: '0x...' })
52
+ * ```
53
+ *
54
+ * @param data - The data to get the sign payload for.
55
+ * @returns The payload to use for signing.
56
+ */
57
+ export function getSignPayload(data: Hex.Hex | Bytes.Bytes): Hex.Hex {
58
+ return Hash.keccak256(encode(data))
59
+ }
60
+
61
+ export declare namespace getSignPayload {
62
+ type ErrorType =
63
+ | Hash.keccak256.ErrorType
64
+ | encode.ErrorType
65
+ | Errors.GlobalErrorType
66
+ }
67
+
68
+ /* v8 ignore next */
69
+ getSignPayload.parseError = (error: unknown) =>
70
+ error as getSignPayload.ErrorType
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../_types/Provider.d.ts",
4
+ "main": "../_cjs/Provider.js",
5
+ "module": "../_esm/Provider.js"
6
+ }
package/Provider.ts ADDED
@@ -0,0 +1,354 @@
1
+ import { EventEmitter } from 'eventemitter3'
2
+ import type * as Address from './Address.js'
3
+ import * as Errors from './Errors.js'
4
+ import * as RpcResponse from './RpcResponse.js'
5
+ import type * as RpcSchema from './RpcSchema.js'
6
+ import type * as RpcSchema_internal from './internal/rpcSchema.js'
7
+ import type { Compute } from './internal/types.js'
8
+
9
+ /** Options for a {@link ox#Provider.Provider}. */
10
+ export type Options = {
11
+ /**
12
+ * Whether to include event functions (`on`, `removeListener`) on the Provider.
13
+ *
14
+ * @default true
15
+ */
16
+ includeEvents?: boolean | undefined
17
+ /**
18
+ * RPC Schema to use for the Provider's `request` function.
19
+ * See {@link ox#RpcSchema.(from:function)} for more.
20
+ *
21
+ * @default `RpcSchema.Generic`
22
+ */
23
+ schema?: RpcSchema.Generic | undefined
24
+ }
25
+
26
+ /** Root type for an EIP-1193 Provider. */
27
+ export type Provider<
28
+ options extends Options | undefined = undefined,
29
+ ///
30
+ _schema extends RpcSchema.Generic = options extends {
31
+ schema: infer schema extends RpcSchema.Generic
32
+ }
33
+ ? schema
34
+ : RpcSchema.Default,
35
+ > = Compute<
36
+ {
37
+ request: RequestFn<_schema>
38
+ } & (options extends { includeEvents: true } | undefined
39
+ ? {
40
+ on: EventListenerFn
41
+ removeListener: EventListenerFn
42
+ }
43
+ : {})
44
+ >
45
+
46
+ /** Type for an EIP-1193 Provider's event emitter. */
47
+ export type Emitter = Compute<EventEmitter<EventMap>>
48
+
49
+ /** EIP-1193 Provider's `request` function. */
50
+ export type RequestFn<schema extends RpcSchema.Generic = RpcSchema.Generic> = <
51
+ methodName extends RpcSchema.MethodNameGeneric,
52
+ >(
53
+ parameters: RpcSchema_internal.ExtractRequestOpaque<schema, methodName>,
54
+ ) => Promise<RpcSchema.ExtractReturnType<schema, methodName>>
55
+
56
+ /** Type for an EIP-1193 Provider's event listener functions (`on`, `removeListener`, etc). */
57
+ export type EventListenerFn = <event extends keyof EventMap>(
58
+ event: event,
59
+ listener: EventMap[event],
60
+ ) => void
61
+
62
+ export type ConnectInfo = {
63
+ chainId: string
64
+ }
65
+
66
+ export type Message = {
67
+ type: string
68
+ data: unknown
69
+ }
70
+
71
+ export class ProviderRpcError extends Error {
72
+ override readonly name = 'ProviderRpcError'
73
+
74
+ code: number
75
+ details: string
76
+
77
+ constructor(code: number, message: string) {
78
+ super(message)
79
+ this.code = code
80
+ this.details = message
81
+ }
82
+ }
83
+
84
+ export type EventMap = {
85
+ accountsChanged: (accounts: Address.Address[]) => void
86
+ chainChanged: (chainId: string) => void
87
+ connect: (connectInfo: ConnectInfo) => void
88
+ disconnect: (error: ProviderRpcError) => void
89
+ message: (message: Message) => void
90
+ }
91
+
92
+ /**
93
+ * Creates an EIP-1193 flavored event emitter to be injected onto a Provider.
94
+ *
95
+ * @example
96
+ * ```ts twoslash
97
+ * import { Provider, RpcRequest, RpcResponse } from 'ox' // [!code focus]
98
+ *
99
+ * // 1. Instantiate a Provider Emitter. // [!code focus]
100
+ * const emitter = Provider.createEmitter() // [!code focus]
101
+ *
102
+ * const store = RpcRequest.createStore()
103
+ *
104
+ * const provider = Provider.from({
105
+ * // 2. Pass the Emitter to the Provider. // [!code focus]
106
+ * ...emitter, // [!code focus]
107
+ * async request(args) {
108
+ * return await fetch('https://1.rpc.thirdweb.com', {
109
+ * body: JSON.stringify(store.prepare(args)),
110
+ * method: 'POST',
111
+ * headers: {
112
+ * 'Content-Type': 'application/json',
113
+ * },
114
+ * })
115
+ * .then((res) => res.json())
116
+ * .then(RpcResponse.parse)
117
+ * },
118
+ * })
119
+ *
120
+ * // 3. Emit Provider Events. // [!code focus]
121
+ * emitter.emit('accountsChanged', ['0x...']) // [!code focus]
122
+ * ```
123
+ *
124
+ * @returns An event emitter.
125
+ */
126
+ export function createEmitter(): Emitter {
127
+ const emitter = new EventEmitter<EventMap>()
128
+
129
+ return {
130
+ get eventNames() {
131
+ return emitter.eventNames.bind(emitter)
132
+ },
133
+ get listenerCount() {
134
+ return emitter.listenerCount.bind(emitter)
135
+ },
136
+ get listeners() {
137
+ return emitter.listeners.bind(emitter)
138
+ },
139
+ addListener: emitter.addListener.bind(emitter),
140
+ emit: emitter.emit.bind(emitter),
141
+ off: emitter.off.bind(emitter),
142
+ on: emitter.on.bind(emitter),
143
+ once: emitter.once.bind(emitter),
144
+ removeAllListeners: emitter.removeAllListeners.bind(emitter),
145
+ removeListener: emitter.removeListener.bind(emitter),
146
+ }
147
+ }
148
+
149
+ export declare namespace createEmitter {
150
+ type ErrorType = Errors.GlobalErrorType
151
+ }
152
+
153
+ createEmitter.parseError = (error: unknown) =>
154
+ /* v8 ignore next */
155
+ error as createEmitter.ErrorType
156
+
157
+ /**
158
+ * Instantiates an [EIP-1193](https://eips.ethereum.org/EIPS/eip-1193) {@link ox#Provider.Provider}
159
+ * from an arbitrary [EIP-1193 Provider](https://eips.ethereum.org/EIPS/eip-1193) interface.
160
+ *
161
+ * @example
162
+ * ### Instantiating with RPC Transport
163
+ *
164
+ * Ox's {@link ox#RpcTransport} is EIP-1193 compliant, and can be used to instantiate an EIP-1193 Provider. This means you can use any HTTP RPC endpoint as an EIP-1193 Provider.
165
+ *
166
+ * ```ts twoslash
167
+ * import { Provider, RpcTransport } from 'ox'
168
+ *
169
+ * const transport = RpcTransport.fromHttp('https://1.rpc.thirdweb.com')
170
+ * const provider = Provider.from(transport)
171
+ * ```
172
+ *
173
+ * @example
174
+ * ### Instantiating with External Providers
175
+ *
176
+ * The example below demonstrates how we can instantiate a typed EIP-1193 Provider from an
177
+ * external EIP-1193 Provider like `window.ethereum`.
178
+ *
179
+ * ```ts twoslash
180
+ * import 'ox/window'
181
+ * import { Provider } from 'ox'
182
+ *
183
+ * const provider = Provider.from(window.ethereum)
184
+ *
185
+ * const blockNumber = await provider.request({ method: 'eth_blockNumber' })
186
+ * ```
187
+ *
188
+ * :::tip
189
+ *
190
+ * There are also libraries that distribute EIP-1193 Provider objects that you can use with `Provider.from`:
191
+ *
192
+ * - [`@walletconnect/ethereum-provider`](https://www.npmjs.com/package/\@walletconnect/ethereum-provider)
193
+ *
194
+ * - [`@coinbase/wallet-sdk`](https://www.npmjs.com/package/\@coinbase/wallet-sdk)
195
+ *
196
+ * - [`@metamask/detect-provider`](https://www.npmjs.com/package/\@metamask/detect-provider)
197
+ *
198
+ * - [`@safe-global/safe-apps-provider`](https://github.com/safe-global/safe-apps-sdk/tree/main/packages/safe-apps-provider)
199
+ *
200
+ * - [`mipd`](https://github.com/wevm/mipd): EIP-6963 Multi Injected Providers
201
+ *
202
+ * :::
203
+ *
204
+ * @example
205
+ * ### Instantiating a Custom Provider
206
+ *
207
+ * The example below demonstrates how we can instantiate a typed EIP-1193 Provider from a
208
+ * HTTP `fetch` JSON-RPC request. You can use this pattern to integrate with any asynchronous JSON-RPC
209
+ * transport, including WebSockets and IPC.
210
+ *
211
+ * ```ts twoslash
212
+ * import { Provider, RpcRequest, RpcResponse } from 'ox'
213
+ *
214
+ * const store = RpcRequest.createStore()
215
+ *
216
+ * const provider = Provider.from({
217
+ * async request(args) {
218
+ * return await fetch('https://1.rpc.thirdweb.com', {
219
+ * body: JSON.stringify(store.prepare(args)),
220
+ * method: 'POST',
221
+ * headers: {
222
+ * 'Content-Type': 'application/json',
223
+ * },
224
+ * })
225
+ * .then((res) => res.json())
226
+ * .then(RpcResponse.parse)
227
+ * },
228
+ * })
229
+ *
230
+ * const blockNumber = await provider.request({ method: 'eth_blockNumber' })
231
+ * ```
232
+ *
233
+ * @example
234
+ * ### Type-safe Custom Schemas
235
+ *
236
+ * It is possible to define your own type-safe schema by using the {@link ox#RpcSchema.(from:function)} type.
237
+ *
238
+ * ```ts twoslash
239
+ * // @noErrors
240
+ * import 'ox/window'
241
+ * import { Provider, RpcSchema } from 'ox'
242
+ *
243
+ * const schema = RpcSchema.from<
244
+ * | RpcSchema.Default
245
+ * | {
246
+ * Request: {
247
+ * method: 'abe_foo',
248
+ * params: [id: number],
249
+ * }
250
+ * ReturnType: string
251
+ * }
252
+ * | {
253
+ * Request: {
254
+ * method: 'abe_bar',
255
+ * params: [id: string],
256
+ * }
257
+ * ReturnType: string
258
+ * }
259
+ * >()
260
+ *
261
+ * const provider = Provider.from(window.ethereum, { schema })
262
+ *
263
+ * const blockNumber = await provider.request({ method: 'e' })
264
+ * // ^|
265
+ *
266
+ *
267
+ *
268
+ *
269
+ *
270
+ * ```
271
+ *
272
+ * @example
273
+ * ### Instantiating a Provider with Events
274
+ *
275
+ * The example below demonstrates how to instantiate a Provider with your own EIP-1193 flavored event emitter.
276
+ *
277
+ * This example is useful for Wallets that distribute an EIP-1193 Provider (e.g. webpage injection via `window.ethereum`).
278
+ *
279
+ * ```ts twoslash
280
+ * import { Provider, RpcRequest, RpcResponse } from 'ox'
281
+ *
282
+ * // 1. Instantiate a Provider Emitter.
283
+ * const emitter = Provider.createEmitter() // [!code ++]
284
+ *
285
+ * const store = RpcRequest.createStore()
286
+ *
287
+ * const provider = Provider.from({
288
+ * // 2. Pass the Emitter to the Provider.
289
+ * ...emitter, // [!code ++]
290
+ * async request(args) {
291
+ * return await fetch('https://1.rpc.thirdweb.com', {
292
+ * body: JSON.stringify(store.prepare(args)),
293
+ * method: 'POST',
294
+ * headers: {
295
+ * 'Content-Type': 'application/json',
296
+ * },
297
+ * })
298
+ * .then((res) => res.json())
299
+ * .then(RpcResponse.parse)
300
+ * },
301
+ * })
302
+ *
303
+ * // 3. Emit Provider Events.
304
+ * emitter.emit('accountsChanged', ['0x...']) // [!code ++]
305
+ * ```
306
+ *
307
+ * @param provider - The EIP-1193 provider to convert.
308
+ * @returns An typed EIP-1193 Provider.
309
+ */
310
+ export function from<
311
+ const provider extends Provider | unknown,
312
+ options extends Options | undefined = undefined,
313
+ >(
314
+ provider: provider | Provider<{ schema: RpcSchema.Generic }>,
315
+ options?: options | Options,
316
+ ): Provider<options>
317
+ // eslint-disable-next-line jsdoc/require-jsdoc
318
+ export function from(provider: any, options: Options = {}): Provider<Options> {
319
+ const { includeEvents = true } = options
320
+ if (!provider) throw new IsUndefinedError()
321
+ return {
322
+ ...(includeEvents
323
+ ? {
324
+ on: provider.on?.bind(provider),
325
+ removeListener: provider.removeListener?.bind(provider),
326
+ }
327
+ : {}),
328
+ async request(args) {
329
+ const result = await provider.request(args)
330
+ if (
331
+ typeof result === 'object' &&
332
+ 'jsonrpc' in (result as { jsonrpc?: unknown })
333
+ )
334
+ return RpcResponse.parse(result) as never
335
+ return result
336
+ },
337
+ }
338
+ }
339
+
340
+ export declare namespace from {
341
+ type ErrorType = IsUndefinedError | Errors.GlobalErrorType
342
+ }
343
+
344
+ /* v8 ignore next */
345
+ from.parseError = (error: unknown) => error as from.ErrorType
346
+
347
+ /** Thrown when the provider is undefined. */
348
+ export class IsUndefinedError extends Errors.BaseError {
349
+ override readonly name = 'Provider.IsUndefinedError'
350
+
351
+ constructor() {
352
+ super('`provider` is undefined.')
353
+ }
354
+ }
@@ -0,0 +1,6 @@
1
+ {
2
+ "type": "module",
3
+ "types": "../_types/PublicKey.d.ts",
4
+ "main": "../_cjs/PublicKey.js",
5
+ "module": "../_esm/PublicKey.js"
6
+ }