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/Signature.ts ADDED
@@ -0,0 +1,909 @@
1
+ import { secp256k1 } from '@noble/curves/secp256k1'
2
+ import * as Bytes from './Bytes.js'
3
+ import * as Errors from './Errors.js'
4
+ import * as Hex from './Hex.js'
5
+ import * as Json from './Json.js'
6
+ import * as Solidity from './Solidity.js'
7
+ import type { Compute, ExactPartial, OneOf } from './internal/types.js'
8
+
9
+ /** Root type for an ECDSA signature. */
10
+ export type Signature<
11
+ recovered extends boolean = true,
12
+ bigintType = bigint,
13
+ numberType = number,
14
+ > = Compute<
15
+ recovered extends true
16
+ ? {
17
+ r: bigintType
18
+ s: bigintType
19
+ yParity: numberType
20
+ }
21
+ : {
22
+ r: bigintType
23
+ s: bigintType
24
+ yParity?: numberType | undefined
25
+ }
26
+ >
27
+
28
+ /** RPC-formatted ECDSA signature. */
29
+ export type Rpc<recovered extends boolean = true> = Signature<
30
+ recovered,
31
+ Hex.Hex,
32
+ Hex.Hex
33
+ >
34
+
35
+ /** (Legacy) ECDSA signature. */
36
+ export type Legacy<bigintType = bigint, numberType = number> = {
37
+ r: bigintType
38
+ s: bigintType
39
+ v: numberType
40
+ }
41
+
42
+ /** RPC-formatted (Legacy) ECDSA signature. */
43
+ export type LegacyRpc = Legacy<Hex.Hex, Hex.Hex>
44
+
45
+ export type Tuple = readonly [yParity: Hex.Hex, r: Hex.Hex, s: Hex.Hex]
46
+
47
+ /**
48
+ * Asserts that a Signature is valid.
49
+ *
50
+ * @example
51
+ * ```ts twoslash
52
+ * import { Signature } from 'ox'
53
+ *
54
+ * Signature.assert({
55
+ * r: -49782753348462494199823712700004552394425719014458918871452329774910450607807n,
56
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
57
+ * yParity: 1,
58
+ * })
59
+ * // @error: InvalidSignatureRError:
60
+ * // @error: Value `-549...n` is an invalid r value.
61
+ * // @error: r must be a positive integer less than 2^256.
62
+ * ```
63
+ *
64
+ * @param signature - The signature object to assert.
65
+ */
66
+ export function assert(
67
+ signature: ExactPartial<Signature>,
68
+ options: assert.Options = {},
69
+ ): asserts signature is Signature {
70
+ const { recovered } = options
71
+ if (typeof signature.r === 'undefined')
72
+ throw new MissingPropertiesError({ signature })
73
+ if (typeof signature.s === 'undefined')
74
+ throw new MissingPropertiesError({ signature })
75
+ if (recovered && typeof signature.yParity === 'undefined')
76
+ throw new MissingPropertiesError({ signature })
77
+ if (signature.r < 0n || signature.r > Solidity.maxUint256)
78
+ throw new InvalidRError({ value: signature.r })
79
+ if (signature.s < 0n || signature.s > Solidity.maxUint256)
80
+ throw new InvalidSError({ value: signature.s })
81
+ if (
82
+ typeof signature.yParity === 'number' &&
83
+ signature.yParity !== 0 &&
84
+ signature.yParity !== 1
85
+ )
86
+ throw new InvalidYParityError({ value: signature.yParity })
87
+ }
88
+
89
+ export declare namespace assert {
90
+ type Options = {
91
+ /** Whether or not the signature should be recovered (contain `yParity`). */
92
+ recovered?: boolean
93
+ }
94
+
95
+ type ErrorType =
96
+ | MissingPropertiesError
97
+ | InvalidRError
98
+ | InvalidSError
99
+ | InvalidYParityError
100
+ | Errors.GlobalErrorType
101
+ }
102
+
103
+ /**
104
+ * Deserializes a {@link ox#Bytes.Bytes} signature into a structured {@link ox#Signature.Signature}.
105
+ *
106
+ * @example
107
+ * ```ts twoslash
108
+ * // @noErrors
109
+ * import { Signature } from 'ox'
110
+ *
111
+ * Signature.fromBytes(new Uint8Array([128, 3, 131, ...]))
112
+ * // @log: { r: 5231...n, s: 3522...n, yParity: 0 }
113
+ * ```
114
+ *
115
+ * @param signature - The serialized signature.
116
+ * @returns The deserialized {@link ox#Signature.Signature}.
117
+ */
118
+ export function fromBytes(signature: Bytes.Bytes): Signature {
119
+ return fromHex(Hex.fromBytes(signature))
120
+ }
121
+
122
+ export declare namespace fromBytes {
123
+ type ErrorType = Errors.GlobalErrorType
124
+ }
125
+
126
+ fromBytes.parseError = (error: unknown) =>
127
+ /* v8 ignore next */
128
+ error as fromBytes.ErrorType
129
+
130
+ /**
131
+ * Deserializes a {@link ox#Hex.Hex} signature into a structured {@link ox#Signature.Signature}.
132
+ *
133
+ * @example
134
+ * ```ts twoslash
135
+ * import { Signature } from 'ox'
136
+ *
137
+ * Signature.fromHex('0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c')
138
+ * // @log: { r: 5231...n, s: 3522...n, yParity: 0 }
139
+ * ```
140
+ *
141
+ * @param serialized - The serialized signature.
142
+ * @returns The deserialized {@link ox#Signature.Signature}.
143
+ */
144
+ export function fromHex(signature: Hex.Hex): Signature {
145
+ if (signature.length !== 130 && signature.length !== 132)
146
+ throw new InvalidSerializedSizeError({ signature })
147
+
148
+ const r = BigInt(Hex.slice(signature, 0, 32))
149
+ const s = BigInt(Hex.slice(signature, 32, 64))
150
+
151
+ const yParity = (() => {
152
+ const yParity = Number(`0x${signature.slice(130)}`)
153
+ if (Number.isNaN(yParity)) return undefined
154
+ try {
155
+ return vToYParity(yParity)
156
+ } catch {
157
+ throw new InvalidYParityError({ value: yParity })
158
+ }
159
+ })()
160
+
161
+ if (typeof yParity === 'undefined')
162
+ return {
163
+ r,
164
+ s,
165
+ } as never
166
+ return {
167
+ r,
168
+ s,
169
+ yParity,
170
+ } as never
171
+ }
172
+
173
+ export declare namespace fromHex {
174
+ type ErrorType =
175
+ | Hex.from.ErrorType
176
+ | InvalidSerializedSizeError
177
+ | Errors.GlobalErrorType
178
+ }
179
+
180
+ fromHex.parseError = (error: unknown) =>
181
+ /* v8 ignore next */
182
+ error as fromHex.ErrorType
183
+
184
+ /**
185
+ * Extracts a {@link ox#Signature.Signature} from an arbitrary object that may include signature properties.
186
+ *
187
+ * @example
188
+ * ```ts twoslash
189
+ * // @noErrors
190
+ * import { Signature } from 'ox'
191
+ *
192
+ * Signature.extract({
193
+ * baz: 'barry',
194
+ * foo: 'bar',
195
+ * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
196
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
197
+ * yParity: 1,
198
+ * zebra: 'stripes',
199
+ * })
200
+ * // @log: {
201
+ * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
202
+ * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
203
+ * // @log: yParity: 1
204
+ * // @log: }
205
+ * ```
206
+ *
207
+ * @param value - The arbitrary object to extract the signature from.
208
+ * @returns The extracted {@link ox#Signature.Signature}.
209
+ */
210
+ export function extract(value: extract.Value): Signature | undefined {
211
+ if (typeof value.r === 'undefined') return undefined
212
+ if (typeof value.s === 'undefined') return undefined
213
+ return from(value as any)
214
+ }
215
+
216
+ export declare namespace extract {
217
+ type Value = {
218
+ r?: bigint | Hex.Hex | undefined
219
+ s?: bigint | Hex.Hex | undefined
220
+ yParity?: number | Hex.Hex | undefined
221
+ v?: number | Hex.Hex | undefined
222
+ }
223
+ type ErrorType = Errors.GlobalErrorType
224
+ }
225
+
226
+ extract.parseError = (error: unknown) =>
227
+ /* v8 ignore next */
228
+ error as extract.ErrorType
229
+
230
+ /**
231
+ * Instantiates a typed {@link ox#Signature.Signature} object from a {@link ox#Signature.Signature}, {@link ox#Signature.Legacy}, {@link ox#Bytes.Bytes}, or {@link ox#Hex.Hex}.
232
+ *
233
+ * @example
234
+ * ```ts twoslash
235
+ * import { Signature } from 'ox'
236
+ *
237
+ * Signature.from({
238
+ * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
239
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
240
+ * yParity: 1,
241
+ * })
242
+ * // @log: {
243
+ * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
244
+ * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
245
+ * // @log: yParity: 1
246
+ * // @log: }
247
+ * ```
248
+ *
249
+ * @example
250
+ * ### From Serialized
251
+ *
252
+ * ```ts twoslash
253
+ * import { Signature } from 'ox'
254
+ *
255
+ * Signature.from('0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db801')
256
+ * // @log: {
257
+ * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
258
+ * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
259
+ * // @log: yParity: 1,
260
+ * // @log: }
261
+ * ```
262
+ *
263
+ * @example
264
+ * ### From Legacy
265
+ *
266
+ * ```ts twoslash
267
+ * import { Signature } from 'ox'
268
+ *
269
+ * Signature.from({
270
+ * r: 47323457007453657207889730243826965761922296599680473886588287015755652701072n,
271
+ * s: 57228803202727131502949358313456071280488184270258293674242124340113824882788n,
272
+ * v: 27,
273
+ * })
274
+ * // @log: {
275
+ * // @log: r: 47323457007453657207889730243826965761922296599680473886588287015755652701072n,
276
+ * // @log: s: 57228803202727131502949358313456071280488184270258293674242124340113824882788n,
277
+ * // @log: yParity: 0
278
+ * // @log: }
279
+ * ```
280
+ *
281
+ * @param signature - The signature value to instantiate.
282
+ * @returns The instantiated {@link ox#Signature.Signature}.
283
+ */
284
+ export function from<
285
+ const signature extends
286
+ | OneOf<Signature<boolean> | Rpc<boolean> | Legacy | LegacyRpc>
287
+ | Hex.Hex
288
+ | Bytes.Bytes,
289
+ >(
290
+ signature:
291
+ | signature
292
+ | OneOf<Signature<boolean> | Rpc<boolean> | Legacy | LegacyRpc>
293
+ | Hex.Hex
294
+ | Bytes.Bytes,
295
+ ): from.ReturnType<signature> {
296
+ const signature_ = (() => {
297
+ if (typeof signature === 'string') return fromHex(signature)
298
+ if (signature instanceof Uint8Array) return fromBytes(signature)
299
+ if (typeof signature.r === 'string') return fromRpc(signature)
300
+ if (signature.v) return fromLegacy(signature)
301
+ return {
302
+ r: signature.r,
303
+ s: signature.s,
304
+ ...(typeof signature.yParity !== 'undefined'
305
+ ? { yParity: signature.yParity }
306
+ : {}),
307
+ }
308
+ })()
309
+ assert(signature_)
310
+ return signature_ as never
311
+ }
312
+
313
+ export declare namespace from {
314
+ type ReturnType<
315
+ signature extends
316
+ | OneOf<Signature<boolean> | Rpc<boolean> | Legacy | LegacyRpc>
317
+ | Hex.Hex
318
+ | Bytes.Bytes,
319
+ > = signature extends Signature<boolean> & { v?: undefined }
320
+ ? signature
321
+ : Signature
322
+
323
+ type ErrorType =
324
+ | assert.ErrorType
325
+ | fromBytes.ErrorType
326
+ | fromHex.ErrorType
327
+ | vToYParity.ErrorType
328
+ | Errors.GlobalErrorType
329
+ }
330
+
331
+ from.parseError = (error: unknown) =>
332
+ /* v8 ignore next */
333
+ error as from.ErrorType
334
+
335
+ /**
336
+ * Converts a DER-encoded signature to a {@link ox#Signature.Signature}.
337
+ *
338
+ * @example
339
+ * ```ts twoslash
340
+ * // @noErrors
341
+ * import { Signature } from 'ox'
342
+ *
343
+ * const signature = Signature.fromDerBytes(new Uint8Array([132, 51, 23, ...]))
344
+ * // @log: {
345
+ * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
346
+ * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
347
+ * // @log: }
348
+ * ```
349
+ *
350
+ * @param signature - The DER-encoded signature to convert.
351
+ * @returns The {@link ox#Signature.Signature}.
352
+ */
353
+ export function fromDerBytes(signature: Bytes.Bytes): Signature<false> {
354
+ return fromDerHex(Hex.fromBytes(signature))
355
+ }
356
+
357
+ export declare namespace fromDerBytes {
358
+ type ErrorType = Errors.GlobalErrorType
359
+ }
360
+
361
+ fromDerBytes.parseError = (error: unknown) =>
362
+ /* v8 ignore next */
363
+ error as fromDerBytes.ErrorType
364
+
365
+ /**
366
+ * Converts a DER-encoded signature to a {@link ox#Signature.Signature}.
367
+ *
368
+ * @example
369
+ * ```ts twoslash
370
+ * import { Signature } from 'ox'
371
+ *
372
+ * const signature = Signature.fromDerHex('0x304402206e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf02204a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8')
373
+ * // @log: {
374
+ * // @log: r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
375
+ * // @log: s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
376
+ * // @log: }
377
+ * ```
378
+ *
379
+ * @param signature - The DER-encoded signature to convert.
380
+ * @returns The {@link ox#Signature.Signature}.
381
+ */
382
+ export function fromDerHex(signature: Hex.Hex): Signature<false> {
383
+ const { r, s } = secp256k1.Signature.fromDER(Hex.from(signature).slice(2))
384
+ return { r, s }
385
+ }
386
+
387
+ export declare namespace fromDerHex {
388
+ type ErrorType = Errors.GlobalErrorType
389
+ }
390
+
391
+ fromDerHex.parseError = (error: unknown) =>
392
+ /* v8 ignore next */
393
+ error as fromDerHex.ErrorType
394
+
395
+ /**
396
+ * Converts a {@link ox#Signature.Legacy} into a {@link ox#Signature.Signature}.
397
+ *
398
+ * @example
399
+ * ```ts twoslash
400
+ * import { Signature } from 'ox'
401
+ *
402
+ * const legacy = Signature.fromLegacy({ r: 1n, s: 2n, v: 28 })
403
+ * // @log: { r: 1n, s: 2n, yParity: 1 }
404
+ * ```
405
+ *
406
+ * @param signature - The {@link ox#Signature.Legacy} to convert.
407
+ * @returns The converted {@link ox#Signature.Signature}.
408
+ */
409
+ export function fromLegacy(signature: Legacy): Signature {
410
+ return {
411
+ r: signature.r,
412
+ s: signature.s,
413
+ yParity: vToYParity(signature.v),
414
+ }
415
+ }
416
+
417
+ export declare namespace fromLegacy {
418
+ type ErrorType = vToYParity.ErrorType | Errors.GlobalErrorType
419
+ }
420
+
421
+ fromLegacy.parseError = (error: unknown) =>
422
+ /* v8 ignore next */
423
+ error as fromLegacy.ErrorType
424
+
425
+ /**
426
+ * Converts a {@link ox#Signature.Rpc} into a {@link ox#Signature.Signature}.
427
+ *
428
+ * @example
429
+ * ```ts twoslash
430
+ * import { Signature } from 'ox'
431
+ *
432
+ * const signature = Signature.fromRpc({
433
+ * r: '0x635dc2033e60185bb36709c29c75d64ea51dfbd91c32ef4be198e4ceb169fb4d',
434
+ * s: '0x50c2667ac4c771072746acfdcf1f1483336dcca8bd2df47cd83175dbe60f0540',
435
+ * yParity: '0x0',
436
+ * })
437
+ * ```
438
+ *
439
+ * @param signature - The {@link ox#Signature.Rpc} to convert.
440
+ * @returns The converted {@link ox#Signature.Signature}.
441
+ */
442
+ export function fromRpc(signature: {
443
+ r: Hex.Hex
444
+ s: Hex.Hex
445
+ yParity?: Hex.Hex | undefined
446
+ v?: Hex.Hex | undefined
447
+ }): Signature {
448
+ const yParity = (() => {
449
+ const v = signature.v ? Number(signature.v) : undefined
450
+ let yParity = signature.yParity ? Number(signature.yParity) : undefined
451
+ if (typeof v === 'number' && typeof yParity !== 'number')
452
+ yParity = vToYParity(v)
453
+ if (typeof yParity !== 'number')
454
+ throw new InvalidYParityError({ value: signature.yParity })
455
+ return yParity
456
+ })()
457
+
458
+ return {
459
+ r: BigInt(signature.r),
460
+ s: BigInt(signature.s),
461
+ yParity,
462
+ }
463
+ }
464
+
465
+ export declare namespace fromRpc {
466
+ type ErrorType = Errors.GlobalErrorType
467
+ }
468
+
469
+ fromRpc.parseError = (error: unknown) =>
470
+ /* v8 ignore next */
471
+ error as fromRpc.ErrorType
472
+
473
+ /**
474
+ * Converts a {@link ox#Signature.Tuple} to a {@link ox#Signature.Signature}.
475
+ *
476
+ * @example
477
+ * ```ts twoslash
478
+ * import { Signature } from 'ox'
479
+ *
480
+ * const signature = Signature.fromTuple(['0x01', '0x7b', '0x1c8'])
481
+ * // @log: {
482
+ * // @log: r: 123n,
483
+ * // @log: s: 456n,
484
+ * // @log: yParity: 1,
485
+ * // @log: }
486
+ * ```
487
+ *
488
+ * @param tuple - The {@link ox#Signature.Tuple} to convert.
489
+ * @returns The {@link ox#Signature.Signature}.
490
+ */
491
+ export function fromTuple(tuple: Tuple): Signature {
492
+ const [yParity, r, s] = tuple
493
+ return from({
494
+ r: r === '0x' ? 0n : BigInt(r),
495
+ s: s === '0x' ? 0n : BigInt(s),
496
+ yParity: yParity === '0x' ? 0 : Number(yParity),
497
+ })
498
+ }
499
+
500
+ export declare namespace fromTuple {
501
+ type ErrorType = from.ErrorType | Errors.GlobalErrorType
502
+ }
503
+
504
+ fromTuple.parseError = (error: unknown) =>
505
+ /* v8 ignore next */
506
+ error as fromTuple.ErrorType
507
+
508
+ /**
509
+ * Serializes a {@link ox#Signature.Signature} to {@link ox#Bytes.Bytes}.
510
+ *
511
+ * @example
512
+ * ```ts twoslash
513
+ * import { Signature } from 'ox'
514
+ *
515
+ * const signature = Signature.toBytes({
516
+ * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
517
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
518
+ * yParity: 1
519
+ * })
520
+ * // @log: Uint8Array [102, 16, 10, ...]
521
+ * ```
522
+ *
523
+ * @param signature - The signature to serialize.
524
+ * @returns The serialized signature.
525
+ */
526
+ export function toBytes(signature: Signature<boolean>): Bytes.Bytes {
527
+ return Bytes.fromHex(toHex(signature))
528
+ }
529
+
530
+ export declare namespace toBytes {
531
+ type ErrorType =
532
+ | toHex.ErrorType
533
+ | Bytes.fromHex.ErrorType
534
+ | Errors.GlobalErrorType
535
+ }
536
+
537
+ toBytes.parseError = (error: unknown) =>
538
+ /* v8 ignore next */
539
+ error as toBytes.ErrorType
540
+
541
+ /**
542
+ * Serializes a {@link ox#Signature.Signature} to {@link ox#Hex.Hex}.
543
+ *
544
+ * @example
545
+ * ```ts twoslash
546
+ * import { Signature } from 'ox'
547
+ *
548
+ * const signature = Signature.toHex({
549
+ * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
550
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
551
+ * yParity: 1
552
+ * })
553
+ * // @log: '0x6e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf4a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db81c'
554
+ * ```
555
+ *
556
+ * @param signature - The signature to serialize.
557
+ * @returns The serialized signature.
558
+ */
559
+ export function toHex(signature: Signature<boolean>): Hex.Hex {
560
+ assert(signature)
561
+
562
+ const r = signature.r
563
+ const s = signature.s
564
+
565
+ const signature_ = Hex.concat(
566
+ Hex.fromNumber(r, { size: 32 }),
567
+ Hex.fromNumber(s, { size: 32 }),
568
+ // If the signature is recovered, add the recovery byte to the signature.
569
+ typeof signature.yParity === 'number'
570
+ ? Hex.fromNumber(signature.yParity, { size: 1 })
571
+ : '0x',
572
+ )
573
+
574
+ return signature_
575
+ }
576
+
577
+ export declare namespace toHex {
578
+ type ErrorType =
579
+ | Hex.concat.ErrorType
580
+ | Hex.fromNumber.ErrorType
581
+ | Errors.GlobalErrorType
582
+ }
583
+
584
+ toHex.parseError = (error: unknown) =>
585
+ /* v8 ignore next */
586
+ error as toHex.ErrorType
587
+
588
+ /**
589
+ * Converts a {@link ox#Signature.Signature} to DER-encoded format.
590
+ *
591
+ * @example
592
+ * ```ts twoslash
593
+ * import { Signature } from 'ox'
594
+ *
595
+ * const signature = Signature.from({
596
+ * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
597
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
598
+ * })
599
+ *
600
+ * const signature_der = Signature.toDerBytes(signature)
601
+ * // @log: Uint8Array [132, 51, 23, ...]
602
+ * ```
603
+ *
604
+ * @param signature - The signature to convert.
605
+ * @returns The DER-encoded signature.
606
+ */
607
+ export function toDerBytes(signature: Signature<boolean>): Bytes.Bytes {
608
+ const sig = new secp256k1.Signature(signature.r, signature.s)
609
+ return sig.toDERRawBytes()
610
+ }
611
+
612
+ export declare namespace toDerBytes {
613
+ type ErrorType = Errors.GlobalErrorType
614
+ }
615
+
616
+ toDerBytes.parseError = (error: unknown) =>
617
+ /* v8 ignore next */
618
+ error as toDerBytes.ErrorType
619
+
620
+ /**
621
+ * Converts a {@link ox#Signature.Signature} to DER-encoded format.
622
+ *
623
+ * @example
624
+ * ```ts twoslash
625
+ * import { Signature } from 'ox'
626
+ *
627
+ * const signature = Signature.from({
628
+ * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
629
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
630
+ * })
631
+ *
632
+ * const signature_der = Signature.toDerHex(signature)
633
+ * // @log: '0x304402206e100a352ec6ad1b70802290e18aeed190704973570f3b8ed42cb9808e2ea6bf02204a90a229a244495b41890987806fcbd2d5d23fc0dbe5f5256c2613c039d76db8'
634
+ * ```
635
+ *
636
+ * @param signature - The signature to convert.
637
+ * @returns The DER-encoded signature.
638
+ */
639
+ export function toDerHex(signature: Signature<boolean>): Hex.Hex {
640
+ const sig = new secp256k1.Signature(signature.r, signature.s)
641
+ return `0x${sig.toDERHex()}`
642
+ }
643
+
644
+ export declare namespace toDerHex {
645
+ type ErrorType = Errors.GlobalErrorType
646
+ }
647
+
648
+ toDerHex.parseError = (error: unknown) =>
649
+ /* v8 ignore next */
650
+ error as toDerHex.ErrorType
651
+
652
+ /**
653
+ * Converts a {@link ox#Signature.Signature} into a {@link ox#Signature.Legacy}.
654
+ *
655
+ * @example
656
+ * ```ts twoslash
657
+ * import { Signature } from 'ox'
658
+ *
659
+ * const legacy = Signature.toLegacy({ r: 1n, s: 2n, yParity: 1 })
660
+ * // @log: { r: 1n, s: 2n, v: 28 }
661
+ * ```
662
+ *
663
+ * @param signature - The {@link ox#Signature.Signature} to convert.
664
+ * @returns The converted {@link ox#Signature.Legacy}.
665
+ */
666
+ export function toLegacy(signature: Signature): Legacy {
667
+ return {
668
+ r: signature.r,
669
+ s: signature.s,
670
+ v: yParityToV(signature.yParity),
671
+ }
672
+ }
673
+
674
+ export declare namespace toLegacy {
675
+ type ErrorType = yParityToV.ErrorType | Errors.GlobalErrorType
676
+ }
677
+
678
+ toLegacy.parseError = (error: unknown) =>
679
+ /* v8 ignore next */
680
+ error as toLegacy.ErrorType
681
+
682
+ /**
683
+ * Converts a {@link ox#Signature.Signature} into a {@link ox#Signature.Rpc}.
684
+ *
685
+ * @example
686
+ * ```ts twoslash
687
+ * import { Signature } from 'ox'
688
+ *
689
+ * const signature = Signature.toRpc({
690
+ * r: 49782753348462494199823712700004552394425719014458918871452329774910450607807n,
691
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
692
+ * yParity: 1
693
+ * })
694
+ * ```
695
+ *
696
+ * @param signature - The {@link ox#Signature.Signature} to convert.
697
+ * @returns The converted {@link ox#Signature.Rpc}.
698
+ */
699
+ export function toRpc(signature: Signature): Rpc {
700
+ const { r, s, yParity } = signature
701
+ return {
702
+ r: Hex.fromNumber(r, { size: 32 }),
703
+ s: Hex.fromNumber(s, { size: 32 }),
704
+ yParity: yParity === 0 ? '0x0' : '0x1',
705
+ }
706
+ }
707
+
708
+ export declare namespace toRpc {
709
+ type ErrorType = Errors.GlobalErrorType
710
+ }
711
+
712
+ toRpc.parseError = (error: unknown) =>
713
+ /* v8 ignore next */
714
+ error as toRpc.ErrorType
715
+
716
+ /**
717
+ * Converts a {@link ox#Signature.Signature} to a serialized {@link ox#Signature.Tuple} to be used for signatures in Transaction Envelopes, EIP-7702 Authorization Lists, etc.
718
+ *
719
+ * @example
720
+ * ```ts twoslash
721
+ * import { Signature } from 'ox'
722
+ *
723
+ * const signatureTuple = Signature.toTuple({
724
+ * r: 123n,
725
+ * s: 456n,
726
+ * yParity: 1,
727
+ * })
728
+ * // @log: [yParity: '0x01', r: '0x7b', s: '0x1c8']
729
+ * ```
730
+ *
731
+ * @param signature - The {@link ox#Signature.Signature} to convert.
732
+ * @returns The {@link ox#Signature.Tuple}.
733
+ */
734
+ export function toTuple(signature: Signature): Tuple {
735
+ const { r, s, yParity } = signature
736
+
737
+ return [
738
+ yParity ? '0x01' : '0x',
739
+ r === 0n ? '0x' : Hex.trimLeft(Hex.fromNumber(r!)),
740
+ s === 0n ? '0x' : Hex.trimLeft(Hex.fromNumber(s!)),
741
+ ] as const
742
+ }
743
+
744
+ export declare namespace toTuple {
745
+ type ErrorType =
746
+ | Hex.trimLeft.ErrorType
747
+ | Hex.fromNumber.ErrorType
748
+ | Errors.GlobalErrorType
749
+ }
750
+
751
+ /**
752
+ * Validates a Signature. Returns `true` if the signature is valid, `false` otherwise.
753
+ *
754
+ * @example
755
+ * ```ts twoslash
756
+ * import { Signature } from 'ox'
757
+ *
758
+ * const valid = Signature.validate({
759
+ * r: -49782753348462494199823712700004552394425719014458918871452329774910450607807n,
760
+ * s: 33726695977844476214676913201140481102225469284307016937915595756355928419768n,
761
+ * yParity: 1,
762
+ * })
763
+ * // @log: false
764
+ * ```
765
+ *
766
+ * @param signature - The signature object to assert.
767
+ */
768
+ export function validate(
769
+ signature: ExactPartial<Signature>,
770
+ options: validate.Options = {},
771
+ ): boolean {
772
+ try {
773
+ assert(signature, options)
774
+ return true
775
+ } catch {
776
+ return false
777
+ }
778
+ }
779
+
780
+ export declare namespace validate {
781
+ type Options = {
782
+ /** Whether or not the signature should be recovered (contain `yParity`). */
783
+ recovered?: boolean
784
+ }
785
+
786
+ type ErrorType = Errors.GlobalErrorType
787
+ }
788
+
789
+ /**
790
+ * Converts a ECDSA `v` value to a `yParity` value.
791
+ *
792
+ * @example
793
+ * ```ts twoslash
794
+ * import { Signature } from 'ox'
795
+ *
796
+ * const yParity = Signature.vToYParity(28)
797
+ * // @log: 1
798
+ * ```
799
+ *
800
+ * @param v - The ECDSA `v` value to convert.
801
+ * @returns The `yParity` value.
802
+ */
803
+ export function vToYParity(v: number): Signature['yParity'] {
804
+ if (v === 0 || v === 27) return 0
805
+ if (v === 1 || v === 28) return 1
806
+ if (v >= 35) return v % 2 === 0 ? 1 : 0
807
+ throw new InvalidVError({ value: v })
808
+ }
809
+
810
+ export declare namespace vToYParity {
811
+ type ErrorType = InvalidVError | Errors.GlobalErrorType
812
+ }
813
+
814
+ /* v8 ignore next */
815
+ vToYParity.parseError = (error: unknown) => error as vToYParity.ErrorType
816
+
817
+ /**
818
+ * Converts a ECDSA `v` value to a `yParity` value.
819
+ *
820
+ * @example
821
+ * ```ts twoslash
822
+ * import { Signature } from 'ox'
823
+ *
824
+ * const v = Signature.yParityToV(1)
825
+ * // @log: 28
826
+ * ```
827
+ *
828
+ * @param yParity - The ECDSA `yParity` value to convert.
829
+ * @returns The `v` value.
830
+ */
831
+ export function yParityToV(yParity: number): number {
832
+ if (yParity === 0) return 27
833
+ if (yParity === 1) return 28
834
+ throw new InvalidYParityError({ value: yParity })
835
+ }
836
+
837
+ export declare namespace yParityToV {
838
+ type ErrorType = InvalidVError | Errors.GlobalErrorType
839
+ }
840
+
841
+ /* v8 ignore next */
842
+ yParityToV.parseError = (error: unknown) => error as yParityToV.ErrorType
843
+
844
+ /** Thrown when the serialized signature is of an invalid size. */
845
+ export class InvalidSerializedSizeError extends Errors.BaseError {
846
+ override readonly name = 'Signature.InvalidSerializedSizeError'
847
+
848
+ constructor({ signature }: { signature: Hex.Hex | Bytes.Bytes }) {
849
+ super(`Value \`${signature}\` is an invalid signature size.`, {
850
+ metaMessages: [
851
+ 'Expected: 64 bytes or 65 bytes.',
852
+ `Received ${Hex.size(Hex.from(signature))} bytes.`,
853
+ ],
854
+ })
855
+ }
856
+ }
857
+
858
+ /** Thrown when the signature is missing either an `r`, `s`, or `yParity` property. */
859
+ export class MissingPropertiesError extends Errors.BaseError {
860
+ override readonly name = 'Signature.MissingPropertiesError'
861
+
862
+ constructor({ signature }: { signature: unknown }) {
863
+ super(
864
+ `Signature \`${Json.stringify(signature)}\` is missing either an \`r\`, \`s\`, or \`yParity\` property.`,
865
+ )
866
+ }
867
+ }
868
+
869
+ /** Thrown when the signature has an invalid `r` value. */
870
+ export class InvalidRError extends Errors.BaseError {
871
+ override readonly name = 'Signature.InvalidRError'
872
+
873
+ constructor({ value }: { value: unknown }) {
874
+ super(
875
+ `Value \`${value}\` is an invalid r value. r must be a positive integer less than 2^256.`,
876
+ )
877
+ }
878
+ }
879
+
880
+ /** Thrown when the signature has an invalid `s` value. */
881
+ export class InvalidSError extends Errors.BaseError {
882
+ override readonly name = 'Signature.InvalidSError'
883
+
884
+ constructor({ value }: { value: unknown }) {
885
+ super(
886
+ `Value \`${value}\` is an invalid s value. s must be a positive integer less than 2^256.`,
887
+ )
888
+ }
889
+ }
890
+
891
+ /** Thrown when the signature has an invalid `yParity` value. */
892
+ export class InvalidYParityError extends Errors.BaseError {
893
+ override readonly name = 'Signature.InvalidYParityError'
894
+
895
+ constructor({ value }: { value: unknown }) {
896
+ super(
897
+ `Value \`${value}\` is an invalid y-parity value. Y-parity must be 0 or 1.`,
898
+ )
899
+ }
900
+ }
901
+
902
+ /** Thrown when the signature has an invalid `v` value. */
903
+ export class InvalidVError extends Errors.BaseError {
904
+ override readonly name = 'Signature.InvalidVError'
905
+
906
+ constructor({ value }: { value: number }) {
907
+ super(`Value \`${value}\` is an invalid v value. v must be 27, 28 or >=35.`)
908
+ }
909
+ }