crypto-aio 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +144 -14
  3. package/dist/adapters/avalanche/address.d.ts +15 -0
  4. package/dist/adapters/avalanche/address.js +74 -0
  5. package/dist/adapters/avalanche/address.js.map +1 -0
  6. package/dist/adapters/avalanche/api.d.ts +100 -0
  7. package/dist/adapters/avalanche/api.js +381 -0
  8. package/dist/adapters/avalanche/api.js.map +1 -0
  9. package/dist/adapters/avalanche/builder.d.ts +13 -0
  10. package/dist/adapters/avalanche/builder.js +336 -0
  11. package/dist/adapters/avalanche/builder.js.map +1 -0
  12. package/dist/adapters/avalanche/cb58.d.ts +7 -0
  13. package/dist/adapters/avalanche/cb58.js +49 -0
  14. package/dist/adapters/avalanche/cb58.js.map +1 -0
  15. package/dist/adapters/avalanche/chains.d.ts +21 -0
  16. package/dist/adapters/avalanche/chains.js +79 -0
  17. package/dist/adapters/avalanche/chains.js.map +1 -0
  18. package/dist/adapters/avalanche/codec.d.ts +94 -0
  19. package/dist/adapters/avalanche/codec.js +371 -0
  20. package/dist/adapters/avalanche/codec.js.map +1 -0
  21. package/dist/adapters/avalanche/context.d.ts +59 -0
  22. package/dist/adapters/avalanche/context.js +114 -0
  23. package/dist/adapters/avalanche/context.js.map +1 -0
  24. package/dist/adapters/avalanche/decode.d.ts +16 -0
  25. package/dist/adapters/avalanche/decode.js +101 -0
  26. package/dist/adapters/avalanche/decode.js.map +1 -0
  27. package/dist/adapters/avalanche/driver.d.ts +22 -0
  28. package/dist/adapters/avalanche/driver.js +81 -0
  29. package/dist/adapters/avalanche/driver.js.map +1 -0
  30. package/dist/adapters/avalanche/errors.d.ts +18 -0
  31. package/dist/adapters/avalanche/errors.js +61 -0
  32. package/dist/adapters/avalanche/errors.js.map +1 -0
  33. package/dist/adapters/avalanche/fees.d.ts +23 -0
  34. package/dist/adapters/avalanche/fees.js +105 -0
  35. package/dist/adapters/avalanche/fees.js.map +1 -0
  36. package/dist/adapters/avalanche/index.d.ts +19 -0
  37. package/dist/adapters/avalanche/index.js +8 -0
  38. package/dist/adapters/avalanche/index.js.map +1 -0
  39. package/dist/adapters/avalanche/network.d.ts +37 -0
  40. package/dist/adapters/avalanche/network.js +135 -0
  41. package/dist/adapters/avalanche/network.js.map +1 -0
  42. package/dist/adapters/avalanche/plugin.d.ts +21 -0
  43. package/dist/adapters/avalanche/plugin.js +46 -0
  44. package/dist/adapters/avalanche/plugin.js.map +1 -0
  45. package/dist/adapters/avalanche/presets.d.ts +6 -0
  46. package/dist/adapters/avalanche/presets.js +86 -0
  47. package/dist/adapters/avalanche/presets.js.map +1 -0
  48. package/dist/adapters/avalanche/proofs.d.ts +41 -0
  49. package/dist/adapters/avalanche/proofs.js +270 -0
  50. package/dist/adapters/avalanche/proofs.js.map +1 -0
  51. package/dist/adapters/avalanche/reader.d.ts +40 -0
  52. package/dist/adapters/avalanche/reader.js +231 -0
  53. package/dist/adapters/avalanche/reader.js.map +1 -0
  54. package/dist/adapters/avalanche/sdk.d.ts +182 -0
  55. package/dist/adapters/avalanche/sdk.js +21 -0
  56. package/dist/adapters/avalanche/sdk.js.map +1 -0
  57. package/dist/adapters/avalanche/types.d.ts +86 -0
  58. package/dist/{type/common.js → adapters/avalanche/types.js} +1 -1
  59. package/dist/adapters/avalanche/types.js.map +1 -0
  60. package/dist/adapters/evm/builder.d.ts +11 -0
  61. package/dist/adapters/evm/builder.js +326 -0
  62. package/dist/adapters/evm/builder.js.map +1 -0
  63. package/dist/adapters/evm/chains.d.ts +6 -0
  64. package/dist/adapters/evm/chains.js +203 -0
  65. package/dist/adapters/evm/chains.js.map +1 -0
  66. package/dist/adapters/evm/client.d.ts +84 -0
  67. package/dist/adapters/evm/client.js +335 -0
  68. package/dist/adapters/evm/client.js.map +1 -0
  69. package/dist/adapters/evm/decode.d.ts +35 -0
  70. package/dist/adapters/evm/decode.js +170 -0
  71. package/dist/adapters/evm/decode.js.map +1 -0
  72. package/dist/adapters/evm/driver.d.ts +8 -0
  73. package/dist/adapters/evm/driver.js +61 -0
  74. package/dist/adapters/evm/driver.js.map +1 -0
  75. package/dist/adapters/evm/errors.d.ts +20 -0
  76. package/dist/adapters/evm/errors.js +110 -0
  77. package/dist/adapters/evm/errors.js.map +1 -0
  78. package/dist/adapters/evm/ethers-client.d.ts +43 -0
  79. package/dist/adapters/evm/ethers-client.js +135 -0
  80. package/dist/adapters/evm/ethers-client.js.map +1 -0
  81. package/dist/adapters/evm/fees.d.ts +79 -0
  82. package/dist/adapters/evm/fees.js +234 -0
  83. package/dist/adapters/evm/fees.js.map +1 -0
  84. package/dist/adapters/evm/index.d.ts +20 -0
  85. package/dist/adapters/evm/index.js +11 -0
  86. package/dist/adapters/evm/index.js.map +1 -0
  87. package/dist/adapters/evm/network.d.ts +60 -0
  88. package/dist/adapters/evm/network.js +131 -0
  89. package/dist/adapters/evm/network.js.map +1 -0
  90. package/dist/adapters/evm/plugin.d.ts +36 -0
  91. package/dist/adapters/evm/plugin.js +102 -0
  92. package/dist/adapters/evm/plugin.js.map +1 -0
  93. package/dist/adapters/evm/presets.d.ts +2 -0
  94. package/dist/adapters/evm/presets.js +105 -0
  95. package/dist/adapters/evm/presets.js.map +1 -0
  96. package/dist/adapters/evm/proofs.d.ts +19 -0
  97. package/dist/adapters/evm/proofs.js +358 -0
  98. package/dist/adapters/evm/proofs.js.map +1 -0
  99. package/dist/adapters/evm/rawtx.d.ts +25 -0
  100. package/dist/adapters/evm/rawtx.js +176 -0
  101. package/dist/adapters/evm/rawtx.js.map +1 -0
  102. package/dist/adapters/evm/reader.d.ts +65 -0
  103. package/dist/adapters/evm/reader.js +292 -0
  104. package/dist/adapters/evm/reader.js.map +1 -0
  105. package/dist/adapters/evm/rpc.d.ts +39 -0
  106. package/dist/adapters/evm/rpc.js +152 -0
  107. package/dist/adapters/evm/rpc.js.map +1 -0
  108. package/dist/adapters/evm/tokens.d.ts +7 -0
  109. package/dist/adapters/evm/tokens.js +23 -0
  110. package/dist/adapters/evm/tokens.js.map +1 -0
  111. package/dist/adapters/evm/types.d.ts +255 -0
  112. package/dist/{type/account.js → adapters/evm/types.js} +1 -1
  113. package/dist/adapters/evm/types.js.map +1 -0
  114. package/dist/adapters/evm/web3-client.d.ts +23 -0
  115. package/dist/adapters/evm/web3-client.js +159 -0
  116. package/dist/adapters/evm/web3-client.js.map +1 -0
  117. package/dist/adapters/solana/builder.d.ts +18 -0
  118. package/dist/adapters/solana/builder.js +545 -0
  119. package/dist/adapters/solana/builder.js.map +1 -0
  120. package/dist/adapters/solana/chains.d.ts +13 -0
  121. package/dist/adapters/solana/chains.js +37 -0
  122. package/dist/adapters/solana/chains.js.map +1 -0
  123. package/dist/adapters/solana/decode.d.ts +111 -0
  124. package/dist/adapters/solana/decode.js +595 -0
  125. package/dist/adapters/solana/decode.js.map +1 -0
  126. package/dist/adapters/solana/driver.d.ts +15 -0
  127. package/dist/adapters/solana/driver.js +72 -0
  128. package/dist/adapters/solana/driver.js.map +1 -0
  129. package/dist/adapters/solana/errors.d.ts +36 -0
  130. package/dist/adapters/solana/errors.js +154 -0
  131. package/dist/adapters/solana/errors.js.map +1 -0
  132. package/dist/adapters/solana/fees.d.ts +68 -0
  133. package/dist/adapters/solana/fees.js +205 -0
  134. package/dist/adapters/solana/fees.js.map +1 -0
  135. package/dist/adapters/solana/heights.d.ts +47 -0
  136. package/dist/adapters/solana/heights.js +185 -0
  137. package/dist/adapters/solana/heights.js.map +1 -0
  138. package/dist/adapters/solana/history.d.ts +10 -0
  139. package/dist/adapters/solana/history.js +71 -0
  140. package/dist/adapters/solana/history.js.map +1 -0
  141. package/dist/adapters/solana/index.d.ts +16 -0
  142. package/dist/adapters/solana/index.js +9 -0
  143. package/dist/adapters/solana/index.js.map +1 -0
  144. package/dist/adapters/solana/keys.d.ts +13 -0
  145. package/dist/adapters/solana/keys.js +69 -0
  146. package/dist/adapters/solana/keys.js.map +1 -0
  147. package/dist/adapters/solana/network.d.ts +24 -0
  148. package/dist/adapters/solana/network.js +95 -0
  149. package/dist/adapters/solana/network.js.map +1 -0
  150. package/dist/adapters/solana/plugin.d.ts +18 -0
  151. package/dist/adapters/solana/plugin.js +41 -0
  152. package/dist/adapters/solana/plugin.js.map +1 -0
  153. package/dist/adapters/solana/presets.d.ts +2 -0
  154. package/dist/adapters/solana/presets.js +77 -0
  155. package/dist/adapters/solana/presets.js.map +1 -0
  156. package/dist/adapters/solana/programs.d.ts +44 -0
  157. package/dist/adapters/solana/programs.js +159 -0
  158. package/dist/adapters/solana/programs.js.map +1 -0
  159. package/dist/adapters/solana/proofs.d.ts +56 -0
  160. package/dist/adapters/solana/proofs.js +540 -0
  161. package/dist/adapters/solana/proofs.js.map +1 -0
  162. package/dist/adapters/solana/reader.d.ts +82 -0
  163. package/dist/adapters/solana/reader.js +326 -0
  164. package/dist/adapters/solana/reader.js.map +1 -0
  165. package/dist/adapters/solana/rpc.d.ts +102 -0
  166. package/dist/adapters/solana/rpc.js +301 -0
  167. package/dist/adapters/solana/rpc.js.map +1 -0
  168. package/dist/adapters/solana/tokens.d.ts +7 -0
  169. package/dist/adapters/solana/tokens.js +19 -0
  170. package/dist/adapters/solana/tokens.js.map +1 -0
  171. package/dist/adapters/solana/types.d.ts +121 -0
  172. package/dist/{type/contract.js → adapters/solana/types.js} +1 -1
  173. package/dist/adapters/solana/types.js.map +1 -0
  174. package/dist/adapters/solana/web3.d.ts +5 -0
  175. package/dist/adapters/solana/web3.js +83 -0
  176. package/dist/adapters/solana/web3.js.map +1 -0
  177. package/dist/adapters/solana/wire.d.ts +62 -0
  178. package/dist/adapters/solana/wire.js +168 -0
  179. package/dist/adapters/solana/wire.js.map +1 -0
  180. package/dist/adapters/ton/address.d.ts +43 -0
  181. package/dist/adapters/ton/address.js +168 -0
  182. package/dist/adapters/ton/address.js.map +1 -0
  183. package/dist/adapters/ton/api.d.ts +344 -0
  184. package/dist/adapters/ton/api.js +942 -0
  185. package/dist/adapters/ton/api.js.map +1 -0
  186. package/dist/adapters/ton/builder.d.ts +18 -0
  187. package/dist/adapters/ton/builder.js +701 -0
  188. package/dist/adapters/ton/builder.js.map +1 -0
  189. package/dist/adapters/ton/chains.d.ts +16 -0
  190. package/dist/adapters/ton/chains.js +39 -0
  191. package/dist/adapters/ton/chains.js.map +1 -0
  192. package/dist/adapters/ton/decode.d.ts +43 -0
  193. package/dist/adapters/ton/decode.js +219 -0
  194. package/dist/adapters/ton/decode.js.map +1 -0
  195. package/dist/adapters/ton/driver.d.ts +10 -0
  196. package/dist/adapters/ton/driver.js +117 -0
  197. package/dist/adapters/ton/driver.js.map +1 -0
  198. package/dist/adapters/ton/errors.d.ts +36 -0
  199. package/dist/adapters/ton/errors.js +89 -0
  200. package/dist/adapters/ton/errors.js.map +1 -0
  201. package/dist/adapters/ton/fees.d.ts +28 -0
  202. package/dist/adapters/ton/fees.js +121 -0
  203. package/dist/adapters/ton/fees.js.map +1 -0
  204. package/dist/adapters/ton/index.d.ts +16 -0
  205. package/dist/adapters/ton/index.js +9 -0
  206. package/dist/adapters/ton/index.js.map +1 -0
  207. package/dist/adapters/ton/messages.d.ts +157 -0
  208. package/dist/adapters/ton/messages.js +397 -0
  209. package/dist/adapters/ton/messages.js.map +1 -0
  210. package/dist/adapters/ton/native-client.d.ts +10 -0
  211. package/dist/adapters/ton/native-client.js +47 -0
  212. package/dist/adapters/ton/native-client.js.map +1 -0
  213. package/dist/adapters/ton/network.d.ts +58 -0
  214. package/dist/adapters/ton/network.js +207 -0
  215. package/dist/adapters/ton/network.js.map +1 -0
  216. package/dist/adapters/ton/plugin.d.ts +24 -0
  217. package/dist/adapters/ton/plugin.js +57 -0
  218. package/dist/adapters/ton/plugin.js.map +1 -0
  219. package/dist/adapters/ton/presets.d.ts +6 -0
  220. package/dist/adapters/ton/presets.js +94 -0
  221. package/dist/adapters/ton/presets.js.map +1 -0
  222. package/dist/adapters/ton/proofs.d.ts +66 -0
  223. package/dist/adapters/ton/proofs.js +813 -0
  224. package/dist/adapters/ton/proofs.js.map +1 -0
  225. package/dist/adapters/ton/reader.d.ts +194 -0
  226. package/dist/adapters/ton/reader.js +781 -0
  227. package/dist/adapters/ton/reader.js.map +1 -0
  228. package/dist/adapters/ton/tokens.d.ts +10 -0
  229. package/dist/adapters/ton/tokens.js +27 -0
  230. package/dist/adapters/ton/tokens.js.map +1 -0
  231. package/dist/adapters/ton/trace.d.ts +48 -0
  232. package/dist/adapters/ton/trace.js +277 -0
  233. package/dist/adapters/ton/trace.js.map +1 -0
  234. package/dist/adapters/ton/types.d.ts +105 -0
  235. package/dist/{type/transact.js → adapters/ton/types.js} +1 -1
  236. package/dist/adapters/ton/types.js.map +1 -0
  237. package/dist/adapters/ton/wallets.d.ts +86 -0
  238. package/dist/adapters/ton/wallets.js +373 -0
  239. package/dist/adapters/ton/wallets.js.map +1 -0
  240. package/dist/adapters/tron/abi.d.ts +39 -0
  241. package/dist/adapters/tron/abi.js +110 -0
  242. package/dist/adapters/tron/abi.js.map +1 -0
  243. package/dist/adapters/tron/address.d.ts +20 -0
  244. package/dist/adapters/tron/address.js +110 -0
  245. package/dist/adapters/tron/address.js.map +1 -0
  246. package/dist/adapters/tron/builder.d.ts +12 -0
  247. package/dist/adapters/tron/builder.js +553 -0
  248. package/dist/adapters/tron/builder.js.map +1 -0
  249. package/dist/adapters/tron/chains.d.ts +12 -0
  250. package/dist/adapters/tron/chains.js +35 -0
  251. package/dist/adapters/tron/chains.js.map +1 -0
  252. package/dist/adapters/tron/codec.d.ts +10 -0
  253. package/dist/adapters/tron/codec.js +322 -0
  254. package/dist/adapters/tron/codec.js.map +1 -0
  255. package/dist/adapters/tron/decode.d.ts +50 -0
  256. package/dist/adapters/tron/decode.js +280 -0
  257. package/dist/adapters/tron/decode.js.map +1 -0
  258. package/dist/adapters/tron/driver.d.ts +12 -0
  259. package/dist/adapters/tron/driver.js +106 -0
  260. package/dist/adapters/tron/driver.js.map +1 -0
  261. package/dist/adapters/tron/errors.d.ts +74 -0
  262. package/dist/adapters/tron/errors.js +261 -0
  263. package/dist/adapters/tron/errors.js.map +1 -0
  264. package/dist/adapters/tron/fees.d.ts +49 -0
  265. package/dist/adapters/tron/fees.js +166 -0
  266. package/dist/adapters/tron/fees.js.map +1 -0
  267. package/dist/adapters/tron/http.d.ts +173 -0
  268. package/dist/adapters/tron/http.js +729 -0
  269. package/dist/adapters/tron/http.js.map +1 -0
  270. package/dist/adapters/tron/index.d.ts +16 -0
  271. package/dist/adapters/tron/index.js +15 -0
  272. package/dist/adapters/tron/index.js.map +1 -0
  273. package/dist/adapters/tron/network.d.ts +44 -0
  274. package/dist/adapters/tron/network.js +163 -0
  275. package/dist/adapters/tron/network.js.map +1 -0
  276. package/dist/adapters/tron/plugin.d.ts +17 -0
  277. package/dist/adapters/tron/plugin.js +39 -0
  278. package/dist/adapters/tron/plugin.js.map +1 -0
  279. package/dist/adapters/tron/presets.d.ts +5 -0
  280. package/dist/adapters/tron/presets.js +68 -0
  281. package/dist/adapters/tron/presets.js.map +1 -0
  282. package/dist/adapters/tron/proofs.d.ts +80 -0
  283. package/dist/adapters/tron/proofs.js +370 -0
  284. package/dist/adapters/tron/proofs.js.map +1 -0
  285. package/dist/adapters/tron/protobuf.d.ts +36 -0
  286. package/dist/adapters/tron/protobuf.js +90 -0
  287. package/dist/adapters/tron/protobuf.js.map +1 -0
  288. package/dist/adapters/tron/reader.d.ts +47 -0
  289. package/dist/adapters/tron/reader.js +203 -0
  290. package/dist/adapters/tron/reader.js.map +1 -0
  291. package/dist/adapters/tron/tokens.d.ts +7 -0
  292. package/dist/adapters/tron/tokens.js +14 -0
  293. package/dist/adapters/tron/tokens.js.map +1 -0
  294. package/dist/adapters/tron/types.d.ts +166 -0
  295. package/dist/adapters/tron/types.js +3 -0
  296. package/dist/adapters/tron/types.js.map +1 -0
  297. package/dist/adapters/utxo/address.d.ts +51 -0
  298. package/dist/adapters/utxo/address.js +341 -0
  299. package/dist/adapters/utxo/address.js.map +1 -0
  300. package/dist/adapters/utxo/builder.d.ts +35 -0
  301. package/dist/adapters/utxo/builder.js +380 -0
  302. package/dist/adapters/utxo/builder.js.map +1 -0
  303. package/dist/adapters/utxo/chains.d.ts +17 -0
  304. package/dist/adapters/utxo/chains.js +99 -0
  305. package/dist/adapters/utxo/chains.js.map +1 -0
  306. package/dist/adapters/utxo/codec.d.ts +120 -0
  307. package/dist/adapters/utxo/codec.js +408 -0
  308. package/dist/adapters/utxo/codec.js.map +1 -0
  309. package/dist/adapters/utxo/coinselect.d.ts +48 -0
  310. package/dist/adapters/utxo/coinselect.js +131 -0
  311. package/dist/adapters/utxo/coinselect.js.map +1 -0
  312. package/dist/adapters/utxo/context.d.ts +57 -0
  313. package/dist/adapters/utxo/context.js +118 -0
  314. package/dist/adapters/utxo/context.js.map +1 -0
  315. package/dist/adapters/utxo/decode.d.ts +14 -0
  316. package/dist/adapters/utxo/decode.js +85 -0
  317. package/dist/adapters/utxo/decode.js.map +1 -0
  318. package/dist/adapters/utxo/driver.d.ts +16 -0
  319. package/dist/adapters/utxo/driver.js +74 -0
  320. package/dist/adapters/utxo/driver.js.map +1 -0
  321. package/dist/adapters/utxo/ecc.d.ts +9 -0
  322. package/dist/adapters/utxo/ecc.js +26 -0
  323. package/dist/adapters/utxo/ecc.js.map +1 -0
  324. package/dist/adapters/utxo/errors.d.ts +52 -0
  325. package/dist/adapters/utxo/errors.js +191 -0
  326. package/dist/adapters/utxo/errors.js.map +1 -0
  327. package/dist/adapters/utxo/esplora.d.ts +79 -0
  328. package/dist/adapters/utxo/esplora.js +451 -0
  329. package/dist/adapters/utxo/esplora.js.map +1 -0
  330. package/dist/adapters/utxo/fees.d.ts +41 -0
  331. package/dist/adapters/utxo/fees.js +125 -0
  332. package/dist/adapters/utxo/fees.js.map +1 -0
  333. package/dist/adapters/utxo/index.d.ts +17 -0
  334. package/dist/adapters/utxo/index.js +8 -0
  335. package/dist/adapters/utxo/index.js.map +1 -0
  336. package/dist/adapters/utxo/network.d.ts +50 -0
  337. package/dist/adapters/utxo/network.js +165 -0
  338. package/dist/adapters/utxo/network.js.map +1 -0
  339. package/dist/adapters/utxo/plugin.d.ts +17 -0
  340. package/dist/adapters/utxo/plugin.js +41 -0
  341. package/dist/adapters/utxo/plugin.js.map +1 -0
  342. package/dist/adapters/utxo/presets.d.ts +12 -0
  343. package/dist/adapters/utxo/presets.js +47 -0
  344. package/dist/adapters/utxo/presets.js.map +1 -0
  345. package/dist/adapters/utxo/preview.d.ts +3 -0
  346. package/dist/adapters/utxo/preview.js +65 -0
  347. package/dist/adapters/utxo/preview.js.map +1 -0
  348. package/dist/adapters/utxo/proofs.d.ts +57 -0
  349. package/dist/adapters/utxo/proofs.js +331 -0
  350. package/dist/adapters/utxo/proofs.js.map +1 -0
  351. package/dist/adapters/utxo/rawtx.d.ts +59 -0
  352. package/dist/adapters/utxo/rawtx.js +234 -0
  353. package/dist/adapters/utxo/rawtx.js.map +1 -0
  354. package/dist/adapters/utxo/reader.d.ts +36 -0
  355. package/dist/adapters/utxo/reader.js +265 -0
  356. package/dist/adapters/utxo/reader.js.map +1 -0
  357. package/dist/adapters/utxo/sdk.d.ts +18 -0
  358. package/dist/adapters/utxo/sdk.js +17 -0
  359. package/dist/adapters/utxo/sdk.js.map +1 -0
  360. package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
  361. package/dist/adapters/utxo/signed-psbt.js +428 -0
  362. package/dist/adapters/utxo/signed-psbt.js.map +1 -0
  363. package/dist/adapters/utxo/spend.d.ts +59 -0
  364. package/dist/adapters/utxo/spend.js +230 -0
  365. package/dist/adapters/utxo/spend.js.map +1 -0
  366. package/dist/adapters/utxo/types.d.ts +167 -0
  367. package/dist/adapters/utxo/types.js +3 -0
  368. package/dist/adapters/utxo/types.js.map +1 -0
  369. package/dist/core/assets/service.d.ts +18 -0
  370. package/dist/core/assets/service.js +69 -0
  371. package/dist/core/assets/service.js.map +1 -0
  372. package/dist/core/blockchain/default-ref.d.ts +4 -0
  373. package/dist/core/blockchain/default-ref.js +16 -0
  374. package/dist/core/blockchain/default-ref.js.map +1 -0
  375. package/dist/core/blockchain/handle.d.ts +200 -0
  376. package/dist/core/blockchain/handle.js +579 -0
  377. package/dist/core/blockchain/handle.js.map +1 -0
  378. package/dist/core/blockchain/internal.d.ts +19 -0
  379. package/dist/core/blockchain/internal.js +16 -0
  380. package/dist/core/blockchain/internal.js.map +1 -0
  381. package/dist/core/blockchain/mapping.d.ts +22 -0
  382. package/dist/core/blockchain/mapping.js +136 -0
  383. package/dist/core/blockchain/mapping.js.map +1 -0
  384. package/dist/core/config/env.d.ts +8 -0
  385. package/dist/core/config/env.js +60 -0
  386. package/dist/core/config/env.js.map +1 -0
  387. package/dist/core/config/merge.d.ts +26 -0
  388. package/dist/core/config/merge.js +144 -0
  389. package/dist/core/config/merge.js.map +1 -0
  390. package/dist/core/config/resolve.d.ts +12 -0
  391. package/dist/core/config/resolve.js +251 -0
  392. package/dist/core/config/resolve.js.map +1 -0
  393. package/dist/core/config/types.d.ts +165 -0
  394. package/dist/core/config/types.js +3 -0
  395. package/dist/core/config/types.js.map +1 -0
  396. package/dist/core/container/builtins.d.ts +4 -0
  397. package/dist/core/container/builtins.js +13 -0
  398. package/dist/core/container/builtins.js.map +1 -0
  399. package/dist/core/container/container.d.ts +69 -0
  400. package/dist/core/container/container.js +466 -0
  401. package/dist/core/container/container.js.map +1 -0
  402. package/dist/core/container/default.d.ts +15 -0
  403. package/dist/core/container/default.js +70 -0
  404. package/dist/core/container/default.js.map +1 -0
  405. package/dist/core/container/internals.d.ts +54 -0
  406. package/dist/core/container/internals.js +21 -0
  407. package/dist/core/container/internals.js.map +1 -0
  408. package/dist/core/container/pool.d.ts +27 -0
  409. package/dist/core/container/pool.js +77 -0
  410. package/dist/core/container/pool.js.map +1 -0
  411. package/dist/core/driver/types.d.ts +346 -0
  412. package/dist/core/driver/types.js +3 -0
  413. package/dist/core/driver/types.js.map +1 -0
  414. package/dist/core/errors/codes.d.ts +153 -0
  415. package/dist/core/errors/codes.js +49 -0
  416. package/dist/core/errors/codes.js.map +1 -0
  417. package/dist/core/errors/error.d.ts +66 -0
  418. package/dist/core/errors/error.js +129 -0
  419. package/dist/core/errors/error.js.map +1 -0
  420. package/dist/core/events/bus.d.ts +12 -0
  421. package/dist/core/events/bus.js +46 -0
  422. package/dist/core/events/bus.js.map +1 -0
  423. package/dist/core/events/logger.d.ts +13 -0
  424. package/dist/core/events/logger.js +42 -0
  425. package/dist/core/events/logger.js.map +1 -0
  426. package/dist/core/events/types.d.ts +131 -0
  427. package/dist/core/events/types.js +3 -0
  428. package/dist/core/events/types.js.map +1 -0
  429. package/dist/core/lifecycle/engine-rules.d.ts +107 -0
  430. package/dist/core/lifecycle/engine-rules.js +257 -0
  431. package/dist/core/lifecycle/engine-rules.js.map +1 -0
  432. package/dist/core/lifecycle/engine.d.ts +500 -0
  433. package/dist/core/lifecycle/engine.js +1732 -0
  434. package/dist/core/lifecycle/engine.js.map +1 -0
  435. package/dist/core/lifecycle/evaluate.d.ts +19 -0
  436. package/dist/core/lifecycle/evaluate.js +72 -0
  437. package/dist/core/lifecycle/evaluate.js.map +1 -0
  438. package/dist/core/lifecycle/intent.d.ts +11 -0
  439. package/dist/core/lifecycle/intent.js +88 -0
  440. package/dist/core/lifecycle/intent.js.map +1 -0
  441. package/dist/core/lifecycle/monitor.d.ts +138 -0
  442. package/dist/core/lifecycle/monitor.js +606 -0
  443. package/dist/core/lifecycle/monitor.js.map +1 -0
  444. package/dist/core/lifecycle/observations.d.ts +17 -0
  445. package/dist/core/lifecycle/observations.js +59 -0
  446. package/dist/core/lifecycle/observations.js.map +1 -0
  447. package/dist/core/lifecycle/reconcile.d.ts +58 -0
  448. package/dist/core/lifecycle/reconcile.js +112 -0
  449. package/dist/core/lifecycle/reconcile.js.map +1 -0
  450. package/dist/core/lifecycle/views.d.ts +49 -0
  451. package/dist/core/lifecycle/views.js +57 -0
  452. package/dist/core/lifecycle/views.js.map +1 -0
  453. package/dist/core/lifecycle/workers.d.ts +82 -0
  454. package/dist/core/lifecycle/workers.js +329 -0
  455. package/dist/core/lifecycle/workers.js.map +1 -0
  456. package/dist/core/model/address.d.ts +32 -0
  457. package/dist/core/model/address.js +43 -0
  458. package/dist/core/model/address.js.map +1 -0
  459. package/dist/core/model/amount.d.ts +25 -0
  460. package/dist/core/model/amount.js +102 -0
  461. package/dist/core/model/amount.js.map +1 -0
  462. package/dist/core/model/asset.d.ts +28 -0
  463. package/dist/core/model/asset.js +47 -0
  464. package/dist/core/model/asset.js.map +1 -0
  465. package/dist/core/model/capability.d.ts +3 -0
  466. package/dist/core/model/capability.js +18 -0
  467. package/dist/core/model/capability.js.map +1 -0
  468. package/dist/core/model/chain.d.ts +63 -0
  469. package/dist/core/model/chain.js +8 -0
  470. package/dist/core/model/chain.js.map +1 -0
  471. package/dist/core/model/fee.d.ts +36 -0
  472. package/dist/core/model/fee.js +17 -0
  473. package/dist/core/model/fee.js.map +1 -0
  474. package/dist/core/model/ids.d.ts +37 -0
  475. package/dist/core/model/ids.js +13 -0
  476. package/dist/core/model/ids.js.map +1 -0
  477. package/dist/core/model/intent.d.ts +63 -0
  478. package/dist/core/model/intent.js +81 -0
  479. package/dist/core/model/intent.js.map +1 -0
  480. package/dist/core/model/ordering.d.ts +20 -0
  481. package/dist/core/model/ordering.js +29 -0
  482. package/dist/core/model/ordering.js.map +1 -0
  483. package/dist/core/model/transaction.d.ts +116 -0
  484. package/dist/{type/lib-types.js → core/model/transaction.js} +1 -1
  485. package/dist/core/model/transaction.js.map +1 -0
  486. package/dist/core/observe/scanner.d.ts +135 -0
  487. package/dist/core/observe/scanner.js +355 -0
  488. package/dist/core/observe/scanner.js.map +1 -0
  489. package/dist/core/ordering/reservations.d.ts +16 -0
  490. package/dist/core/ordering/reservations.js +53 -0
  491. package/dist/core/ordering/reservations.js.map +1 -0
  492. package/dist/core/ordering/sequence.d.ts +61 -0
  493. package/dist/core/ordering/sequence.js +155 -0
  494. package/dist/core/ordering/sequence.js.map +1 -0
  495. package/dist/core/registry/adapters.d.ts +10 -0
  496. package/dist/core/registry/adapters.js +56 -0
  497. package/dist/core/registry/adapters.js.map +1 -0
  498. package/dist/core/registry/assets.d.ts +18 -0
  499. package/dist/core/registry/assets.js +90 -0
  500. package/dist/core/registry/assets.js.map +1 -0
  501. package/dist/core/registry/chains.d.ts +10 -0
  502. package/dist/core/registry/chains.js +80 -0
  503. package/dist/core/registry/chains.js.map +1 -0
  504. package/dist/core/registry/plugin.d.ts +41 -0
  505. package/dist/core/registry/plugin.js +109 -0
  506. package/dist/core/registry/plugin.js.map +1 -0
  507. package/dist/core/registry/providers.d.ts +31 -0
  508. package/dist/core/registry/providers.js +43 -0
  509. package/dist/core/registry/providers.js.map +1 -0
  510. package/dist/core/registry/schemes.d.ts +30 -0
  511. package/dist/core/registry/schemes.js +84 -0
  512. package/dist/core/registry/schemes.js.map +1 -0
  513. package/dist/core/secret/fragments.d.ts +33 -0
  514. package/dist/core/secret/fragments.js +110 -0
  515. package/dist/core/secret/fragments.js.map +1 -0
  516. package/dist/core/secret/redact.d.ts +10 -0
  517. package/dist/core/secret/redact.js +110 -0
  518. package/dist/core/secret/redact.js.map +1 -0
  519. package/dist/core/secret/secret.d.ts +14 -0
  520. package/dist/core/secret/secret.js +42 -0
  521. package/dist/core/secret/secret.js.map +1 -0
  522. package/dist/core/signing/callback.d.ts +10 -0
  523. package/dist/core/signing/callback.js +22 -0
  524. package/dist/core/signing/callback.js.map +1 -0
  525. package/dist/core/signing/guard.d.ts +18 -0
  526. package/dist/core/signing/guard.js +72 -0
  527. package/dist/core/signing/guard.js.map +1 -0
  528. package/dist/core/signing/hd.d.ts +36 -0
  529. package/dist/core/signing/hd.js +167 -0
  530. package/dist/core/signing/hd.js.map +1 -0
  531. package/dist/core/signing/local.d.ts +48 -0
  532. package/dist/core/signing/local.js +190 -0
  533. package/dist/core/signing/local.js.map +1 -0
  534. package/dist/core/signing/orchestrator.d.ts +40 -0
  535. package/dist/core/signing/orchestrator.js +300 -0
  536. package/dist/core/signing/orchestrator.js.map +1 -0
  537. package/dist/core/signing/types.d.ts +64 -0
  538. package/dist/core/signing/types.js +3 -0
  539. package/dist/core/signing/types.js.map +1 -0
  540. package/dist/core/signing/wallet.d.ts +48 -0
  541. package/dist/core/signing/wallet.js +153 -0
  542. package/dist/core/signing/wallet.js.map +1 -0
  543. package/dist/core/store/clone.d.ts +25 -0
  544. package/dist/core/store/clone.js +71 -0
  545. package/dist/core/store/clone.js.map +1 -0
  546. package/dist/core/store/memory.d.ts +38 -0
  547. package/dist/core/store/memory.js +325 -0
  548. package/dist/core/store/memory.js.map +1 -0
  549. package/dist/core/store/types.d.ts +246 -0
  550. package/dist/core/store/types.js +117 -0
  551. package/dist/core/store/types.js.map +1 -0
  552. package/dist/core/transport/backoff.d.ts +8 -0
  553. package/dist/core/transport/backoff.js +27 -0
  554. package/dist/core/transport/backoff.js.map +1 -0
  555. package/dist/core/transport/circuit.d.ts +25 -0
  556. package/dist/core/transport/circuit.js +61 -0
  557. package/dist/core/transport/circuit.js.map +1 -0
  558. package/dist/core/transport/http-transport.d.ts +30 -0
  559. package/dist/core/transport/http-transport.js +1695 -0
  560. package/dist/core/transport/http-transport.js.map +1 -0
  561. package/dist/core/transport/rate-limit.d.ts +27 -0
  562. package/dist/core/transport/rate-limit.js +78 -0
  563. package/dist/core/transport/rate-limit.js.map +1 -0
  564. package/dist/core/transport/stale-view.d.ts +11 -0
  565. package/dist/core/transport/stale-view.js +17 -0
  566. package/dist/core/transport/stale-view.js.map +1 -0
  567. package/dist/core/transport/types.d.ts +144 -0
  568. package/dist/core/transport/types.js +6 -0
  569. package/dist/core/transport/types.js.map +1 -0
  570. package/dist/core/util/bytes.d.ts +9 -0
  571. package/dist/core/util/bytes.js +40 -0
  572. package/dist/core/util/bytes.js.map +1 -0
  573. package/dist/core/util/clock.d.ts +6 -0
  574. package/dist/core/util/clock.js +26 -0
  575. package/dist/core/util/clock.js.map +1 -0
  576. package/dist/core/util/freeze.d.ts +8 -0
  577. package/dist/core/util/freeze.js +31 -0
  578. package/dist/core/util/freeze.js.map +1 -0
  579. package/dist/core/util/json.d.ts +29 -0
  580. package/dist/core/util/json.js +165 -0
  581. package/dist/core/util/json.js.map +1 -0
  582. package/dist/core/util/names.d.ts +21 -0
  583. package/dist/core/util/names.js +46 -0
  584. package/dist/core/util/names.js.map +1 -0
  585. package/dist/index.d.ts +64 -14
  586. package/dist/index.js +105 -49
  587. package/dist/index.js.map +1 -1
  588. package/dist/native.d.ts +21 -0
  589. package/dist/native.js +44 -0
  590. package/dist/native.js.map +1 -0
  591. package/dist/testing/contracts/api.d.ts +12 -0
  592. package/dist/testing/contracts/api.js +58 -0
  593. package/dist/testing/contracts/api.js.map +1 -0
  594. package/dist/testing/contracts/cursors.d.ts +6 -0
  595. package/dist/testing/contracts/cursors.js +43 -0
  596. package/dist/testing/contracts/cursors.js.map +1 -0
  597. package/dist/testing/contracts/locks.d.ts +10 -0
  598. package/dist/testing/contracts/locks.js +63 -0
  599. package/dist/testing/contracts/locks.js.map +1 -0
  600. package/dist/testing/contracts/operations.d.ts +21 -0
  601. package/dist/testing/contracts/operations.js +718 -0
  602. package/dist/testing/contracts/operations.js.map +1 -0
  603. package/dist/testing/contracts/sequences.d.ts +6 -0
  604. package/dist/testing/contracts/sequences.js +68 -0
  605. package/dist/testing/contracts/sequences.js.map +1 -0
  606. package/dist/testing/env.d.ts +63 -0
  607. package/dist/testing/env.js +105 -0
  608. package/dist/testing/env.js.map +1 -0
  609. package/dist/testing/fake-chain.d.ts +118 -0
  610. package/dist/testing/fake-chain.js +536 -0
  611. package/dist/testing/fake-chain.js.map +1 -0
  612. package/dist/testing/fake-clock.d.ts +15 -0
  613. package/dist/testing/fake-clock.js +86 -0
  614. package/dist/testing/fake-clock.js.map +1 -0
  615. package/dist/testing/fake-driver.d.ts +15 -0
  616. package/dist/testing/fake-driver.js +458 -0
  617. package/dist/testing/fake-driver.js.map +1 -0
  618. package/dist/testing/fake-fetch.d.ts +32 -0
  619. package/dist/testing/fake-fetch.js +81 -0
  620. package/dist/testing/fake-fetch.js.map +1 -0
  621. package/dist/testing/fake-plugin.d.ts +30 -0
  622. package/dist/testing/fake-plugin.js +66 -0
  623. package/dist/testing/fake-plugin.js.map +1 -0
  624. package/dist/testing/faulty-store.d.ts +36 -0
  625. package/dist/testing/faulty-store.js +66 -0
  626. package/dist/testing/faulty-store.js.map +1 -0
  627. package/dist/testing/generation.d.ts +60 -0
  628. package/dist/testing/generation.js +252 -0
  629. package/dist/testing/generation.js.map +1 -0
  630. package/dist/testing/index.d.ts +28 -0
  631. package/dist/testing/index.js +51 -0
  632. package/dist/testing/index.js.map +1 -0
  633. package/package.json +188 -45
  634. package/dist/libs/eth/account.d.ts +0 -9
  635. package/dist/libs/eth/account.js +0 -58
  636. package/dist/libs/eth/account.js.map +0 -1
  637. package/dist/libs/eth/contract.d.ts +0 -7
  638. package/dist/libs/eth/contract.js +0 -42
  639. package/dist/libs/eth/contract.js.map +0 -1
  640. package/dist/libs/eth/index.d.ts +0 -24
  641. package/dist/libs/eth/index.js +0 -72
  642. package/dist/libs/eth/index.js.map +0 -1
  643. package/dist/libs/eth/transact.d.ts +0 -7
  644. package/dist/libs/eth/transact.js +0 -26
  645. package/dist/libs/eth/transact.js.map +0 -1
  646. package/dist/libs/index.d.ts +0 -2
  647. package/dist/libs/index.js +0 -19
  648. package/dist/libs/index.js.map +0 -1
  649. package/dist/libs/trx/account.d.ts +0 -9
  650. package/dist/libs/trx/account.js +0 -55
  651. package/dist/libs/trx/account.js.map +0 -1
  652. package/dist/libs/trx/contract.d.ts +0 -7
  653. package/dist/libs/trx/contract.js +0 -27
  654. package/dist/libs/trx/contract.js.map +0 -1
  655. package/dist/libs/trx/index.d.ts +0 -22
  656. package/dist/libs/trx/index.js +0 -64
  657. package/dist/libs/trx/index.js.map +0 -1
  658. package/dist/libs/trx/transact.d.ts +0 -7
  659. package/dist/libs/trx/transact.js +0 -26
  660. package/dist/libs/trx/transact.js.map +0 -1
  661. package/dist/tool/common.d.ts +0 -28
  662. package/dist/tool/common.js +0 -33
  663. package/dist/tool/common.js.map +0 -1
  664. package/dist/tool/eth-tools.d.ts +0 -3
  665. package/dist/tool/eth-tools.js +0 -33
  666. package/dist/tool/eth-tools.js.map +0 -1
  667. package/dist/tool/index.d.ts +0 -5
  668. package/dist/tool/index.js +0 -22
  669. package/dist/tool/index.js.map +0 -1
  670. package/dist/tool/logging.d.ts +0 -3
  671. package/dist/tool/logging.js +0 -11
  672. package/dist/tool/logging.js.map +0 -1
  673. package/dist/tool/options.d.ts +0 -6
  674. package/dist/tool/options.js +0 -41
  675. package/dist/tool/options.js.map +0 -1
  676. package/dist/tool/trx-tools.d.ts +0 -3
  677. package/dist/tool/trx-tools.js +0 -20
  678. package/dist/tool/trx-tools.js.map +0 -1
  679. package/dist/type/account.d.ts +0 -9
  680. package/dist/type/account.js.map +0 -1
  681. package/dist/type/common.d.ts +0 -18
  682. package/dist/type/common.js.map +0 -1
  683. package/dist/type/contract.d.ts +0 -10
  684. package/dist/type/contract.js.map +0 -1
  685. package/dist/type/index.d.ts +0 -5
  686. package/dist/type/index.js +0 -22
  687. package/dist/type/index.js.map +0 -1
  688. package/dist/type/lib-types.d.ts +0 -9
  689. package/dist/type/lib-types.js.map +0 -1
  690. package/dist/type/transact.d.ts +0 -7
  691. package/dist/type/transact.js.map +0 -1
