crypto-aio 0.0.2 → 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 (672) 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/lib-types.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/adapters/ton/types.js +3 -0
  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/core/model/transaction.js +3 -0
  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 -44
  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 -2
  638. package/dist/libs/eth/contract.js +0 -7
  639. package/dist/libs/eth/contract.js.map +0 -1
  640. package/dist/libs/eth/index.d.ts +0 -20
  641. package/dist/libs/eth/index.js +0 -62
  642. package/dist/libs/eth/index.js.map +0 -1
  643. package/dist/libs/eth/transact.d.ts +0 -2
  644. package/dist/libs/eth/transact.js +0 -7
  645. package/dist/libs/eth/transact.js.map +0 -1
  646. package/dist/libs/index.d.ts +0 -1
  647. package/dist/libs/index.js +0 -18
  648. package/dist/libs/index.js.map +0 -1
  649. package/dist/tool/common.d.ts +0 -28
  650. package/dist/tool/common.js +0 -33
  651. package/dist/tool/common.js.map +0 -1
  652. package/dist/tool/eth-tools.d.ts +0 -3
  653. package/dist/tool/eth-tools.js +0 -33
  654. package/dist/tool/eth-tools.js.map +0 -1
  655. package/dist/tool/index.d.ts +0 -4
  656. package/dist/tool/index.js +0 -21
  657. package/dist/tool/index.js.map +0 -1
  658. package/dist/tool/logging.d.ts +0 -3
  659. package/dist/tool/logging.js +0 -11
  660. package/dist/tool/logging.js.map +0 -1
  661. package/dist/tool/options.d.ts +0 -4
  662. package/dist/tool/options.js +0 -28
  663. package/dist/tool/options.js.map +0 -1
  664. package/dist/type/account.d.ts +0 -9
  665. package/dist/type/account.js.map +0 -1
  666. package/dist/type/common.d.ts +0 -18
  667. package/dist/type/common.js.map +0 -1
  668. package/dist/type/index.d.ts +0 -3
  669. package/dist/type/index.js +0 -20
  670. package/dist/type/index.js.map +0 -1
  671. package/dist/type/lib-types.d.ts +0 -7
  672. package/dist/type/lib-types.js.map +0 -1
