crypto-aio 0.0.3 → 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 (691) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +144 -14
  3. package/dist/adapters/avalanche/address.d.ts +15 -0
  4. package/dist/adapters/avalanche/address.js +74 -0
  5. package/dist/adapters/avalanche/address.js.map +1 -0
  6. package/dist/adapters/avalanche/api.d.ts +100 -0
  7. package/dist/adapters/avalanche/api.js +381 -0
  8. package/dist/adapters/avalanche/api.js.map +1 -0
  9. package/dist/adapters/avalanche/builder.d.ts +13 -0
  10. package/dist/adapters/avalanche/builder.js +336 -0
  11. package/dist/adapters/avalanche/builder.js.map +1 -0
  12. package/dist/adapters/avalanche/cb58.d.ts +7 -0
  13. package/dist/adapters/avalanche/cb58.js +49 -0
  14. package/dist/adapters/avalanche/cb58.js.map +1 -0
  15. package/dist/adapters/avalanche/chains.d.ts +21 -0
  16. package/dist/adapters/avalanche/chains.js +79 -0
  17. package/dist/adapters/avalanche/chains.js.map +1 -0
  18. package/dist/adapters/avalanche/codec.d.ts +94 -0
  19. package/dist/adapters/avalanche/codec.js +371 -0
  20. package/dist/adapters/avalanche/codec.js.map +1 -0
  21. package/dist/adapters/avalanche/context.d.ts +59 -0
  22. package/dist/adapters/avalanche/context.js +114 -0
  23. package/dist/adapters/avalanche/context.js.map +1 -0
  24. package/dist/adapters/avalanche/decode.d.ts +16 -0
  25. package/dist/adapters/avalanche/decode.js +101 -0
  26. package/dist/adapters/avalanche/decode.js.map +1 -0
  27. package/dist/adapters/avalanche/driver.d.ts +22 -0
  28. package/dist/adapters/avalanche/driver.js +81 -0
  29. package/dist/adapters/avalanche/driver.js.map +1 -0
  30. package/dist/adapters/avalanche/errors.d.ts +18 -0
  31. package/dist/adapters/avalanche/errors.js +61 -0
  32. package/dist/adapters/avalanche/errors.js.map +1 -0
  33. package/dist/adapters/avalanche/fees.d.ts +23 -0
  34. package/dist/adapters/avalanche/fees.js +105 -0
  35. package/dist/adapters/avalanche/fees.js.map +1 -0
  36. package/dist/adapters/avalanche/index.d.ts +19 -0
  37. package/dist/adapters/avalanche/index.js +8 -0
  38. package/dist/adapters/avalanche/index.js.map +1 -0
  39. package/dist/adapters/avalanche/network.d.ts +37 -0
  40. package/dist/adapters/avalanche/network.js +135 -0
  41. package/dist/adapters/avalanche/network.js.map +1 -0
  42. package/dist/adapters/avalanche/plugin.d.ts +21 -0
  43. package/dist/adapters/avalanche/plugin.js +46 -0
  44. package/dist/adapters/avalanche/plugin.js.map +1 -0
  45. package/dist/adapters/avalanche/presets.d.ts +6 -0
  46. package/dist/adapters/avalanche/presets.js +86 -0
  47. package/dist/adapters/avalanche/presets.js.map +1 -0
  48. package/dist/adapters/avalanche/proofs.d.ts +41 -0
  49. package/dist/adapters/avalanche/proofs.js +270 -0
  50. package/dist/adapters/avalanche/proofs.js.map +1 -0
  51. package/dist/adapters/avalanche/reader.d.ts +40 -0
  52. package/dist/adapters/avalanche/reader.js +231 -0
  53. package/dist/adapters/avalanche/reader.js.map +1 -0
  54. package/dist/adapters/avalanche/sdk.d.ts +182 -0
  55. package/dist/adapters/avalanche/sdk.js +21 -0
  56. package/dist/adapters/avalanche/sdk.js.map +1 -0
  57. package/dist/adapters/avalanche/types.d.ts +86 -0
  58. package/dist/{type/common.js → adapters/avalanche/types.js} +1 -1
  59. package/dist/adapters/avalanche/types.js.map +1 -0
  60. package/dist/adapters/evm/builder.d.ts +11 -0
  61. package/dist/adapters/evm/builder.js +326 -0
  62. package/dist/adapters/evm/builder.js.map +1 -0
  63. package/dist/adapters/evm/chains.d.ts +6 -0
  64. package/dist/adapters/evm/chains.js +203 -0
  65. package/dist/adapters/evm/chains.js.map +1 -0
  66. package/dist/adapters/evm/client.d.ts +84 -0
  67. package/dist/adapters/evm/client.js +335 -0
  68. package/dist/adapters/evm/client.js.map +1 -0
  69. package/dist/adapters/evm/decode.d.ts +35 -0
  70. package/dist/adapters/evm/decode.js +170 -0
  71. package/dist/adapters/evm/decode.js.map +1 -0
  72. package/dist/adapters/evm/driver.d.ts +8 -0
  73. package/dist/adapters/evm/driver.js +61 -0
  74. package/dist/adapters/evm/driver.js.map +1 -0
  75. package/dist/adapters/evm/errors.d.ts +20 -0
  76. package/dist/adapters/evm/errors.js +110 -0
  77. package/dist/adapters/evm/errors.js.map +1 -0
  78. package/dist/adapters/evm/ethers-client.d.ts +43 -0
  79. package/dist/adapters/evm/ethers-client.js +135 -0
  80. package/dist/adapters/evm/ethers-client.js.map +1 -0
  81. package/dist/adapters/evm/fees.d.ts +79 -0
  82. package/dist/adapters/evm/fees.js +234 -0
  83. package/dist/adapters/evm/fees.js.map +1 -0
  84. package/dist/adapters/evm/index.d.ts +20 -0
  85. package/dist/adapters/evm/index.js +11 -0
  86. package/dist/adapters/evm/index.js.map +1 -0
  87. package/dist/adapters/evm/network.d.ts +60 -0
  88. package/dist/adapters/evm/network.js +131 -0
  89. package/dist/adapters/evm/network.js.map +1 -0
  90. package/dist/adapters/evm/plugin.d.ts +36 -0
  91. package/dist/adapters/evm/plugin.js +102 -0
  92. package/dist/adapters/evm/plugin.js.map +1 -0
  93. package/dist/adapters/evm/presets.d.ts +2 -0
  94. package/dist/adapters/evm/presets.js +105 -0
  95. package/dist/adapters/evm/presets.js.map +1 -0
  96. package/dist/adapters/evm/proofs.d.ts +19 -0
  97. package/dist/adapters/evm/proofs.js +358 -0
  98. package/dist/adapters/evm/proofs.js.map +1 -0
  99. package/dist/adapters/evm/rawtx.d.ts +25 -0
  100. package/dist/adapters/evm/rawtx.js +176 -0
  101. package/dist/adapters/evm/rawtx.js.map +1 -0
  102. package/dist/adapters/evm/reader.d.ts +65 -0
  103. package/dist/adapters/evm/reader.js +292 -0
  104. package/dist/adapters/evm/reader.js.map +1 -0
  105. package/dist/adapters/evm/rpc.d.ts +39 -0
  106. package/dist/adapters/evm/rpc.js +152 -0
  107. package/dist/adapters/evm/rpc.js.map +1 -0
  108. package/dist/adapters/evm/tokens.d.ts +7 -0
  109. package/dist/adapters/evm/tokens.js +23 -0
  110. package/dist/adapters/evm/tokens.js.map +1 -0
  111. package/dist/adapters/evm/types.d.ts +255 -0
  112. package/dist/{type/account.js → adapters/evm/types.js} +1 -1
  113. package/dist/adapters/evm/types.js.map +1 -0
  114. package/dist/adapters/evm/web3-client.d.ts +23 -0
  115. package/dist/adapters/evm/web3-client.js +159 -0
  116. package/dist/adapters/evm/web3-client.js.map +1 -0
  117. package/dist/adapters/solana/builder.d.ts +18 -0
  118. package/dist/adapters/solana/builder.js +545 -0
  119. package/dist/adapters/solana/builder.js.map +1 -0
  120. package/dist/adapters/solana/chains.d.ts +13 -0
  121. package/dist/adapters/solana/chains.js +37 -0
  122. package/dist/adapters/solana/chains.js.map +1 -0
  123. package/dist/adapters/solana/decode.d.ts +111 -0
  124. package/dist/adapters/solana/decode.js +595 -0
  125. package/dist/adapters/solana/decode.js.map +1 -0
  126. package/dist/adapters/solana/driver.d.ts +15 -0
  127. package/dist/adapters/solana/driver.js +72 -0
  128. package/dist/adapters/solana/driver.js.map +1 -0
  129. package/dist/adapters/solana/errors.d.ts +36 -0
  130. package/dist/adapters/solana/errors.js +154 -0
  131. package/dist/adapters/solana/errors.js.map +1 -0
  132. package/dist/adapters/solana/fees.d.ts +68 -0
  133. package/dist/adapters/solana/fees.js +205 -0
  134. package/dist/adapters/solana/fees.js.map +1 -0
  135. package/dist/adapters/solana/heights.d.ts +47 -0
  136. package/dist/adapters/solana/heights.js +185 -0
  137. package/dist/adapters/solana/heights.js.map +1 -0
  138. package/dist/adapters/solana/history.d.ts +10 -0
  139. package/dist/adapters/solana/history.js +71 -0
  140. package/dist/adapters/solana/history.js.map +1 -0
  141. package/dist/adapters/solana/index.d.ts +16 -0
  142. package/dist/adapters/solana/index.js +9 -0
  143. package/dist/adapters/solana/index.js.map +1 -0
  144. package/dist/adapters/solana/keys.d.ts +13 -0
  145. package/dist/adapters/solana/keys.js +69 -0
  146. package/dist/adapters/solana/keys.js.map +1 -0
  147. package/dist/adapters/solana/network.d.ts +24 -0
  148. package/dist/adapters/solana/network.js +95 -0
  149. package/dist/adapters/solana/network.js.map +1 -0
  150. package/dist/adapters/solana/plugin.d.ts +18 -0
  151. package/dist/adapters/solana/plugin.js +41 -0
  152. package/dist/adapters/solana/plugin.js.map +1 -0
  153. package/dist/adapters/solana/presets.d.ts +2 -0
  154. package/dist/adapters/solana/presets.js +77 -0
  155. package/dist/adapters/solana/presets.js.map +1 -0
  156. package/dist/adapters/solana/programs.d.ts +44 -0
  157. package/dist/adapters/solana/programs.js +159 -0
  158. package/dist/adapters/solana/programs.js.map +1 -0
  159. package/dist/adapters/solana/proofs.d.ts +56 -0
  160. package/dist/adapters/solana/proofs.js +540 -0
  161. package/dist/adapters/solana/proofs.js.map +1 -0
  162. package/dist/adapters/solana/reader.d.ts +82 -0
  163. package/dist/adapters/solana/reader.js +326 -0
  164. package/dist/adapters/solana/reader.js.map +1 -0
  165. package/dist/adapters/solana/rpc.d.ts +102 -0
  166. package/dist/adapters/solana/rpc.js +301 -0
  167. package/dist/adapters/solana/rpc.js.map +1 -0
  168. package/dist/adapters/solana/tokens.d.ts +7 -0
  169. package/dist/adapters/solana/tokens.js +19 -0
  170. package/dist/adapters/solana/tokens.js.map +1 -0
  171. package/dist/adapters/solana/types.d.ts +121 -0
  172. package/dist/{type/contract.js → adapters/solana/types.js} +1 -1
  173. package/dist/adapters/solana/types.js.map +1 -0
  174. package/dist/adapters/solana/web3.d.ts +5 -0
  175. package/dist/adapters/solana/web3.js +83 -0
  176. package/dist/adapters/solana/web3.js.map +1 -0
  177. package/dist/adapters/solana/wire.d.ts +62 -0
  178. package/dist/adapters/solana/wire.js +168 -0
  179. package/dist/adapters/solana/wire.js.map +1 -0
  180. package/dist/adapters/ton/address.d.ts +43 -0
  181. package/dist/adapters/ton/address.js +168 -0
  182. package/dist/adapters/ton/address.js.map +1 -0
  183. package/dist/adapters/ton/api.d.ts +344 -0
  184. package/dist/adapters/ton/api.js +942 -0
  185. package/dist/adapters/ton/api.js.map +1 -0
  186. package/dist/adapters/ton/builder.d.ts +18 -0
  187. package/dist/adapters/ton/builder.js +701 -0
  188. package/dist/adapters/ton/builder.js.map +1 -0
  189. package/dist/adapters/ton/chains.d.ts +16 -0
  190. package/dist/adapters/ton/chains.js +39 -0
  191. package/dist/adapters/ton/chains.js.map +1 -0
  192. package/dist/adapters/ton/decode.d.ts +43 -0
  193. package/dist/adapters/ton/decode.js +219 -0
  194. package/dist/adapters/ton/decode.js.map +1 -0
  195. package/dist/adapters/ton/driver.d.ts +10 -0
  196. package/dist/adapters/ton/driver.js +117 -0
  197. package/dist/adapters/ton/driver.js.map +1 -0
  198. package/dist/adapters/ton/errors.d.ts +36 -0
  199. package/dist/adapters/ton/errors.js +89 -0
  200. package/dist/adapters/ton/errors.js.map +1 -0
  201. package/dist/adapters/ton/fees.d.ts +28 -0
  202. package/dist/adapters/ton/fees.js +121 -0
  203. package/dist/adapters/ton/fees.js.map +1 -0
  204. package/dist/adapters/ton/index.d.ts +16 -0
  205. package/dist/adapters/ton/index.js +9 -0
  206. package/dist/adapters/ton/index.js.map +1 -0
  207. package/dist/adapters/ton/messages.d.ts +157 -0
  208. package/dist/adapters/ton/messages.js +397 -0
  209. package/dist/adapters/ton/messages.js.map +1 -0
  210. package/dist/adapters/ton/native-client.d.ts +10 -0
  211. package/dist/adapters/ton/native-client.js +47 -0
  212. package/dist/adapters/ton/native-client.js.map +1 -0
  213. package/dist/adapters/ton/network.d.ts +58 -0
  214. package/dist/adapters/ton/network.js +207 -0
  215. package/dist/adapters/ton/network.js.map +1 -0
  216. package/dist/adapters/ton/plugin.d.ts +24 -0
  217. package/dist/adapters/ton/plugin.js +57 -0
  218. package/dist/adapters/ton/plugin.js.map +1 -0
  219. package/dist/adapters/ton/presets.d.ts +6 -0
  220. package/dist/adapters/ton/presets.js +94 -0
  221. package/dist/adapters/ton/presets.js.map +1 -0
  222. package/dist/adapters/ton/proofs.d.ts +66 -0
  223. package/dist/adapters/ton/proofs.js +813 -0
  224. package/dist/adapters/ton/proofs.js.map +1 -0
  225. package/dist/adapters/ton/reader.d.ts +194 -0
  226. package/dist/adapters/ton/reader.js +781 -0
  227. package/dist/adapters/ton/reader.js.map +1 -0
  228. package/dist/adapters/ton/tokens.d.ts +10 -0
  229. package/dist/adapters/ton/tokens.js +27 -0
  230. package/dist/adapters/ton/tokens.js.map +1 -0
  231. package/dist/adapters/ton/trace.d.ts +48 -0
  232. package/dist/adapters/ton/trace.js +277 -0
  233. package/dist/adapters/ton/trace.js.map +1 -0
  234. package/dist/adapters/ton/types.d.ts +105 -0
  235. package/dist/{type/transact.js → adapters/ton/types.js} +1 -1
  236. package/dist/adapters/ton/types.js.map +1 -0
  237. package/dist/adapters/ton/wallets.d.ts +86 -0
  238. package/dist/adapters/ton/wallets.js +373 -0
  239. package/dist/adapters/ton/wallets.js.map +1 -0
  240. package/dist/adapters/tron/abi.d.ts +39 -0
  241. package/dist/adapters/tron/abi.js +110 -0
  242. package/dist/adapters/tron/abi.js.map +1 -0
  243. package/dist/adapters/tron/address.d.ts +20 -0
  244. package/dist/adapters/tron/address.js +110 -0
  245. package/dist/adapters/tron/address.js.map +1 -0
  246. package/dist/adapters/tron/builder.d.ts +12 -0
  247. package/dist/adapters/tron/builder.js +553 -0
  248. package/dist/adapters/tron/builder.js.map +1 -0
  249. package/dist/adapters/tron/chains.d.ts +12 -0
  250. package/dist/adapters/tron/chains.js +35 -0
  251. package/dist/adapters/tron/chains.js.map +1 -0
  252. package/dist/adapters/tron/codec.d.ts +10 -0
  253. package/dist/adapters/tron/codec.js +322 -0
  254. package/dist/adapters/tron/codec.js.map +1 -0
  255. package/dist/adapters/tron/decode.d.ts +50 -0
  256. package/dist/adapters/tron/decode.js +280 -0
  257. package/dist/adapters/tron/decode.js.map +1 -0
  258. package/dist/adapters/tron/driver.d.ts +12 -0
  259. package/dist/adapters/tron/driver.js +106 -0
  260. package/dist/adapters/tron/driver.js.map +1 -0
  261. package/dist/adapters/tron/errors.d.ts +74 -0
  262. package/dist/adapters/tron/errors.js +261 -0
  263. package/dist/adapters/tron/errors.js.map +1 -0
  264. package/dist/adapters/tron/fees.d.ts +49 -0
  265. package/dist/adapters/tron/fees.js +166 -0
  266. package/dist/adapters/tron/fees.js.map +1 -0
  267. package/dist/adapters/tron/http.d.ts +173 -0
  268. package/dist/adapters/tron/http.js +729 -0
  269. package/dist/adapters/tron/http.js.map +1 -0
  270. package/dist/adapters/tron/index.d.ts +16 -0
  271. package/dist/adapters/tron/index.js +15 -0
  272. package/dist/adapters/tron/index.js.map +1 -0
  273. package/dist/adapters/tron/network.d.ts +44 -0
  274. package/dist/adapters/tron/network.js +163 -0
  275. package/dist/adapters/tron/network.js.map +1 -0
  276. package/dist/adapters/tron/plugin.d.ts +17 -0
  277. package/dist/adapters/tron/plugin.js +39 -0
  278. package/dist/adapters/tron/plugin.js.map +1 -0
  279. package/dist/adapters/tron/presets.d.ts +5 -0
  280. package/dist/adapters/tron/presets.js +68 -0
  281. package/dist/adapters/tron/presets.js.map +1 -0
  282. package/dist/adapters/tron/proofs.d.ts +80 -0
  283. package/dist/adapters/tron/proofs.js +370 -0
  284. package/dist/adapters/tron/proofs.js.map +1 -0
  285. package/dist/adapters/tron/protobuf.d.ts +36 -0
  286. package/dist/adapters/tron/protobuf.js +90 -0
  287. package/dist/adapters/tron/protobuf.js.map +1 -0
  288. package/dist/adapters/tron/reader.d.ts +47 -0
  289. package/dist/adapters/tron/reader.js +203 -0
  290. package/dist/adapters/tron/reader.js.map +1 -0
  291. package/dist/adapters/tron/tokens.d.ts +7 -0
  292. package/dist/adapters/tron/tokens.js +14 -0
  293. package/dist/adapters/tron/tokens.js.map +1 -0
  294. package/dist/adapters/tron/types.d.ts +166 -0
  295. package/dist/adapters/tron/types.js +3 -0
  296. package/dist/adapters/tron/types.js.map +1 -0
  297. package/dist/adapters/utxo/address.d.ts +51 -0
  298. package/dist/adapters/utxo/address.js +341 -0
  299. package/dist/adapters/utxo/address.js.map +1 -0
  300. package/dist/adapters/utxo/builder.d.ts +35 -0
  301. package/dist/adapters/utxo/builder.js +380 -0
  302. package/dist/adapters/utxo/builder.js.map +1 -0
  303. package/dist/adapters/utxo/chains.d.ts +17 -0
  304. package/dist/adapters/utxo/chains.js +99 -0
  305. package/dist/adapters/utxo/chains.js.map +1 -0
  306. package/dist/adapters/utxo/codec.d.ts +120 -0
  307. package/dist/adapters/utxo/codec.js +408 -0
  308. package/dist/adapters/utxo/codec.js.map +1 -0
  309. package/dist/adapters/utxo/coinselect.d.ts +48 -0
  310. package/dist/adapters/utxo/coinselect.js +131 -0
  311. package/dist/adapters/utxo/coinselect.js.map +1 -0
  312. package/dist/adapters/utxo/context.d.ts +57 -0
  313. package/dist/adapters/utxo/context.js +118 -0
  314. package/dist/adapters/utxo/context.js.map +1 -0
  315. package/dist/adapters/utxo/decode.d.ts +14 -0
  316. package/dist/adapters/utxo/decode.js +85 -0
  317. package/dist/adapters/utxo/decode.js.map +1 -0
  318. package/dist/adapters/utxo/driver.d.ts +16 -0
  319. package/dist/adapters/utxo/driver.js +74 -0
  320. package/dist/adapters/utxo/driver.js.map +1 -0
  321. package/dist/adapters/utxo/ecc.d.ts +9 -0
  322. package/dist/adapters/utxo/ecc.js +26 -0
  323. package/dist/adapters/utxo/ecc.js.map +1 -0
  324. package/dist/adapters/utxo/errors.d.ts +52 -0
  325. package/dist/adapters/utxo/errors.js +191 -0
  326. package/dist/adapters/utxo/errors.js.map +1 -0
  327. package/dist/adapters/utxo/esplora.d.ts +79 -0
  328. package/dist/adapters/utxo/esplora.js +451 -0
  329. package/dist/adapters/utxo/esplora.js.map +1 -0
  330. package/dist/adapters/utxo/fees.d.ts +41 -0
  331. package/dist/adapters/utxo/fees.js +125 -0
  332. package/dist/adapters/utxo/fees.js.map +1 -0
  333. package/dist/adapters/utxo/index.d.ts +17 -0
  334. package/dist/adapters/utxo/index.js +8 -0
  335. package/dist/adapters/utxo/index.js.map +1 -0
  336. package/dist/adapters/utxo/network.d.ts +50 -0
  337. package/dist/adapters/utxo/network.js +165 -0
  338. package/dist/adapters/utxo/network.js.map +1 -0
  339. package/dist/adapters/utxo/plugin.d.ts +17 -0
  340. package/dist/adapters/utxo/plugin.js +41 -0
  341. package/dist/adapters/utxo/plugin.js.map +1 -0
  342. package/dist/adapters/utxo/presets.d.ts +12 -0
  343. package/dist/adapters/utxo/presets.js +47 -0
  344. package/dist/adapters/utxo/presets.js.map +1 -0
  345. package/dist/adapters/utxo/preview.d.ts +3 -0
  346. package/dist/adapters/utxo/preview.js +65 -0
  347. package/dist/adapters/utxo/preview.js.map +1 -0
  348. package/dist/adapters/utxo/proofs.d.ts +57 -0
  349. package/dist/adapters/utxo/proofs.js +331 -0
  350. package/dist/adapters/utxo/proofs.js.map +1 -0
  351. package/dist/adapters/utxo/rawtx.d.ts +59 -0
  352. package/dist/adapters/utxo/rawtx.js +234 -0
  353. package/dist/adapters/utxo/rawtx.js.map +1 -0
  354. package/dist/adapters/utxo/reader.d.ts +36 -0
  355. package/dist/adapters/utxo/reader.js +265 -0
  356. package/dist/adapters/utxo/reader.js.map +1 -0
  357. package/dist/adapters/utxo/sdk.d.ts +18 -0
  358. package/dist/adapters/utxo/sdk.js +17 -0
  359. package/dist/adapters/utxo/sdk.js.map +1 -0
  360. package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
  361. package/dist/adapters/utxo/signed-psbt.js +428 -0
  362. package/dist/adapters/utxo/signed-psbt.js.map +1 -0
  363. package/dist/adapters/utxo/spend.d.ts +59 -0
  364. package/dist/adapters/utxo/spend.js +230 -0
  365. package/dist/adapters/utxo/spend.js.map +1 -0
  366. package/dist/adapters/utxo/types.d.ts +167 -0
  367. package/dist/adapters/utxo/types.js +3 -0
  368. package/dist/adapters/utxo/types.js.map +1 -0
  369. package/dist/core/assets/service.d.ts +18 -0
  370. package/dist/core/assets/service.js +69 -0
  371. package/dist/core/assets/service.js.map +1 -0
  372. package/dist/core/blockchain/default-ref.d.ts +4 -0
  373. package/dist/core/blockchain/default-ref.js +16 -0
  374. package/dist/core/blockchain/default-ref.js.map +1 -0
  375. package/dist/core/blockchain/handle.d.ts +200 -0
  376. package/dist/core/blockchain/handle.js +579 -0
  377. package/dist/core/blockchain/handle.js.map +1 -0
  378. package/dist/core/blockchain/internal.d.ts +19 -0
  379. package/dist/core/blockchain/internal.js +16 -0
  380. package/dist/core/blockchain/internal.js.map +1 -0
  381. package/dist/core/blockchain/mapping.d.ts +22 -0
  382. package/dist/core/blockchain/mapping.js +136 -0
  383. package/dist/core/blockchain/mapping.js.map +1 -0
  384. package/dist/core/config/env.d.ts +8 -0
  385. package/dist/core/config/env.js +60 -0
  386. package/dist/core/config/env.js.map +1 -0
  387. package/dist/core/config/merge.d.ts +26 -0
  388. package/dist/core/config/merge.js +144 -0
  389. package/dist/core/config/merge.js.map +1 -0
  390. package/dist/core/config/resolve.d.ts +12 -0
  391. package/dist/core/config/resolve.js +251 -0
  392. package/dist/core/config/resolve.js.map +1 -0
  393. package/dist/core/config/types.d.ts +165 -0
  394. package/dist/core/config/types.js +3 -0
  395. package/dist/core/config/types.js.map +1 -0
  396. package/dist/core/container/builtins.d.ts +4 -0
  397. package/dist/core/container/builtins.js +13 -0
  398. package/dist/core/container/builtins.js.map +1 -0
  399. package/dist/core/container/container.d.ts +69 -0
  400. package/dist/core/container/container.js +466 -0
  401. package/dist/core/container/container.js.map +1 -0
  402. package/dist/core/container/default.d.ts +15 -0
  403. package/dist/core/container/default.js +70 -0
  404. package/dist/core/container/default.js.map +1 -0
  405. package/dist/core/container/internals.d.ts +54 -0
  406. package/dist/core/container/internals.js +21 -0
  407. package/dist/core/container/internals.js.map +1 -0
  408. package/dist/core/container/pool.d.ts +27 -0
  409. package/dist/core/container/pool.js +77 -0
  410. package/dist/core/container/pool.js.map +1 -0
  411. package/dist/core/driver/types.d.ts +346 -0
  412. package/dist/core/driver/types.js +3 -0
  413. package/dist/core/driver/types.js.map +1 -0
  414. package/dist/core/errors/codes.d.ts +153 -0
  415. package/dist/core/errors/codes.js +49 -0
  416. package/dist/core/errors/codes.js.map +1 -0
  417. package/dist/core/errors/error.d.ts +66 -0
  418. package/dist/core/errors/error.js +129 -0
  419. package/dist/core/errors/error.js.map +1 -0
  420. package/dist/core/events/bus.d.ts +12 -0
  421. package/dist/core/events/bus.js +46 -0
  422. package/dist/core/events/bus.js.map +1 -0
  423. package/dist/core/events/logger.d.ts +13 -0
  424. package/dist/core/events/logger.js +42 -0
  425. package/dist/core/events/logger.js.map +1 -0
  426. package/dist/core/events/types.d.ts +131 -0
  427. package/dist/core/events/types.js +3 -0
  428. package/dist/core/events/types.js.map +1 -0
  429. package/dist/core/lifecycle/engine-rules.d.ts +107 -0
  430. package/dist/core/lifecycle/engine-rules.js +257 -0
  431. package/dist/core/lifecycle/engine-rules.js.map +1 -0
  432. package/dist/core/lifecycle/engine.d.ts +500 -0
  433. package/dist/core/lifecycle/engine.js +1732 -0
  434. package/dist/core/lifecycle/engine.js.map +1 -0
  435. package/dist/core/lifecycle/evaluate.d.ts +19 -0
  436. package/dist/core/lifecycle/evaluate.js +72 -0
  437. package/dist/core/lifecycle/evaluate.js.map +1 -0
  438. package/dist/core/lifecycle/intent.d.ts +11 -0
  439. package/dist/core/lifecycle/intent.js +88 -0
  440. package/dist/core/lifecycle/intent.js.map +1 -0
  441. package/dist/core/lifecycle/monitor.d.ts +138 -0
  442. package/dist/core/lifecycle/monitor.js +606 -0
  443. package/dist/core/lifecycle/monitor.js.map +1 -0
  444. package/dist/core/lifecycle/observations.d.ts +17 -0
  445. package/dist/core/lifecycle/observations.js +59 -0
  446. package/dist/core/lifecycle/observations.js.map +1 -0
  447. package/dist/core/lifecycle/reconcile.d.ts +58 -0
  448. package/dist/core/lifecycle/reconcile.js +112 -0
  449. package/dist/core/lifecycle/reconcile.js.map +1 -0
  450. package/dist/core/lifecycle/views.d.ts +49 -0
  451. package/dist/core/lifecycle/views.js +57 -0
  452. package/dist/core/lifecycle/views.js.map +1 -0
  453. package/dist/core/lifecycle/workers.d.ts +82 -0
  454. package/dist/core/lifecycle/workers.js +329 -0
  455. package/dist/core/lifecycle/workers.js.map +1 -0
  456. package/dist/core/model/address.d.ts +32 -0
  457. package/dist/core/model/address.js +43 -0
  458. package/dist/core/model/address.js.map +1 -0
  459. package/dist/core/model/amount.d.ts +25 -0
  460. package/dist/core/model/amount.js +102 -0
  461. package/dist/core/model/amount.js.map +1 -0
  462. package/dist/core/model/asset.d.ts +28 -0
  463. package/dist/core/model/asset.js +47 -0
  464. package/dist/core/model/asset.js.map +1 -0
  465. package/dist/core/model/capability.d.ts +3 -0
  466. package/dist/core/model/capability.js +18 -0
  467. package/dist/core/model/capability.js.map +1 -0
  468. package/dist/core/model/chain.d.ts +63 -0
  469. package/dist/core/model/chain.js +8 -0
  470. package/dist/core/model/chain.js.map +1 -0
  471. package/dist/core/model/fee.d.ts +36 -0
  472. package/dist/core/model/fee.js +17 -0
  473. package/dist/core/model/fee.js.map +1 -0
  474. package/dist/core/model/ids.d.ts +37 -0
  475. package/dist/core/model/ids.js +13 -0
  476. package/dist/core/model/ids.js.map +1 -0
  477. package/dist/core/model/intent.d.ts +63 -0
  478. package/dist/core/model/intent.js +81 -0
  479. package/dist/core/model/intent.js.map +1 -0
  480. package/dist/core/model/ordering.d.ts +20 -0
  481. package/dist/core/model/ordering.js +29 -0
  482. package/dist/core/model/ordering.js.map +1 -0
  483. package/dist/core/model/transaction.d.ts +116 -0
  484. package/dist/{type/lib-types.js → core/model/transaction.js} +1 -1
  485. package/dist/core/model/transaction.js.map +1 -0
  486. package/dist/core/observe/scanner.d.ts +135 -0
  487. package/dist/core/observe/scanner.js +355 -0
  488. package/dist/core/observe/scanner.js.map +1 -0
  489. package/dist/core/ordering/reservations.d.ts +16 -0
  490. package/dist/core/ordering/reservations.js +53 -0
  491. package/dist/core/ordering/reservations.js.map +1 -0
  492. package/dist/core/ordering/sequence.d.ts +61 -0
  493. package/dist/core/ordering/sequence.js +155 -0
  494. package/dist/core/ordering/sequence.js.map +1 -0
  495. package/dist/core/registry/adapters.d.ts +10 -0
  496. package/dist/core/registry/adapters.js +56 -0
  497. package/dist/core/registry/adapters.js.map +1 -0
  498. package/dist/core/registry/assets.d.ts +18 -0
  499. package/dist/core/registry/assets.js +90 -0
  500. package/dist/core/registry/assets.js.map +1 -0
  501. package/dist/core/registry/chains.d.ts +10 -0
  502. package/dist/core/registry/chains.js +80 -0
  503. package/dist/core/registry/chains.js.map +1 -0
  504. package/dist/core/registry/plugin.d.ts +41 -0
  505. package/dist/core/registry/plugin.js +109 -0
  506. package/dist/core/registry/plugin.js.map +1 -0
  507. package/dist/core/registry/providers.d.ts +31 -0
  508. package/dist/core/registry/providers.js +43 -0
  509. package/dist/core/registry/providers.js.map +1 -0
  510. package/dist/core/registry/schemes.d.ts +30 -0
  511. package/dist/core/registry/schemes.js +84 -0
  512. package/dist/core/registry/schemes.js.map +1 -0
  513. package/dist/core/secret/fragments.d.ts +33 -0
  514. package/dist/core/secret/fragments.js +110 -0
  515. package/dist/core/secret/fragments.js.map +1 -0
  516. package/dist/core/secret/redact.d.ts +10 -0
  517. package/dist/core/secret/redact.js +110 -0
  518. package/dist/core/secret/redact.js.map +1 -0
  519. package/dist/core/secret/secret.d.ts +14 -0
  520. package/dist/core/secret/secret.js +42 -0
  521. package/dist/core/secret/secret.js.map +1 -0
  522. package/dist/core/signing/callback.d.ts +10 -0
  523. package/dist/core/signing/callback.js +22 -0
  524. package/dist/core/signing/callback.js.map +1 -0
  525. package/dist/core/signing/guard.d.ts +18 -0
  526. package/dist/core/signing/guard.js +72 -0
  527. package/dist/core/signing/guard.js.map +1 -0
  528. package/dist/core/signing/hd.d.ts +36 -0
  529. package/dist/core/signing/hd.js +167 -0
  530. package/dist/core/signing/hd.js.map +1 -0
  531. package/dist/core/signing/local.d.ts +48 -0
  532. package/dist/core/signing/local.js +190 -0
  533. package/dist/core/signing/local.js.map +1 -0
  534. package/dist/core/signing/orchestrator.d.ts +40 -0
  535. package/dist/core/signing/orchestrator.js +300 -0
  536. package/dist/core/signing/orchestrator.js.map +1 -0
  537. package/dist/core/signing/types.d.ts +64 -0
  538. package/dist/core/signing/types.js +3 -0
  539. package/dist/core/signing/types.js.map +1 -0
  540. package/dist/core/signing/wallet.d.ts +48 -0
  541. package/dist/core/signing/wallet.js +153 -0
  542. package/dist/core/signing/wallet.js.map +1 -0
  543. package/dist/core/store/clone.d.ts +25 -0
  544. package/dist/core/store/clone.js +71 -0
  545. package/dist/core/store/clone.js.map +1 -0
  546. package/dist/core/store/memory.d.ts +38 -0
  547. package/dist/core/store/memory.js +325 -0
  548. package/dist/core/store/memory.js.map +1 -0
  549. package/dist/core/store/types.d.ts +246 -0
  550. package/dist/core/store/types.js +117 -0
  551. package/dist/core/store/types.js.map +1 -0
  552. package/dist/core/transport/backoff.d.ts +8 -0
  553. package/dist/core/transport/backoff.js +27 -0
  554. package/dist/core/transport/backoff.js.map +1 -0
  555. package/dist/core/transport/circuit.d.ts +25 -0
  556. package/dist/core/transport/circuit.js +61 -0
  557. package/dist/core/transport/circuit.js.map +1 -0
  558. package/dist/core/transport/http-transport.d.ts +30 -0
  559. package/dist/core/transport/http-transport.js +1695 -0
  560. package/dist/core/transport/http-transport.js.map +1 -0
  561. package/dist/core/transport/rate-limit.d.ts +27 -0
  562. package/dist/core/transport/rate-limit.js +78 -0
  563. package/dist/core/transport/rate-limit.js.map +1 -0
  564. package/dist/core/transport/stale-view.d.ts +11 -0
  565. package/dist/core/transport/stale-view.js +17 -0
  566. package/dist/core/transport/stale-view.js.map +1 -0
  567. package/dist/core/transport/types.d.ts +144 -0
  568. package/dist/core/transport/types.js +6 -0
  569. package/dist/core/transport/types.js.map +1 -0
  570. package/dist/core/util/bytes.d.ts +9 -0
  571. package/dist/core/util/bytes.js +40 -0
  572. package/dist/core/util/bytes.js.map +1 -0
  573. package/dist/core/util/clock.d.ts +6 -0
  574. package/dist/core/util/clock.js +26 -0
  575. package/dist/core/util/clock.js.map +1 -0
  576. package/dist/core/util/freeze.d.ts +8 -0
  577. package/dist/core/util/freeze.js +31 -0
  578. package/dist/core/util/freeze.js.map +1 -0
  579. package/dist/core/util/json.d.ts +29 -0
  580. package/dist/core/util/json.js +165 -0
  581. package/dist/core/util/json.js.map +1 -0
  582. package/dist/core/util/names.d.ts +21 -0
  583. package/dist/core/util/names.js +46 -0
  584. package/dist/core/util/names.js.map +1 -0
  585. package/dist/index.d.ts +64 -14
  586. package/dist/index.js +105 -49
  587. package/dist/index.js.map +1 -1
  588. package/dist/native.d.ts +21 -0
  589. package/dist/native.js +44 -0
  590. package/dist/native.js.map +1 -0
  591. package/dist/testing/contracts/api.d.ts +12 -0
  592. package/dist/testing/contracts/api.js +58 -0
  593. package/dist/testing/contracts/api.js.map +1 -0
  594. package/dist/testing/contracts/cursors.d.ts +6 -0
  595. package/dist/testing/contracts/cursors.js +43 -0
  596. package/dist/testing/contracts/cursors.js.map +1 -0
  597. package/dist/testing/contracts/locks.d.ts +10 -0
  598. package/dist/testing/contracts/locks.js +63 -0
  599. package/dist/testing/contracts/locks.js.map +1 -0
  600. package/dist/testing/contracts/operations.d.ts +21 -0
  601. package/dist/testing/contracts/operations.js +718 -0
  602. package/dist/testing/contracts/operations.js.map +1 -0
  603. package/dist/testing/contracts/sequences.d.ts +6 -0
  604. package/dist/testing/contracts/sequences.js +68 -0
  605. package/dist/testing/contracts/sequences.js.map +1 -0
  606. package/dist/testing/env.d.ts +63 -0
  607. package/dist/testing/env.js +105 -0
  608. package/dist/testing/env.js.map +1 -0
  609. package/dist/testing/fake-chain.d.ts +118 -0
  610. package/dist/testing/fake-chain.js +536 -0
  611. package/dist/testing/fake-chain.js.map +1 -0
  612. package/dist/testing/fake-clock.d.ts +15 -0
  613. package/dist/testing/fake-clock.js +86 -0
  614. package/dist/testing/fake-clock.js.map +1 -0
  615. package/dist/testing/fake-driver.d.ts +15 -0
  616. package/dist/testing/fake-driver.js +458 -0
  617. package/dist/testing/fake-driver.js.map +1 -0
  618. package/dist/testing/fake-fetch.d.ts +32 -0
  619. package/dist/testing/fake-fetch.js +81 -0
  620. package/dist/testing/fake-fetch.js.map +1 -0
  621. package/dist/testing/fake-plugin.d.ts +30 -0
  622. package/dist/testing/fake-plugin.js +66 -0
  623. package/dist/testing/fake-plugin.js.map +1 -0
  624. package/dist/testing/faulty-store.d.ts +36 -0
  625. package/dist/testing/faulty-store.js +66 -0
  626. package/dist/testing/faulty-store.js.map +1 -0
  627. package/dist/testing/generation.d.ts +60 -0
  628. package/dist/testing/generation.js +252 -0
  629. package/dist/testing/generation.js.map +1 -0
  630. package/dist/testing/index.d.ts +28 -0
  631. package/dist/testing/index.js +51 -0
  632. package/dist/testing/index.js.map +1 -0
  633. package/package.json +188 -45
  634. package/dist/libs/eth/account.d.ts +0 -9
  635. package/dist/libs/eth/account.js +0 -58
  636. package/dist/libs/eth/account.js.map +0 -1
  637. package/dist/libs/eth/contract.d.ts +0 -7
  638. package/dist/libs/eth/contract.js +0 -42
  639. package/dist/libs/eth/contract.js.map +0 -1
  640. package/dist/libs/eth/index.d.ts +0 -24
  641. package/dist/libs/eth/index.js +0 -72
  642. package/dist/libs/eth/index.js.map +0 -1
  643. package/dist/libs/eth/transact.d.ts +0 -7
  644. package/dist/libs/eth/transact.js +0 -26
  645. package/dist/libs/eth/transact.js.map +0 -1
  646. package/dist/libs/index.d.ts +0 -2
  647. package/dist/libs/index.js +0 -19
  648. package/dist/libs/index.js.map +0 -1
  649. package/dist/libs/trx/account.d.ts +0 -9
  650. package/dist/libs/trx/account.js +0 -55
  651. package/dist/libs/trx/account.js.map +0 -1
  652. package/dist/libs/trx/contract.d.ts +0 -7
  653. package/dist/libs/trx/contract.js +0 -27
  654. package/dist/libs/trx/contract.js.map +0 -1
  655. package/dist/libs/trx/index.d.ts +0 -22
  656. package/dist/libs/trx/index.js +0 -64
  657. package/dist/libs/trx/index.js.map +0 -1
  658. package/dist/libs/trx/transact.d.ts +0 -7
  659. package/dist/libs/trx/transact.js +0 -26
  660. package/dist/libs/trx/transact.js.map +0 -1
  661. package/dist/tool/common.d.ts +0 -28
  662. package/dist/tool/common.js +0 -33
  663. package/dist/tool/common.js.map +0 -1
  664. package/dist/tool/eth-tools.d.ts +0 -3
  665. package/dist/tool/eth-tools.js +0 -33
  666. package/dist/tool/eth-tools.js.map +0 -1
  667. package/dist/tool/index.d.ts +0 -5
  668. package/dist/tool/index.js +0 -22
  669. package/dist/tool/index.js.map +0 -1
  670. package/dist/tool/logging.d.ts +0 -3
  671. package/dist/tool/logging.js +0 -11
  672. package/dist/tool/logging.js.map +0 -1
  673. package/dist/tool/options.d.ts +0 -6
  674. package/dist/tool/options.js +0 -41
  675. package/dist/tool/options.js.map +0 -1
  676. package/dist/tool/trx-tools.d.ts +0 -3
  677. package/dist/tool/trx-tools.js +0 -20
  678. package/dist/tool/trx-tools.js.map +0 -1
  679. package/dist/type/account.d.ts +0 -9
  680. package/dist/type/account.js.map +0 -1
  681. package/dist/type/common.d.ts +0 -18
  682. package/dist/type/common.js.map +0 -1
  683. package/dist/type/contract.d.ts +0 -10
  684. package/dist/type/contract.js.map +0 -1
  685. package/dist/type/index.d.ts +0 -5
  686. package/dist/type/index.js +0 -22
  687. package/dist/type/index.js.map +0 -1
  688. package/dist/type/lib-types.d.ts +0 -9
  689. package/dist/type/lib-types.js.map +0 -1
  690. package/dist/type/transact.d.ts +0 -7
  691. package/dist/type/transact.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/core/secret/redact.ts"],"names":[],"mappings":"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","sourcesContent":["import { REDACTED, isSecret, type Secret } from './secret';\n\nconst SENSITIVE_KEY =\n /(key|secret|token|password|passphrase|mnemonic|private|seed|authorization|cookie)/i;\nconst SENSITIVE_HEADER = /(authorization|api[-_]?key|token|secret|cookie)/i;\nconst KEYLIKE_SEGMENT = /^[A-Za-z0-9_-]{16,}$/;\nconst URL_IN_TEXT = /\\b[a-z][a-z0-9+.-]*:\\/\\/[^\\s'\"<>)]+/gi;\n\nexport function redactUrl(url: string | Secret<string>): string {\n const isSecretUrl = isSecret(url);\n const raw = isSecretUrl ? (url as Secret<string>).reveal() : (url as string);\n let parsed: URL;\n try {\n parsed = new URL(raw);\n } catch {\n return REDACTED;\n }\n if (isSecretUrl) return `${parsed.protocol}//${parsed.host}/${REDACTED}`;\n const path = parsed.pathname\n .split('/')\n .map((segment) => (KEYLIKE_SEGMENT.test(segment) ? REDACTED : segment))\n .join('/');\n const keys = [...new Set(parsed.searchParams.keys())];\n const query = keys.length\n ? `?${keys.map((k) => `${encodeURIComponent(k)}=${REDACTED}`).join('&')}`\n : '';\n const auth = parsed.username || parsed.password ? `${REDACTED}@` : '';\n return `${parsed.protocol}//${auth}${parsed.host}${path}${query}`;\n}\n\nexport function redactText(text: string): string {\n return text.replace(URL_IN_TEXT, (match) => {\n const trailing = match.match(/[.,;:!?\\]}]+$/);\n const trailingStr = trailing ? trailing[0] : '';\n const url = trailing ? match.slice(0, -trailingStr.length) : match;\n return redactUrl(url) + trailingStr;\n });\n}\n\nexport function redactHeaders(\n headers: Readonly<Record<string, string | Secret<string>>> | undefined,\n): Record<string, string> {\n const out: Record<string, string> = {};\n for (const [name, value] of Object.entries(headers ?? {})) {\n out[name] =\n isSecret(value) || SENSITIVE_HEADER.test(name) ? REDACTED : (value as string);\n }\n return out;\n}\n\nexport function redactDeep(value: unknown, depth = 8): unknown {\n return walk(value, depth, new WeakSet());\n}\n\nfunction walk(value: unknown, depth: number, seen: WeakSet<object>): unknown {\n if (isSecret(value)) return REDACTED;\n if (typeof value === 'string') return redactText(value);\n if (typeof value === 'bigint') return value.toString();\n if (value === null || typeof value !== 'object') return value;\n if (value instanceof Uint8Array) return `[bytes:${value.length}]`;\n if (value instanceof Error)\n return { name: value.name, message: redactText(value.message) };\n if (seen.has(value)) return '[Circular]';\n if (depth <= 0) return '[Truncated]';\n seen.add(value);\n if (Array.isArray(value)) return value.map((item) => walk(item, depth - 1, seen));\n const out: Record<string, unknown> = {};\n for (const [key, item] of Object.entries(value)) {\n // Redact if key is sensitive and value is not null/undefined/boolean/number\n const isPrimitive =\n item === undefined ||\n item === null ||\n typeof item === 'boolean' ||\n typeof item === 'number';\n const sensitive = SENSITIVE_KEY.test(key) && !isPrimitive;\n out[key] = sensitive ? REDACTED : walk(item, depth - 1, seen);\n }\n return out;\n}\n\nconst UNPRINTABLE = '[unprintable error]';\n\n/**\n * Copies an error's name/message/code with URLs redacted and without its cause chain.\n * Total: a throwable that cannot be read or printed yields '[unprintable error]'.\n */\nexport function sanitizeError(error: unknown): Error {\n try {\n if (error instanceof Error) {\n const clean = new Error(redactText(String(error.message)));\n clean.name = redactText(String(error.name));\n const code = (error as { code?: unknown }).code;\n if (typeof code === 'string') {\n (clean as Error & { code?: string }).code = redactText(code);\n }\n clean.stack = `${clean.name}: ${clean.message}`;\n return clean;\n }\n return new Error(redactText(String(error)));\n } catch {\n return new Error(UNPRINTABLE);\n }\n}\n"]}
@@ -0,0 +1,14 @@
1
+ import { inspect } from 'node:util';
2
+ export declare const REDACTED = "[REDACTED]";
3
+ /** Wraps sensitive material so that it never renders in logs, JSON or inspection. */
4
+ export declare class Secret<T = string> {
5
+ constructor(value: T);
6
+ reveal(): T;
7
+ toString(): string;
8
+ toJSON(): string;
9
+ [Symbol.toPrimitive](): string;
10
+ [inspect.custom](): string;
11
+ }
12
+ export declare function secret<T>(value: T | Secret<T>): Secret<T>;
13
+ export declare function isSecret(value: unknown): value is Secret<unknown>;
14
+ export declare function reveal<T>(value: T | Secret<T>): T;
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Secret = exports.REDACTED = void 0;
4
+ exports.secret = secret;
5
+ exports.isSecret = isSecret;
6
+ exports.reveal = reveal;
7
+ const node_util_1 = require("node:util");
8
+ exports.REDACTED = '[REDACTED]';
9
+ const values = new WeakMap();
10
+ /** Wraps sensitive material so that it never renders in logs, JSON or inspection. */
11
+ class Secret {
12
+ constructor(value) {
13
+ values.set(this, value);
14
+ Object.freeze(this);
15
+ }
16
+ reveal() {
17
+ return values.get(this);
18
+ }
19
+ toString() {
20
+ return exports.REDACTED;
21
+ }
22
+ toJSON() {
23
+ return exports.REDACTED;
24
+ }
25
+ [Symbol.toPrimitive]() {
26
+ return exports.REDACTED;
27
+ }
28
+ [node_util_1.inspect.custom]() {
29
+ return `Secret(${exports.REDACTED})`;
30
+ }
31
+ }
32
+ exports.Secret = Secret;
33
+ function secret(value) {
34
+ return value instanceof Secret ? value : new Secret(value);
35
+ }
36
+ function isSecret(value) {
37
+ return value instanceof Secret;
38
+ }
39
+ function reveal(value) {
40
+ return value instanceof Secret ? value.reveal() : value;
41
+ }
42
+ //# sourceMappingURL=secret.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secret.js","sourceRoot":"","sources":["../../../src/core/secret/secret.ts"],"names":[],"mappings":";;;AAkCA,wBAEC;AAED,4BAEC;AAED,wBAEC;AA5CD,yCAAoC;AAEvB,QAAA,QAAQ,GAAG,YAAY,CAAC;AAErC,MAAM,MAAM,GAAG,IAAI,OAAO,EAAmB,CAAC;AAE9C,qFAAqF;AACrF,MAAa,MAAM;IACjB,YAAY,KAAQ;QAClB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED,MAAM;QACJ,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,CAAM,CAAC;IAC/B,CAAC;IAED,QAAQ;QACN,OAAO,gBAAQ,CAAC;IAClB,CAAC;IAED,MAAM;QACJ,OAAO,gBAAQ,CAAC;IAClB,CAAC;IAED,CAAC,MAAM,CAAC,WAAW,CAAC;QAClB,OAAO,gBAAQ,CAAC;IAClB,CAAC;IAED,CAAC,mBAAO,CAAC,MAAM,CAAC;QACd,OAAO,UAAU,gBAAQ,GAAG,CAAC;IAC/B,CAAC;CACF;AAzBD,wBAyBC;AAED,SAAgB,MAAM,CAAI,KAAoB;IAC5C,OAAO,KAAK,YAAY,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7D,CAAC;AAED,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,KAAK,YAAY,MAAM,CAAC;AACjC,CAAC;AAED,SAAgB,MAAM,CAAI,KAAoB;IAC5C,OAAO,KAAK,YAAY,MAAM,CAAC,CAAC,CAAE,KAAK,CAAC,MAAM,EAAQ,CAAC,CAAC,CAAC,KAAK,CAAC;AACjE,CAAC","sourcesContent":["import { inspect } from 'node:util';\n\nexport const REDACTED = '[REDACTED]';\n\nconst values = new WeakMap<object, unknown>();\n\n/** Wraps sensitive material so that it never renders in logs, JSON or inspection. */\nexport class Secret<T = string> {\n constructor(value: T) {\n values.set(this, value);\n Object.freeze(this);\n }\n\n reveal(): T {\n return values.get(this) as T;\n }\n\n toString(): string {\n return REDACTED;\n }\n\n toJSON(): string {\n return REDACTED;\n }\n\n [Symbol.toPrimitive](): string {\n return REDACTED;\n }\n\n [inspect.custom](): string {\n return `Secret(${REDACTED})`;\n }\n}\n\nexport function secret<T>(value: T | Secret<T>): Secret<T> {\n return value instanceof Secret ? value : new Secret(value);\n}\n\nexport function isSecret(value: unknown): value is Secret<unknown> {\n return value instanceof Secret;\n}\n\nexport function reveal<T>(value: T | Secret<T>): T {\n return value instanceof Secret ? (value.reveal() as T) : value;\n}\n"]}
@@ -0,0 +1,10 @@
1
+ import type { Signer } from './types';
2
+ export interface CallbackSignerOptions {
3
+ readonly id: string;
4
+ readonly schemes: readonly string[];
5
+ readonly getPublicKey: Signer['getPublicKey'];
6
+ readonly sign: Signer['sign'];
7
+ readonly cancelRequest?: (ticket: string) => Promise<void>;
8
+ }
9
+ /** Base for remote, KMS, HSM and MPC signers: supply the three callbacks. */
10
+ export declare function callbackSigner(options: CallbackSignerOptions): Signer;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.callbackSigner = callbackSigner;
4
+ const error_1 = require("../errors/error");
5
+ /** Base for remote, KMS, HSM and MPC signers: supply the three callbacks. */
6
+ function callbackSigner(options) {
7
+ if (!options.id)
8
+ throw new error_1.ConfigError('CONFIG_INVALID', 'callbackSigner requires an id');
9
+ if (options.schemes.length === 0) {
10
+ throw new error_1.ConfigError('CONFIG_INVALID', `callbackSigner '${options.id}' must declare at least one scheme`);
11
+ }
12
+ const cancel = options.cancelRequest;
13
+ const signer = {
14
+ id: options.id,
15
+ schemes: Object.freeze([...options.schemes]),
16
+ getPublicKey: (scheme, keyRef) => options.getPublicKey(scheme, keyRef),
17
+ sign: (requests, ctx) => options.sign(requests, ctx),
18
+ ...(cancel ? { cancelRequest: (ticket) => cancel(ticket) } : {}),
19
+ };
20
+ return Object.freeze(signer);
21
+ }
22
+ //# sourceMappingURL=callback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"callback.js","sourceRoot":"","sources":["../../../src/core/signing/callback.ts"],"names":[],"mappings":";;AAYA,wCAkBC;AA9BD,2CAA8C;AAW9C,6EAA6E;AAC7E,SAAgB,cAAc,CAAC,OAA8B;IAC3D,IAAI,CAAC,OAAO,CAAC,EAAE;QACb,MAAM,IAAI,mBAAW,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,IAAI,mBAAW,CACnB,gBAAgB,EAChB,mBAAmB,OAAO,CAAC,EAAE,oCAAoC,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IACrC,MAAM,MAAM,GAAW;QACrB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC5C,YAAY,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC;QACtE,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC;QACpD,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzE,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC","sourcesContent":["import { ConfigError } from '../errors/error';\nimport type { Signer } from './types';\n\nexport interface CallbackSignerOptions {\n readonly id: string;\n readonly schemes: readonly string[];\n readonly getPublicKey: Signer['getPublicKey'];\n readonly sign: Signer['sign'];\n readonly cancelRequest?: (ticket: string) => Promise<void>;\n}\n\n/** Base for remote, KMS, HSM and MPC signers: supply the three callbacks. */\nexport function callbackSigner(options: CallbackSignerOptions): Signer {\n if (!options.id)\n throw new ConfigError('CONFIG_INVALID', 'callbackSigner requires an id');\n if (options.schemes.length === 0) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `callbackSigner '${options.id}' must declare at least one scheme`,\n );\n }\n const cancel = options.cancelRequest;\n const signer: Signer = {\n id: options.id,\n schemes: Object.freeze([...options.schemes]),\n getPublicKey: (scheme, keyRef) => options.getPublicKey(scheme, keyRef),\n sign: (requests, ctx) => options.sign(requests, ctx),\n ...(cancel ? { cancelRequest: (ticket: string) => cancel(ticket) } : {}),\n };\n return Object.freeze(signer);\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import { type CodesOf, type CryptoAioError, type ErrorContext } from '../errors/error';
2
+ import type { Clock } from '../util/clock';
3
+ import type { KeyRef, Signer } from './types';
4
+ /** How long a signer may take to hand out a public key (`lifecycle.signTimeoutMs`). */
5
+ export interface SignerDeadline {
6
+ readonly clock: Clock;
7
+ readonly timeoutMs: number;
8
+ }
9
+ /** A CryptoAioError passes through; anything else becomes `code` with a sanitized cause. */
10
+ export declare function signerFailure(error: unknown, code: CodesOf<'signing'>, message: string, context?: ErrorContext): CryptoAioError;
11
+ /** The signer's declared schemes, read once and copied; SIGNER_UNAVAILABLE if unusable. */
12
+ export declare function signerSchemes(signerId: string, signer: Signer, context?: ErrorContext): readonly string[];
13
+ /**
14
+ * The signer's public key for `scheme`, checked against `length` and copied. With a
15
+ * `deadline`, a signer that does not answer in time fails with a retryable TIMEOUT
16
+ * (its late answer is ignored), so a hung custody backend can never block its caller.
17
+ */
18
+ export declare function signerPublicKey(signerId: string, signer: Signer, scheme: string, keyRef: KeyRef | undefined, length: number, deadline?: SignerDeadline): Promise<Uint8Array>;
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signerFailure = signerFailure;
4
+ exports.signerSchemes = signerSchemes;
5
+ exports.signerPublicKey = signerPublicKey;
6
+ const error_1 = require("../errors/error");
7
+ const redact_1 = require("../secret/redact");
8
+ /*
9
+ * Guards for every call into signer code (local, callback, KMS, HSM, MPC or user-written).
10
+ * Custody backends put URLs and credentials in their error messages, so a failure that is
11
+ * not already a CryptoAioError only ever surfaces as a sanitized cause. Never call a
12
+ * `Signer` around these guards: a direct call can leak a custodian's message.
13
+ */
14
+ /** A CryptoAioError passes through; anything else becomes `code` with a sanitized cause. */
15
+ function signerFailure(error, code, message, context) {
16
+ if ((0, error_1.isCryptoAioError)(error))
17
+ return error;
18
+ return new error_1.SigningError(code, message, {
19
+ cause: (0, redact_1.sanitizeError)(error),
20
+ ...(context ? { context } : {}),
21
+ });
22
+ }
23
+ /** The signer's declared schemes, read once and copied; SIGNER_UNAVAILABLE if unusable. */
24
+ function signerSchemes(signerId, signer, context) {
25
+ try {
26
+ const schemes = signer.schemes;
27
+ if (Array.isArray(schemes) && schemes.every((s) => typeof s === 'string')) {
28
+ return [...schemes];
29
+ }
30
+ }
31
+ catch (error) {
32
+ throw signerFailure(error, 'SIGNER_UNAVAILABLE', `signer '${signerId}' has an unreadable scheme list`, context);
33
+ }
34
+ throw new error_1.SigningError('SIGNER_UNAVAILABLE', `signer '${signerId}' does not declare a list of schemes`, context ? { context } : {});
35
+ }
36
+ /**
37
+ * The signer's public key for `scheme`, checked against `length` and copied. With a
38
+ * `deadline`, a signer that does not answer in time fails with a retryable TIMEOUT
39
+ * (its late answer is ignored), so a hung custody backend can never block its caller.
40
+ */
41
+ async function signerPublicKey(signerId, signer, scheme, keyRef, length, deadline) {
42
+ let key;
43
+ try {
44
+ const asked = Promise.resolve(signer.getPublicKey(scheme, keyRef));
45
+ key = deadline ? await withinDeadline(asked, deadline, signerId) : await asked;
46
+ }
47
+ catch (error) {
48
+ throw signerFailure(error, 'SIGNER_UNAVAILABLE', `signer '${signerId}' could not provide its ${scheme} public key`);
49
+ }
50
+ const copy = key instanceof Uint8Array ? new Uint8Array(key) : undefined;
51
+ if (!copy || copy.length !== length) {
52
+ throw new error_1.SigningError('SIGNER_UNAVAILABLE', `signer '${signerId}' returned a malformed ${scheme} public key (expected ${length} bytes)`);
53
+ }
54
+ return copy;
55
+ }
56
+ /** `work`, or a retryable TIMEOUT once `deadline.timeoutMs` passes first. */
57
+ async function withinDeadline(work, deadline, signerId) {
58
+ const done = new AbortController();
59
+ // A late rejection must not surface as an unhandled one.
60
+ work.catch(() => undefined);
61
+ const expired = deadline.clock.sleep(deadline.timeoutMs, done.signal).then(() => {
62
+ throw new error_1.TimeoutError('TIMEOUT', `signer '${signerId}' did not provide its public key within lifecycle.signTimeoutMs`, { retryable: true });
63
+ });
64
+ expired.catch(() => undefined);
65
+ try {
66
+ return await Promise.race([work, expired]);
67
+ }
68
+ finally {
69
+ done.abort();
70
+ }
71
+ }
72
+ //# sourceMappingURL=guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guard.js","sourceRoot":"","sources":["../../../src/core/signing/guard.ts"],"names":[],"mappings":";;AA0BA,sCAWC;AAGD,sCAuBC;AAOD,0CA2BC;AAjGD,2CAOyB;AACzB,6CAAiD;AAUjD;;;;;GAKG;AAEH,4FAA4F;AAC5F,SAAgB,aAAa,CAC3B,KAAc,EACd,IAAwB,EACxB,OAAe,EACf,OAAsB;IAEtB,IAAI,IAAA,wBAAgB,EAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,OAAO,IAAI,oBAAY,CAAC,IAAI,EAAE,OAAO,EAAE;QACrC,KAAK,EAAE,IAAA,sBAAa,EAAC,KAAK,CAAC;QAC3B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC,CAAC;AACL,CAAC;AAED,2FAA2F;AAC3F,SAAgB,aAAa,CAC3B,QAAgB,EAChB,MAAc,EACd,OAAsB;IAEtB,IAAI,CAAC;QACH,MAAM,OAAO,GAAY,MAAM,CAAC,OAAO,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,EAAE,CAAC;YAC1E,OAAO,CAAC,GAAI,OAAoB,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,CACjB,KAAK,EACL,oBAAoB,EACpB,WAAW,QAAQ,iCAAiC,EACpD,OAAO,CACR,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,oBAAY,CACpB,oBAAoB,EACpB,WAAW,QAAQ,sCAAsC,EACzD,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAC3B,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,MAAc,EACd,MAAc,EACd,MAA0B,EAC1B,MAAc,EACd,QAAyB;IAEzB,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;QACnE,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC;IACjF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,aAAa,CACjB,KAAK,EACL,oBAAoB,EACpB,WAAW,QAAQ,2BAA2B,MAAM,aAAa,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,GAAG,YAAY,UAAU,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QACpC,MAAM,IAAI,oBAAY,CACpB,oBAAoB,EACpB,WAAW,QAAQ,0BAA0B,MAAM,yBAAyB,MAAM,SAAS,CAC5F,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6EAA6E;AAC7E,KAAK,UAAU,cAAc,CAC3B,IAAgB,EAChB,QAAwB,EACxB,QAAgB;IAEhB,MAAM,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;IACnC,yDAAyD;IACzD,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;QAC9E,MAAM,IAAI,oBAAY,CACpB,SAAS,EACT,WAAW,QAAQ,iEAAiE,EACpF,EAAE,SAAS,EAAE,IAAI,EAAE,CACpB,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC/B,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7C,CAAC;YAAS,CAAC;QACT,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;AACH,CAAC","sourcesContent":["import {\n SigningError,\n TimeoutError,\n isCryptoAioError,\n type CodesOf,\n type CryptoAioError,\n type ErrorContext,\n} from '../errors/error';\nimport { sanitizeError } from '../secret/redact';\nimport type { Clock } from '../util/clock';\nimport type { KeyRef, Signer } from './types';\n\n/** How long a signer may take to hand out a public key (`lifecycle.signTimeoutMs`). */\nexport interface SignerDeadline {\n readonly clock: Clock;\n readonly timeoutMs: number;\n}\n\n/*\n * Guards for every call into signer code (local, callback, KMS, HSM, MPC or user-written).\n * Custody backends put URLs and credentials in their error messages, so a failure that is\n * not already a CryptoAioError only ever surfaces as a sanitized cause. Never call a\n * `Signer` around these guards: a direct call can leak a custodian's message.\n */\n\n/** A CryptoAioError passes through; anything else becomes `code` with a sanitized cause. */\nexport function signerFailure(\n error: unknown,\n code: CodesOf<'signing'>,\n message: string,\n context?: ErrorContext,\n): CryptoAioError {\n if (isCryptoAioError(error)) return error;\n return new SigningError(code, message, {\n cause: sanitizeError(error),\n ...(context ? { context } : {}),\n });\n}\n\n/** The signer's declared schemes, read once and copied; SIGNER_UNAVAILABLE if unusable. */\nexport function signerSchemes(\n signerId: string,\n signer: Signer,\n context?: ErrorContext,\n): readonly string[] {\n try {\n const schemes: unknown = signer.schemes;\n if (Array.isArray(schemes) && schemes.every((s) => typeof s === 'string')) {\n return [...(schemes as string[])];\n }\n } catch (error) {\n throw signerFailure(\n error,\n 'SIGNER_UNAVAILABLE',\n `signer '${signerId}' has an unreadable scheme list`,\n context,\n );\n }\n throw new SigningError(\n 'SIGNER_UNAVAILABLE',\n `signer '${signerId}' does not declare a list of schemes`,\n context ? { context } : {},\n );\n}\n\n/**\n * The signer's public key for `scheme`, checked against `length` and copied. With a\n * `deadline`, a signer that does not answer in time fails with a retryable TIMEOUT\n * (its late answer is ignored), so a hung custody backend can never block its caller.\n */\nexport async function signerPublicKey(\n signerId: string,\n signer: Signer,\n scheme: string,\n keyRef: KeyRef | undefined,\n length: number,\n deadline?: SignerDeadline,\n): Promise<Uint8Array> {\n let key: unknown;\n try {\n const asked = Promise.resolve(signer.getPublicKey(scheme, keyRef));\n key = deadline ? await withinDeadline(asked, deadline, signerId) : await asked;\n } catch (error) {\n throw signerFailure(\n error,\n 'SIGNER_UNAVAILABLE',\n `signer '${signerId}' could not provide its ${scheme} public key`,\n );\n }\n const copy = key instanceof Uint8Array ? new Uint8Array(key) : undefined;\n if (!copy || copy.length !== length) {\n throw new SigningError(\n 'SIGNER_UNAVAILABLE',\n `signer '${signerId}' returned a malformed ${scheme} public key (expected ${length} bytes)`,\n );\n }\n return copy;\n}\n\n/** `work`, or a retryable TIMEOUT once `deadline.timeoutMs` passes first. */\nasync function withinDeadline<T>(\n work: Promise<T>,\n deadline: SignerDeadline,\n signerId: string,\n): Promise<T> {\n const done = new AbortController();\n // A late rejection must not surface as an unhandled one.\n work.catch(() => undefined);\n const expired = deadline.clock.sleep(deadline.timeoutMs, done.signal).then(() => {\n throw new TimeoutError(\n 'TIMEOUT',\n `signer '${signerId}' did not provide its public key within lifecycle.signTimeoutMs`,\n { retryable: true },\n );\n });\n expired.catch(() => undefined);\n try {\n return await Promise.race([work, expired]);\n } finally {\n done.abort();\n }\n}\n"]}
@@ -0,0 +1,36 @@
1
+ import { HDKey } from '@scure/bip32';
2
+ export interface PathSegment {
3
+ readonly index: number;
4
+ readonly hardened: boolean;
5
+ }
6
+ export interface ExtendedKeyVersions {
7
+ readonly private: number;
8
+ readonly public: number;
9
+ }
10
+ export declare function mnemonicToSeed(phrase: string, passphrase?: string): Uint8Array;
11
+ export declare function parsePath(path: string): PathSegment[];
12
+ export declare function deriveSecp256k1(seed: Uint8Array, path: string): Uint8Array;
13
+ /** SLIP-10 ed25519 derivation (hardened segments only). */
14
+ export declare function deriveEd25519(seed: Uint8Array, path: string): Uint8Array;
15
+ /**
16
+ * Reads an extended PUBLIC key with `versions` (default: by its `xpub`/`tpub` prefix).
17
+ * A private key (by its SLIP-0132 prefix, or by its key data), an unreadable or non-string
18
+ * one, or one of an unknown format is `CONFIG_INVALID` with a fixed text: no message or
19
+ * `cause` repeats any part of the input, which may be a mis-pasted secret (a mnemonic, a WIF
20
+ * or hex key). Returns the node and the version pair it was read with, whose `public` is the
21
+ * key's own version.
22
+ */
23
+ export declare function parseExtendedPublicKey(xpub: string, versions?: ExtendedKeyVersions): {
24
+ readonly node: HDKey;
25
+ readonly versions: ExtendedKeyVersions;
26
+ };
27
+ /**
28
+ * Non-hardened child public key (33-byte compressed) from an extended PUBLIC key. With
29
+ * `network`, a key whose SLIP-0132 version belongs to the other network class (a mainnet
30
+ * `xpub`/`zpub` on a test network, a `tpub`/`vpub` on mainnet) is `CONFIG_INVALID`; a
31
+ * version outside the Bitcoin SLIP-0132 table has no known class and is not checked. Pass
32
+ * it for chains whose extended keys carry a network class (UTXO chains).
33
+ */
34
+ export declare function deriveXpubChild(xpub: string, relativePath: string, versions?: ExtendedKeyVersions, network?: {
35
+ readonly testnet: boolean;
36
+ }): Uint8Array;
@@ -0,0 +1,167 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mnemonicToSeed = mnemonicToSeed;
4
+ exports.parsePath = parsePath;
5
+ exports.deriveSecp256k1 = deriveSecp256k1;
6
+ exports.deriveEd25519 = deriveEd25519;
7
+ exports.parseExtendedPublicKey = parseExtendedPublicKey;
8
+ exports.deriveXpubChild = deriveXpubChild;
9
+ const hmac_1 = require("@noble/hashes/hmac");
10
+ const sha512_1 = require("@noble/hashes/sha512");
11
+ const utils_1 = require("@noble/hashes/utils");
12
+ const bip32_1 = require("@scure/bip32");
13
+ const bip39_1 = require("@scure/bip39");
14
+ const english_1 = require("@scure/bip39/wordlists/english");
15
+ const error_1 = require("../errors/error");
16
+ const KNOWN_VERSIONS = {
17
+ xpub: { private: 0x0488ade4, public: 0x0488b21e },
18
+ tpub: { private: 0x04358394, public: 0x043587cf },
19
+ };
20
+ /**
21
+ * SLIP-0132: whether each registered Bitcoin extended PUBLIC key version belongs to a
22
+ * test network (`tpub`, `upub`, `vpub`, `Upub`, `Vpub`) or to mainnet (`xpub`, `ypub`,
23
+ * `zpub`, `Ypub`, `Zpub`).
24
+ */
25
+ const TESTNET_VERSION = new Map([
26
+ [0x0488b21e, false], // xpub
27
+ [0x049d7cb2, false], // ypub
28
+ [0x04b24746, false], // zpub
29
+ [0x0295b43f, false], // Ypub
30
+ [0x02aa7ed3, false], // Zpub
31
+ [0x043587cf, true], // tpub
32
+ [0x044a5262, true], // upub
33
+ [0x045f1cf6, true], // vpub
34
+ [0x024289ef, true], // Upub
35
+ [0x02575483, true], // Vpub
36
+ ]);
37
+ function mnemonicToSeed(phrase, passphrase = '') {
38
+ const normalized = phrase.trim().normalize('NFKD').split(/\s+/).join(' ');
39
+ if (!(0, bip39_1.validateMnemonic)(normalized, english_1.wordlist)) {
40
+ throw new error_1.ConfigError('CONFIG_INVALID', 'invalid BIP39 mnemonic (checksum or word list mismatch)');
41
+ }
42
+ return (0, bip39_1.mnemonicToSeedSync)(normalized, passphrase);
43
+ }
44
+ function parsePath(path) {
45
+ const parts = path.trim().split('/');
46
+ if (parts[0] !== 'm') {
47
+ throw new error_1.ConfigError('CONFIG_INVALID', `derivation path must start with 'm': ${path}`);
48
+ }
49
+ return parts.slice(1).map((part) => {
50
+ const hardened = /['hH]$/.test(part);
51
+ const digits = hardened ? part.slice(0, -1) : part;
52
+ if (!/^\d+$/.test(digits))
53
+ throw new error_1.ConfigError('CONFIG_INVALID', `invalid path segment '${part}' in ${path}`);
54
+ const index = Number(digits);
55
+ if (index >= 2 ** 31)
56
+ throw new error_1.ConfigError('CONFIG_INVALID', `path index out of range in ${path}`);
57
+ return { index, hardened };
58
+ });
59
+ }
60
+ function deriveSecp256k1(seed, path) {
61
+ const segments = parsePath(path);
62
+ let node = bip32_1.HDKey.fromMasterSeed(seed);
63
+ try {
64
+ for (const segment of segments) {
65
+ node = node.deriveChild(segment.hardened ? segment.index + bip32_1.HARDENED_OFFSET : segment.index);
66
+ }
67
+ }
68
+ catch (cause) {
69
+ throw new error_1.ConfigError('CONFIG_INVALID', `could not derive a private key at ${path}`, {
70
+ cause,
71
+ });
72
+ }
73
+ const key = node.privateKey;
74
+ if (!key)
75
+ throw new error_1.ConfigError('CONFIG_INVALID', `could not derive a private key at ${path}`);
76
+ return key;
77
+ }
78
+ /** SLIP-10 ed25519 derivation (hardened segments only). */
79
+ function deriveEd25519(seed, path) {
80
+ let digest = (0, hmac_1.hmac)(sha512_1.sha512, (0, utils_1.utf8ToBytes)('ed25519 seed'), seed);
81
+ let key = digest.slice(0, 32);
82
+ let chainCode = digest.slice(32);
83
+ for (const segment of parsePath(path)) {
84
+ if (!segment.hardened) {
85
+ throw new error_1.ConfigError('CONFIG_INVALID', `ed25519 (SLIP-10) supports hardened derivation only: ${path}`);
86
+ }
87
+ const data = new Uint8Array(37);
88
+ data.set(key, 1);
89
+ new DataView(data.buffer).setUint32(33, (segment.index | 0x80000000) >>> 0);
90
+ digest = (0, hmac_1.hmac)(sha512_1.sha512, chainCode, data);
91
+ key = digest.slice(0, 32);
92
+ chainCode = digest.slice(32);
93
+ }
94
+ return key;
95
+ }
96
+ /** SLIP-0132: the prefixes of extended PRIVATE keys. */
97
+ const PRIVATE_PREFIXES = new Set([
98
+ 'xprv',
99
+ 'yprv',
100
+ 'zprv',
101
+ 'Yprv',
102
+ 'Zprv',
103
+ 'tprv',
104
+ 'uprv',
105
+ 'vprv',
106
+ 'Uprv',
107
+ 'Vprv',
108
+ ]);
109
+ /**
110
+ * Reads an extended PUBLIC key with `versions` (default: by its `xpub`/`tpub` prefix).
111
+ * A private key (by its SLIP-0132 prefix, or by its key data), an unreadable or non-string
112
+ * one, or one of an unknown format is `CONFIG_INVALID` with a fixed text: no message or
113
+ * `cause` repeats any part of the input, which may be a mis-pasted secret (a mnemonic, a WIF
114
+ * or hex key). Returns the node and the version pair it was read with, whose `public` is the
115
+ * key's own version.
116
+ */
117
+ function parseExtendedPublicKey(xpub, versions) {
118
+ if (typeof xpub !== 'string') {
119
+ throw new error_1.ConfigError('CONFIG_INVALID', 'an extended public key must be a string');
120
+ }
121
+ const prefix = xpub.slice(0, 4);
122
+ const privateKey = () => new error_1.ConfigError('CONFIG_INVALID', 'expected an extended PUBLIC key; never configure private extended keys');
123
+ if (versions === undefined && PRIVATE_PREFIXES.has(prefix))
124
+ throw privateKey();
125
+ const selected = versions ?? KNOWN_VERSIONS[prefix];
126
+ if (!selected) {
127
+ throw new error_1.ConfigError('CONFIG_INVALID', 'unsupported extended key format; pass xpubVersions for this format');
128
+ }
129
+ let node;
130
+ try {
131
+ node = bip32_1.HDKey.fromExtendedKey(xpub, selected);
132
+ }
133
+ catch {
134
+ // The library's error can name a character of the input, so it is not kept.
135
+ throw new error_1.ConfigError('CONFIG_INVALID', 'invalid extended public key');
136
+ }
137
+ if (node.privateKey)
138
+ throw privateKey();
139
+ return { node, versions: selected };
140
+ }
141
+ /**
142
+ * Non-hardened child public key (33-byte compressed) from an extended PUBLIC key. With
143
+ * `network`, a key whose SLIP-0132 version belongs to the other network class (a mainnet
144
+ * `xpub`/`zpub` on a test network, a `tpub`/`vpub` on mainnet) is `CONFIG_INVALID`; a
145
+ * version outside the Bitcoin SLIP-0132 table has no known class and is not checked. Pass
146
+ * it for chains whose extended keys carry a network class (UTXO chains).
147
+ */
148
+ function deriveXpubChild(xpub, relativePath, versions, network) {
149
+ const { node, versions: selected } = parseExtendedPublicKey(xpub, versions);
150
+ // The key parsed with `selected`, so its version is `selected.public`.
151
+ const testnet = TESTNET_VERSION.get(selected.public);
152
+ if (network && testnet !== undefined && testnet !== network.testnet) {
153
+ throw new error_1.ConfigError('CONFIG_INVALID', `the extended public key is for ${testnet ? 'a test network' : 'mainnet'}, but the network is ${network.testnet ? 'a test network' : 'mainnet'}`);
154
+ }
155
+ const path = relativePath.startsWith('m') ? relativePath : `m/${relativePath}`;
156
+ let child;
157
+ try {
158
+ child = node.derive(path);
159
+ }
160
+ catch (cause) {
161
+ throw new error_1.ConfigError('CONFIG_INVALID', `cannot derive '${relativePath}' from an xpub (hardened segments need the private key)`, { cause });
162
+ }
163
+ if (!child.publicKey)
164
+ throw new error_1.ConfigError('CONFIG_INVALID', `no public key at '${relativePath}'`);
165
+ return child.publicKey;
166
+ }
167
+ //# sourceMappingURL=hd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hd.js","sourceRoot":"","sources":["../../../src/core/signing/hd.ts"],"names":[],"mappings":"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","sourcesContent":["import { hmac } from '@noble/hashes/hmac';\nimport { sha512 } from '@noble/hashes/sha512';\nimport { utf8ToBytes } from '@noble/hashes/utils';\nimport { HARDENED_OFFSET, HDKey } from '@scure/bip32';\nimport { mnemonicToSeedSync, validateMnemonic } from '@scure/bip39';\nimport { wordlist } from '@scure/bip39/wordlists/english';\nimport { ConfigError } from '../errors/error';\n\nexport interface PathSegment {\n readonly index: number;\n readonly hardened: boolean;\n}\n\nexport interface ExtendedKeyVersions {\n readonly private: number;\n readonly public: number;\n}\n\nconst KNOWN_VERSIONS: Readonly<Record<string, ExtendedKeyVersions>> = {\n xpub: { private: 0x0488ade4, public: 0x0488b21e },\n tpub: { private: 0x04358394, public: 0x043587cf },\n};\n\n/**\n * SLIP-0132: whether each registered Bitcoin extended PUBLIC key version belongs to a\n * test network (`tpub`, `upub`, `vpub`, `Upub`, `Vpub`) or to mainnet (`xpub`, `ypub`,\n * `zpub`, `Ypub`, `Zpub`).\n */\nconst TESTNET_VERSION: ReadonlyMap<number, boolean> = new Map([\n [0x0488b21e, false], // xpub\n [0x049d7cb2, false], // ypub\n [0x04b24746, false], // zpub\n [0x0295b43f, false], // Ypub\n [0x02aa7ed3, false], // Zpub\n [0x043587cf, true], // tpub\n [0x044a5262, true], // upub\n [0x045f1cf6, true], // vpub\n [0x024289ef, true], // Upub\n [0x02575483, true], // Vpub\n]);\n\nexport function mnemonicToSeed(phrase: string, passphrase = ''): Uint8Array {\n const normalized = phrase.trim().normalize('NFKD').split(/\\s+/).join(' ');\n if (!validateMnemonic(normalized, wordlist)) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n 'invalid BIP39 mnemonic (checksum or word list mismatch)',\n );\n }\n return mnemonicToSeedSync(normalized, passphrase);\n}\n\nexport function parsePath(path: string): PathSegment[] {\n const parts = path.trim().split('/');\n if (parts[0] !== 'm') {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `derivation path must start with 'm': ${path}`,\n );\n }\n return parts.slice(1).map((part) => {\n const hardened = /['hH]$/.test(part);\n const digits = hardened ? part.slice(0, -1) : part;\n if (!/^\\d+$/.test(digits))\n throw new ConfigError(\n 'CONFIG_INVALID',\n `invalid path segment '${part}' in ${path}`,\n );\n const index = Number(digits);\n if (index >= 2 ** 31)\n throw new ConfigError('CONFIG_INVALID', `path index out of range in ${path}`);\n return { index, hardened };\n });\n}\n\nexport function deriveSecp256k1(seed: Uint8Array, path: string): Uint8Array {\n const segments = parsePath(path);\n let node = HDKey.fromMasterSeed(seed);\n try {\n for (const segment of segments) {\n node = node.deriveChild(\n segment.hardened ? segment.index + HARDENED_OFFSET : segment.index,\n );\n }\n } catch (cause) {\n throw new ConfigError('CONFIG_INVALID', `could not derive a private key at ${path}`, {\n cause,\n });\n }\n const key = node.privateKey;\n if (!key)\n throw new ConfigError('CONFIG_INVALID', `could not derive a private key at ${path}`);\n return key;\n}\n\n/** SLIP-10 ed25519 derivation (hardened segments only). */\nexport function deriveEd25519(seed: Uint8Array, path: string): Uint8Array {\n let digest = hmac(sha512, utf8ToBytes('ed25519 seed'), seed);\n let key = digest.slice(0, 32);\n let chainCode = digest.slice(32);\n for (const segment of parsePath(path)) {\n if (!segment.hardened) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `ed25519 (SLIP-10) supports hardened derivation only: ${path}`,\n );\n }\n const data = new Uint8Array(37);\n data.set(key, 1);\n new DataView(data.buffer).setUint32(33, (segment.index | 0x80000000) >>> 0);\n digest = hmac(sha512, chainCode, data);\n key = digest.slice(0, 32);\n chainCode = digest.slice(32);\n }\n return key;\n}\n\n/** SLIP-0132: the prefixes of extended PRIVATE keys. */\nconst PRIVATE_PREFIXES: ReadonlySet<string> = new Set([\n 'xprv',\n 'yprv',\n 'zprv',\n 'Yprv',\n 'Zprv',\n 'tprv',\n 'uprv',\n 'vprv',\n 'Uprv',\n 'Vprv',\n]);\n\n/**\n * Reads an extended PUBLIC key with `versions` (default: by its `xpub`/`tpub` prefix).\n * A private key (by its SLIP-0132 prefix, or by its key data), an unreadable or non-string\n * one, or one of an unknown format is `CONFIG_INVALID` with a fixed text: no message or\n * `cause` repeats any part of the input, which may be a mis-pasted secret (a mnemonic, a WIF\n * or hex key). Returns the node and the version pair it was read with, whose `public` is the\n * key's own version.\n */\nexport function parseExtendedPublicKey(\n xpub: string,\n versions?: ExtendedKeyVersions,\n): { readonly node: HDKey; readonly versions: ExtendedKeyVersions } {\n if (typeof xpub !== 'string') {\n throw new ConfigError('CONFIG_INVALID', 'an extended public key must be a string');\n }\n const prefix = xpub.slice(0, 4);\n const privateKey = () =>\n new ConfigError(\n 'CONFIG_INVALID',\n 'expected an extended PUBLIC key; never configure private extended keys',\n );\n if (versions === undefined && PRIVATE_PREFIXES.has(prefix)) throw privateKey();\n const selected = versions ?? KNOWN_VERSIONS[prefix];\n if (!selected) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n 'unsupported extended key format; pass xpubVersions for this format',\n );\n }\n let node: HDKey;\n try {\n node = HDKey.fromExtendedKey(xpub, selected);\n } catch {\n // The library's error can name a character of the input, so it is not kept.\n throw new ConfigError('CONFIG_INVALID', 'invalid extended public key');\n }\n if (node.privateKey) throw privateKey();\n return { node, versions: selected };\n}\n\n/**\n * Non-hardened child public key (33-byte compressed) from an extended PUBLIC key. With\n * `network`, a key whose SLIP-0132 version belongs to the other network class (a mainnet\n * `xpub`/`zpub` on a test network, a `tpub`/`vpub` on mainnet) is `CONFIG_INVALID`; a\n * version outside the Bitcoin SLIP-0132 table has no known class and is not checked. Pass\n * it for chains whose extended keys carry a network class (UTXO chains).\n */\nexport function deriveXpubChild(\n xpub: string,\n relativePath: string,\n versions?: ExtendedKeyVersions,\n network?: { readonly testnet: boolean },\n): Uint8Array {\n const { node, versions: selected } = parseExtendedPublicKey(xpub, versions);\n // The key parsed with `selected`, so its version is `selected.public`.\n const testnet = TESTNET_VERSION.get(selected.public);\n if (network && testnet !== undefined && testnet !== network.testnet) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `the extended public key is for ${testnet ? 'a test network' : 'mainnet'}, but the network is ${network.testnet ? 'a test network' : 'mainnet'}`,\n );\n }\n const path = relativePath.startsWith('m') ? relativePath : `m/${relativePath}`;\n let child: HDKey;\n try {\n child = node.derive(path);\n } catch (cause) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `cannot derive '${relativePath}' from an xpub (hardened segments need the private key)`,\n { cause },\n );\n }\n if (!child.publicKey)\n throw new ConfigError('CONFIG_INVALID', `no public key at '${relativePath}'`);\n return child.publicKey;\n}\n"]}
@@ -0,0 +1,48 @@
1
+ import { type Secret } from '../secret/secret';
2
+ import type { KeyRef, Signer, SigningContext, SigningRequest, SigningResult } from './types';
3
+ export type Curve = 'secp256k1' | 'ed25519';
4
+ export type KeySource = (curve: Curve, keyRef: KeyRef | undefined) => Uint8Array;
5
+ export declare function curveOfScheme(scheme: string): Curve | undefined;
6
+ /** In-process signer. Keys live only in private fields and are never serialized. */
7
+ export declare class LocalSigner implements Signer {
8
+ #private;
9
+ readonly id: string;
10
+ readonly schemes: readonly string[];
11
+ constructor(id: string, curves: readonly Curve[], keys: KeySource, exportable: boolean);
12
+ getPublicKey(scheme: string, keyRef?: KeyRef): Promise<Uint8Array>;
13
+ sign(requests: readonly SigningRequest[], _ctx: SigningContext): Promise<SigningResult>;
14
+ exportKey(scheme: string, keyRef?: KeyRef): Promise<Secret<Uint8Array>>;
15
+ toJSON(): {
16
+ id: string;
17
+ schemes: readonly string[];
18
+ };
19
+ }
20
+ /** BIP341 key-path tweak: negate for odd Y, then add the tweak modulo n. */
21
+ export declare function tweakPrivateKey(key: Uint8Array, tweak: Uint8Array): Uint8Array;
22
+ export interface LocalSignerOptions {
23
+ readonly id?: string;
24
+ readonly secp256k1?: Secret<string | Uint8Array>;
25
+ readonly ed25519?: Secret<string | Uint8Array>;
26
+ readonly exportable?: boolean;
27
+ }
28
+ export interface GenerateOptions {
29
+ readonly id?: string;
30
+ readonly curves: readonly Curve[];
31
+ readonly exportable?: boolean;
32
+ }
33
+ export interface GeneratedSigner {
34
+ readonly signer: Signer;
35
+ /** secp256k1: 33-byte compressed; ed25519: 32 bytes. */
36
+ readonly publicKeys: Readonly<Partial<Record<Curve, Uint8Array>>>;
37
+ }
38
+ export declare function localSigner(options: LocalSignerOptions): Signer;
39
+ export declare namespace localSigner {
40
+ var generate: (options: GenerateOptions) => GeneratedSigner;
41
+ var fromMnemonic: (phrase: Secret<string>, options?: MnemonicSignerOptions) => Signer;
42
+ }
43
+ export interface MnemonicSignerOptions {
44
+ readonly id?: string;
45
+ readonly passphrase?: Secret<string>;
46
+ readonly exportable?: boolean;
47
+ readonly curves?: readonly Curve[];
48
+ }