@@ -0,0 +1,131 @@
1
+ import type { Evidence, TxState } from '../model/transaction';
2
+ import type { OperationState } from '../store/types';
3
+ /** Every payload is operational-class data only (no addresses, amounts, raw txs or URLs). */
4
+ export interface AioEvents {
5
+ 'rpc.request': {
6
+ transportId: string;
7
+ endpointId: string;
8
+ method: string;
9
+ attempt: number;
10
+ };
11
+ 'rpc.response': {
12
+ transportId: string;
13
+ endpointId: string;
14
+ method: string;
15
+ latencyMs: number;
16
+ bytes: number;
17
+ };
18
+ 'rpc.error': {
19
+ transportId: string;
20
+ endpointId: string;
21
+ method: string;
22
+ latencyMs: number;
23
+ code: string;
24
+ retryable: boolean;
25
+ };
26
+ 'provider.health': {
27
+ transportId: string;
28
+ endpointId: string;
29
+ state: 'healthy' | 'lagging' | 'open' | 'disabled';
30
+ height?: string;
31
+ lag?: string;
32
+ };
33
+ 'provider.misconfigured': {
34
+ transportId: string;
35
+ endpointId: string;
36
+ expected: string;
37
+ actual: string;
38
+ };
39
+ 'provider.inconsistent': {
40
+ transportId: string;
41
+ method: string;
42
+ endpointIds: readonly string[];
43
+ };
44
+ 'operation.state': {
45
+ namespace: string;
46
+ operationId: string;
47
+ chain: string;
48
+ network: string;
49
+ from: OperationState | null;
50
+ to: OperationState;
51
+ code?: string;
52
+ };
53
+ 'operation.stalled': {
54
+ namespace: string;
55
+ operationId: string;
56
+ code: string;
57
+ };
58
+ 'attempt.state': {
59
+ namespace: string;
60
+ operationId: string;
61
+ attemptId: string;
62
+ state: TxState;
63
+ evidence: Evidence;
64
+ };
65
+ 'tx.reorged': {
66
+ namespace: string;
67
+ operationId?: string;
68
+ attemptId?: string;
69
+ previousBlockHash: string;
70
+ };
71
+ 'nonce.allocated': {
72
+ namespace: string;
73
+ chain: string;
74
+ network: string;
75
+ operationId: string;
76
+ /** The nonce or seqno: an operational identifier, never UTXO inputs. */
77
+ value: string;
78
+ };
79
+ /**
80
+ * A submitted Operation has waited past the grace period while the chain's pending nonce
81
+ * (`expected`) is below its own. At-least-once: a monitor reports each (Operation,
82
+ * expected) once, but that memory is per process and bounded, so the same gap is reported
83
+ * again after a restart, by another process, or once it was forgotten.
84
+ */
85
+ 'nonce.gap': {
86
+ namespace: string;
87
+ chain: string;
88
+ network: string;
89
+ operationId: string;
90
+ /** The chain's pending nonce: an operational identifier. */
91
+ expected: string;
92
+ blockingOperationId?: string;
93
+ };
94
+ 'signer.requested': {
95
+ namespace: string;
96
+ operationId: string;
97
+ signerId: string;
98
+ requests: number;
99
+ };
100
+ 'signer.completed': {
101
+ namespace: string;
102
+ operationId: string;
103
+ signerId: string;
104
+ status: 'signed' | 'pending' | 'error';
105
+ latencyMs: number;
106
+ };
107
+ 'scanner.block': {
108
+ namespace: string;
109
+ cursorKey: string;
110
+ height: string;
111
+ };
112
+ 'scanner.rollback': {
113
+ namespace: string;
114
+ cursorKey: string;
115
+ toHeight: string;
116
+ removed: number;
117
+ };
118
+ 'recovery.skipped': {
119
+ namespace: string;
120
+ operationId: string;
121
+ state: OperationState;
122
+ reason: string;
123
+ };
124
+ }
125
+ export type AioEventName = keyof AioEvents;
126
+ export type AioEvent<E extends AioEventName = AioEventName> = {
127
+ [K in E]: AioEvents[K] & {
128
+ readonly type: K;
129
+ readonly at: number;
130
+ };
131
+ }[E];
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/events/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Evidence, TxState } from '../model/transaction';\nimport type { OperationState } from '../store/types';\n\n/** Every payload is operational-class data only (no addresses, amounts, raw txs or URLs). */\nexport interface AioEvents {\n 'rpc.request': {\n transportId: string;\n endpointId: string;\n method: string;\n attempt: number;\n };\n 'rpc.response': {\n transportId: string;\n endpointId: string;\n method: string;\n latencyMs: number;\n bytes: number;\n };\n 'rpc.error': {\n transportId: string;\n endpointId: string;\n method: string;\n latencyMs: number;\n code: string;\n retryable: boolean;\n };\n 'provider.health': {\n transportId: string;\n endpointId: string;\n state: 'healthy' | 'lagging' | 'open' | 'disabled';\n height?: string;\n lag?: string;\n };\n 'provider.misconfigured': {\n transportId: string;\n endpointId: string;\n expected: string;\n actual: string;\n };\n 'provider.inconsistent': {\n transportId: string;\n method: string;\n endpointIds: readonly string[];\n };\n 'operation.state': {\n namespace: string;\n operationId: string;\n chain: string;\n network: string;\n from: OperationState | null;\n to: OperationState;\n code?: string;\n };\n 'operation.stalled': { namespace: string; operationId: string; code: string };\n 'attempt.state': {\n namespace: string;\n operationId: string;\n attemptId: string;\n state: TxState;\n evidence: Evidence;\n };\n 'tx.reorged': {\n namespace: string;\n operationId?: string;\n attemptId?: string;\n previousBlockHash: string;\n };\n 'nonce.allocated': {\n namespace: string;\n chain: string;\n network: string;\n operationId: string;\n /** The nonce or seqno: an operational identifier, never UTXO inputs. */\n value: string;\n };\n /**\n * A submitted Operation has waited past the grace period while the chain's pending nonce\n * (`expected`) is below its own. At-least-once: a monitor reports each (Operation,\n * expected) once, but that memory is per process and bounded, so the same gap is reported\n * again after a restart, by another process, or once it was forgotten.\n */\n 'nonce.gap': {\n namespace: string;\n chain: string;\n network: string;\n operationId: string;\n /** The chain's pending nonce: an operational identifier. */\n expected: string;\n blockingOperationId?: string;\n };\n 'signer.requested': {\n namespace: string;\n operationId: string;\n signerId: string;\n requests: number;\n };\n 'signer.completed': {\n namespace: string;\n operationId: string;\n signerId: string;\n status: 'signed' | 'pending' | 'error';\n latencyMs: number;\n };\n 'scanner.block': { namespace: string; cursorKey: string; height: string };\n 'scanner.rollback': {\n namespace: string;\n cursorKey: string;\n toHeight: string;\n removed: number;\n };\n 'recovery.skipped': {\n namespace: string;\n operationId: string;\n state: OperationState;\n reason: string;\n };\n}\n\nexport type AioEventName = keyof AioEvents;\n\nexport type AioEvent<E extends AioEventName = AioEventName> = {\n [K in E]: AioEvents[K] & { readonly type: K; readonly at: number };\n}[E];\n"]}
@@ -0,0 +1,107 @@
1
+ import type { LifecycleOptions } from '../config/types';
2
+ import { type CryptoAioError, type ErrorCode, type SerializedError } from '../errors/error';
3
+ import type { FeeOverride, FeeSpeed } from '../model/fee';
4
+ import type { OrderingData, OrderingKind } from '../model/ordering';
5
+ import type { TxState, UnsignedTx } from '../model/transaction';
6
+ import type { AttemptObservation, AttemptRecord, OperationRecord, OperationState, SequenceState } from '../store/types';
7
+ import type { ObservationPatch } from './observations';
8
+ export type ResolvedLifecycle = Required<LifecycleOptions>;
9
+ export declare const LIFECYCLE_DEFAULTS: ResolvedLifecycle;
10
+ export declare function withLifecycleDefaults(options: LifecycleOptions): ResolvedLifecycle;
11
+ export declare const PRE_SIGNING_STATES: ReadonlySet<OperationState>;
12
+ export declare const LEASED_ORDERINGS: Set<string>;
13
+ export declare const DEFINITIVE_CATEGORIES: Set<string>;
14
+ /**
15
+ * A crypto-aio error as it is; anything else under `fallback`, the most specific
16
+ * existing code for the caller's context (there is no generic code), with a sanitized message.
17
+ */
18
+ export declare function serializeError(error: unknown, fallback: ErrorCode): SerializedError;
19
+ export declare function rehydrateError(serialized: SerializedError, operationId: string): Error;
20
+ /**
21
+ * The error's crypto-aio code, or `'UNKNOWN'`. Logs carry this, never the error itself:
22
+ * messages may hold addresses, amounts or store detail.
23
+ */
24
+ export declare function errorCode(error: unknown): string;
25
+ export declare function isDefinitive(error: unknown): error is CryptoAioError;
26
+ /**
27
+ * Observation states backed by chain evidence: the Attempt was mined, or its slot or expiry
28
+ * was consumed. No broadcast answer ever overwrites them; `replacedBy` is kept.
29
+ */
30
+ export declare const CHAIN_EVIDENCE_STATES: ReadonlySet<TxState>;
31
+ /**
32
+ * A node once accepted these bytes, or they may be live. `firstSeenAt` is the durable
33
+ * marker: set when a node accepted them or the monitor saw them held, and kept by a refusal
34
+ * that found them possibly live. A `pending`, `mempool` or `dropped` observation also
35
+ * counts: one left by an accepted or ambiguous send, and the `pending` the monitor
36
+ * writes for a signed Attempt that was never broadcast, which errs in the safe direction
37
+ * (a genuine rejection then stalls it and keeps its nonce instead of failing it). A later
38
+ * rejection says nothing about bytes that may still sit in a mempool, so it is only a
39
+ * refusal: never terminal, the nonce is kept.
40
+ */
41
+ export declare function mayBeLive(observation: AttemptObservation | null): boolean;
42
+ /**
43
+ * A send that may have delivered the bytes (accepted, already known or ambiguous): a
44
+ * missing, `refused` or `dropped` observation becomes `pending`, and a refusal's reason no
45
+ * longer applies. Stronger evidence (chain or proven states) is left alone. The one rule
46
+ * for every such send, so they cannot drift apart. Known gap: an ambiguous send clears a
47
+ * refusal and its reason, so the monitor then shows bytes the node still refuses as
48
+ * `dropped`, not `refused`; only a resend through the engine (a same-key repeat,
49
+ * `rebroadcast`, recovery) records the refusal again.
50
+ */
51
+ export declare function pendingAfterSend(current: AttemptObservation | null): ObservationPatch;
52
+ /** Every nonce a live Operation holds: its reservation, unsigned payload and Attempts. */
53
+ export declare function heldNonces(op: OperationRecord): bigint[];
54
+ /** Failures proven on chain at finality: their nonce was consumed. */
55
+ export declare const CONSUMED_FAILURES: ReadonlySet<string>;
56
+ /** Whether some value in [from, next) is neither released nor held. */
57
+ export declare function hasReclaimable(state: SequenceState | null, from: bigint, held: readonly bigint[]): boolean;
58
+ /** `signed`, or `submitted` with an unknown broadcast outcome: its stored bytes are (re)sent. */
59
+ export declare function awaitsBroadcast(op: OperationRecord): boolean;
60
+ /** The node's own answer (refused, rejected): not ambiguous, so the bytes were not taken. */
61
+ export declare function isRefusal(error: unknown): boolean;
62
+ /**
63
+ * A replacement records the fee spec it was asked for (plain data, as every store record
64
+ * must be) in its fee details, so a repeat of the same request is recognised instead of
65
+ * signed again. The core adds it after `build`, so a driver never sets or reads it: its
66
+ * `assemble` reads only the fee fields it named itself.
67
+ */
68
+ export declare function withRequestedFee(unsigned: UnsignedTx, fee: FeeSpeed | FeeOverride): UnsignedTx;
69
+ /** An Attempt's total fee, summed over its charges. */
70
+ export declare function feeOf(attempt: AttemptRecord): bigint;
71
+ /**
72
+ * The cancel a new cancel is bumped from: among the earlier cancels that superseded
73
+ * the active Attempt `previous` (refused ones gave it the active role back), the one paying
74
+ * the most, so repeated bumps climb; otherwise `previous` itself, so a cancel never starts
75
+ * below a newer, higher replacement. Fees are compared only between cancels. Known gap:
76
+ * they are ranked by total charges, not by a price the driver compares, so on EVM a
77
+ * repeat cancel may need an explicit `fee`.
78
+ */
79
+ export declare function cancelBase(op: OperationRecord, previous: AttemptRecord): AttemptRecord;
80
+ /** The same `FeeSpeed` name, or a canonically equal `FeeOverride`. */
81
+ export declare function sameFeeSpec(attempt: AttemptRecord, fee: FeeSpeed | FeeOverride | undefined): boolean;
82
+ /**
83
+ * What `restoreAfterRefusal` puts back: the Operation as the refused Attempt found it.
84
+ * Without `state`, only the active Attempt is swapped (state and error are kept).
85
+ */
86
+ export interface RestorePoint {
87
+ readonly state?: OperationState;
88
+ readonly activeAttemptId: string;
89
+ readonly error?: SerializedError;
90
+ readonly ambiguous?: boolean;
91
+ }
92
+ /** A node's refusal or rejection of these bytes; both are handled alike. */
93
+ export declare const NODE_REFUSED_STATES: ReadonlySet<TxState>;
94
+ /** Observations under which a superseded Attempt may still be live on the network. */
95
+ export declare const LIVE_STATES: ReadonlySet<TxState>;
96
+ /** The states in which a replacement or cancel may supersede the active Attempt. */
97
+ export declare const CONFLICTABLE_STATES: ReadonlySet<OperationState>;
98
+ /** The only state `rebuild` reopens. */
99
+ export declare const REBUILDABLE_STATES: ReadonlySet<OperationState>;
100
+ /** Where the stored bytes of a new Attempt whose broadcast never completed are resent. */
101
+ export declare const RESUMABLE_STATES: ReadonlySet<OperationState>;
102
+ /**
103
+ * The built transaction must use exactly the slot the engine reserved: the ordering
104
+ * kind of the driver, the allocated nonce or seqno, and no input held by another live
105
+ * Operation. Anything else would persist a reservation nobody allocated.
106
+ */
107
+ export declare function assertBuiltOrdering(operationId: string, kind: OrderingKind, allocated: OrderingData | undefined, excluded: readonly string[] | undefined, built: OrderingData): void;
@@ -0,0 +1,257 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RESUMABLE_STATES = exports.REBUILDABLE_STATES = exports.CONFLICTABLE_STATES = exports.LIVE_STATES = exports.NODE_REFUSED_STATES = exports.CONSUMED_FAILURES = exports.CHAIN_EVIDENCE_STATES = exports.DEFINITIVE_CATEGORIES = exports.LEASED_ORDERINGS = exports.PRE_SIGNING_STATES = exports.LIFECYCLE_DEFAULTS = void 0;
4
+ exports.withLifecycleDefaults = withLifecycleDefaults;
5
+ exports.serializeError = serializeError;
6
+ exports.rehydrateError = rehydrateError;
7
+ exports.errorCode = errorCode;
8
+ exports.isDefinitive = isDefinitive;
9
+ exports.mayBeLive = mayBeLive;
10
+ exports.pendingAfterSend = pendingAfterSend;
11
+ exports.heldNonces = heldNonces;
12
+ exports.hasReclaimable = hasReclaimable;
13
+ exports.awaitsBroadcast = awaitsBroadcast;
14
+ exports.isRefusal = isRefusal;
15
+ exports.withRequestedFee = withRequestedFee;
16
+ exports.feeOf = feeOf;
17
+ exports.cancelBase = cancelBase;
18
+ exports.sameFeeSpec = sameFeeSpec;
19
+ exports.assertBuiltOrdering = assertBuiltOrdering;
20
+ const error_1 = require("../errors/error");
21
+ const redact_1 = require("../secret/redact");
22
+ const json_1 = require("../util/json");
23
+ exports.LIFECYCLE_DEFAULTS = {
24
+ pollIntervalMs: 5_000,
25
+ droppedGracePeriodMs: 120_000,
26
+ rebroadcastIntervalMs: 60_000,
27
+ leaseMs: 30_000,
28
+ claimLeaseMs: 60_000,
29
+ waitTimeoutMs: 600_000,
30
+ requireIdempotencyKey: false,
31
+ broadcastFanout: 1,
32
+ signTimeoutMs: 120_000,
33
+ };
34
+ function withLifecycleDefaults(options) {
35
+ const out = { ...exports.LIFECYCLE_DEFAULTS };
36
+ for (const [key, value] of Object.entries(options))
37
+ if (value !== undefined)
38
+ out[key] = value;
39
+ const { signTimeoutMs } = out;
40
+ if (typeof signTimeoutMs !== 'number' ||
41
+ !Number.isFinite(signTimeoutMs) ||
42
+ signTimeoutMs <= 0) {
43
+ throw new error_1.ConfigError('CONFIG_INVALID', 'lifecycle.signTimeoutMs must be a finite number greater than 0');
44
+ }
45
+ return out;
46
+ }
47
+ exports.PRE_SIGNING_STATES = new Set([
48
+ 'created',
49
+ 'prepared',
50
+ 'awaiting-signature',
51
+ ]);
52
+ exports.LEASED_ORDERINGS = new Set(['nonce', 'seqno', 'inputs']);
53
+ exports.DEFINITIVE_CATEGORIES = new Set([
54
+ 'validation',
55
+ 'chain',
56
+ 'unsupported',
57
+ 'config',
58
+ 'signing',
59
+ ]);
60
+ /**
61
+ * A crypto-aio error as it is; anything else under `fallback`, the most specific
62
+ * existing code for the caller's context (there is no generic code), with a sanitized message.
63
+ */
64
+ function serializeError(error, fallback) {
65
+ return ((0, error_1.isCryptoAioError)(error) ? error : (0, error_1.createError)(fallback, (0, redact_1.sanitizeError)(error).message)).toJSON();
66
+ }
67
+ function rehydrateError(serialized, operationId) {
68
+ return (0, error_1.createError)(serialized.code, serialized.message, {
69
+ context: { ...serialized.context, operationId },
70
+ ...(serialized.details ? { details: serialized.details } : {}),
71
+ retryable: serialized.retryable,
72
+ ambiguous: serialized.ambiguous,
73
+ });
74
+ }
75
+ /**
76
+ * The error's crypto-aio code, or `'UNKNOWN'`. Logs carry this, never the error itself:
77
+ * messages may hold addresses, amounts or store detail.
78
+ */
79
+ function errorCode(error) {
80
+ return (0, error_1.isCryptoAioError)(error) ? error.code : 'UNKNOWN';
81
+ }
82
+ function isDefinitive(error) {
83
+ return ((0, error_1.isCryptoAioError)(error) &&
84
+ !error.retryable &&
85
+ exports.DEFINITIVE_CATEGORIES.has(error.category));
86
+ }
87
+ /**
88
+ * Observation states backed by chain evidence: the Attempt was mined, or its slot or expiry
89
+ * was consumed. No broadcast answer ever overwrites them; `replacedBy` is kept.
90
+ */
91
+ exports.CHAIN_EVIDENCE_STATES = new Set([
92
+ 'included',
93
+ 'final',
94
+ 'failed',
95
+ 'replaced',
96
+ 'expired',
97
+ ]);
98
+ /**
99
+ * A node once accepted these bytes, or they may be live. `firstSeenAt` is the durable
100
+ * marker: set when a node accepted them or the monitor saw them held, and kept by a refusal
101
+ * that found them possibly live. A `pending`, `mempool` or `dropped` observation also
102
+ * counts: one left by an accepted or ambiguous send, and the `pending` the monitor
103
+ * writes for a signed Attempt that was never broadcast, which errs in the safe direction
104
+ * (a genuine rejection then stalls it and keeps its nonce instead of failing it). A later
105
+ * rejection says nothing about bytes that may still sit in a mempool, so it is only a
106
+ * refusal: never terminal, the nonce is kept.
107
+ */
108
+ function mayBeLive(observation) {
109
+ return (observation !== null &&
110
+ (observation.firstSeenAt !== undefined ||
111
+ observation.state === 'pending' ||
112
+ observation.state === 'mempool' ||
113
+ observation.state === 'dropped'));
114
+ }
115
+ /**
116
+ * A send that may have delivered the bytes (accepted, already known or ambiguous): a
117
+ * missing, `refused` or `dropped` observation becomes `pending`, and a refusal's reason no
118
+ * longer applies. Stronger evidence (chain or proven states) is left alone. The one rule
119
+ * for every such send, so they cannot drift apart. Known gap: an ambiguous send clears a
120
+ * refusal and its reason, so the monitor then shows bytes the node still refuses as
121
+ * `dropped`, not `refused`; only a resend through the engine (a same-key repeat,
122
+ * `rebroadcast`, recovery) records the refusal again.
123
+ */
124
+ function pendingAfterSend(current) {
125
+ return current === null || current.state === 'refused' || current.state === 'dropped'
126
+ ? { state: 'pending', reason: undefined }
127
+ : {};
128
+ }
129
+ /** Every nonce a live Operation holds: its reservation, unsigned payload and Attempts. */
130
+ function heldNonces(op) {
131
+ const orderings = [
132
+ op.reservation,
133
+ op.unsigned?.ordering,
134
+ ...op.attempts.map((a) => a.ordering),
135
+ ];
136
+ return orderings.flatMap((o) => (o?.kind === 'nonce' ? [o.nonce] : []));
137
+ }
138
+ /** Failures proven on chain at finality: their nonce was consumed. */
139
+ exports.CONSUMED_FAILURES = new Set([
140
+ 'TX_REVERTED',
141
+ 'TX_REPLACED',
142
+ ]);
143
+ /** Whether some value in [from, next) is neither released nor held. */
144
+ function hasReclaimable(state, from, held) {
145
+ if (!state)
146
+ return false;
147
+ const taken = new Set([...state.released, ...held]);
148
+ for (let value = from; value < state.next; value++)
149
+ if (!taken.has(value))
150
+ return true;
151
+ return false;
152
+ }
153
+ /** `signed`, or `submitted` with an unknown broadcast outcome: its stored bytes are (re)sent. */
154
+ function awaitsBroadcast(op) {
155
+ return op.state === 'signed' || (op.state === 'submitted' && op.ambiguous === true);
156
+ }
157
+ /** The node's own answer (refused, rejected): not ambiguous, so the bytes were not taken. */
158
+ function isRefusal(error) {
159
+ return (0, error_1.isCryptoAioError)(error) && error.category === 'chain' && !error.ambiguous;
160
+ }
161
+ /**
162
+ * A replacement records the fee spec it was asked for (plain data, as every store record
163
+ * must be) in its fee details, so a repeat of the same request is recognised instead of
164
+ * signed again. The core adds it after `build`, so a driver never sets or reads it: its
165
+ * `assemble` reads only the fee fields it named itself.
166
+ */
167
+ function withRequestedFee(unsigned, fee) {
168
+ return {
169
+ ...unsigned,
170
+ fee: { ...unsigned.fee, details: { ...unsigned.fee.details, requestedFee: fee } },
171
+ };
172
+ }
173
+ /** An Attempt's total fee, summed over its charges. */
174
+ function feeOf(attempt) {
175
+ return attempt.fee.charges.reduce((sum, charge) => sum + charge.amount, 0n);
176
+ }
177
+ /**
178
+ * The cancel a new cancel is bumped from: among the earlier cancels that superseded
179
+ * the active Attempt `previous` (refused ones gave it the active role back), the one paying
180
+ * the most, so repeated bumps climb; otherwise `previous` itself, so a cancel never starts
181
+ * below a newer, higher replacement. Fees are compared only between cancels. Known gap:
182
+ * they are ranked by total charges, not by a price the driver compares, so on EVM a
183
+ * repeat cancel may need an explicit `fee`.
184
+ */
185
+ function cancelBase(op, previous) {
186
+ let best;
187
+ for (const attempt of op.attempts) {
188
+ if (attempt.purpose !== 'cancel' || attempt.supersedes !== previous.id)
189
+ continue;
190
+ if (!best || feeOf(attempt) > feeOf(best))
191
+ best = attempt;
192
+ }
193
+ return best ?? previous;
194
+ }
195
+ /** The same `FeeSpeed` name, or a canonically equal `FeeOverride`. */
196
+ function sameFeeSpec(attempt, fee) {
197
+ const recorded = attempt.fee.details.requestedFee;
198
+ if (recorded === undefined || fee === undefined)
199
+ return false;
200
+ try {
201
+ return (0, json_1.canonicalJson)(recorded) === (0, json_1.canonicalJson)(fee);
202
+ }
203
+ catch {
204
+ return false;
205
+ }
206
+ }
207
+ /** A node's refusal or rejection of these bytes; both are handled alike. */
208
+ exports.NODE_REFUSED_STATES = new Set([
209
+ 'refused',
210
+ 'rejected',
211
+ ]);
212
+ /** Observations under which a superseded Attempt may still be live on the network. */
213
+ exports.LIVE_STATES = new Set([
214
+ 'pending',
215
+ 'mempool',
216
+ 'included',
217
+ ]);
218
+ /** The states in which a replacement or cancel may supersede the active Attempt. */
219
+ exports.CONFLICTABLE_STATES = new Set([
220
+ 'submitted',
221
+ 'stalled',
222
+ ]);
223
+ /** The only state `rebuild` reopens. */
224
+ exports.REBUILDABLE_STATES = new Set([
225
+ 'expired',
226
+ ]);
227
+ /** Where the stored bytes of a new Attempt whose broadcast never completed are resent. */
228
+ exports.RESUMABLE_STATES = new Set([
229
+ 'signed',
230
+ 'submitted',
231
+ 'stalled',
232
+ ]);
233
+ /**
234
+ * The built transaction must use exactly the slot the engine reserved: the ordering
235
+ * kind of the driver, the allocated nonce or seqno, and no input held by another live
236
+ * Operation. Anything else would persist a reservation nobody allocated.
237
+ */
238
+ function assertBuiltOrdering(operationId, kind, allocated, excluded, built) {
239
+ // No existing code names an input conflict without implying a nonce, so NONCE_CONFLICT
240
+ // (the ordering-slot conflict code) is kept and the message says what actually clashed.
241
+ if (built.kind === kind && built.kind === 'inputs') {
242
+ if (built.inputs.some((input) => excluded?.includes(input))) {
243
+ throw new error_1.ChainError('NONCE_CONFLICT', 'input reservation conflict: the built transaction spends an input held by another operation', { context: { operationId } });
244
+ }
245
+ return;
246
+ }
247
+ const matches = built.kind === kind &&
248
+ (built.kind === 'nonce'
249
+ ? allocated?.kind === 'nonce' && built.nonce === allocated.nonce
250
+ : built.kind === 'seqno'
251
+ ? allocated?.kind === 'seqno' && built.seqno === allocated.seqno
252
+ : true);
253
+ if (!matches) {
254
+ throw new error_1.ChainError('NONCE_CONFLICT', 'the built transaction does not use the ordering slot reserved for it', { context: { operationId } });
255
+ }
256
+ }
257
+ //# sourceMappingURL=engine-rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine-rules.js","sourceRoot":"","sources":["../../../src/core/lifecycle/engine-rules.ts"],"names":[],"mappings":"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","sourcesContent":["import type { LifecycleOptions } from '../config/types';\nimport {\n ChainError,\n ConfigError,\n createError,\n isCryptoAioError,\n type CryptoAioError,\n type ErrorCode,\n type SerializedError,\n} from '../errors/error';\nimport type { FeeOverride, FeeSpeed } from '../model/fee';\nimport type { OrderingData, OrderingKind } from '../model/ordering';\nimport type { TxState, UnsignedTx } from '../model/transaction';\nimport { sanitizeError } from '../secret/redact';\nimport type {\n AttemptObservation,\n AttemptRecord,\n OperationRecord,\n OperationState,\n SequenceState,\n} from '../store/types';\nimport { canonicalJson } from '../util/json';\nimport type { ObservationPatch } from './observations';\n\n/*\n * The engine's pure rules: lifecycle defaults, error serialization, and the state\n * sets and predicates `OperationEngine` decides with. No I/O and no engine state.\n */\n\nexport type ResolvedLifecycle = Required<LifecycleOptions>;\n\nexport const LIFECYCLE_DEFAULTS: ResolvedLifecycle = {\n pollIntervalMs: 5_000,\n droppedGracePeriodMs: 120_000,\n rebroadcastIntervalMs: 60_000,\n leaseMs: 30_000,\n claimLeaseMs: 60_000,\n waitTimeoutMs: 600_000,\n requireIdempotencyKey: false,\n broadcastFanout: 1,\n signTimeoutMs: 120_000,\n};\n\nexport function withLifecycleDefaults(options: LifecycleOptions): ResolvedLifecycle {\n const out: Record<string, unknown> = { ...LIFECYCLE_DEFAULTS };\n for (const [key, value] of Object.entries(options))\n if (value !== undefined) out[key] = value;\n const { signTimeoutMs } = out as ResolvedLifecycle;\n if (\n typeof signTimeoutMs !== 'number' ||\n !Number.isFinite(signTimeoutMs) ||\n signTimeoutMs <= 0\n ) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n 'lifecycle.signTimeoutMs must be a finite number greater than 0',\n );\n }\n return out as ResolvedLifecycle;\n}\n\nexport const PRE_SIGNING_STATES: ReadonlySet<OperationState> = new Set<OperationState>([\n 'created',\n 'prepared',\n 'awaiting-signature',\n]);\n\nexport const LEASED_ORDERINGS = new Set(['nonce', 'seqno', 'inputs']);\nexport const DEFINITIVE_CATEGORIES = new Set([\n 'validation',\n 'chain',\n 'unsupported',\n 'config',\n 'signing',\n]);\n\n/**\n * A crypto-aio error as it is; anything else under `fallback`, the most specific\n * existing code for the caller's context (there is no generic code), with a sanitized message.\n */\nexport function serializeError(error: unknown, fallback: ErrorCode): SerializedError {\n return (\n isCryptoAioError(error) ? error : createError(fallback, sanitizeError(error).message)\n ).toJSON();\n}\n\nexport function rehydrateError(serialized: SerializedError, operationId: string): Error {\n return createError(serialized.code, serialized.message, {\n context: { ...serialized.context, operationId },\n ...(serialized.details ? { details: serialized.details } : {}),\n retryable: serialized.retryable,\n ambiguous: serialized.ambiguous,\n });\n}\n\n/**\n * The error's crypto-aio code, or `'UNKNOWN'`. Logs carry this, never the error itself:\n * messages may hold addresses, amounts or store detail.\n */\nexport function errorCode(error: unknown): string {\n return isCryptoAioError(error) ? error.code : 'UNKNOWN';\n}\n\nexport function isDefinitive(error: unknown): error is CryptoAioError {\n return (\n isCryptoAioError(error) &&\n !error.retryable &&\n DEFINITIVE_CATEGORIES.has(error.category)\n );\n}\n\n/**\n * Observation states backed by chain evidence: the Attempt was mined, or its slot or expiry\n * was consumed. No broadcast answer ever overwrites them; `replacedBy` is kept.\n */\nexport const CHAIN_EVIDENCE_STATES: ReadonlySet<TxState> = new Set<TxState>([\n 'included',\n 'final',\n 'failed',\n 'replaced',\n 'expired',\n]);\n\n/**\n * A node once accepted these bytes, or they may be live. `firstSeenAt` is the durable\n * marker: set when a node accepted them or the monitor saw them held, and kept by a refusal\n * that found them possibly live. A `pending`, `mempool` or `dropped` observation also\n * counts: one left by an accepted or ambiguous send, and the `pending` the monitor\n * writes for a signed Attempt that was never broadcast, which errs in the safe direction\n * (a genuine rejection then stalls it and keeps its nonce instead of failing it). A later\n * rejection says nothing about bytes that may still sit in a mempool, so it is only a\n * refusal: never terminal, the nonce is kept.\n */\nexport function mayBeLive(observation: AttemptObservation | null): boolean {\n return (\n observation !== null &&\n (observation.firstSeenAt !== undefined ||\n observation.state === 'pending' ||\n observation.state === 'mempool' ||\n observation.state === 'dropped')\n );\n}\n\n/**\n * A send that may have delivered the bytes (accepted, already known or ambiguous): a\n * missing, `refused` or `dropped` observation becomes `pending`, and a refusal's reason no\n * longer applies. Stronger evidence (chain or proven states) is left alone. The one rule\n * for every such send, so they cannot drift apart. Known gap: an ambiguous send clears a\n * refusal and its reason, so the monitor then shows bytes the node still refuses as\n * `dropped`, not `refused`; only a resend through the engine (a same-key repeat,\n * `rebroadcast`, recovery) records the refusal again.\n */\nexport function pendingAfterSend(current: AttemptObservation | null): ObservationPatch {\n return current === null || current.state === 'refused' || current.state === 'dropped'\n ? { state: 'pending', reason: undefined }\n : {};\n}\n\n/** Every nonce a live Operation holds: its reservation, unsigned payload and Attempts. */\nexport function heldNonces(op: OperationRecord): bigint[] {\n const orderings = [\n op.reservation,\n op.unsigned?.ordering,\n ...op.attempts.map((a) => a.ordering),\n ];\n return orderings.flatMap((o) => (o?.kind === 'nonce' ? [o.nonce] : []));\n}\n\n/** Failures proven on chain at finality: their nonce was consumed. */\nexport const CONSUMED_FAILURES: ReadonlySet<string> = new Set([\n 'TX_REVERTED',\n 'TX_REPLACED',\n]);\n\n/** Whether some value in [from, next) is neither released nor held. */\nexport function hasReclaimable(\n state: SequenceState | null,\n from: bigint,\n held: readonly bigint[],\n): boolean {\n if (!state) return false;\n const taken = new Set([...state.released, ...held]);\n for (let value = from; value < state.next; value++) if (!taken.has(value)) return true;\n return false;\n}\n\n/** `signed`, or `submitted` with an unknown broadcast outcome: its stored bytes are (re)sent. */\nexport function awaitsBroadcast(op: OperationRecord): boolean {\n return op.state === 'signed' || (op.state === 'submitted' && op.ambiguous === true);\n}\n\n/** The node's own answer (refused, rejected): not ambiguous, so the bytes were not taken. */\nexport function isRefusal(error: unknown): boolean {\n return isCryptoAioError(error) && error.category === 'chain' && !error.ambiguous;\n}\n\n/**\n * A replacement records the fee spec it was asked for (plain data, as every store record\n * must be) in its fee details, so a repeat of the same request is recognised instead of\n * signed again. The core adds it after `build`, so a driver never sets or reads it: its\n * `assemble` reads only the fee fields it named itself.\n */\nexport function withRequestedFee(\n unsigned: UnsignedTx,\n fee: FeeSpeed | FeeOverride,\n): UnsignedTx {\n return {\n ...unsigned,\n fee: { ...unsigned.fee, details: { ...unsigned.fee.details, requestedFee: fee } },\n };\n}\n\n/** An Attempt's total fee, summed over its charges. */\nexport function feeOf(attempt: AttemptRecord): bigint {\n return attempt.fee.charges.reduce((sum, charge) => sum + charge.amount, 0n);\n}\n\n/**\n * The cancel a new cancel is bumped from: among the earlier cancels that superseded\n * the active Attempt `previous` (refused ones gave it the active role back), the one paying\n * the most, so repeated bumps climb; otherwise `previous` itself, so a cancel never starts\n * below a newer, higher replacement. Fees are compared only between cancels. Known gap:\n * they are ranked by total charges, not by a price the driver compares, so on EVM a\n * repeat cancel may need an explicit `fee`.\n */\nexport function cancelBase(op: OperationRecord, previous: AttemptRecord): AttemptRecord {\n let best: AttemptRecord | undefined;\n for (const attempt of op.attempts) {\n if (attempt.purpose !== 'cancel' || attempt.supersedes !== previous.id) continue;\n if (!best || feeOf(attempt) > feeOf(best)) best = attempt;\n }\n return best ?? previous;\n}\n\n/** The same `FeeSpeed` name, or a canonically equal `FeeOverride`. */\nexport function sameFeeSpec(\n attempt: AttemptRecord,\n fee: FeeSpeed | FeeOverride | undefined,\n): boolean {\n const recorded = attempt.fee.details.requestedFee;\n if (recorded === undefined || fee === undefined) return false;\n try {\n return canonicalJson(recorded) === canonicalJson(fee);\n } catch {\n return false;\n }\n}\n\n/**\n * What `restoreAfterRefusal` puts back: the Operation as the refused Attempt found it.\n * Without `state`, only the active Attempt is swapped (state and error are kept).\n */\nexport interface RestorePoint {\n readonly state?: OperationState;\n readonly activeAttemptId: string;\n readonly error?: SerializedError;\n readonly ambiguous?: boolean;\n}\n\n/** A node's refusal or rejection of these bytes; both are handled alike. */\nexport const NODE_REFUSED_STATES: ReadonlySet<TxState> = new Set<TxState>([\n 'refused',\n 'rejected',\n]);\n\n/** Observations under which a superseded Attempt may still be live on the network. */\nexport const LIVE_STATES: ReadonlySet<TxState> = new Set<TxState>([\n 'pending',\n 'mempool',\n 'included',\n]);\n\n/** The states in which a replacement or cancel may supersede the active Attempt. */\nexport const CONFLICTABLE_STATES: ReadonlySet<OperationState> = new Set<OperationState>([\n 'submitted',\n 'stalled',\n]);\n/** The only state `rebuild` reopens. */\nexport const REBUILDABLE_STATES: ReadonlySet<OperationState> = new Set<OperationState>([\n 'expired',\n]);\n/** Where the stored bytes of a new Attempt whose broadcast never completed are resent. */\nexport const RESUMABLE_STATES: ReadonlySet<OperationState> = new Set<OperationState>([\n 'signed',\n 'submitted',\n 'stalled',\n]);\n\n/**\n * The built transaction must use exactly the slot the engine reserved: the ordering\n * kind of the driver, the allocated nonce or seqno, and no input held by another live\n * Operation. Anything else would persist a reservation nobody allocated.\n */\nexport function assertBuiltOrdering(\n operationId: string,\n kind: OrderingKind,\n allocated: OrderingData | undefined,\n excluded: readonly string[] | undefined,\n built: OrderingData,\n): void {\n // No existing code names an input conflict without implying a nonce, so NONCE_CONFLICT\n // (the ordering-slot conflict code) is kept and the message says what actually clashed.\n if (built.kind === kind && built.kind === 'inputs') {\n if (built.inputs.some((input) => excluded?.includes(input))) {\n throw new ChainError(\n 'NONCE_CONFLICT',\n 'input reservation conflict: the built transaction spends an input held by another operation',\n { context: { operationId } },\n );\n }\n return;\n }\n const matches =\n built.kind === kind &&\n (built.kind === 'nonce'\n ? allocated?.kind === 'nonce' && built.nonce === allocated.nonce\n : built.kind === 'seqno'\n ? allocated?.kind === 'seqno' && built.seqno === allocated.seqno\n : true);\n if (!matches) {\n throw new ChainError(\n 'NONCE_CONFLICT',\n 'the built transaction does not use the ordering slot reserved for it',\n { context: { operationId } },\n );\n }\n}\n"]}