@@ -0,0 +1,606 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Monitor = void 0;
4
+ exports.assertSameNetwork = assertSameNetwork;
5
+ const mapping_1 = require("../blockchain/mapping");
6
+ const error_1 = require("../errors/error");
7
+ const types_1 = require("../store/types");
8
+ const stale_view_1 = require("../transport/stale-view");
9
+ const engine_1 = require("./engine");
10
+ const evaluate_1 = require("./evaluate");
11
+ const observations_1 = require("./observations");
12
+ const views_1 = require("./views");
13
+ const workers_1 = require("./workers");
14
+ const SETTLED = new Set(['final', 'failed', 'rejected', 'replaced', 'expired']);
15
+ const UNKNOWN = {
16
+ state: 'unknown',
17
+ evidence: 'observed',
18
+ confirmations: 0,
19
+ finality: 'none',
20
+ };
21
+ /** Proven and settled: nothing observed later may overwrite it. */
22
+ function isSettled(observation) {
23
+ return observation?.evidence === 'proven' && SETTLED.has(observation.state);
24
+ }
25
+ /**
26
+ * Watches Attempts on chain and moves their Operation on evidence.
27
+ * Observed data (a single endpoint's view, absence, `dropped`, `refused`, an unfinalized
28
+ * block) only ever produces non-terminal states; a terminal state needs `proven` evidence
29
+ * (finalized data confirmed by quorum proof reads). A stale view decides nothing.
30
+ */
31
+ class Monitor {
32
+ deps;
33
+ /** The worker loop and recovery, over this monitor's checks. */
34
+ #workers;
35
+ constructor(deps) {
36
+ this.deps = deps;
37
+ this.#workers = new workers_1.Workers(deps, {
38
+ checkPass: (target, op, fence, signal) => this.#checkPass(target, op, fence, signal),
39
+ check: (target, op, fence, signal) => this.check(target, op, fence, signal),
40
+ find: (ref) => this.find(ref),
41
+ });
42
+ }
43
+ get observationDeps() {
44
+ return {
45
+ operations: this.deps.stores.operations,
46
+ events: this.deps.events,
47
+ namespace: this.deps.namespace,
48
+ };
49
+ }
50
+ /** Finds a managed Operation by id, Attempt ref or observed canonical tx hash. */
51
+ async find(ref) {
52
+ const store = this.deps.stores.operations;
53
+ return ((await store.get(this.deps.namespace, ref)) ??
54
+ (await store.findByRef(this.deps.namespace, ref)));
55
+ }
56
+ /**
57
+ * One evaluation pass: observe live Attempts, persist observations, apply the transition.
58
+ * `signal` is checked before every read, so an aborted pass stops after at most the
59
+ * read in flight; it then throws the signal's reason and decides nothing further.
60
+ */
61
+ async check(target, op, fence, signal) {
62
+ return (await this.#checkPass(target, op, fence, signal)).record;
63
+ }
64
+ /** `check`, also telling whether the view was stale (it then decided nothing). */
65
+ async #checkPass(target, op, fence, signal) {
66
+ if ((0, types_1.isTerminal)(op.state) || engine_1.PRE_SIGNING_STATES.has(op.state))
67
+ return { record: op, stale: false };
68
+ const { pooled } = target;
69
+ signal?.throwIfAborted();
70
+ await pooled.transport.ensureFreshHealth(signal);
71
+ signal?.throwIfAborted();
72
+ const [head, finalized] = await Promise.all([
73
+ pooled.driver.reader.getBlockHeight(),
74
+ pooled.driver.reader.getFinalizedHeight(),
75
+ ]);
76
+ if ((0, stale_view_1.isStaleView)(pooled.transport, head))
77
+ return { record: op, stale: true };
78
+ const observations = new Map();
79
+ for (const attempt of op.attempts) {
80
+ try {
81
+ observations.set(attempt.id, await this.observeAttempt(target, op, attempt, head, finalized, signal));
82
+ }
83
+ catch (error) {
84
+ if (signal?.aborted || !(0, error_1.isCryptoAioError)(error) || !error.retryable)
85
+ throw error;
86
+ const current = await this.deps.stores.operations.getObservation(attempt.id);
87
+ if (current)
88
+ observations.set(attempt.id, current);
89
+ }
90
+ }
91
+ return {
92
+ record: await this.applyEvaluation(op, observations, fence, signal),
93
+ stale: false,
94
+ };
95
+ }
96
+ /** Current status of a managed Operation (after a check) or of an arbitrary transaction id. */
97
+ async status(target, ref, signal) {
98
+ let record = await this.find(ref);
99
+ if (!record)
100
+ return { status: await this.rawStatus(target, ref) };
101
+ assertSameNetwork(target.selection, record);
102
+ if (!(0, types_1.isTerminal)(record.state) && !engine_1.PRE_SIGNING_STATES.has(record.state)) {
103
+ try {
104
+ record = await this.check(target, record, undefined, signal);
105
+ }
106
+ catch (error) {
107
+ if (signal?.aborted || !(0, error_1.isCryptoAioError)(error) || !error.retryable)
108
+ throw error;
109
+ }
110
+ }
111
+ const observations = await (0, observations_1.loadObservations)(this.deps.stores.operations, record);
112
+ return { status: this.bestStatus(record, observations), record };
113
+ }
114
+ /**
115
+ * Polls until the wanted status: `confirmations` (default: the handle's) or, with
116
+ * `finality: 'final'`, proven finality for a managed Operation and observed finality for
117
+ * a transaction it does not manage. The caller's `signal` and the deadline bound
118
+ * every pass and sleep; a pass stops after at most the read in flight.
119
+ */
120
+ async waitFor(target, ref, options = {}) {
121
+ const { signal } = options;
122
+ if (signal?.aborted)
123
+ throw signal.reason;
124
+ const lifecycle = this.deps.lifecycle();
125
+ const deadline = this.deps.clock.now() + (options.timeoutMs ?? lifecycle.waitTimeoutMs);
126
+ const poll = options.pollIntervalMs ?? lifecycle.pollIntervalMs;
127
+ const wanted = options.confirmations ?? target.selection.confirmations;
128
+ const wantFinal = options.finality === 'final';
129
+ let last;
130
+ const stopped = () => signal?.aborted
131
+ ? signal.reason
132
+ : new error_1.TimeoutError('TIMEOUT', 'the transaction was not confirmed before the timeout', {
133
+ context: last?.record ? { operationId: last.record.id } : {},
134
+ });
135
+ // One signal for every pass and sleep: the caller's abort or the deadline.
136
+ const bound = new AbortController();
137
+ const finished = new AbortController();
138
+ const onAbort = () => bound.abort();
139
+ signal?.addEventListener('abort', onAbort, { once: true });
140
+ this.deps.clock
141
+ .sleep(Math.max(0, deadline - this.deps.clock.now()), finished.signal)
142
+ .then(onAbort, () => undefined);
143
+ try {
144
+ for (;;) {
145
+ if (bound.signal.aborted || this.deps.clock.now() >= deadline)
146
+ throw stopped();
147
+ let snapshot;
148
+ try {
149
+ snapshot = await this.status(target, ref, bound.signal);
150
+ }
151
+ catch (error) {
152
+ if (bound.signal.aborted)
153
+ throw stopped();
154
+ if (!(0, error_1.isCryptoAioError)(error) || !error.retryable)
155
+ throw error;
156
+ }
157
+ if (snapshot) {
158
+ last = snapshot;
159
+ const { status, record } = snapshot;
160
+ if (record?.state === 'final')
161
+ return snapshot;
162
+ if (record && (record.state === 'failed' || record.state === 'expired')) {
163
+ throw (0, engine_1.rehydrateError)(record.error ?? this.defaultError(record), record.id);
164
+ }
165
+ if (record?.state === 'abandoned') {
166
+ throw new error_1.StateError('INVALID_TRANSITION', `operation '${record.id}' was abandoned`);
167
+ }
168
+ if (!record && status.state === 'failed' && status.finality === 'final') {
169
+ throw new error_1.ChainError('TX_REVERTED', 'the transaction was included but failed on chain');
170
+ }
171
+ const reached = wantFinal
172
+ ? status.state === 'final' || unmanagedFinal(snapshot)
173
+ : status.state === 'final' ||
174
+ (status.state === 'included' && status.confirmations >= wanted);
175
+ if (reached)
176
+ return snapshot;
177
+ }
178
+ try {
179
+ await this.deps.clock.sleep(poll, bound.signal);
180
+ }
181
+ catch {
182
+ throw stopped();
183
+ }
184
+ }
185
+ }
186
+ finally {
187
+ finished.abort();
188
+ signal?.removeEventListener('abort', onAbort);
189
+ }
190
+ }
191
+ /**
192
+ * Yields each status change until the Operation is terminal, or until a transaction
193
+ * it does not manage reaches observed finality, whether it succeeded or reverted. Ends
194
+ * quietly when `signal` aborts.
195
+ */
196
+ async *watch(target, ref, options = {}) {
197
+ const { signal } = options;
198
+ const poll = options.pollIntervalMs ?? this.deps.lifecycle().pollIntervalMs;
199
+ let last = '';
200
+ while (!signal?.aborted) {
201
+ let snapshot;
202
+ try {
203
+ snapshot = await this.status(target, ref, signal);
204
+ }
205
+ catch (error) {
206
+ if (signal?.aborted)
207
+ return;
208
+ if (!(0, error_1.isCryptoAioError)(error) || !error.retryable)
209
+ throw error;
210
+ }
211
+ if (snapshot) {
212
+ const { status, record } = snapshot;
213
+ const key = [
214
+ status.state,
215
+ status.evidence,
216
+ status.confirmations,
217
+ status.blockHash ?? '',
218
+ record?.state ?? '',
219
+ ].join('|');
220
+ if (key !== last) {
221
+ last = key;
222
+ yield snapshot;
223
+ }
224
+ if (record ? (0, types_1.isTerminal)(record.state) : unmanagedFinal(snapshot))
225
+ return;
226
+ }
227
+ try {
228
+ await this.deps.clock.sleep(poll, signal);
229
+ }
230
+ catch {
231
+ return;
232
+ }
233
+ }
234
+ }
235
+ // ---- workers and recovery ------------------------------------------------------------
236
+ /** One worker pass (see `Workers.runOnce`); resolves to how many Operations it claimed. */
237
+ runOnce(options) {
238
+ return this.#workers.runOnce(options);
239
+ }
240
+ /** Runs worker passes until `signal` aborts (see `Workers.start`). */
241
+ start(options = {}) {
242
+ return this.#workers.start(options);
243
+ }
244
+ /** Startup recovery for this namespace; it never signs (see `Workers.recover`). */
245
+ recover(options = {}) {
246
+ return this.#workers.recover(options);
247
+ }
248
+ // ---- observation ---------------------------------------------------------------------
249
+ async observeAttempt(target, op, attempt, head, finalized, signal) {
250
+ const current = await this.deps.stores.operations.getObservation(attempt.id);
251
+ if (current && isSettled(current))
252
+ return current;
253
+ const { driver } = target.pooled;
254
+ const from = op.intent.from;
255
+ const now = this.deps.clock.now();
256
+ signal?.throwIfAborted();
257
+ const seen = await driver.reader.observe(attempt.ref, attempt.ordering, from);
258
+ signal?.throwIfAborted();
259
+ let reorgedFrom;
260
+ let patch;
261
+ if (seen.seen === 'block' && seen.blockHeight !== undefined) {
262
+ // The transaction is in another block than recorded: its old block was orphaned, once
263
+ // the quorum confirms it; one endpoint's other block alone decides nothing.
264
+ if (current?.blockHash !== undefined &&
265
+ seen.blockHash !== undefined &&
266
+ current.blockHash !== seen.blockHash) {
267
+ if (!(await this.orphaned(target, current)))
268
+ return current;
269
+ signal?.throwIfAborted();
270
+ reorgedFrom = current.blockHash;
271
+ }
272
+ patch = {
273
+ state: seen.success === false ? 'failed' : 'included',
274
+ evidence: 'observed',
275
+ confirmations: depth(head, seen.blockHeight),
276
+ blockHeight: seen.blockHeight,
277
+ blockHash: seen.blockHash,
278
+ ...(seen.txHash !== undefined ? { txHash: seen.txHash } : {}),
279
+ // Why an included transaction failed, as the driver's fixed text; any earlier
280
+ // reason (a refusal, an old failure) is cleared otherwise.
281
+ reason: seen.success === false ? seen.reason : undefined,
282
+ firstSeenAt: current?.firstSeenAt ?? now,
283
+ lastSeenAt: now,
284
+ };
285
+ if (seen.blockHeight <= finalized)
286
+ patch = await this.proveFinal(target, op, attempt, patch, head, signal);
287
+ }
288
+ else {
289
+ if (current?.blockHash !== undefined) {
290
+ // Absence (or a mempool sighting) of an included transaction is not evidence of a
291
+ // reorg by itself: a lagging or inconsistent endpoint shows the same. Only a
292
+ // quorum-served different block at the recorded height proves it; otherwise decide
293
+ // nothing.
294
+ if (!(await this.orphaned(target, current)))
295
+ return current;
296
+ signal?.throwIfAborted();
297
+ reorgedFrom = current.blockHash;
298
+ }
299
+ // Out of a block, an earlier failure's reason no longer applies (a refusal keeps
300
+ // its own, below). Clearing relies on `putObservation` replacing the whole record,
301
+ // a key set to `undefined` being absent.
302
+ const cleared = {
303
+ blockHash: undefined,
304
+ blockHeight: undefined,
305
+ confirmations: 0,
306
+ reason: undefined,
307
+ };
308
+ patch =
309
+ seen.seen === 'mempool'
310
+ ? {
311
+ ...cleared,
312
+ state: 'mempool',
313
+ evidence: 'observed',
314
+ firstSeenAt: current?.firstSeenAt ?? now,
315
+ lastSeenAt: now,
316
+ }
317
+ : {
318
+ ...cleared,
319
+ ...(await this.whenAbsent(target, op, attempt, current, now, signal)),
320
+ };
321
+ }
322
+ // This patch was derived from `current`; when another writer changed the
323
+ // observation meanwhile (possibly with stronger evidence), keep theirs and decide nothing.
324
+ let applied = false;
325
+ const saved = await (0, observations_1.writeObservation)(this.observationDeps, attempt, op.id, (stored) => {
326
+ applied = (stored?.version ?? null) === (current?.version ?? null);
327
+ return applied ? patch : undefined;
328
+ });
329
+ if (!applied)
330
+ return saved;
331
+ if (reorgedFrom !== undefined)
332
+ this.#reorged(op, attempt, reorgedFrom);
333
+ if (saved.state === 'dropped' &&
334
+ attempt.id === op.activeAttemptId &&
335
+ op.state !== 'stalled') {
336
+ signal?.throwIfAborted();
337
+ await this.#rebroadcastDropped(target, op, attempt, saved, now, signal);
338
+ }
339
+ return saved;
340
+ }
341
+ /**
342
+ * A block at or below the finalized height becomes `final`/`failed` + `proven` only when
343
+ * the quorum proof confirms it. A retryable proof failure (e.g. PROVIDER_INCONSISTENT)
344
+ * decides nothing: the observed patch is kept.
345
+ */
346
+ async proveFinal(target, op, attempt, patch, head, signal) {
347
+ let proof;
348
+ signal?.throwIfAborted();
349
+ try {
350
+ proof = await target.pooled.driver.proofs.includedFinal(attempt.ref, attempt.ordering, op.intent.from);
351
+ }
352
+ catch (error) {
353
+ if (!(0, error_1.isCryptoAioError)(error) || !error.retryable)
354
+ throw error;
355
+ return patch;
356
+ }
357
+ if (!proof.included)
358
+ return patch;
359
+ return {
360
+ ...patch,
361
+ state: proof.success ? 'final' : 'failed',
362
+ evidence: 'proven',
363
+ blockHeight: proof.blockHeight,
364
+ blockHash: proof.blockHash,
365
+ txHash: proof.txHash,
366
+ confirmations: depth(head, proof.blockHeight),
367
+ reason: failureReason(proof),
368
+ };
369
+ }
370
+ /**
371
+ * Whether the block recorded for `observation` is no longer the one at its height.
372
+ * Only the quorum-served hash decides; a disagreement or other retryable failure, or no
373
+ * block at that height yet, decides nothing (`false`).
374
+ */
375
+ async orphaned(target, observation) {
376
+ const { blockHeight, blockHash } = observation;
377
+ if (blockHeight === undefined || blockHash === undefined)
378
+ return false;
379
+ let canonical;
380
+ try {
381
+ canonical = await target.pooled.driver.proofs.blockHash(blockHeight, 'latest');
382
+ }
383
+ catch (error) {
384
+ if (!(0, error_1.isCryptoAioError)(error) || !error.retryable)
385
+ throw error;
386
+ return false;
387
+ }
388
+ return canonical !== null && canonical !== blockHash;
389
+ }
390
+ /** The transaction is not visible anywhere we can see: only finalized proofs may declare it dead. */
391
+ async whenAbsent(target, op, attempt, current, now, signal) {
392
+ const { proofs } = target.pooled.driver;
393
+ const read = (work) => {
394
+ signal?.throwIfAborted();
395
+ return work();
396
+ };
397
+ // The built ordering (never the reservation, whose seqno `validUntil`
398
+ // the driver may have replaced while building).
399
+ const ordering = attempt.ordering;
400
+ const from = op.intent.from;
401
+ const slotted = ordering.kind === 'nonce' ||
402
+ ordering.kind === 'seqno' ||
403
+ ordering.kind === 'inputs';
404
+ const expiring = ordering.kind === 'expiry' || ordering.kind === 'seqno';
405
+ const deadSlot = slotted && (await read(() => proofs.slotConsumed(ordering, from, 'finalized')));
406
+ const deadExpiry = !deadSlot && expiring && (await read(() => proofs.expired(ordering)));
407
+ if (deadSlot || deadExpiry) {
408
+ const proof = await read(() => proofs.includedFinal(attempt.ref, ordering, from));
409
+ if (proof.included) {
410
+ return {
411
+ state: proof.success ? 'final' : 'failed',
412
+ evidence: 'proven',
413
+ blockHeight: proof.blockHeight,
414
+ blockHash: proof.blockHash,
415
+ txHash: proof.txHash,
416
+ reason: failureReason(proof),
417
+ };
418
+ }
419
+ return { state: deadSlot ? 'replaced' : 'expired', evidence: 'proven' };
420
+ }
421
+ if (slotted && (await read(() => proofs.slotConsumed(ordering, from, 'latest')))) {
422
+ return { state: 'replaced', evidence: 'observed' };
423
+ }
424
+ if (current?.state === 'refused') {
425
+ return { state: 'refused', evidence: 'observed', reason: current.reason };
426
+ }
427
+ const since = current?.lastSeenAt ?? current?.lastBroadcastAt ?? attempt.createdAt;
428
+ const dropped = now - since >= this.deps.lifecycle().droppedGracePeriodMs;
429
+ return { state: dropped ? 'dropped' : 'pending', evidence: 'observed' };
430
+ }
431
+ async applyEvaluation(op, observations, fence, signal) {
432
+ const evaluation = (0, evaluate_1.evaluateOperation)(op, observations);
433
+ const { winner } = evaluation;
434
+ if (winner) {
435
+ // The winner consumed the ordering slot: every other Attempt is proven replaced by it.
436
+ // As in `whenAbsent`, a proven `replaced` carries no reason: a refusal's no longer
437
+ // applies.
438
+ const linked = (o) => isSettled(o) && !(o?.state === 'replaced' && o.replacedBy === undefined);
439
+ for (const attempt of op.attempts) {
440
+ if (attempt.id === winner.id || linked(observations.get(attempt.id)))
441
+ continue;
442
+ await (0, observations_1.writeObservation)(this.observationDeps, attempt, op.id, (stored) => linked(stored)
443
+ ? undefined
444
+ : {
445
+ state: 'replaced',
446
+ evidence: 'proven',
447
+ replacedBy: winner.ref.id,
448
+ reason: undefined,
449
+ });
450
+ }
451
+ }
452
+ // Failing an all-rejected Operation releases its nonce, so the engine applies it
453
+ // under the address lease; the monitor never makes a reservation-holding transition.
454
+ if (evaluation.error?.code === 'TX_REJECTED')
455
+ return this.failRejected(op, signal, fence);
456
+ const terminal = (0, types_1.isTerminal)(evaluation.state);
457
+ // A read-only pass (no fence) writes the Operation only when its state, outcome
458
+ // or error changes, never just to schedule it: a version bump would make a concurrent
459
+ // engine write (e.g. right after a broadcast) lose its compare-and-set. Scheduling
460
+ // (`nextCheckAt`) belongs to fenced workers and to engine transitions.
461
+ const changed = evaluation.state !== op.state ||
462
+ (evaluation.outcome !== undefined && evaluation.outcome !== op.outcome) ||
463
+ (evaluation.error !== undefined && evaluation.error.code !== op.error?.code);
464
+ if (!changed && !fence)
465
+ return op;
466
+ const clear = [];
467
+ if (terminal)
468
+ clear.push('nextCheckAt');
469
+ if (op.state === 'stalled' && evaluation.state !== 'stalled' && !evaluation.error)
470
+ clear.push('error');
471
+ const patch = {
472
+ ...(evaluation.state !== op.state ? { state: evaluation.state } : {}),
473
+ ...(evaluation.outcome ? { outcome: evaluation.outcome } : {}),
474
+ ...(evaluation.error
475
+ ? {
476
+ error: new error_1.ChainError(evaluation.error.code, evaluation.error.message, {
477
+ context: { operationId: op.id },
478
+ }).toJSON(),
479
+ }
480
+ : {}),
481
+ ...(fence && !terminal
482
+ ? { nextCheckAt: this.deps.clock.now() + this.deps.lifecycle().pollIntervalMs }
483
+ : {}),
484
+ ...(clear.length > 0 ? { clear } : {}),
485
+ };
486
+ return this.deps.engine.update(op, patch, fence);
487
+ }
488
+ /**
489
+ * Hands the all-rejected verdict to the engine: an unfenced pass (`tryOnce`) tries the
490
+ * lease once, a fenced one waits `acquireTimeoutMs`, and either wait is bounded by the
491
+ * pass `signal` (the caller's abort and, in `waitFor`, its deadline). A fenced pass's
492
+ * terminal write carries its claim `fence`, so a worker whose claim was taken over writes
493
+ * nothing. An unresolvable target leaves the Operation non-terminal.
494
+ */
495
+ async failRejected(op, signal, fence) {
496
+ let target;
497
+ let failure;
498
+ try {
499
+ target = await this.deps.resolveTarget(op);
500
+ }
501
+ catch (error) {
502
+ failure = error;
503
+ }
504
+ if (!target) {
505
+ this.deps.log.warn('cannot resolve the target to fail a rejected operation', {
506
+ operationId: op.id,
507
+ code: (0, engine_1.errorCode)(failure),
508
+ });
509
+ return op;
510
+ }
511
+ // Every unfenced pass (`getTransactionStatus`, `watch`, `waitFor`), signalled or not,
512
+ // tries the lease once: a busy lease leaves the Operation for a later pass. Only a
513
+ // fenced worker pass waits `acquireTimeoutMs`.
514
+ return this.deps.engine.failRejected(target, op, {
515
+ signal,
516
+ ...(fence ? { fence } : { acquireTimeoutMs: 0 }),
517
+ });
518
+ }
519
+ bestStatus(record, observations) {
520
+ const all = record.attempts
521
+ .map((a) => observations.get(a.id))
522
+ .filter((o) => o !== undefined);
523
+ const chosen = all.find((o) => o.state === 'final' || (o.state === 'failed' && o.evidence === 'proven')) ??
524
+ all
525
+ .filter((o) => o.state === 'included' || o.state === 'failed')
526
+ .sort((a, b) => b.confirmations - a.confirmations)[0] ??
527
+ (record.activeAttemptId ? observations.get(record.activeAttemptId) : undefined);
528
+ return chosen ? (0, views_1.statusOf)(chosen) : UNKNOWN;
529
+ }
530
+ async rawStatus(target, id) {
531
+ const { reader } = target.pooled.driver;
532
+ const [observation, head, finalized] = await Promise.all([
533
+ reader.observe({ id, idKind: 'tx-hash', canonical: true }, undefined, undefined),
534
+ reader.getBlockHeight(),
535
+ reader.getFinalizedHeight(),
536
+ ]);
537
+ return (0, mapping_1.statusFromObservation)(observation, head, finalized);
538
+ }
539
+ defaultError(record) {
540
+ const code = record.state === 'expired' ? 'TX_EXPIRED' : 'TX_REJECTED';
541
+ return new error_1.ChainError(code, `operation ended in state '${record.state}'`).toJSON();
542
+ }
543
+ #reorged(op, attempt, previousBlockHash) {
544
+ this.deps.events.emit('tx.reorged', {
545
+ namespace: this.deps.namespace,
546
+ operationId: op.id,
547
+ attemptId: attempt.id,
548
+ previousBlockHash,
549
+ });
550
+ }
551
+ /**
552
+ * Resends the stored raw bytes of a dropped active Attempt, at most once per
553
+ * `rebroadcastIntervalMs`. The answer decides nothing: `dropped` is never terminal,
554
+ * and a refusal or rejection of bytes a node once held says nothing about them. An
555
+ * acceptance is remembered (`firstSeenAt`) like the engine's broadcast path does.
556
+ */
557
+ async #rebroadcastDropped(target, op, attempt, observation, now, signal) {
558
+ if (now - (observation.lastBroadcastAt ?? 0) <
559
+ this.deps.lifecycle().rebroadcastIntervalMs)
560
+ return;
561
+ let accepted = false;
562
+ try {
563
+ const result = await target.pooled.driver.broadcaster.broadcast({ raw: attempt.raw, ref: attempt.ref }, signal ? { signal } : {});
564
+ accepted = result.kind === 'accepted' || result.kind === 'already-known';
565
+ }
566
+ catch (error) {
567
+ // The code only: an error message may carry detail that logs must not.
568
+ this.deps.log.debug('rebroadcast of a dropped attempt failed', {
569
+ operationId: op.id,
570
+ code: (0, engine_1.errorCode)(error),
571
+ });
572
+ }
573
+ await (0, observations_1.writeObservation)(this.observationDeps, attempt, op.id, (stored) => ({
574
+ lastBroadcastAt: now,
575
+ ...(accepted ? { firstSeenAt: stored?.firstSeenAt ?? now } : {}),
576
+ }));
577
+ }
578
+ }
579
+ exports.Monitor = Monitor;
580
+ /** Refuses a stored Operation of another chain or network than `selection` (INVALID_INTENT). */
581
+ function assertSameNetwork(selection, record) {
582
+ const { chain, network } = selection;
583
+ if (record.context.chain !== chain.id || record.context.network !== network.id) {
584
+ throw new error_1.ValidationError('INVALID_INTENT', `operation '${record.id}' belongs to ${record.context.chain}:${record.context.network}, not ${chain.id}:${network.id}`);
585
+ }
586
+ }
587
+ /**
588
+ * An unmanaged transaction has no proofs to wait for: its observed finality is the answer,
589
+ * whether it succeeded or reverted (`waitFor` rejects a reverted one with TX_REVERTED).
590
+ */
591
+ function unmanagedFinal({ status, record }) {
592
+ return !record && status.finality === 'final';
593
+ }
594
+ function depth(head, height) {
595
+ const d = head - height + 1n;
596
+ return d > 0n ? Number(d) : 0;
597
+ }
598
+ /**
599
+ * A proven failure's fixed reason; a success clears any earlier reason. Drivers give a
600
+ * fixed text because a node's own text can carry addresses or amounts; the stored reason
601
+ * is sensitive data, and no event carries it.
602
+ */
603
+ function failureReason(proof) {
604
+ return proof.success ? undefined : proof.reason;
605
+ }
606
+ //# sourceMappingURL=monitor.js.map