crypto-aio 0.0.3 → 0.2.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 (700) hide show
  1. package/CHANGELOG.md +167 -0
  2. package/README.md +163 -13
  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 +386 -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 +175 -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 +139 -0
  80. package/dist/adapters/evm/ethers-client.js.map +1 -0
  81. package/dist/adapters/evm/fees.d.ts +103 -0
  82. package/dist/adapters/evm/fees.js +277 -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 +12 -0
  86. package/dist/adapters/evm/index.js.map +1 -0
  87. package/dist/adapters/evm/network.d.ts +65 -0
  88. package/dist/adapters/evm/network.js +150 -0
  89. package/dist/adapters/evm/network.js.map +1 -0
  90. package/dist/adapters/evm/plugin.d.ts +35 -0
  91. package/dist/adapters/evm/plugin.js +150 -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 +370 -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 +83 -0
  103. package/dist/adapters/evm/reader.js +326 -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 +10 -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 +265 -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 +26 -0
  115. package/dist/adapters/evm/web3-client.js +176 -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 +556 -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 +77 -0
  133. package/dist/adapters/solana/fees.js +214 -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/message.d.ts +15 -0
  148. package/dist/adapters/solana/message.js +120 -0
  149. package/dist/adapters/solana/message.js.map +1 -0
  150. package/dist/adapters/solana/network.d.ts +24 -0
  151. package/dist/adapters/solana/network.js +95 -0
  152. package/dist/adapters/solana/network.js.map +1 -0
  153. package/dist/adapters/solana/plugin.d.ts +18 -0
  154. package/dist/adapters/solana/plugin.js +44 -0
  155. package/dist/adapters/solana/plugin.js.map +1 -0
  156. package/dist/adapters/solana/presets.d.ts +2 -0
  157. package/dist/adapters/solana/presets.js +77 -0
  158. package/dist/adapters/solana/presets.js.map +1 -0
  159. package/dist/adapters/solana/programs.d.ts +44 -0
  160. package/dist/adapters/solana/programs.js +159 -0
  161. package/dist/adapters/solana/programs.js.map +1 -0
  162. package/dist/adapters/solana/proofs.d.ts +56 -0
  163. package/dist/adapters/solana/proofs.js +540 -0
  164. package/dist/adapters/solana/proofs.js.map +1 -0
  165. package/dist/adapters/solana/reader.d.ts +82 -0
  166. package/dist/adapters/solana/reader.js +326 -0
  167. package/dist/adapters/solana/reader.js.map +1 -0
  168. package/dist/adapters/solana/rpc.d.ts +102 -0
  169. package/dist/adapters/solana/rpc.js +301 -0
  170. package/dist/adapters/solana/rpc.js.map +1 -0
  171. package/dist/adapters/solana/tokens.d.ts +7 -0
  172. package/dist/adapters/solana/tokens.js +19 -0
  173. package/dist/adapters/solana/tokens.js.map +1 -0
  174. package/dist/adapters/solana/types.d.ts +124 -0
  175. package/dist/{type/contract.js → adapters/solana/types.js} +1 -1
  176. package/dist/adapters/solana/types.js.map +1 -0
  177. package/dist/adapters/solana/web3.d.ts +5 -0
  178. package/dist/adapters/solana/web3.js +61 -0
  179. package/dist/adapters/solana/web3.js.map +1 -0
  180. package/dist/adapters/solana/wire.d.ts +62 -0
  181. package/dist/adapters/solana/wire.js +168 -0
  182. package/dist/adapters/solana/wire.js.map +1 -0
  183. package/dist/adapters/ton/address.d.ts +43 -0
  184. package/dist/adapters/ton/address.js +168 -0
  185. package/dist/adapters/ton/address.js.map +1 -0
  186. package/dist/adapters/ton/api.d.ts +344 -0
  187. package/dist/adapters/ton/api.js +942 -0
  188. package/dist/adapters/ton/api.js.map +1 -0
  189. package/dist/adapters/ton/builder.d.ts +18 -0
  190. package/dist/adapters/ton/builder.js +701 -0
  191. package/dist/adapters/ton/builder.js.map +1 -0
  192. package/dist/adapters/ton/chains.d.ts +16 -0
  193. package/dist/adapters/ton/chains.js +39 -0
  194. package/dist/adapters/ton/chains.js.map +1 -0
  195. package/dist/adapters/ton/decode.d.ts +43 -0
  196. package/dist/adapters/ton/decode.js +219 -0
  197. package/dist/adapters/ton/decode.js.map +1 -0
  198. package/dist/adapters/ton/driver.d.ts +10 -0
  199. package/dist/adapters/ton/driver.js +117 -0
  200. package/dist/adapters/ton/driver.js.map +1 -0
  201. package/dist/adapters/ton/errors.d.ts +36 -0
  202. package/dist/adapters/ton/errors.js +89 -0
  203. package/dist/adapters/ton/errors.js.map +1 -0
  204. package/dist/adapters/ton/fees.d.ts +28 -0
  205. package/dist/adapters/ton/fees.js +121 -0
  206. package/dist/adapters/ton/fees.js.map +1 -0
  207. package/dist/adapters/ton/index.d.ts +16 -0
  208. package/dist/adapters/ton/index.js +9 -0
  209. package/dist/adapters/ton/index.js.map +1 -0
  210. package/dist/adapters/ton/messages.d.ts +157 -0
  211. package/dist/adapters/ton/messages.js +397 -0
  212. package/dist/adapters/ton/messages.js.map +1 -0
  213. package/dist/adapters/ton/native-client.d.ts +10 -0
  214. package/dist/adapters/ton/native-client.js +47 -0
  215. package/dist/adapters/ton/native-client.js.map +1 -0
  216. package/dist/adapters/ton/network.d.ts +58 -0
  217. package/dist/adapters/ton/network.js +207 -0
  218. package/dist/adapters/ton/network.js.map +1 -0
  219. package/dist/adapters/ton/plugin.d.ts +24 -0
  220. package/dist/adapters/ton/plugin.js +57 -0
  221. package/dist/adapters/ton/plugin.js.map +1 -0
  222. package/dist/adapters/ton/presets.d.ts +6 -0
  223. package/dist/adapters/ton/presets.js +94 -0
  224. package/dist/adapters/ton/presets.js.map +1 -0
  225. package/dist/adapters/ton/proofs.d.ts +66 -0
  226. package/dist/adapters/ton/proofs.js +755 -0
  227. package/dist/adapters/ton/proofs.js.map +1 -0
  228. package/dist/adapters/ton/reader.d.ts +235 -0
  229. package/dist/adapters/ton/reader.js +976 -0
  230. package/dist/adapters/ton/reader.js.map +1 -0
  231. package/dist/adapters/ton/tokens.d.ts +10 -0
  232. package/dist/adapters/ton/tokens.js +27 -0
  233. package/dist/adapters/ton/tokens.js.map +1 -0
  234. package/dist/adapters/ton/trace.d.ts +74 -0
  235. package/dist/adapters/ton/trace.js +303 -0
  236. package/dist/adapters/ton/trace.js.map +1 -0
  237. package/dist/adapters/ton/types.d.ts +105 -0
  238. package/dist/{type/transact.js → adapters/ton/types.js} +1 -1
  239. package/dist/adapters/ton/types.js.map +1 -0
  240. package/dist/adapters/ton/wallets.d.ts +86 -0
  241. package/dist/adapters/ton/wallets.js +373 -0
  242. package/dist/adapters/ton/wallets.js.map +1 -0
  243. package/dist/adapters/tron/abi.d.ts +41 -0
  244. package/dist/adapters/tron/abi.js +112 -0
  245. package/dist/adapters/tron/abi.js.map +1 -0
  246. package/dist/adapters/tron/address.d.ts +20 -0
  247. package/dist/adapters/tron/address.js +110 -0
  248. package/dist/adapters/tron/address.js.map +1 -0
  249. package/dist/adapters/tron/builder.d.ts +12 -0
  250. package/dist/adapters/tron/builder.js +569 -0
  251. package/dist/adapters/tron/builder.js.map +1 -0
  252. package/dist/adapters/tron/chains.d.ts +12 -0
  253. package/dist/adapters/tron/chains.js +35 -0
  254. package/dist/adapters/tron/chains.js.map +1 -0
  255. package/dist/adapters/tron/codec.d.ts +10 -0
  256. package/dist/adapters/tron/codec.js +322 -0
  257. package/dist/adapters/tron/codec.js.map +1 -0
  258. package/dist/adapters/tron/decode.d.ts +52 -0
  259. package/dist/adapters/tron/decode.js +280 -0
  260. package/dist/adapters/tron/decode.js.map +1 -0
  261. package/dist/adapters/tron/driver.d.ts +12 -0
  262. package/dist/adapters/tron/driver.js +106 -0
  263. package/dist/adapters/tron/driver.js.map +1 -0
  264. package/dist/adapters/tron/errors.d.ts +74 -0
  265. package/dist/adapters/tron/errors.js +261 -0
  266. package/dist/adapters/tron/errors.js.map +1 -0
  267. package/dist/adapters/tron/fees.d.ts +49 -0
  268. package/dist/adapters/tron/fees.js +166 -0
  269. package/dist/adapters/tron/fees.js.map +1 -0
  270. package/dist/adapters/tron/http.d.ts +173 -0
  271. package/dist/adapters/tron/http.js +729 -0
  272. package/dist/adapters/tron/http.js.map +1 -0
  273. package/dist/adapters/tron/index.d.ts +16 -0
  274. package/dist/adapters/tron/index.js +15 -0
  275. package/dist/adapters/tron/index.js.map +1 -0
  276. package/dist/adapters/tron/network.d.ts +44 -0
  277. package/dist/adapters/tron/network.js +163 -0
  278. package/dist/adapters/tron/network.js.map +1 -0
  279. package/dist/adapters/tron/plugin.d.ts +17 -0
  280. package/dist/adapters/tron/plugin.js +39 -0
  281. package/dist/adapters/tron/plugin.js.map +1 -0
  282. package/dist/adapters/tron/presets.d.ts +5 -0
  283. package/dist/adapters/tron/presets.js +68 -0
  284. package/dist/adapters/tron/presets.js.map +1 -0
  285. package/dist/adapters/tron/proofs.d.ts +80 -0
  286. package/dist/adapters/tron/proofs.js +371 -0
  287. package/dist/adapters/tron/proofs.js.map +1 -0
  288. package/dist/adapters/tron/protobuf.d.ts +36 -0
  289. package/dist/adapters/tron/protobuf.js +90 -0
  290. package/dist/adapters/tron/protobuf.js.map +1 -0
  291. package/dist/adapters/tron/reader.d.ts +57 -0
  292. package/dist/adapters/tron/reader.js +220 -0
  293. package/dist/adapters/tron/reader.js.map +1 -0
  294. package/dist/adapters/tron/tokens.d.ts +9 -0
  295. package/dist/adapters/tron/tokens.js +14 -0
  296. package/dist/adapters/tron/tokens.js.map +1 -0
  297. package/dist/adapters/tron/types.d.ts +166 -0
  298. package/dist/adapters/tron/types.js +3 -0
  299. package/dist/adapters/tron/types.js.map +1 -0
  300. package/dist/adapters/utxo/address.d.ts +51 -0
  301. package/dist/adapters/utxo/address.js +341 -0
  302. package/dist/adapters/utxo/address.js.map +1 -0
  303. package/dist/adapters/utxo/builder.d.ts +35 -0
  304. package/dist/adapters/utxo/builder.js +380 -0
  305. package/dist/adapters/utxo/builder.js.map +1 -0
  306. package/dist/adapters/utxo/chains.d.ts +17 -0
  307. package/dist/adapters/utxo/chains.js +100 -0
  308. package/dist/adapters/utxo/chains.js.map +1 -0
  309. package/dist/adapters/utxo/codec.d.ts +120 -0
  310. package/dist/adapters/utxo/codec.js +408 -0
  311. package/dist/adapters/utxo/codec.js.map +1 -0
  312. package/dist/adapters/utxo/coinselect.d.ts +48 -0
  313. package/dist/adapters/utxo/coinselect.js +131 -0
  314. package/dist/adapters/utxo/coinselect.js.map +1 -0
  315. package/dist/adapters/utxo/context.d.ts +63 -0
  316. package/dist/adapters/utxo/context.js +125 -0
  317. package/dist/adapters/utxo/context.js.map +1 -0
  318. package/dist/adapters/utxo/decode.d.ts +22 -0
  319. package/dist/adapters/utxo/decode.js +121 -0
  320. package/dist/adapters/utxo/decode.js.map +1 -0
  321. package/dist/adapters/utxo/driver.d.ts +16 -0
  322. package/dist/adapters/utxo/driver.js +79 -0
  323. package/dist/adapters/utxo/driver.js.map +1 -0
  324. package/dist/adapters/utxo/ecc.d.ts +9 -0
  325. package/dist/adapters/utxo/ecc.js +26 -0
  326. package/dist/adapters/utxo/ecc.js.map +1 -0
  327. package/dist/adapters/utxo/errors.d.ts +52 -0
  328. package/dist/adapters/utxo/errors.js +191 -0
  329. package/dist/adapters/utxo/errors.js.map +1 -0
  330. package/dist/adapters/utxo/esplora.d.ts +100 -0
  331. package/dist/adapters/utxo/esplora.js +498 -0
  332. package/dist/adapters/utxo/esplora.js.map +1 -0
  333. package/dist/adapters/utxo/fees.d.ts +41 -0
  334. package/dist/adapters/utxo/fees.js +125 -0
  335. package/dist/adapters/utxo/fees.js.map +1 -0
  336. package/dist/adapters/utxo/index.d.ts +17 -0
  337. package/dist/adapters/utxo/index.js +8 -0
  338. package/dist/adapters/utxo/index.js.map +1 -0
  339. package/dist/adapters/utxo/network.d.ts +50 -0
  340. package/dist/adapters/utxo/network.js +165 -0
  341. package/dist/adapters/utxo/network.js.map +1 -0
  342. package/dist/adapters/utxo/plugin.d.ts +17 -0
  343. package/dist/adapters/utxo/plugin.js +41 -0
  344. package/dist/adapters/utxo/plugin.js.map +1 -0
  345. package/dist/adapters/utxo/presets.d.ts +12 -0
  346. package/dist/adapters/utxo/presets.js +47 -0
  347. package/dist/adapters/utxo/presets.js.map +1 -0
  348. package/dist/adapters/utxo/preview.d.ts +3 -0
  349. package/dist/adapters/utxo/preview.js +65 -0
  350. package/dist/adapters/utxo/preview.js.map +1 -0
  351. package/dist/adapters/utxo/proofs.d.ts +66 -0
  352. package/dist/adapters/utxo/proofs.js +469 -0
  353. package/dist/adapters/utxo/proofs.js.map +1 -0
  354. package/dist/adapters/utxo/rawblock.d.ts +46 -0
  355. package/dist/adapters/utxo/rawblock.js +159 -0
  356. package/dist/adapters/utxo/rawblock.js.map +1 -0
  357. package/dist/adapters/utxo/rawtx.d.ts +73 -0
  358. package/dist/adapters/utxo/rawtx.js +264 -0
  359. package/dist/adapters/utxo/rawtx.js.map +1 -0
  360. package/dist/adapters/utxo/reader.d.ts +36 -0
  361. package/dist/adapters/utxo/reader.js +265 -0
  362. package/dist/adapters/utxo/reader.js.map +1 -0
  363. package/dist/adapters/utxo/sdk.d.ts +18 -0
  364. package/dist/adapters/utxo/sdk.js +17 -0
  365. package/dist/adapters/utxo/sdk.js.map +1 -0
  366. package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
  367. package/dist/adapters/utxo/signed-psbt.js +428 -0
  368. package/dist/adapters/utxo/signed-psbt.js.map +1 -0
  369. package/dist/adapters/utxo/spend.d.ts +59 -0
  370. package/dist/adapters/utxo/spend.js +230 -0
  371. package/dist/adapters/utxo/spend.js.map +1 -0
  372. package/dist/adapters/utxo/types.d.ts +167 -0
  373. package/dist/adapters/utxo/types.js +3 -0
  374. package/dist/adapters/utxo/types.js.map +1 -0
  375. package/dist/core/assets/service.d.ts +18 -0
  376. package/dist/core/assets/service.js +69 -0
  377. package/dist/core/assets/service.js.map +1 -0
  378. package/dist/core/blockchain/default-ref.d.ts +4 -0
  379. package/dist/core/blockchain/default-ref.js +16 -0
  380. package/dist/core/blockchain/default-ref.js.map +1 -0
  381. package/dist/core/blockchain/handle.d.ts +179 -0
  382. package/dist/core/blockchain/handle.js +579 -0
  383. package/dist/core/blockchain/handle.js.map +1 -0
  384. package/dist/core/blockchain/internal.d.ts +19 -0
  385. package/dist/core/blockchain/internal.js +16 -0
  386. package/dist/core/blockchain/internal.js.map +1 -0
  387. package/dist/core/blockchain/mapping.d.ts +22 -0
  388. package/dist/core/blockchain/mapping.js +136 -0
  389. package/dist/core/blockchain/mapping.js.map +1 -0
  390. package/dist/core/config/env.d.ts +8 -0
  391. package/dist/core/config/env.js +60 -0
  392. package/dist/core/config/env.js.map +1 -0
  393. package/dist/core/config/merge.d.ts +26 -0
  394. package/dist/core/config/merge.js +144 -0
  395. package/dist/core/config/merge.js.map +1 -0
  396. package/dist/core/config/resolve.d.ts +12 -0
  397. package/dist/core/config/resolve.js +251 -0
  398. package/dist/core/config/resolve.js.map +1 -0
  399. package/dist/core/config/types.d.ts +180 -0
  400. package/dist/core/config/types.js +3 -0
  401. package/dist/core/config/types.js.map +1 -0
  402. package/dist/core/container/builtins.d.ts +4 -0
  403. package/dist/core/container/builtins.js +13 -0
  404. package/dist/core/container/builtins.js.map +1 -0
  405. package/dist/core/container/container.d.ts +62 -0
  406. package/dist/core/container/container.js +500 -0
  407. package/dist/core/container/container.js.map +1 -0
  408. package/dist/core/container/default.d.ts +15 -0
  409. package/dist/core/container/default.js +70 -0
  410. package/dist/core/container/default.js.map +1 -0
  411. package/dist/core/container/internals.d.ts +54 -0
  412. package/dist/core/container/internals.js +21 -0
  413. package/dist/core/container/internals.js.map +1 -0
  414. package/dist/core/container/pool.d.ts +27 -0
  415. package/dist/core/container/pool.js +77 -0
  416. package/dist/core/container/pool.js.map +1 -0
  417. package/dist/core/driver/types.d.ts +379 -0
  418. package/dist/core/driver/types.js +3 -0
  419. package/dist/core/driver/types.js.map +1 -0
  420. package/dist/core/errors/codes.d.ts +163 -0
  421. package/dist/core/errors/codes.js +53 -0
  422. package/dist/core/errors/codes.js.map +1 -0
  423. package/dist/core/errors/error.d.ts +66 -0
  424. package/dist/core/errors/error.js +129 -0
  425. package/dist/core/errors/error.js.map +1 -0
  426. package/dist/core/events/bus.d.ts +12 -0
  427. package/dist/core/events/bus.js +46 -0
  428. package/dist/core/events/bus.js.map +1 -0
  429. package/dist/core/events/logger.d.ts +13 -0
  430. package/dist/core/events/logger.js +42 -0
  431. package/dist/core/events/logger.js.map +1 -0
  432. package/dist/core/events/types.d.ts +131 -0
  433. package/dist/core/events/types.js +3 -0
  434. package/dist/core/events/types.js.map +1 -0
  435. package/dist/core/lifecycle/engine-rules.d.ts +106 -0
  436. package/dist/core/lifecycle/engine-rules.js +267 -0
  437. package/dist/core/lifecycle/engine-rules.js.map +1 -0
  438. package/dist/core/lifecycle/engine.d.ts +502 -0
  439. package/dist/core/lifecycle/engine.js +1750 -0
  440. package/dist/core/lifecycle/engine.js.map +1 -0
  441. package/dist/core/lifecycle/evaluate.d.ts +19 -0
  442. package/dist/core/lifecycle/evaluate.js +77 -0
  443. package/dist/core/lifecycle/evaluate.js.map +1 -0
  444. package/dist/core/lifecycle/intent.d.ts +11 -0
  445. package/dist/core/lifecycle/intent.js +88 -0
  446. package/dist/core/lifecycle/intent.js.map +1 -0
  447. package/dist/core/lifecycle/monitor.d.ts +138 -0
  448. package/dist/core/lifecycle/monitor.js +616 -0
  449. package/dist/core/lifecycle/monitor.js.map +1 -0
  450. package/dist/core/lifecycle/observations.d.ts +17 -0
  451. package/dist/core/lifecycle/observations.js +59 -0
  452. package/dist/core/lifecycle/observations.js.map +1 -0
  453. package/dist/core/lifecycle/reconcile.d.ts +58 -0
  454. package/dist/core/lifecycle/reconcile.js +112 -0
  455. package/dist/core/lifecycle/reconcile.js.map +1 -0
  456. package/dist/core/lifecycle/views.d.ts +49 -0
  457. package/dist/core/lifecycle/views.js +57 -0
  458. package/dist/core/lifecycle/views.js.map +1 -0
  459. package/dist/core/lifecycle/workers.d.ts +88 -0
  460. package/dist/core/lifecycle/workers.js +347 -0
  461. package/dist/core/lifecycle/workers.js.map +1 -0
  462. package/dist/core/model/address.d.ts +32 -0
  463. package/dist/core/model/address.js +43 -0
  464. package/dist/core/model/address.js.map +1 -0
  465. package/dist/core/model/amount.d.ts +25 -0
  466. package/dist/core/model/amount.js +102 -0
  467. package/dist/core/model/amount.js.map +1 -0
  468. package/dist/core/model/asset.d.ts +28 -0
  469. package/dist/core/model/asset.js +47 -0
  470. package/dist/core/model/asset.js.map +1 -0
  471. package/dist/core/model/capability.d.ts +3 -0
  472. package/dist/core/model/capability.js +18 -0
  473. package/dist/core/model/capability.js.map +1 -0
  474. package/dist/core/model/chain.d.ts +63 -0
  475. package/dist/core/model/chain.js +8 -0
  476. package/dist/core/model/chain.js.map +1 -0
  477. package/dist/core/model/fee.d.ts +36 -0
  478. package/dist/core/model/fee.js +17 -0
  479. package/dist/core/model/fee.js.map +1 -0
  480. package/dist/core/model/ids.d.ts +38 -0
  481. package/dist/core/model/ids.js +14 -0
  482. package/dist/core/model/ids.js.map +1 -0
  483. package/dist/core/model/intent.d.ts +63 -0
  484. package/dist/core/model/intent.js +81 -0
  485. package/dist/core/model/intent.js.map +1 -0
  486. package/dist/core/model/ordering.d.ts +28 -0
  487. package/dist/core/model/ordering.js +29 -0
  488. package/dist/core/model/ordering.js.map +1 -0
  489. package/dist/core/model/transaction.d.ts +123 -0
  490. package/dist/{type/lib-types.js → core/model/transaction.js} +1 -1
  491. package/dist/core/model/transaction.js.map +1 -0
  492. package/dist/core/observe/scanner.d.ts +135 -0
  493. package/dist/core/observe/scanner.js +358 -0
  494. package/dist/core/observe/scanner.js.map +1 -0
  495. package/dist/core/ordering/reservations.d.ts +16 -0
  496. package/dist/core/ordering/reservations.js +53 -0
  497. package/dist/core/ordering/reservations.js.map +1 -0
  498. package/dist/core/ordering/sequence.d.ts +61 -0
  499. package/dist/core/ordering/sequence.js +155 -0
  500. package/dist/core/ordering/sequence.js.map +1 -0
  501. package/dist/core/registry/adapters.d.ts +10 -0
  502. package/dist/core/registry/adapters.js +56 -0
  503. package/dist/core/registry/adapters.js.map +1 -0
  504. package/dist/core/registry/assets.d.ts +18 -0
  505. package/dist/core/registry/assets.js +90 -0
  506. package/dist/core/registry/assets.js.map +1 -0
  507. package/dist/core/registry/chains.d.ts +10 -0
  508. package/dist/core/registry/chains.js +80 -0
  509. package/dist/core/registry/chains.js.map +1 -0
  510. package/dist/core/registry/plugin.d.ts +41 -0
  511. package/dist/core/registry/plugin.js +109 -0
  512. package/dist/core/registry/plugin.js.map +1 -0
  513. package/dist/core/registry/providers.d.ts +31 -0
  514. package/dist/core/registry/providers.js +43 -0
  515. package/dist/core/registry/providers.js.map +1 -0
  516. package/dist/core/registry/schemes.d.ts +30 -0
  517. package/dist/core/registry/schemes.js +84 -0
  518. package/dist/core/registry/schemes.js.map +1 -0
  519. package/dist/core/secret/fragments.d.ts +33 -0
  520. package/dist/core/secret/fragments.js +110 -0
  521. package/dist/core/secret/fragments.js.map +1 -0
  522. package/dist/core/secret/redact.d.ts +10 -0
  523. package/dist/core/secret/redact.js +110 -0
  524. package/dist/core/secret/redact.js.map +1 -0
  525. package/dist/core/secret/secret.d.ts +14 -0
  526. package/dist/core/secret/secret.js +42 -0
  527. package/dist/core/secret/secret.js.map +1 -0
  528. package/dist/core/signing/callback.d.ts +10 -0
  529. package/dist/core/signing/callback.js +22 -0
  530. package/dist/core/signing/callback.js.map +1 -0
  531. package/dist/core/signing/guard.d.ts +18 -0
  532. package/dist/core/signing/guard.js +72 -0
  533. package/dist/core/signing/guard.js.map +1 -0
  534. package/dist/core/signing/hd.d.ts +36 -0
  535. package/dist/core/signing/hd.js +167 -0
  536. package/dist/core/signing/hd.js.map +1 -0
  537. package/dist/core/signing/local.d.ts +48 -0
  538. package/dist/core/signing/local.js +190 -0
  539. package/dist/core/signing/local.js.map +1 -0
  540. package/dist/core/signing/orchestrator.d.ts +40 -0
  541. package/dist/core/signing/orchestrator.js +300 -0
  542. package/dist/core/signing/orchestrator.js.map +1 -0
  543. package/dist/core/signing/types.d.ts +64 -0
  544. package/dist/core/signing/types.js +3 -0
  545. package/dist/core/signing/types.js.map +1 -0
  546. package/dist/core/signing/wallet.d.ts +48 -0
  547. package/dist/core/signing/wallet.js +161 -0
  548. package/dist/core/signing/wallet.js.map +1 -0
  549. package/dist/core/store/clone.d.ts +25 -0
  550. package/dist/core/store/clone.js +71 -0
  551. package/dist/core/store/clone.js.map +1 -0
  552. package/dist/core/store/format.d.ts +20 -0
  553. package/dist/core/store/format.js +86 -0
  554. package/dist/core/store/format.js.map +1 -0
  555. package/dist/core/store/memory.d.ts +38 -0
  556. package/dist/core/store/memory.js +325 -0
  557. package/dist/core/store/memory.js.map +1 -0
  558. package/dist/core/store/types.d.ts +258 -0
  559. package/dist/core/store/types.js +119 -0
  560. package/dist/core/store/types.js.map +1 -0
  561. package/dist/core/transport/backoff.d.ts +8 -0
  562. package/dist/core/transport/backoff.js +27 -0
  563. package/dist/core/transport/backoff.js.map +1 -0
  564. package/dist/core/transport/circuit.d.ts +25 -0
  565. package/dist/core/transport/circuit.js +61 -0
  566. package/dist/core/transport/circuit.js.map +1 -0
  567. package/dist/core/transport/http-transport.d.ts +30 -0
  568. package/dist/core/transport/http-transport.js +1703 -0
  569. package/dist/core/transport/http-transport.js.map +1 -0
  570. package/dist/core/transport/rate-limit.d.ts +27 -0
  571. package/dist/core/transport/rate-limit.js +78 -0
  572. package/dist/core/transport/rate-limit.js.map +1 -0
  573. package/dist/core/transport/stale-view.d.ts +11 -0
  574. package/dist/core/transport/stale-view.js +17 -0
  575. package/dist/core/transport/stale-view.js.map +1 -0
  576. package/dist/core/transport/types.d.ts +159 -0
  577. package/dist/core/transport/types.js +6 -0
  578. package/dist/core/transport/types.js.map +1 -0
  579. package/dist/core/util/bytes.d.ts +9 -0
  580. package/dist/core/util/bytes.js +40 -0
  581. package/dist/core/util/bytes.js.map +1 -0
  582. package/dist/core/util/clock.d.ts +6 -0
  583. package/dist/core/util/clock.js +26 -0
  584. package/dist/core/util/clock.js.map +1 -0
  585. package/dist/core/util/freeze.d.ts +8 -0
  586. package/dist/core/util/freeze.js +31 -0
  587. package/dist/core/util/freeze.js.map +1 -0
  588. package/dist/core/util/json.d.ts +35 -0
  589. package/dist/core/util/json.js +174 -0
  590. package/dist/core/util/json.js.map +1 -0
  591. package/dist/core/util/names.d.ts +27 -0
  592. package/dist/core/util/names.js +56 -0
  593. package/dist/core/util/names.js.map +1 -0
  594. package/dist/index.d.ts +65 -14
  595. package/dist/index.js +107 -49
  596. package/dist/index.js.map +1 -1
  597. package/dist/native.d.ts +21 -0
  598. package/dist/native.js +44 -0
  599. package/dist/native.js.map +1 -0
  600. package/dist/testing/contracts/api.d.ts +12 -0
  601. package/dist/testing/contracts/api.js +58 -0
  602. package/dist/testing/contracts/api.js.map +1 -0
  603. package/dist/testing/contracts/cursors.d.ts +6 -0
  604. package/dist/testing/contracts/cursors.js +43 -0
  605. package/dist/testing/contracts/cursors.js.map +1 -0
  606. package/dist/testing/contracts/locks.d.ts +10 -0
  607. package/dist/testing/contracts/locks.js +63 -0
  608. package/dist/testing/contracts/locks.js.map +1 -0
  609. package/dist/testing/contracts/operations.d.ts +21 -0
  610. package/dist/testing/contracts/operations.js +737 -0
  611. package/dist/testing/contracts/operations.js.map +1 -0
  612. package/dist/testing/contracts/sequences.d.ts +6 -0
  613. package/dist/testing/contracts/sequences.js +68 -0
  614. package/dist/testing/contracts/sequences.js.map +1 -0
  615. package/dist/testing/env.d.ts +68 -0
  616. package/dist/testing/env.js +105 -0
  617. package/dist/testing/env.js.map +1 -0
  618. package/dist/testing/fake-chain.d.ts +118 -0
  619. package/dist/testing/fake-chain.js +536 -0
  620. package/dist/testing/fake-chain.js.map +1 -0
  621. package/dist/testing/fake-clock.d.ts +15 -0
  622. package/dist/testing/fake-clock.js +86 -0
  623. package/dist/testing/fake-clock.js.map +1 -0
  624. package/dist/testing/fake-driver.d.ts +15 -0
  625. package/dist/testing/fake-driver.js +458 -0
  626. package/dist/testing/fake-driver.js.map +1 -0
  627. package/dist/testing/fake-fetch.d.ts +32 -0
  628. package/dist/testing/fake-fetch.js +81 -0
  629. package/dist/testing/fake-fetch.js.map +1 -0
  630. package/dist/testing/fake-plugin.d.ts +30 -0
  631. package/dist/testing/fake-plugin.js +66 -0
  632. package/dist/testing/fake-plugin.js.map +1 -0
  633. package/dist/testing/faulty-store.d.ts +38 -0
  634. package/dist/testing/faulty-store.js +71 -0
  635. package/dist/testing/faulty-store.js.map +1 -0
  636. package/dist/testing/generation.d.ts +60 -0
  637. package/dist/testing/generation.js +252 -0
  638. package/dist/testing/generation.js.map +1 -0
  639. package/dist/testing/index.d.ts +28 -0
  640. package/dist/testing/index.js +51 -0
  641. package/dist/testing/index.js.map +1 -0
  642. package/package.json +198 -45
  643. package/dist/libs/eth/account.d.ts +0 -9
  644. package/dist/libs/eth/account.js +0 -58
  645. package/dist/libs/eth/account.js.map +0 -1
  646. package/dist/libs/eth/contract.d.ts +0 -7
  647. package/dist/libs/eth/contract.js +0 -42
  648. package/dist/libs/eth/contract.js.map +0 -1
  649. package/dist/libs/eth/index.d.ts +0 -24
  650. package/dist/libs/eth/index.js +0 -72
  651. package/dist/libs/eth/index.js.map +0 -1
  652. package/dist/libs/eth/transact.d.ts +0 -7
  653. package/dist/libs/eth/transact.js +0 -26
  654. package/dist/libs/eth/transact.js.map +0 -1
  655. package/dist/libs/index.d.ts +0 -2
  656. package/dist/libs/index.js +0 -19
  657. package/dist/libs/index.js.map +0 -1
  658. package/dist/libs/trx/account.d.ts +0 -9
  659. package/dist/libs/trx/account.js +0 -55
  660. package/dist/libs/trx/account.js.map +0 -1
  661. package/dist/libs/trx/contract.d.ts +0 -7
  662. package/dist/libs/trx/contract.js +0 -27
  663. package/dist/libs/trx/contract.js.map +0 -1
  664. package/dist/libs/trx/index.d.ts +0 -22
  665. package/dist/libs/trx/index.js +0 -64
  666. package/dist/libs/trx/index.js.map +0 -1
  667. package/dist/libs/trx/transact.d.ts +0 -7
  668. package/dist/libs/trx/transact.js +0 -26
  669. package/dist/libs/trx/transact.js.map +0 -1
  670. package/dist/tool/common.d.ts +0 -28
  671. package/dist/tool/common.js +0 -33
  672. package/dist/tool/common.js.map +0 -1
  673. package/dist/tool/eth-tools.d.ts +0 -3
  674. package/dist/tool/eth-tools.js +0 -33
  675. package/dist/tool/eth-tools.js.map +0 -1
  676. package/dist/tool/index.d.ts +0 -5
  677. package/dist/tool/index.js +0 -22
  678. package/dist/tool/index.js.map +0 -1
  679. package/dist/tool/logging.d.ts +0 -3
  680. package/dist/tool/logging.js +0 -11
  681. package/dist/tool/logging.js.map +0 -1
  682. package/dist/tool/options.d.ts +0 -6
  683. package/dist/tool/options.js +0 -41
  684. package/dist/tool/options.js.map +0 -1
  685. package/dist/tool/trx-tools.d.ts +0 -3
  686. package/dist/tool/trx-tools.js +0 -20
  687. package/dist/tool/trx-tools.js.map +0 -1
  688. package/dist/type/account.d.ts +0 -9
  689. package/dist/type/account.js.map +0 -1
  690. package/dist/type/common.d.ts +0 -18
  691. package/dist/type/common.js.map +0 -1
  692. package/dist/type/contract.d.ts +0 -10
  693. package/dist/type/contract.js.map +0 -1
  694. package/dist/type/index.d.ts +0 -5
  695. package/dist/type/index.js +0 -22
  696. package/dist/type/index.js.map +0 -1
  697. package/dist/type/lib-types.d.ts +0 -9
  698. package/dist/type/lib-types.js.map +0 -1
  699. package/dist/type/transact.d.ts +0 -7
  700. package/dist/type/transact.js.map +0 -1
