crypto-aio 0.0.3 → 0.2.0

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