@@ -0,0 +1,500 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CryptoAio = exports.NATIVE_CLOSE_TIMEOUT_MS = void 0;
4
+ const service_1 = require("../assets/service");
5
+ const handle_1 = require("../blockchain/handle");
6
+ const internal_1 = require("../blockchain/internal");
7
+ const env_1 = require("../config/env");
8
+ const merge_1 = require("../config/merge");
9
+ const resolve_1 = require("../config/resolve");
10
+ const error_1 = require("../errors/error");
11
+ const bus_1 = require("../events/bus");
12
+ const logger_1 = require("../events/logger");
13
+ const engine_1 = require("../lifecycle/engine");
14
+ const monitor_1 = require("../lifecycle/monitor");
15
+ const observations_1 = require("../lifecycle/observations");
16
+ const views_1 = require("../lifecycle/views");
17
+ const sequence_1 = require("../ordering/sequence");
18
+ const plugin_1 = require("../registry/plugin");
19
+ const orchestrator_1 = require("../signing/orchestrator");
20
+ const wallet_1 = require("../signing/wallet");
21
+ const format_1 = require("../store/format");
22
+ const memory_1 = require("../store/memory");
23
+ const bytes_1 = require("../util/bytes");
24
+ const clock_1 = require("../util/clock");
25
+ const builtins_1 = require("./builtins");
26
+ const internals_1 = require("./internals");
27
+ const pool_1 = require("./pool");
28
+ const NAMESPACE = /^[A-Za-z0-9._-]{1,64}$/;
29
+ /**
30
+ * The signal a worker loop, pass or recovery runs under: the caller's, if any, and the
31
+ * root's `closing`, which `close()` aborts. A closed container starts no new work: it
32
+ * stops claiming Operations from a shared store (holding each for a lease) and no longer
33
+ * keeps the process alive.
34
+ */
35
+ function workerSignal(runtime, signal) {
36
+ if (runtime.closed)
37
+ throw (0, internals_1.closedError)();
38
+ return signal
39
+ ? AbortSignal.any([signal, runtime.closing.signal])
40
+ : runtime.closing.signal;
41
+ }
42
+ /** How long `close()` waits for one native client's `close` before moving on. */
43
+ exports.NATIVE_CLOSE_TIMEOUT_MS = 5_000;
44
+ /** Runs `close`, but gives up waiting after `ms` of `clock` time (the close keeps running). */
45
+ async function closeWithin(close, clock, ms) {
46
+ const timer = new AbortController();
47
+ try {
48
+ return await Promise.race([
49
+ Promise.resolve()
50
+ .then(close)
51
+ .then(() => 'closed'),
52
+ clock.sleep(ms, timer.signal).then(() => 'timeout'),
53
+ ]);
54
+ }
55
+ finally {
56
+ timer.abort();
57
+ }
58
+ }
59
+ /**
60
+ * Set by `scope()` for the one synchronous constructor call it makes, so a child container
61
+ * needs no constructor parameter in the public API.
62
+ */
63
+ let pendingScope;
64
+ /**
65
+ * Deep-clones plain objects/arrays into a frozen copy so a later mutation of the caller's
66
+ * own input can never reach a layer already captured by a container. Class instances
67
+ * (Signer, Secret, ...) are referenced, not cloned — they're already immutable.
68
+ */
69
+ function cloneFrozen(value, ancestors = new Set()) {
70
+ if (!Array.isArray(value) && !(0, merge_1.isPlainObject)(value))
71
+ return value;
72
+ (0, merge_1.assertNoCycle)(value, ancestors);
73
+ ancestors.add(value);
74
+ try {
75
+ if (Array.isArray(value)) {
76
+ return Object.freeze(value.map((item) => cloneFrozen(item, ancestors)));
77
+ }
78
+ const out = {};
79
+ for (const [key, v] of Object.entries(value))
80
+ out[key] = cloneFrozen(v, ancestors);
81
+ return Object.freeze(out);
82
+ }
83
+ finally {
84
+ ancestors.delete(value);
85
+ }
86
+ }
87
+ /** `chains`/`providers`/`wallets`/`signers`/`hooks`/`lifecycle` are all cloned and
88
+ * deep-frozen at construction, so mutating the caller's options object afterwards never
89
+ * affects handles already built from this layer. For `signers`, only the map OBJECT is
90
+ * cloned (a fresh, frozen copy so adding/replacing a key on the caller's own map can't reach
91
+ * an existing layer) — the `Signer` values it holds are opaque and always taken by reference,
92
+ * never cloned or frozen, even a plain-object signer (`Signer` is an interface), so it keeps
93
+ * its identity and its own mutable state. */
94
+ function scopePart(options) {
95
+ const { chains, providers, signers, wallets, hooks, lifecycle } = options;
96
+ return {
97
+ ...(chains ? { chains: cloneFrozen(chains) } : {}),
98
+ ...(providers ? { providers: cloneFrozen(providers) } : {}),
99
+ ...(signers ? { signers: Object.freeze({ ...signers }) } : {}),
100
+ ...(wallets ? { wallets: cloneFrozen(wallets) } : {}),
101
+ ...(hooks ? { hooks: cloneFrozen(hooks) } : {}),
102
+ ...(lifecycle ? { lifecycle: cloneFrozen(lifecycle) } : {}),
103
+ };
104
+ }
105
+ const checkedStores = new WeakMap();
106
+ /**
107
+ * The stores as the engine, the workers and `aio.operations` use them: Operation records
108
+ * pass the format guard, so none is ever read in a format this version does not know.
109
+ */
110
+ function storesOf(runtime) {
111
+ let stores = checkedStores.get(runtime);
112
+ if (!stores) {
113
+ stores = {
114
+ ...runtime.stores,
115
+ operations: (0, format_1.formatGuard)(runtime.stores.operations, runtime.log.child('store')),
116
+ };
117
+ checkedStores.set(runtime, stores);
118
+ }
119
+ return stores;
120
+ }
121
+ function createEngine(runtime, effective) {
122
+ const lifecycle = () => (0, engine_1.withLifecycleDefaults)(effective().lifecycle);
123
+ const { leaseMs, leaseWaitMs } = lifecycle();
124
+ const log = runtime.log.child('lifecycle');
125
+ return new engine_1.OperationEngine({
126
+ namespace: runtime.namespace,
127
+ stores: storesOf(runtime),
128
+ events: runtime.events,
129
+ clock: runtime.clock,
130
+ log,
131
+ orchestrator: new orchestrator_1.SigningOrchestrator({
132
+ schemes: () => runtime.catalogs.schemes,
133
+ events: runtime.events,
134
+ clock: runtime.clock,
135
+ hooks: () => effective().hooks,
136
+ }),
137
+ sequences: new sequence_1.SequenceCoordinator({
138
+ locks: runtime.stores.locks,
139
+ sequences: runtime.stores.sequences,
140
+ clock: runtime.clock,
141
+ owner: runtime.owner,
142
+ leaseMs,
143
+ acquireTimeoutMs: leaseWaitMs,
144
+ // The code only: a store's error message may carry detail that logs must not.
145
+ onReleaseError: (error) => log.warn('lease release failed', { code: (0, engine_1.errorCode)(error) }),
146
+ }),
147
+ lifecycle,
148
+ });
149
+ }
150
+ /**
151
+ * The signer-free read target of a stored Operation, for every check,
152
+ * worker pass and recovery read: its chain, network and library over its own named
153
+ * providers first, then the current defaults when those no longer resolve (inline configs
154
+ * are recorded by hash only and cannot be rebuilt). No wallet or signer is selected, not
155
+ * even a chain default one, so a rotated signer, a removed wallet or a hung custody
156
+ * backend never stops monitoring.
157
+ */
158
+ async function readTarget(container, record) {
159
+ const internals = (0, internals_1.containerOf)(container);
160
+ const { runtime } = internals;
161
+ const { chain, network, library } = record.context;
162
+ const effective = internals.effective();
163
+ const { wallet: _wallet, signer: _signer, ...defaults } = effective.chains[chain] ?? {};
164
+ const signerFree = { ...effective, chains: { ...effective.chains, [chain]: defaults } };
165
+ const select = (provider) => (0, resolve_1.resolveSelection)({
166
+ handle: { chain, network, library, ...(provider ? { provider } : {}) },
167
+ effective: signerFree,
168
+ catalogs: runtime.catalogs,
169
+ log: runtime.log,
170
+ });
171
+ const named = record.context.providers.filter((name) => !name.startsWith('inline:'));
172
+ let selection;
173
+ try {
174
+ selection = select(named.length > 0 ? named : undefined);
175
+ }
176
+ catch (error) {
177
+ // Only a config that no longer resolves (e.g. a renamed provider) falls back.
178
+ if (!(error instanceof error_1.ConfigError))
179
+ throw error;
180
+ selection = select();
181
+ }
182
+ if (runtime.closed)
183
+ throw (0, internals_1.closedError)();
184
+ return { selection, pooled: await runtime.pool.get(selection) };
185
+ }
186
+ /**
187
+ * The wallets the monitor resolved for its writes, cached per container (one public-key
188
+ * read per wallet selection, not one per pass) and bounded by `lifecycle.signTimeoutMs`. A
189
+ * failed resolution is not kept. The cache is dropped when the config changes: a container's
190
+ * layers are frozen, so only a plugin (`use()`, new catalogs and env layer) changes it.
191
+ */
192
+ function walletCache(runtime, internals) {
193
+ let catalogs = runtime.catalogs;
194
+ const wallets = new Map();
195
+ return (selection, driver) => {
196
+ if (runtime.catalogs !== catalogs) {
197
+ catalogs = runtime.catalogs;
198
+ wallets.clear();
199
+ }
200
+ const key = selection.configHash;
201
+ const cached = wallets.get(key);
202
+ if (cached)
203
+ return cached;
204
+ const { effective, signerDeadline } = internals();
205
+ const resolving = (0, wallet_1.resolveWallet)(selection, driver, effective().signers, catalogs.schemes, signerDeadline()).catch((error) => {
206
+ if (wallets.get(key) === resolving)
207
+ wallets.delete(key);
208
+ throw error;
209
+ });
210
+ wallets.set(key, resolving);
211
+ return resolving;
212
+ };
213
+ }
214
+ /**
215
+ * The wallet-bound target of a stored Operation, resolved lazily and only for the
216
+ * writes that need one: the all-rejected verdict, nonce reconciliation and recovery's
217
+ * resend. None of them signs, and their address lease is keyed on the Operation itself.
218
+ * Its frozen context (chain, network, library, wallet, signer) is rebuilt against the
219
+ * container's current config with its own named providers first; when that no longer
220
+ * resolves (a renamed provider, a rotated signer), the wallet alone over the current
221
+ * defaults, with neither the recorded signer nor the providers: the wallet's current
222
+ * signer, public key or address then stands for it (a watch-only wallet is enough). The
223
+ * engine checks the resolved wallet still owns the Operation before using it.
224
+ */
225
+ async function operationTarget(container, runtime, record, wallets) {
226
+ const { chain, network, library, wallet, signer, providers } = record.context;
227
+ const base = { chain, network, library, wallet };
228
+ const named = providers.filter((name) => !name.startsWith('inline:'));
229
+ let handle;
230
+ try {
231
+ handle = container.blockchain({
232
+ ...base,
233
+ ...(signer !== undefined ? { signer } : {}),
234
+ ...(named.length > 0 ? { provider: named } : {}),
235
+ });
236
+ }
237
+ catch (error) {
238
+ if (!(error instanceof error_1.ConfigError))
239
+ throw error;
240
+ handle = container.blockchain(base);
241
+ }
242
+ const internals = (0, internal_1.internalsOf)(handle);
243
+ const pooled = await internals.pooled();
244
+ return {
245
+ selection: internals.selection,
246
+ pooled,
247
+ wallet: await wallets(internals.selection, pooled.driver),
248
+ assets: runtime.assets,
249
+ };
250
+ }
251
+ /**
252
+ * Dependency container: stores, signers, wallets, hooks, plugins and a shared driver pool.
253
+ * Separate `new CryptoAio()` instances are fully isolated (use one per tenant).
254
+ */
255
+ class CryptoAio {
256
+ namespace;
257
+ constructor(options = {}) {
258
+ const scope = pendingScope;
259
+ pendingScope = undefined;
260
+ if (scope) {
261
+ const parent = (0, internals_1.containerOf)(scope.parent);
262
+ this.namespace = parent.runtime.namespace;
263
+ this.#bind(parent.runtime, [...parent.layers, scopePart(scope.overrides)], false);
264
+ return;
265
+ }
266
+ const namespace = options.namespace ?? 'default';
267
+ if (!NAMESPACE.test(namespace))
268
+ throw new error_1.ConfigError('CONFIG_INVALID', 'invalid namespace: use 1 to 64 letters, digits, dots, underscores or hyphens');
269
+ const clock = options.clock ?? clock_1.systemClock;
270
+ const log = options.logger ?? (0, logger_1.createLogger)();
271
+ const catalogs = (0, plugin_1.createCatalogs)();
272
+ for (const plugin of [...(0, builtins_1.builtinPlugins)(), ...(options.plugins ?? [])])
273
+ (0, plugin_1.applyPlugin)(catalogs, plugin);
274
+ for (const asset of options.assets ?? []) {
275
+ catalogs.chains.network(asset.chain, asset.network);
276
+ catalogs.assets.register(asset);
277
+ }
278
+ const env = options.env === false ? {} : (options.env ?? process.env);
279
+ const events = new bus_1.EventBus(clock, log);
280
+ // eslint-disable-next-line prefer-const -- closures below read it after assignment
281
+ let runtime;
282
+ const pool = new pool_1.DriverPool({
283
+ catalogs: () => runtime.catalogs,
284
+ clock,
285
+ events,
286
+ log,
287
+ transport: () => runtime.transport,
288
+ });
289
+ runtime = {
290
+ namespace,
291
+ catalogs,
292
+ envLayer: {
293
+ chains: (0, env_1.readEnvChains)(env, catalogs.chains.list().map((c) => c.id), options.profile),
294
+ },
295
+ env,
296
+ ...(options.profile !== undefined ? { profile: options.profile } : {}),
297
+ clock,
298
+ log,
299
+ events,
300
+ stores: {
301
+ ...(0, memory_1.createMemoryStores)(clock),
302
+ ...Object.fromEntries(Object.entries(options.stores ?? {}).filter(([, store]) => store !== undefined)),
303
+ },
304
+ pool,
305
+ assets: new service_1.AssetService(() => runtime.catalogs),
306
+ transport: options.transport ?? {},
307
+ owner: (0, bytes_1.randomId)('aio'),
308
+ closed: false,
309
+ closing: new AbortController(),
310
+ natives: new Set(),
311
+ };
312
+ this.namespace = namespace;
313
+ this.#bind(runtime, [scopePart(options)], true);
314
+ }
315
+ /**
316
+ * Child container: inherits config, pool, stores and namespace; overrides merge on top.
317
+ * Not a tenant boundary — a scope shares its root's pool and stores. Use a separate
318
+ * `new CryptoAio({ namespace })` when isolation between tenants is required.
319
+ */
320
+ scope(overrides) {
321
+ pendingScope = { parent: this, overrides };
322
+ try {
323
+ return new CryptoAio();
324
+ }
325
+ finally {
326
+ pendingScope = undefined;
327
+ }
328
+ }
329
+ blockchain(config) {
330
+ const internals = (0, internals_1.containerOf)(this);
331
+ const { runtime } = internals;
332
+ const selection = (0, resolve_1.resolveSelection)({
333
+ handle: config,
334
+ effective: internals.effective(),
335
+ catalogs: runtime.catalogs,
336
+ log: runtime.log,
337
+ });
338
+ let pooled;
339
+ let wallet;
340
+ const handle = {
341
+ container: this,
342
+ selection,
343
+ nativeClients: new Map(),
344
+ assertOpen: () => {
345
+ if (runtime.closed)
346
+ throw (0, internals_1.closedError)();
347
+ },
348
+ registerNative: (native) => {
349
+ if (runtime.closed)
350
+ throw (0, internals_1.closedError)();
351
+ if (native.close)
352
+ runtime.natives.add(() => native.close?.());
353
+ },
354
+ // A closed root refuses work even through a pooled driver this handle holds.
355
+ pooled: () => {
356
+ if (runtime.closed)
357
+ return Promise.reject((0, internals_1.closedError)());
358
+ pooled ??= runtime.pool.get(selection).catch((error) => {
359
+ pooled = undefined;
360
+ throw error;
361
+ });
362
+ return pooled;
363
+ },
364
+ wallet: () => {
365
+ if (runtime.closed)
366
+ return Promise.reject((0, internals_1.closedError)());
367
+ wallet ??= handle
368
+ .pooled()
369
+ .then(({ driver }) => (0, wallet_1.resolveWallet)(selection, driver, internals.effective().signers, runtime.catalogs.schemes, internals.signerDeadline()))
370
+ .catch((error) => {
371
+ wallet = undefined;
372
+ throw error;
373
+ });
374
+ return wallet;
375
+ },
376
+ };
377
+ return (0, handle_1.createBlockchain)(handle);
378
+ }
379
+ /** Registers a plugin on this root container (copy-on-write catalogs). */
380
+ use(plugin) {
381
+ const internals = (0, internals_1.containerOf)(this);
382
+ if (!internals.isRoot)
383
+ throw new error_1.ConfigError('CONFIG_INVALID', 'plugins can only be added to a root container');
384
+ const { runtime } = internals;
385
+ const next = (0, plugin_1.cloneCatalogs)(runtime.catalogs);
386
+ (0, plugin_1.applyPlugin)(next, plugin);
387
+ runtime.catalogs = next;
388
+ runtime.envLayer = {
389
+ chains: (0, env_1.readEnvChains)(runtime.env, next.chains.list().map((c) => c.id), runtime.profile),
390
+ };
391
+ return this;
392
+ }
393
+ on(type, handler) {
394
+ return (0, internals_1.containerOf)(this).runtime.events.on(type, handler);
395
+ }
396
+ onAny(handler) {
397
+ return (0, internals_1.containerOf)(this).runtime.events.onAny(handler);
398
+ }
399
+ /** Stored Operations of this namespace, as views, and startup recovery. */
400
+ get operations() {
401
+ const internals = (0, internals_1.containerOf)(this);
402
+ const store = storesOf(internals.runtime).operations;
403
+ const namespace = internals.runtime.namespace;
404
+ const view = async (record) => (0, views_1.toView)(record, await (0, observations_1.loadObservations)(store, record));
405
+ return {
406
+ get: async (id) => {
407
+ const record = await store.get(namespace, id);
408
+ return record ? view(record) : null;
409
+ },
410
+ list: async (filter = {}) => Promise.all((await store.list({
411
+ namespace,
412
+ ...(filter.states ? { states: filter.states } : {}),
413
+ ...(filter.chain ? { chain: filter.chain } : {}),
414
+ ...(filter.network ? { network: filter.network } : {}),
415
+ ...(filter.limit !== undefined ? { limit: filter.limit } : {}),
416
+ })).map(view)),
417
+ recover: async (options = {}) => internals.monitor().recover({
418
+ ...options,
419
+ signal: workerSignal(internals.runtime, options.signal),
420
+ }),
421
+ };
422
+ }
423
+ /** Background workers that check due Operations without anyone waiting on them. */
424
+ get monitor() {
425
+ const internals = (0, internals_1.containerOf)(this);
426
+ return {
427
+ start: async (options = {}) => internals.monitor().start({
428
+ ...options,
429
+ signal: workerSignal(internals.runtime, options.signal),
430
+ }),
431
+ runOnce: async (options = {}) => internals.monitor().runOnce({
432
+ workerId: options.workerId ?? internals.runtime.owner,
433
+ ...(options.batch !== undefined ? { batch: options.batch } : {}),
434
+ signal: workerSignal(internals.runtime, options.signal),
435
+ }),
436
+ };
437
+ }
438
+ /**
439
+ * Closes the root container: runs the `close` of every native client that
440
+ * `crypto-aio/native` handed out (a failing one is logged by code and skipped), then
441
+ * closes the pooled drivers. Its handles and `native()` then fail with
442
+ * `INVALID_TRANSITION`. A scope's `close()` does nothing; scopes share their root's pool.
443
+ */
444
+ async close() {
445
+ const internals = (0, internals_1.containerOf)(this);
446
+ if (!internals.isRoot)
447
+ return;
448
+ const { runtime } = internals;
449
+ runtime.closed = true;
450
+ // Every worker loop, pass and recovery stops at its next check, and its sleeps end.
451
+ runtime.closing.abort();
452
+ const natives = [...runtime.natives];
453
+ runtime.natives.clear();
454
+ await Promise.all(natives.map(async (close) => {
455
+ try {
456
+ const outcome = await closeWithin(close, runtime.clock, exports.NATIVE_CLOSE_TIMEOUT_MS);
457
+ if (outcome === 'timeout') {
458
+ runtime.log.warn('native client close timed out', {
459
+ timeoutMs: exports.NATIVE_CLOSE_TIMEOUT_MS,
460
+ });
461
+ }
462
+ }
463
+ catch (error) {
464
+ runtime.log.warn('native client close failed', { code: (0, engine_1.errorCode)(error) });
465
+ }
466
+ }));
467
+ await runtime.pool.close();
468
+ }
469
+ #bind(runtime, layers, isRoot) {
470
+ const effective = () => (0, merge_1.mergeScopes)([runtime.envLayer, ...layers]);
471
+ let engine;
472
+ let monitor;
473
+ const getEngine = () => (engine ??= createEngine(runtime, effective));
474
+ const wallets = walletCache(runtime, () => (0, internals_1.containerOf)(this));
475
+ (0, internals_1.bindContainer)(this, {
476
+ runtime,
477
+ layers,
478
+ isRoot,
479
+ effective,
480
+ signerDeadline: () => ({
481
+ clock: runtime.clock,
482
+ timeoutMs: (0, engine_1.withLifecycleDefaults)(effective().lifecycle).signTimeoutMs,
483
+ }),
484
+ engine: getEngine,
485
+ monitor: () => (monitor ??= new monitor_1.Monitor({
486
+ engine: getEngine(),
487
+ stores: storesOf(runtime),
488
+ events: runtime.events,
489
+ clock: runtime.clock,
490
+ log: runtime.log.child('monitor'),
491
+ namespace: runtime.namespace,
492
+ lifecycle: () => (0, engine_1.withLifecycleDefaults)(effective().lifecycle),
493
+ resolveRead: (record) => readTarget(this, record),
494
+ resolveTarget: (record) => operationTarget(this, runtime, record, wallets),
495
+ })),
496
+ });
497
+ }
498
+ }
499
+ exports.CryptoAio = CryptoAio;
500
+ //# sourceMappingURL=container.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"container.js","sourceRoot":"","sources":["../../../src/core/container/container.ts"],"names":[],"mappings":"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","sourcesContent":["import { AssetService } from '../assets/service';\nimport { createBlockchain, type Blockchain } from '../blockchain/handle';\nimport { internalsOf, type HandleInternals } from '../blockchain/internal';\nimport { readEnvChains } from '../config/env';\nimport { assertNoCycle, isPlainObject, mergeScopes } from '../config/merge';\nimport { resolveSelection } from '../config/resolve';\nimport type {\n AioOptions,\n EffectiveOptions,\n HandleConfig,\n HandleOptions,\n ResolvedSelection,\n ScopeOptions,\n} from '../config/types';\nimport type { ChainDriver } from '../driver/types';\nimport { ConfigError } from '../errors/error';\nimport { EventBus } from '../events/bus';\nimport { createLogger } from '../events/logger';\nimport type { AioEvent, AioEventName } from '../events/types';\nimport {\n OperationEngine,\n errorCode,\n withLifecycleDefaults,\n type OperationTarget,\n type ReadTarget,\n} from '../lifecycle/engine';\nimport { Monitor, type RecoveryReport, type WorkerOptions } from '../lifecycle/monitor';\nimport { loadObservations } from '../lifecycle/observations';\nimport { toView, type OperationView } from '../lifecycle/views';\nimport type { ChainId } from '../model/ids';\nimport { SequenceCoordinator } from '../ordering/sequence';\nimport {\n applyPlugin,\n cloneCatalogs,\n createCatalogs,\n type Catalogs,\n type Plugin,\n} from '../registry/plugin';\nimport { SigningOrchestrator } from '../signing/orchestrator';\nimport { resolveWallet, type ResolvedWallet } from '../signing/wallet';\nimport { formatGuard } from '../store/format';\nimport { createMemoryStores } from '../store/memory';\nimport type { OperationRecord, OperationState, Stores } from '../store/types';\nimport { randomId } from '../util/bytes';\nimport { systemClock, type Clock } from '../util/clock';\nimport { builtinPlugins } from './builtins';\nimport {\n bindContainer,\n closedError,\n containerOf,\n type ContainerInternals,\n type RootRuntime,\n} from './internals';\nimport { DriverPool, type PooledDriver } from './pool';\n\nconst NAMESPACE = /^[A-Za-z0-9._-]{1,64}$/;\n\n/**\n * The signal a worker loop, pass or recovery runs under: the caller's, if any, and the\n * root's `closing`, which `close()` aborts. A closed container starts no new work: it\n * stops claiming Operations from a shared store (holding each for a lease) and no longer\n * keeps the process alive.\n */\nfunction workerSignal(\n runtime: RootRuntime,\n signal: AbortSignal | undefined,\n): AbortSignal {\n if (runtime.closed) throw closedError();\n return signal\n ? AbortSignal.any([signal, runtime.closing.signal])\n : runtime.closing.signal;\n}\n\n/** How long `close()` waits for one native client's `close` before moving on. */\nexport const NATIVE_CLOSE_TIMEOUT_MS = 5_000;\n\n/** Runs `close`, but gives up waiting after `ms` of `clock` time (the close keeps running). */\nasync function closeWithin(\n close: () => unknown,\n clock: Clock,\n ms: number,\n): Promise<'closed' | 'timeout'> {\n const timer = new AbortController();\n try {\n return await Promise.race([\n Promise.resolve()\n .then(close)\n .then(() => 'closed' as const),\n clock.sleep(ms, timer.signal).then(() => 'timeout' as const),\n ]);\n } finally {\n timer.abort();\n }\n}\n\ninterface ScopeInit {\n readonly parent: CryptoAio;\n readonly overrides: ScopeOptions;\n}\n\n/**\n * Set by `scope()` for the one synchronous constructor call it makes, so a child container\n * needs no constructor parameter in the public API.\n */\nlet pendingScope: ScopeInit | undefined;\n\n/**\n * Deep-clones plain objects/arrays into a frozen copy so a later mutation of the caller's\n * own input can never reach a layer already captured by a container. Class instances\n * (Signer, Secret, ...) are referenced, not cloned — they're already immutable.\n */\nfunction cloneFrozen<T>(value: T, ancestors: Set<object> = new Set()): T {\n if (!Array.isArray(value) && !isPlainObject(value)) return value;\n assertNoCycle(value, ancestors);\n ancestors.add(value);\n try {\n if (Array.isArray(value)) {\n return Object.freeze(\n value.map((item: unknown) => cloneFrozen(item, ancestors)),\n ) as T;\n }\n const out: Record<string, unknown> = {};\n for (const [key, v] of Object.entries(value)) out[key] = cloneFrozen(v, ancestors);\n return Object.freeze(out) as T;\n } finally {\n ancestors.delete(value);\n }\n}\n\n/** `chains`/`providers`/`wallets`/`signers`/`hooks`/`lifecycle` are all cloned and\n * deep-frozen at construction, so mutating the caller's options object afterwards never\n * affects handles already built from this layer. For `signers`, only the map OBJECT is\n * cloned (a fresh, frozen copy so adding/replacing a key on the caller's own map can't reach\n * an existing layer) — the `Signer` values it holds are opaque and always taken by reference,\n * never cloned or frozen, even a plain-object signer (`Signer` is an interface), so it keeps\n * its identity and its own mutable state. */\nfunction scopePart(options: ScopeOptions): ScopeOptions {\n const { chains, providers, signers, wallets, hooks, lifecycle } = options;\n return {\n ...(chains ? { chains: cloneFrozen(chains) } : {}),\n ...(providers ? { providers: cloneFrozen(providers) } : {}),\n ...(signers ? { signers: Object.freeze({ ...signers }) } : {}),\n ...(wallets ? { wallets: cloneFrozen(wallets) } : {}),\n ...(hooks ? { hooks: cloneFrozen(hooks) } : {}),\n ...(lifecycle ? { lifecycle: cloneFrozen(lifecycle) } : {}),\n };\n}\n\nconst checkedStores = new WeakMap<RootRuntime, Stores>();\n\n/**\n * The stores as the engine, the workers and `aio.operations` use them: Operation records\n * pass the format guard, so none is ever read in a format this version does not know.\n */\nfunction storesOf(runtime: RootRuntime): Stores {\n let stores = checkedStores.get(runtime);\n if (!stores) {\n stores = {\n ...runtime.stores,\n operations: formatGuard(runtime.stores.operations, runtime.log.child('store')),\n };\n checkedStores.set(runtime, stores);\n }\n return stores;\n}\n\nfunction createEngine(\n runtime: RootRuntime,\n effective: () => EffectiveOptions,\n): OperationEngine {\n const lifecycle = () => withLifecycleDefaults(effective().lifecycle);\n const { leaseMs, leaseWaitMs } = lifecycle();\n const log = runtime.log.child('lifecycle');\n return new OperationEngine({\n namespace: runtime.namespace,\n stores: storesOf(runtime),\n events: runtime.events,\n clock: runtime.clock,\n log,\n orchestrator: new SigningOrchestrator({\n schemes: () => runtime.catalogs.schemes,\n events: runtime.events,\n clock: runtime.clock,\n hooks: () => effective().hooks,\n }),\n sequences: new SequenceCoordinator({\n locks: runtime.stores.locks,\n sequences: runtime.stores.sequences,\n clock: runtime.clock,\n owner: runtime.owner,\n leaseMs,\n acquireTimeoutMs: leaseWaitMs,\n // The code only: a store's error message may carry detail that logs must not.\n onReleaseError: (error) =>\n log.warn('lease release failed', { code: errorCode(error) }),\n }),\n lifecycle,\n });\n}\n\n/**\n * The signer-free read target of a stored Operation, for every check,\n * worker pass and recovery read: its chain, network and library over its own named\n * providers first, then the current defaults when those no longer resolve (inline configs\n * are recorded by hash only and cannot be rebuilt). No wallet or signer is selected, not\n * even a chain default one, so a rotated signer, a removed wallet or a hung custody\n * backend never stops monitoring.\n */\nasync function readTarget(\n container: CryptoAio,\n record: OperationRecord,\n): Promise<ReadTarget> {\n const internals = containerOf(container);\n const { runtime } = internals;\n const { chain, network, library } = record.context;\n const effective = internals.effective();\n const { wallet: _wallet, signer: _signer, ...defaults } = effective.chains[chain] ?? {};\n const signerFree = { ...effective, chains: { ...effective.chains, [chain]: defaults } };\n const select = (provider?: readonly string[]) =>\n resolveSelection({\n handle: { chain, network, library, ...(provider ? { provider } : {}) },\n effective: signerFree,\n catalogs: runtime.catalogs,\n log: runtime.log,\n });\n const named = record.context.providers.filter((name) => !name.startsWith('inline:'));\n let selection: ResolvedSelection;\n try {\n selection = select(named.length > 0 ? named : undefined);\n } catch (error) {\n // Only a config that no longer resolves (e.g. a renamed provider) falls back.\n if (!(error instanceof ConfigError)) throw error;\n selection = select();\n }\n if (runtime.closed) throw closedError();\n return { selection, pooled: await runtime.pool.get(selection) };\n}\n\n/**\n * The wallets the monitor resolved for its writes, cached per container (one public-key\n * read per wallet selection, not one per pass) and bounded by `lifecycle.signTimeoutMs`. A\n * failed resolution is not kept. The cache is dropped when the config changes: a container's\n * layers are frozen, so only a plugin (`use()`, new catalogs and env layer) changes it.\n */\nfunction walletCache(\n runtime: RootRuntime,\n internals: () => ContainerInternals,\n): (selection: ResolvedSelection, driver: ChainDriver) => Promise<ResolvedWallet> {\n let catalogs: Catalogs = runtime.catalogs;\n const wallets = new Map<string, Promise<ResolvedWallet>>();\n return (selection, driver) => {\n if (runtime.catalogs !== catalogs) {\n catalogs = runtime.catalogs;\n wallets.clear();\n }\n const key = selection.configHash;\n const cached = wallets.get(key);\n if (cached) return cached;\n const { effective, signerDeadline } = internals();\n const resolving = resolveWallet(\n selection,\n driver,\n effective().signers,\n catalogs.schemes,\n signerDeadline(),\n ).catch((error: unknown) => {\n if (wallets.get(key) === resolving) wallets.delete(key);\n throw error;\n });\n wallets.set(key, resolving);\n return resolving;\n };\n}\n\n/**\n * The wallet-bound target of a stored Operation, resolved lazily and only for the\n * writes that need one: the all-rejected verdict, nonce reconciliation and recovery's\n * resend. None of them signs, and their address lease is keyed on the Operation itself.\n * Its frozen context (chain, network, library, wallet, signer) is rebuilt against the\n * container's current config with its own named providers first; when that no longer\n * resolves (a renamed provider, a rotated signer), the wallet alone over the current\n * defaults, with neither the recorded signer nor the providers: the wallet's current\n * signer, public key or address then stands for it (a watch-only wallet is enough). The\n * engine checks the resolved wallet still owns the Operation before using it.\n */\nasync function operationTarget(\n container: CryptoAio,\n runtime: RootRuntime,\n record: OperationRecord,\n wallets: (selection: ResolvedSelection, driver: ChainDriver) => Promise<ResolvedWallet>,\n): Promise<OperationTarget> {\n const { chain, network, library, wallet, signer, providers } = record.context;\n const base = { chain, network, library, wallet } as HandleConfig<ChainId>;\n const named = providers.filter((name) => !name.startsWith('inline:'));\n let handle: Blockchain<ChainId>;\n try {\n handle = container.blockchain({\n ...base,\n ...(signer !== undefined ? { signer } : {}),\n ...(named.length > 0 ? { provider: named } : {}),\n });\n } catch (error) {\n if (!(error instanceof ConfigError)) throw error;\n handle = container.blockchain(base);\n }\n const internals = internalsOf(handle);\n const pooled = await internals.pooled();\n return {\n selection: internals.selection,\n pooled,\n wallet: await wallets(internals.selection, pooled.driver),\n assets: runtime.assets,\n };\n}\n\nexport interface OperationsFilter {\n readonly states?: readonly OperationState[];\n readonly chain?: string;\n readonly network?: string;\n readonly limit?: number;\n}\n\nexport interface OperationsApi {\n get(id: string): Promise<OperationView | null>;\n /** In creation order. */\n list(filter?: OperationsFilter): Promise<OperationView[]>;\n /** Startup recovery for this namespace (see RecoveryReport); it never signs. */\n recover(options?: { readonly signal?: AbortSignal }): Promise<RecoveryReport>;\n}\n\nexport interface MonitorApi {\n /** Runs worker passes until `signal` aborts; any number of workers may run. */\n start(options?: WorkerOptions): Promise<void>;\n /** One worker pass; resolves to the number of Operations it claimed. */\n runOnce(options?: WorkerOptions): Promise<number>;\n}\n\n/**\n * Dependency container: stores, signers, wallets, hooks, plugins and a shared driver pool.\n * Separate `new CryptoAio()` instances are fully isolated (use one per tenant).\n */\nexport class CryptoAio {\n readonly namespace: string;\n\n constructor(options: AioOptions = {}) {\n const scope = pendingScope;\n pendingScope = undefined;\n if (scope) {\n const parent = containerOf(scope.parent);\n this.namespace = parent.runtime.namespace;\n this.#bind(parent.runtime, [...parent.layers, scopePart(scope.overrides)], false);\n return;\n }\n const namespace = options.namespace ?? 'default';\n if (!NAMESPACE.test(namespace))\n throw new ConfigError(\n 'CONFIG_INVALID',\n 'invalid namespace: use 1 to 64 letters, digits, dots, underscores or hyphens',\n );\n const clock = options.clock ?? systemClock;\n const log = options.logger ?? createLogger();\n const catalogs = createCatalogs();\n for (const plugin of [...builtinPlugins(), ...(options.plugins ?? [])])\n applyPlugin(catalogs, plugin);\n for (const asset of options.assets ?? []) {\n catalogs.chains.network(asset.chain, asset.network);\n catalogs.assets.register(asset);\n }\n const env = options.env === false ? {} : (options.env ?? process.env);\n const events = new EventBus(clock, log);\n // eslint-disable-next-line prefer-const -- closures below read it after assignment\n let runtime: RootRuntime;\n const pool = new DriverPool({\n catalogs: () => runtime.catalogs,\n clock,\n events,\n log,\n transport: () => runtime.transport,\n });\n runtime = {\n namespace,\n catalogs,\n envLayer: {\n chains: readEnvChains(\n env,\n catalogs.chains.list().map((c) => c.id),\n options.profile,\n ),\n },\n env,\n ...(options.profile !== undefined ? { profile: options.profile } : {}),\n clock,\n log,\n events,\n stores: {\n ...createMemoryStores(clock),\n ...(Object.fromEntries(\n Object.entries(options.stores ?? {}).filter(([, store]) => store !== undefined),\n ) as Partial<Stores>),\n },\n pool,\n assets: new AssetService(() => runtime.catalogs),\n transport: options.transport ?? {},\n owner: randomId('aio'),\n closed: false,\n closing: new AbortController(),\n natives: new Set(),\n };\n this.namespace = namespace;\n this.#bind(runtime, [scopePart(options)], true);\n }\n\n /**\n * Child container: inherits config, pool, stores and namespace; overrides merge on top.\n * Not a tenant boundary — a scope shares its root's pool and stores. Use a separate\n * `new CryptoAio({ namespace })` when isolation between tenants is required.\n */\n scope(overrides: ScopeOptions): CryptoAio {\n pendingScope = { parent: this, overrides };\n try {\n return new CryptoAio();\n } finally {\n pendingScope = undefined;\n }\n }\n\n blockchain<C extends ChainId>(config: HandleConfig<C>): Blockchain<C> {\n const internals = containerOf(this);\n const { runtime } = internals;\n const selection = resolveSelection({\n handle: config as HandleOptions,\n effective: internals.effective(),\n catalogs: runtime.catalogs,\n log: runtime.log,\n });\n let pooled: Promise<PooledDriver> | undefined;\n let wallet: Promise<ResolvedWallet> | undefined;\n const handle: HandleInternals = {\n container: this,\n selection,\n nativeClients: new Map(),\n assertOpen: () => {\n if (runtime.closed) throw closedError();\n },\n registerNative: (native) => {\n if (runtime.closed) throw closedError();\n if (native.close) runtime.natives.add(() => native.close?.());\n },\n // A closed root refuses work even through a pooled driver this handle holds.\n pooled: () => {\n if (runtime.closed) return Promise.reject(closedError());\n pooled ??= runtime.pool.get(selection).catch((error: unknown) => {\n pooled = undefined;\n throw error;\n });\n return pooled;\n },\n wallet: () => {\n if (runtime.closed) return Promise.reject(closedError());\n wallet ??= handle\n .pooled()\n .then(({ driver }) =>\n resolveWallet(\n selection,\n driver,\n internals.effective().signers,\n runtime.catalogs.schemes,\n internals.signerDeadline(),\n ),\n )\n .catch((error: unknown) => {\n wallet = undefined;\n throw error;\n });\n return wallet;\n },\n };\n return createBlockchain<C>(handle);\n }\n\n /** Registers a plugin on this root container (copy-on-write catalogs). */\n use(plugin: Plugin): this {\n const internals = containerOf(this);\n if (!internals.isRoot)\n throw new ConfigError(\n 'CONFIG_INVALID',\n 'plugins can only be added to a root container',\n );\n const { runtime } = internals;\n const next = cloneCatalogs(runtime.catalogs);\n applyPlugin(next, plugin);\n runtime.catalogs = next;\n runtime.envLayer = {\n chains: readEnvChains(\n runtime.env,\n next.chains.list().map((c) => c.id),\n runtime.profile,\n ),\n };\n return this;\n }\n\n on<E extends AioEventName>(type: E, handler: (event: AioEvent<E>) => void): () => void {\n return containerOf(this).runtime.events.on(type, handler);\n }\n\n onAny(handler: (event: AioEvent) => void): () => void {\n return containerOf(this).runtime.events.onAny(handler);\n }\n\n /** Stored Operations of this namespace, as views, and startup recovery. */\n get operations(): OperationsApi {\n const internals = containerOf(this);\n const store = storesOf(internals.runtime).operations;\n const namespace = internals.runtime.namespace;\n const view = async (record: OperationRecord) =>\n toView(record, await loadObservations(store, record));\n return {\n get: async (id) => {\n const record = await store.get(namespace, id);\n return record ? view(record) : null;\n },\n list: async (filter = {}) =>\n Promise.all(\n (\n await store.list({\n namespace,\n ...(filter.states ? { states: filter.states } : {}),\n ...(filter.chain ? { chain: filter.chain } : {}),\n ...(filter.network ? { network: filter.network } : {}),\n ...(filter.limit !== undefined ? { limit: filter.limit } : {}),\n })\n ).map(view),\n ),\n recover: async (options = {}) =>\n internals.monitor().recover({\n ...options,\n signal: workerSignal(internals.runtime, options.signal),\n }),\n };\n }\n\n /** Background workers that check due Operations without anyone waiting on them. */\n get monitor(): MonitorApi {\n const internals = containerOf(this);\n return {\n start: async (options = {}) =>\n internals.monitor().start({\n ...options,\n signal: workerSignal(internals.runtime, options.signal),\n }),\n runOnce: async (options = {}) =>\n internals.monitor().runOnce({\n workerId: options.workerId ?? internals.runtime.owner,\n ...(options.batch !== undefined ? { batch: options.batch } : {}),\n signal: workerSignal(internals.runtime, options.signal),\n }),\n };\n }\n\n /**\n * Closes the root container: runs the `close` of every native client that\n * `crypto-aio/native` handed out (a failing one is logged by code and skipped), then\n * closes the pooled drivers. Its handles and `native()` then fail with\n * `INVALID_TRANSITION`. A scope's `close()` does nothing; scopes share their root's pool.\n */\n async close(): Promise<void> {\n const internals = containerOf(this);\n if (!internals.isRoot) return;\n const { runtime } = internals;\n runtime.closed = true;\n // Every worker loop, pass and recovery stops at its next check, and its sleeps end.\n runtime.closing.abort();\n const natives = [...runtime.natives];\n runtime.natives.clear();\n await Promise.all(\n natives.map(async (close) => {\n try {\n const outcome = await closeWithin(\n close,\n runtime.clock,\n NATIVE_CLOSE_TIMEOUT_MS,\n );\n if (outcome === 'timeout') {\n runtime.log.warn('native client close timed out', {\n timeoutMs: NATIVE_CLOSE_TIMEOUT_MS,\n });\n }\n } catch (error) {\n runtime.log.warn('native client close failed', { code: errorCode(error) });\n }\n }),\n );\n await runtime.pool.close();\n }\n\n #bind(runtime: RootRuntime, layers: readonly ScopeOptions[], isRoot: boolean): void {\n const effective = () => mergeScopes([runtime.envLayer, ...layers]);\n let engine: OperationEngine | undefined;\n let monitor: Monitor | undefined;\n const getEngine = () => (engine ??= createEngine(runtime, effective));\n const wallets = walletCache(runtime, () => containerOf(this));\n bindContainer(this, {\n runtime,\n layers,\n isRoot,\n effective,\n signerDeadline: () => ({\n clock: runtime.clock,\n timeoutMs: withLifecycleDefaults(effective().lifecycle).signTimeoutMs,\n }),\n engine: getEngine,\n monitor: () =>\n (monitor ??= new Monitor({\n engine: getEngine(),\n stores: storesOf(runtime),\n events: runtime.events,\n clock: runtime.clock,\n log: runtime.log.child('monitor'),\n namespace: runtime.namespace,\n lifecycle: () => withLifecycleDefaults(effective().lifecycle),\n resolveRead: (record) => readTarget(this, record),\n resolveTarget: (record) => operationTarget(this, runtime, record, wallets),\n })),\n });\n }\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import type { AioOptions } from '../config/types';
2
+ import { CryptoAio } from './container';
3
+ /** The container behind `Blockchain.create`. Prefer explicit containers for multi-tenant use. */
4
+ export declare function defaultContainer(): CryptoAio;
5
+ /**
6
+ * Merges options into the default container. Existing handles keep their frozen config; the
7
+ * stores are carried over key by key (not wholesale) so Operations stay visible even across
8
+ * a `configure()` call that names only some of them. Intended for application startup.
9
+ *
10
+ * Each call starts a new generation of the default container (a new event bus, owner id and
11
+ * driver pool); it never closes the previous one.
12
+ */
13
+ export declare function configure(options: AioOptions): CryptoAio;
14
+ /** Forgets the default container (tests). */
15
+ export declare function resetDefaultContainer(): void;