crypto-aio 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (672) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +144 -14
  3. package/dist/adapters/avalanche/address.d.ts +15 -0
  4. package/dist/adapters/avalanche/address.js +74 -0
  5. package/dist/adapters/avalanche/address.js.map +1 -0
  6. package/dist/adapters/avalanche/api.d.ts +100 -0
  7. package/dist/adapters/avalanche/api.js +381 -0
  8. package/dist/adapters/avalanche/api.js.map +1 -0
  9. package/dist/adapters/avalanche/builder.d.ts +13 -0
  10. package/dist/adapters/avalanche/builder.js +336 -0
  11. package/dist/adapters/avalanche/builder.js.map +1 -0
  12. package/dist/adapters/avalanche/cb58.d.ts +7 -0
  13. package/dist/adapters/avalanche/cb58.js +49 -0
  14. package/dist/adapters/avalanche/cb58.js.map +1 -0
  15. package/dist/adapters/avalanche/chains.d.ts +21 -0
  16. package/dist/adapters/avalanche/chains.js +79 -0
  17. package/dist/adapters/avalanche/chains.js.map +1 -0
  18. package/dist/adapters/avalanche/codec.d.ts +94 -0
  19. package/dist/adapters/avalanche/codec.js +371 -0
  20. package/dist/adapters/avalanche/codec.js.map +1 -0
  21. package/dist/adapters/avalanche/context.d.ts +59 -0
  22. package/dist/adapters/avalanche/context.js +114 -0
  23. package/dist/adapters/avalanche/context.js.map +1 -0
  24. package/dist/adapters/avalanche/decode.d.ts +16 -0
  25. package/dist/adapters/avalanche/decode.js +101 -0
  26. package/dist/adapters/avalanche/decode.js.map +1 -0
  27. package/dist/adapters/avalanche/driver.d.ts +22 -0
  28. package/dist/adapters/avalanche/driver.js +81 -0
  29. package/dist/adapters/avalanche/driver.js.map +1 -0
  30. package/dist/adapters/avalanche/errors.d.ts +18 -0
  31. package/dist/adapters/avalanche/errors.js +61 -0
  32. package/dist/adapters/avalanche/errors.js.map +1 -0
  33. package/dist/adapters/avalanche/fees.d.ts +23 -0
  34. package/dist/adapters/avalanche/fees.js +105 -0
  35. package/dist/adapters/avalanche/fees.js.map +1 -0
  36. package/dist/adapters/avalanche/index.d.ts +19 -0
  37. package/dist/adapters/avalanche/index.js +8 -0
  38. package/dist/adapters/avalanche/index.js.map +1 -0
  39. package/dist/adapters/avalanche/network.d.ts +37 -0
  40. package/dist/adapters/avalanche/network.js +135 -0
  41. package/dist/adapters/avalanche/network.js.map +1 -0
  42. package/dist/adapters/avalanche/plugin.d.ts +21 -0
  43. package/dist/adapters/avalanche/plugin.js +46 -0
  44. package/dist/adapters/avalanche/plugin.js.map +1 -0
  45. package/dist/adapters/avalanche/presets.d.ts +6 -0
  46. package/dist/adapters/avalanche/presets.js +86 -0
  47. package/dist/adapters/avalanche/presets.js.map +1 -0
  48. package/dist/adapters/avalanche/proofs.d.ts +41 -0
  49. package/dist/adapters/avalanche/proofs.js +270 -0
  50. package/dist/adapters/avalanche/proofs.js.map +1 -0
  51. package/dist/adapters/avalanche/reader.d.ts +40 -0
  52. package/dist/adapters/avalanche/reader.js +231 -0
  53. package/dist/adapters/avalanche/reader.js.map +1 -0
  54. package/dist/adapters/avalanche/sdk.d.ts +182 -0
  55. package/dist/adapters/avalanche/sdk.js +21 -0
  56. package/dist/adapters/avalanche/sdk.js.map +1 -0
  57. package/dist/adapters/avalanche/types.d.ts +86 -0
  58. package/dist/{type/common.js → adapters/avalanche/types.js} +1 -1
  59. package/dist/adapters/avalanche/types.js.map +1 -0
  60. package/dist/adapters/evm/builder.d.ts +11 -0
  61. package/dist/adapters/evm/builder.js +326 -0
  62. package/dist/adapters/evm/builder.js.map +1 -0
  63. package/dist/adapters/evm/chains.d.ts +6 -0
  64. package/dist/adapters/evm/chains.js +203 -0
  65. package/dist/adapters/evm/chains.js.map +1 -0
  66. package/dist/adapters/evm/client.d.ts +84 -0
  67. package/dist/adapters/evm/client.js +335 -0
  68. package/dist/adapters/evm/client.js.map +1 -0
  69. package/dist/adapters/evm/decode.d.ts +35 -0
  70. package/dist/adapters/evm/decode.js +170 -0
  71. package/dist/adapters/evm/decode.js.map +1 -0
  72. package/dist/adapters/evm/driver.d.ts +8 -0
  73. package/dist/adapters/evm/driver.js +61 -0
  74. package/dist/adapters/evm/driver.js.map +1 -0
  75. package/dist/adapters/evm/errors.d.ts +20 -0
  76. package/dist/adapters/evm/errors.js +110 -0
  77. package/dist/adapters/evm/errors.js.map +1 -0
  78. package/dist/adapters/evm/ethers-client.d.ts +43 -0
  79. package/dist/adapters/evm/ethers-client.js +135 -0
  80. package/dist/adapters/evm/ethers-client.js.map +1 -0
  81. package/dist/adapters/evm/fees.d.ts +79 -0
  82. package/dist/adapters/evm/fees.js +234 -0
  83. package/dist/adapters/evm/fees.js.map +1 -0
  84. package/dist/adapters/evm/index.d.ts +20 -0
  85. package/dist/adapters/evm/index.js +11 -0
  86. package/dist/adapters/evm/index.js.map +1 -0
  87. package/dist/adapters/evm/network.d.ts +60 -0
  88. package/dist/adapters/evm/network.js +131 -0
  89. package/dist/adapters/evm/network.js.map +1 -0
  90. package/dist/adapters/evm/plugin.d.ts +36 -0
  91. package/dist/adapters/evm/plugin.js +102 -0
  92. package/dist/adapters/evm/plugin.js.map +1 -0
  93. package/dist/adapters/evm/presets.d.ts +2 -0
  94. package/dist/adapters/evm/presets.js +105 -0
  95. package/dist/adapters/evm/presets.js.map +1 -0
  96. package/dist/adapters/evm/proofs.d.ts +19 -0
  97. package/dist/adapters/evm/proofs.js +358 -0
  98. package/dist/adapters/evm/proofs.js.map +1 -0
  99. package/dist/adapters/evm/rawtx.d.ts +25 -0
  100. package/dist/adapters/evm/rawtx.js +176 -0
  101. package/dist/adapters/evm/rawtx.js.map +1 -0
  102. package/dist/adapters/evm/reader.d.ts +65 -0
  103. package/dist/adapters/evm/reader.js +292 -0
  104. package/dist/adapters/evm/reader.js.map +1 -0
  105. package/dist/adapters/evm/rpc.d.ts +39 -0
  106. package/dist/adapters/evm/rpc.js +152 -0
  107. package/dist/adapters/evm/rpc.js.map +1 -0
  108. package/dist/adapters/evm/tokens.d.ts +7 -0
  109. package/dist/adapters/evm/tokens.js +23 -0
  110. package/dist/adapters/evm/tokens.js.map +1 -0
  111. package/dist/adapters/evm/types.d.ts +255 -0
  112. package/dist/{type/account.js → adapters/evm/types.js} +1 -1
  113. package/dist/adapters/evm/types.js.map +1 -0
  114. package/dist/adapters/evm/web3-client.d.ts +23 -0
  115. package/dist/adapters/evm/web3-client.js +159 -0
  116. package/dist/adapters/evm/web3-client.js.map +1 -0
  117. package/dist/adapters/solana/builder.d.ts +18 -0
  118. package/dist/adapters/solana/builder.js +545 -0
  119. package/dist/adapters/solana/builder.js.map +1 -0
  120. package/dist/adapters/solana/chains.d.ts +13 -0
  121. package/dist/adapters/solana/chains.js +37 -0
  122. package/dist/adapters/solana/chains.js.map +1 -0
  123. package/dist/adapters/solana/decode.d.ts +111 -0
  124. package/dist/adapters/solana/decode.js +595 -0
  125. package/dist/adapters/solana/decode.js.map +1 -0
  126. package/dist/adapters/solana/driver.d.ts +15 -0
  127. package/dist/adapters/solana/driver.js +72 -0
  128. package/dist/adapters/solana/driver.js.map +1 -0
  129. package/dist/adapters/solana/errors.d.ts +36 -0
  130. package/dist/adapters/solana/errors.js +154 -0
  131. package/dist/adapters/solana/errors.js.map +1 -0
  132. package/dist/adapters/solana/fees.d.ts +68 -0
  133. package/dist/adapters/solana/fees.js +205 -0
  134. package/dist/adapters/solana/fees.js.map +1 -0
  135. package/dist/adapters/solana/heights.d.ts +47 -0
  136. package/dist/adapters/solana/heights.js +185 -0
  137. package/dist/adapters/solana/heights.js.map +1 -0
  138. package/dist/adapters/solana/history.d.ts +10 -0
  139. package/dist/adapters/solana/history.js +71 -0
  140. package/dist/adapters/solana/history.js.map +1 -0
  141. package/dist/adapters/solana/index.d.ts +16 -0
  142. package/dist/adapters/solana/index.js +9 -0
  143. package/dist/adapters/solana/index.js.map +1 -0
  144. package/dist/adapters/solana/keys.d.ts +13 -0
  145. package/dist/adapters/solana/keys.js +69 -0
  146. package/dist/adapters/solana/keys.js.map +1 -0
  147. package/dist/adapters/solana/network.d.ts +24 -0
  148. package/dist/adapters/solana/network.js +95 -0
  149. package/dist/adapters/solana/network.js.map +1 -0
  150. package/dist/adapters/solana/plugin.d.ts +18 -0
  151. package/dist/adapters/solana/plugin.js +41 -0
  152. package/dist/adapters/solana/plugin.js.map +1 -0
  153. package/dist/adapters/solana/presets.d.ts +2 -0
  154. package/dist/adapters/solana/presets.js +77 -0
  155. package/dist/adapters/solana/presets.js.map +1 -0
  156. package/dist/adapters/solana/programs.d.ts +44 -0
  157. package/dist/adapters/solana/programs.js +159 -0
  158. package/dist/adapters/solana/programs.js.map +1 -0
  159. package/dist/adapters/solana/proofs.d.ts +56 -0
  160. package/dist/adapters/solana/proofs.js +540 -0
  161. package/dist/adapters/solana/proofs.js.map +1 -0
  162. package/dist/adapters/solana/reader.d.ts +82 -0
  163. package/dist/adapters/solana/reader.js +326 -0
  164. package/dist/adapters/solana/reader.js.map +1 -0
  165. package/dist/adapters/solana/rpc.d.ts +102 -0
  166. package/dist/adapters/solana/rpc.js +301 -0
  167. package/dist/adapters/solana/rpc.js.map +1 -0
  168. package/dist/adapters/solana/tokens.d.ts +7 -0
  169. package/dist/adapters/solana/tokens.js +19 -0
  170. package/dist/adapters/solana/tokens.js.map +1 -0
  171. package/dist/adapters/solana/types.d.ts +121 -0
  172. package/dist/{type/lib-types.js → adapters/solana/types.js} +1 -1
  173. package/dist/adapters/solana/types.js.map +1 -0
  174. package/dist/adapters/solana/web3.d.ts +5 -0
  175. package/dist/adapters/solana/web3.js +83 -0
  176. package/dist/adapters/solana/web3.js.map +1 -0
  177. package/dist/adapters/solana/wire.d.ts +62 -0
  178. package/dist/adapters/solana/wire.js +168 -0
  179. package/dist/adapters/solana/wire.js.map +1 -0
  180. package/dist/adapters/ton/address.d.ts +43 -0
  181. package/dist/adapters/ton/address.js +168 -0
  182. package/dist/adapters/ton/address.js.map +1 -0
  183. package/dist/adapters/ton/api.d.ts +344 -0
  184. package/dist/adapters/ton/api.js +942 -0
  185. package/dist/adapters/ton/api.js.map +1 -0
  186. package/dist/adapters/ton/builder.d.ts +18 -0
  187. package/dist/adapters/ton/builder.js +701 -0
  188. package/dist/adapters/ton/builder.js.map +1 -0
  189. package/dist/adapters/ton/chains.d.ts +16 -0
  190. package/dist/adapters/ton/chains.js +39 -0
  191. package/dist/adapters/ton/chains.js.map +1 -0
  192. package/dist/adapters/ton/decode.d.ts +43 -0
  193. package/dist/adapters/ton/decode.js +219 -0
  194. package/dist/adapters/ton/decode.js.map +1 -0
  195. package/dist/adapters/ton/driver.d.ts +10 -0
  196. package/dist/adapters/ton/driver.js +117 -0
  197. package/dist/adapters/ton/driver.js.map +1 -0
  198. package/dist/adapters/ton/errors.d.ts +36 -0
  199. package/dist/adapters/ton/errors.js +89 -0
  200. package/dist/adapters/ton/errors.js.map +1 -0
  201. package/dist/adapters/ton/fees.d.ts +28 -0
  202. package/dist/adapters/ton/fees.js +121 -0
  203. package/dist/adapters/ton/fees.js.map +1 -0
  204. package/dist/adapters/ton/index.d.ts +16 -0
  205. package/dist/adapters/ton/index.js +9 -0
  206. package/dist/adapters/ton/index.js.map +1 -0
  207. package/dist/adapters/ton/messages.d.ts +157 -0
  208. package/dist/adapters/ton/messages.js +397 -0
  209. package/dist/adapters/ton/messages.js.map +1 -0
  210. package/dist/adapters/ton/native-client.d.ts +10 -0
  211. package/dist/adapters/ton/native-client.js +47 -0
  212. package/dist/adapters/ton/native-client.js.map +1 -0
  213. package/dist/adapters/ton/network.d.ts +58 -0
  214. package/dist/adapters/ton/network.js +207 -0
  215. package/dist/adapters/ton/network.js.map +1 -0
  216. package/dist/adapters/ton/plugin.d.ts +24 -0
  217. package/dist/adapters/ton/plugin.js +57 -0
  218. package/dist/adapters/ton/plugin.js.map +1 -0
  219. package/dist/adapters/ton/presets.d.ts +6 -0
  220. package/dist/adapters/ton/presets.js +94 -0
  221. package/dist/adapters/ton/presets.js.map +1 -0
  222. package/dist/adapters/ton/proofs.d.ts +66 -0
  223. package/dist/adapters/ton/proofs.js +813 -0
  224. package/dist/adapters/ton/proofs.js.map +1 -0
  225. package/dist/adapters/ton/reader.d.ts +194 -0
  226. package/dist/adapters/ton/reader.js +781 -0
  227. package/dist/adapters/ton/reader.js.map +1 -0
  228. package/dist/adapters/ton/tokens.d.ts +10 -0
  229. package/dist/adapters/ton/tokens.js +27 -0
  230. package/dist/adapters/ton/tokens.js.map +1 -0
  231. package/dist/adapters/ton/trace.d.ts +48 -0
  232. package/dist/adapters/ton/trace.js +277 -0
  233. package/dist/adapters/ton/trace.js.map +1 -0
  234. package/dist/adapters/ton/types.d.ts +105 -0
  235. package/dist/adapters/ton/types.js +3 -0
  236. package/dist/adapters/ton/types.js.map +1 -0
  237. package/dist/adapters/ton/wallets.d.ts +86 -0
  238. package/dist/adapters/ton/wallets.js +373 -0
  239. package/dist/adapters/ton/wallets.js.map +1 -0
  240. package/dist/adapters/tron/abi.d.ts +39 -0
  241. package/dist/adapters/tron/abi.js +110 -0
  242. package/dist/adapters/tron/abi.js.map +1 -0
  243. package/dist/adapters/tron/address.d.ts +20 -0
  244. package/dist/adapters/tron/address.js +110 -0
  245. package/dist/adapters/tron/address.js.map +1 -0
  246. package/dist/adapters/tron/builder.d.ts +12 -0
  247. package/dist/adapters/tron/builder.js +553 -0
  248. package/dist/adapters/tron/builder.js.map +1 -0
  249. package/dist/adapters/tron/chains.d.ts +12 -0
  250. package/dist/adapters/tron/chains.js +35 -0
  251. package/dist/adapters/tron/chains.js.map +1 -0
  252. package/dist/adapters/tron/codec.d.ts +10 -0
  253. package/dist/adapters/tron/codec.js +322 -0
  254. package/dist/adapters/tron/codec.js.map +1 -0
  255. package/dist/adapters/tron/decode.d.ts +50 -0
  256. package/dist/adapters/tron/decode.js +280 -0
  257. package/dist/adapters/tron/decode.js.map +1 -0
  258. package/dist/adapters/tron/driver.d.ts +12 -0
  259. package/dist/adapters/tron/driver.js +106 -0
  260. package/dist/adapters/tron/driver.js.map +1 -0
  261. package/dist/adapters/tron/errors.d.ts +74 -0
  262. package/dist/adapters/tron/errors.js +261 -0
  263. package/dist/adapters/tron/errors.js.map +1 -0
  264. package/dist/adapters/tron/fees.d.ts +49 -0
  265. package/dist/adapters/tron/fees.js +166 -0
  266. package/dist/adapters/tron/fees.js.map +1 -0
  267. package/dist/adapters/tron/http.d.ts +173 -0
  268. package/dist/adapters/tron/http.js +729 -0
  269. package/dist/adapters/tron/http.js.map +1 -0
  270. package/dist/adapters/tron/index.d.ts +16 -0
  271. package/dist/adapters/tron/index.js +15 -0
  272. package/dist/adapters/tron/index.js.map +1 -0
  273. package/dist/adapters/tron/network.d.ts +44 -0
  274. package/dist/adapters/tron/network.js +163 -0
  275. package/dist/adapters/tron/network.js.map +1 -0
  276. package/dist/adapters/tron/plugin.d.ts +17 -0
  277. package/dist/adapters/tron/plugin.js +39 -0
  278. package/dist/adapters/tron/plugin.js.map +1 -0
  279. package/dist/adapters/tron/presets.d.ts +5 -0
  280. package/dist/adapters/tron/presets.js +68 -0
  281. package/dist/adapters/tron/presets.js.map +1 -0
  282. package/dist/adapters/tron/proofs.d.ts +80 -0
  283. package/dist/adapters/tron/proofs.js +370 -0
  284. package/dist/adapters/tron/proofs.js.map +1 -0
  285. package/dist/adapters/tron/protobuf.d.ts +36 -0
  286. package/dist/adapters/tron/protobuf.js +90 -0
  287. package/dist/adapters/tron/protobuf.js.map +1 -0
  288. package/dist/adapters/tron/reader.d.ts +47 -0
  289. package/dist/adapters/tron/reader.js +203 -0
  290. package/dist/adapters/tron/reader.js.map +1 -0
  291. package/dist/adapters/tron/tokens.d.ts +7 -0
  292. package/dist/adapters/tron/tokens.js +14 -0
  293. package/dist/adapters/tron/tokens.js.map +1 -0
  294. package/dist/adapters/tron/types.d.ts +166 -0
  295. package/dist/adapters/tron/types.js +3 -0
  296. package/dist/adapters/tron/types.js.map +1 -0
  297. package/dist/adapters/utxo/address.d.ts +51 -0
  298. package/dist/adapters/utxo/address.js +341 -0
  299. package/dist/adapters/utxo/address.js.map +1 -0
  300. package/dist/adapters/utxo/builder.d.ts +35 -0
  301. package/dist/adapters/utxo/builder.js +380 -0
  302. package/dist/adapters/utxo/builder.js.map +1 -0
  303. package/dist/adapters/utxo/chains.d.ts +17 -0
  304. package/dist/adapters/utxo/chains.js +99 -0
  305. package/dist/adapters/utxo/chains.js.map +1 -0
  306. package/dist/adapters/utxo/codec.d.ts +120 -0
  307. package/dist/adapters/utxo/codec.js +408 -0
  308. package/dist/adapters/utxo/codec.js.map +1 -0
  309. package/dist/adapters/utxo/coinselect.d.ts +48 -0
  310. package/dist/adapters/utxo/coinselect.js +131 -0
  311. package/dist/adapters/utxo/coinselect.js.map +1 -0
  312. package/dist/adapters/utxo/context.d.ts +57 -0
  313. package/dist/adapters/utxo/context.js +118 -0
  314. package/dist/adapters/utxo/context.js.map +1 -0
  315. package/dist/adapters/utxo/decode.d.ts +14 -0
  316. package/dist/adapters/utxo/decode.js +85 -0
  317. package/dist/adapters/utxo/decode.js.map +1 -0
  318. package/dist/adapters/utxo/driver.d.ts +16 -0
  319. package/dist/adapters/utxo/driver.js +74 -0
  320. package/dist/adapters/utxo/driver.js.map +1 -0
  321. package/dist/adapters/utxo/ecc.d.ts +9 -0
  322. package/dist/adapters/utxo/ecc.js +26 -0
  323. package/dist/adapters/utxo/ecc.js.map +1 -0
  324. package/dist/adapters/utxo/errors.d.ts +52 -0
  325. package/dist/adapters/utxo/errors.js +191 -0
  326. package/dist/adapters/utxo/errors.js.map +1 -0
  327. package/dist/adapters/utxo/esplora.d.ts +79 -0
  328. package/dist/adapters/utxo/esplora.js +451 -0
  329. package/dist/adapters/utxo/esplora.js.map +1 -0
  330. package/dist/adapters/utxo/fees.d.ts +41 -0
  331. package/dist/adapters/utxo/fees.js +125 -0
  332. package/dist/adapters/utxo/fees.js.map +1 -0
  333. package/dist/adapters/utxo/index.d.ts +17 -0
  334. package/dist/adapters/utxo/index.js +8 -0
  335. package/dist/adapters/utxo/index.js.map +1 -0
  336. package/dist/adapters/utxo/network.d.ts +50 -0
  337. package/dist/adapters/utxo/network.js +165 -0
  338. package/dist/adapters/utxo/network.js.map +1 -0
  339. package/dist/adapters/utxo/plugin.d.ts +17 -0
  340. package/dist/adapters/utxo/plugin.js +41 -0
  341. package/dist/adapters/utxo/plugin.js.map +1 -0
  342. package/dist/adapters/utxo/presets.d.ts +12 -0
  343. package/dist/adapters/utxo/presets.js +47 -0
  344. package/dist/adapters/utxo/presets.js.map +1 -0
  345. package/dist/adapters/utxo/preview.d.ts +3 -0
  346. package/dist/adapters/utxo/preview.js +65 -0
  347. package/dist/adapters/utxo/preview.js.map +1 -0
  348. package/dist/adapters/utxo/proofs.d.ts +57 -0
  349. package/dist/adapters/utxo/proofs.js +331 -0
  350. package/dist/adapters/utxo/proofs.js.map +1 -0
  351. package/dist/adapters/utxo/rawtx.d.ts +59 -0
  352. package/dist/adapters/utxo/rawtx.js +234 -0
  353. package/dist/adapters/utxo/rawtx.js.map +1 -0
  354. package/dist/adapters/utxo/reader.d.ts +36 -0
  355. package/dist/adapters/utxo/reader.js +265 -0
  356. package/dist/adapters/utxo/reader.js.map +1 -0
  357. package/dist/adapters/utxo/sdk.d.ts +18 -0
  358. package/dist/adapters/utxo/sdk.js +17 -0
  359. package/dist/adapters/utxo/sdk.js.map +1 -0
  360. package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
  361. package/dist/adapters/utxo/signed-psbt.js +428 -0
  362. package/dist/adapters/utxo/signed-psbt.js.map +1 -0
  363. package/dist/adapters/utxo/spend.d.ts +59 -0
  364. package/dist/adapters/utxo/spend.js +230 -0
  365. package/dist/adapters/utxo/spend.js.map +1 -0
  366. package/dist/adapters/utxo/types.d.ts +167 -0
  367. package/dist/adapters/utxo/types.js +3 -0
  368. package/dist/adapters/utxo/types.js.map +1 -0
  369. package/dist/core/assets/service.d.ts +18 -0
  370. package/dist/core/assets/service.js +69 -0
  371. package/dist/core/assets/service.js.map +1 -0
  372. package/dist/core/blockchain/default-ref.d.ts +4 -0
  373. package/dist/core/blockchain/default-ref.js +16 -0
  374. package/dist/core/blockchain/default-ref.js.map +1 -0
  375. package/dist/core/blockchain/handle.d.ts +200 -0
  376. package/dist/core/blockchain/handle.js +579 -0
  377. package/dist/core/blockchain/handle.js.map +1 -0
  378. package/dist/core/blockchain/internal.d.ts +19 -0
  379. package/dist/core/blockchain/internal.js +16 -0
  380. package/dist/core/blockchain/internal.js.map +1 -0
  381. package/dist/core/blockchain/mapping.d.ts +22 -0
  382. package/dist/core/blockchain/mapping.js +136 -0
  383. package/dist/core/blockchain/mapping.js.map +1 -0
  384. package/dist/core/config/env.d.ts +8 -0
  385. package/dist/core/config/env.js +60 -0
  386. package/dist/core/config/env.js.map +1 -0
  387. package/dist/core/config/merge.d.ts +26 -0
  388. package/dist/core/config/merge.js +144 -0
  389. package/dist/core/config/merge.js.map +1 -0
  390. package/dist/core/config/resolve.d.ts +12 -0
  391. package/dist/core/config/resolve.js +251 -0
  392. package/dist/core/config/resolve.js.map +1 -0
  393. package/dist/core/config/types.d.ts +165 -0
  394. package/dist/core/config/types.js +3 -0
  395. package/dist/core/config/types.js.map +1 -0
  396. package/dist/core/container/builtins.d.ts +4 -0
  397. package/dist/core/container/builtins.js +13 -0
  398. package/dist/core/container/builtins.js.map +1 -0
  399. package/dist/core/container/container.d.ts +69 -0
  400. package/dist/core/container/container.js +466 -0
  401. package/dist/core/container/container.js.map +1 -0
  402. package/dist/core/container/default.d.ts +15 -0
  403. package/dist/core/container/default.js +70 -0
  404. package/dist/core/container/default.js.map +1 -0
  405. package/dist/core/container/internals.d.ts +54 -0
  406. package/dist/core/container/internals.js +21 -0
  407. package/dist/core/container/internals.js.map +1 -0
  408. package/dist/core/container/pool.d.ts +27 -0
  409. package/dist/core/container/pool.js +77 -0
  410. package/dist/core/container/pool.js.map +1 -0
  411. package/dist/core/driver/types.d.ts +346 -0
  412. package/dist/core/driver/types.js +3 -0
  413. package/dist/core/driver/types.js.map +1 -0
  414. package/dist/core/errors/codes.d.ts +153 -0
  415. package/dist/core/errors/codes.js +49 -0
  416. package/dist/core/errors/codes.js.map +1 -0
  417. package/dist/core/errors/error.d.ts +66 -0
  418. package/dist/core/errors/error.js +129 -0
  419. package/dist/core/errors/error.js.map +1 -0
  420. package/dist/core/events/bus.d.ts +12 -0
  421. package/dist/core/events/bus.js +46 -0
  422. package/dist/core/events/bus.js.map +1 -0
  423. package/dist/core/events/logger.d.ts +13 -0
  424. package/dist/core/events/logger.js +42 -0
  425. package/dist/core/events/logger.js.map +1 -0
  426. package/dist/core/events/types.d.ts +131 -0
  427. package/dist/core/events/types.js +3 -0
  428. package/dist/core/events/types.js.map +1 -0
  429. package/dist/core/lifecycle/engine-rules.d.ts +107 -0
  430. package/dist/core/lifecycle/engine-rules.js +257 -0
  431. package/dist/core/lifecycle/engine-rules.js.map +1 -0
  432. package/dist/core/lifecycle/engine.d.ts +500 -0
  433. package/dist/core/lifecycle/engine.js +1732 -0
  434. package/dist/core/lifecycle/engine.js.map +1 -0
  435. package/dist/core/lifecycle/evaluate.d.ts +19 -0
  436. package/dist/core/lifecycle/evaluate.js +72 -0
  437. package/dist/core/lifecycle/evaluate.js.map +1 -0
  438. package/dist/core/lifecycle/intent.d.ts +11 -0
  439. package/dist/core/lifecycle/intent.js +88 -0
  440. package/dist/core/lifecycle/intent.js.map +1 -0
  441. package/dist/core/lifecycle/monitor.d.ts +138 -0
  442. package/dist/core/lifecycle/monitor.js +606 -0
  443. package/dist/core/lifecycle/monitor.js.map +1 -0
  444. package/dist/core/lifecycle/observations.d.ts +17 -0
  445. package/dist/core/lifecycle/observations.js +59 -0
  446. package/dist/core/lifecycle/observations.js.map +1 -0
  447. package/dist/core/lifecycle/reconcile.d.ts +58 -0
  448. package/dist/core/lifecycle/reconcile.js +112 -0
  449. package/dist/core/lifecycle/reconcile.js.map +1 -0
  450. package/dist/core/lifecycle/views.d.ts +49 -0
  451. package/dist/core/lifecycle/views.js +57 -0
  452. package/dist/core/lifecycle/views.js.map +1 -0
  453. package/dist/core/lifecycle/workers.d.ts +82 -0
  454. package/dist/core/lifecycle/workers.js +329 -0
  455. package/dist/core/lifecycle/workers.js.map +1 -0
  456. package/dist/core/model/address.d.ts +32 -0
  457. package/dist/core/model/address.js +43 -0
  458. package/dist/core/model/address.js.map +1 -0
  459. package/dist/core/model/amount.d.ts +25 -0
  460. package/dist/core/model/amount.js +102 -0
  461. package/dist/core/model/amount.js.map +1 -0
  462. package/dist/core/model/asset.d.ts +28 -0
  463. package/dist/core/model/asset.js +47 -0
  464. package/dist/core/model/asset.js.map +1 -0
  465. package/dist/core/model/capability.d.ts +3 -0
  466. package/dist/core/model/capability.js +18 -0
  467. package/dist/core/model/capability.js.map +1 -0
  468. package/dist/core/model/chain.d.ts +63 -0
  469. package/dist/core/model/chain.js +8 -0
  470. package/dist/core/model/chain.js.map +1 -0
  471. package/dist/core/model/fee.d.ts +36 -0
  472. package/dist/core/model/fee.js +17 -0
  473. package/dist/core/model/fee.js.map +1 -0
  474. package/dist/core/model/ids.d.ts +37 -0
  475. package/dist/core/model/ids.js +13 -0
  476. package/dist/core/model/ids.js.map +1 -0
  477. package/dist/core/model/intent.d.ts +63 -0
  478. package/dist/core/model/intent.js +81 -0
  479. package/dist/core/model/intent.js.map +1 -0
  480. package/dist/core/model/ordering.d.ts +20 -0
  481. package/dist/core/model/ordering.js +29 -0
  482. package/dist/core/model/ordering.js.map +1 -0
  483. package/dist/core/model/transaction.d.ts +116 -0
  484. package/dist/core/model/transaction.js +3 -0
  485. package/dist/core/model/transaction.js.map +1 -0
  486. package/dist/core/observe/scanner.d.ts +135 -0
  487. package/dist/core/observe/scanner.js +355 -0
  488. package/dist/core/observe/scanner.js.map +1 -0
  489. package/dist/core/ordering/reservations.d.ts +16 -0
  490. package/dist/core/ordering/reservations.js +53 -0
  491. package/dist/core/ordering/reservations.js.map +1 -0
  492. package/dist/core/ordering/sequence.d.ts +61 -0
  493. package/dist/core/ordering/sequence.js +155 -0
  494. package/dist/core/ordering/sequence.js.map +1 -0
  495. package/dist/core/registry/adapters.d.ts +10 -0
  496. package/dist/core/registry/adapters.js +56 -0
  497. package/dist/core/registry/adapters.js.map +1 -0
  498. package/dist/core/registry/assets.d.ts +18 -0
  499. package/dist/core/registry/assets.js +90 -0
  500. package/dist/core/registry/assets.js.map +1 -0
  501. package/dist/core/registry/chains.d.ts +10 -0
  502. package/dist/core/registry/chains.js +80 -0
  503. package/dist/core/registry/chains.js.map +1 -0
  504. package/dist/core/registry/plugin.d.ts +41 -0
  505. package/dist/core/registry/plugin.js +109 -0
  506. package/dist/core/registry/plugin.js.map +1 -0
  507. package/dist/core/registry/providers.d.ts +31 -0
  508. package/dist/core/registry/providers.js +43 -0
  509. package/dist/core/registry/providers.js.map +1 -0
  510. package/dist/core/registry/schemes.d.ts +30 -0
  511. package/dist/core/registry/schemes.js +84 -0
  512. package/dist/core/registry/schemes.js.map +1 -0
  513. package/dist/core/secret/fragments.d.ts +33 -0
  514. package/dist/core/secret/fragments.js +110 -0
  515. package/dist/core/secret/fragments.js.map +1 -0
  516. package/dist/core/secret/redact.d.ts +10 -0
  517. package/dist/core/secret/redact.js +110 -0
  518. package/dist/core/secret/redact.js.map +1 -0
  519. package/dist/core/secret/secret.d.ts +14 -0
  520. package/dist/core/secret/secret.js +42 -0
  521. package/dist/core/secret/secret.js.map +1 -0
  522. package/dist/core/signing/callback.d.ts +10 -0
  523. package/dist/core/signing/callback.js +22 -0
  524. package/dist/core/signing/callback.js.map +1 -0
  525. package/dist/core/signing/guard.d.ts +18 -0
  526. package/dist/core/signing/guard.js +72 -0
  527. package/dist/core/signing/guard.js.map +1 -0
  528. package/dist/core/signing/hd.d.ts +36 -0
  529. package/dist/core/signing/hd.js +167 -0
  530. package/dist/core/signing/hd.js.map +1 -0
  531. package/dist/core/signing/local.d.ts +48 -0
  532. package/dist/core/signing/local.js +190 -0
  533. package/dist/core/signing/local.js.map +1 -0
  534. package/dist/core/signing/orchestrator.d.ts +40 -0
  535. package/dist/core/signing/orchestrator.js +300 -0
  536. package/dist/core/signing/orchestrator.js.map +1 -0
  537. package/dist/core/signing/types.d.ts +64 -0
  538. package/dist/core/signing/types.js +3 -0
  539. package/dist/core/signing/types.js.map +1 -0
  540. package/dist/core/signing/wallet.d.ts +48 -0
  541. package/dist/core/signing/wallet.js +153 -0
  542. package/dist/core/signing/wallet.js.map +1 -0
  543. package/dist/core/store/clone.d.ts +25 -0
  544. package/dist/core/store/clone.js +71 -0
  545. package/dist/core/store/clone.js.map +1 -0
  546. package/dist/core/store/memory.d.ts +38 -0
  547. package/dist/core/store/memory.js +325 -0
  548. package/dist/core/store/memory.js.map +1 -0
  549. package/dist/core/store/types.d.ts +246 -0
  550. package/dist/core/store/types.js +117 -0
  551. package/dist/core/store/types.js.map +1 -0
  552. package/dist/core/transport/backoff.d.ts +8 -0
  553. package/dist/core/transport/backoff.js +27 -0
  554. package/dist/core/transport/backoff.js.map +1 -0
  555. package/dist/core/transport/circuit.d.ts +25 -0
  556. package/dist/core/transport/circuit.js +61 -0
  557. package/dist/core/transport/circuit.js.map +1 -0
  558. package/dist/core/transport/http-transport.d.ts +30 -0
  559. package/dist/core/transport/http-transport.js +1695 -0
  560. package/dist/core/transport/http-transport.js.map +1 -0
  561. package/dist/core/transport/rate-limit.d.ts +27 -0
  562. package/dist/core/transport/rate-limit.js +78 -0
  563. package/dist/core/transport/rate-limit.js.map +1 -0
  564. package/dist/core/transport/stale-view.d.ts +11 -0
  565. package/dist/core/transport/stale-view.js +17 -0
  566. package/dist/core/transport/stale-view.js.map +1 -0
  567. package/dist/core/transport/types.d.ts +144 -0
  568. package/dist/core/transport/types.js +6 -0
  569. package/dist/core/transport/types.js.map +1 -0
  570. package/dist/core/util/bytes.d.ts +9 -0
  571. package/dist/core/util/bytes.js +40 -0
  572. package/dist/core/util/bytes.js.map +1 -0
  573. package/dist/core/util/clock.d.ts +6 -0
  574. package/dist/core/util/clock.js +26 -0
  575. package/dist/core/util/clock.js.map +1 -0
  576. package/dist/core/util/freeze.d.ts +8 -0
  577. package/dist/core/util/freeze.js +31 -0
  578. package/dist/core/util/freeze.js.map +1 -0
  579. package/dist/core/util/json.d.ts +29 -0
  580. package/dist/core/util/json.js +165 -0
  581. package/dist/core/util/json.js.map +1 -0
  582. package/dist/core/util/names.d.ts +21 -0
  583. package/dist/core/util/names.js +46 -0
  584. package/dist/core/util/names.js.map +1 -0
  585. package/dist/index.d.ts +64 -14
  586. package/dist/index.js +105 -49
  587. package/dist/index.js.map +1 -1
  588. package/dist/native.d.ts +21 -0
  589. package/dist/native.js +44 -0
  590. package/dist/native.js.map +1 -0
  591. package/dist/testing/contracts/api.d.ts +12 -0
  592. package/dist/testing/contracts/api.js +58 -0
  593. package/dist/testing/contracts/api.js.map +1 -0
  594. package/dist/testing/contracts/cursors.d.ts +6 -0
  595. package/dist/testing/contracts/cursors.js +43 -0
  596. package/dist/testing/contracts/cursors.js.map +1 -0
  597. package/dist/testing/contracts/locks.d.ts +10 -0
  598. package/dist/testing/contracts/locks.js +63 -0
  599. package/dist/testing/contracts/locks.js.map +1 -0
  600. package/dist/testing/contracts/operations.d.ts +21 -0
  601. package/dist/testing/contracts/operations.js +718 -0
  602. package/dist/testing/contracts/operations.js.map +1 -0
  603. package/dist/testing/contracts/sequences.d.ts +6 -0
  604. package/dist/testing/contracts/sequences.js +68 -0
  605. package/dist/testing/contracts/sequences.js.map +1 -0
  606. package/dist/testing/env.d.ts +63 -0
  607. package/dist/testing/env.js +105 -0
  608. package/dist/testing/env.js.map +1 -0
  609. package/dist/testing/fake-chain.d.ts +118 -0
  610. package/dist/testing/fake-chain.js +536 -0
  611. package/dist/testing/fake-chain.js.map +1 -0
  612. package/dist/testing/fake-clock.d.ts +15 -0
  613. package/dist/testing/fake-clock.js +86 -0
  614. package/dist/testing/fake-clock.js.map +1 -0
  615. package/dist/testing/fake-driver.d.ts +15 -0
  616. package/dist/testing/fake-driver.js +458 -0
  617. package/dist/testing/fake-driver.js.map +1 -0
  618. package/dist/testing/fake-fetch.d.ts +32 -0
  619. package/dist/testing/fake-fetch.js +81 -0
  620. package/dist/testing/fake-fetch.js.map +1 -0
  621. package/dist/testing/fake-plugin.d.ts +30 -0
  622. package/dist/testing/fake-plugin.js +66 -0
  623. package/dist/testing/fake-plugin.js.map +1 -0
  624. package/dist/testing/faulty-store.d.ts +36 -0
  625. package/dist/testing/faulty-store.js +66 -0
  626. package/dist/testing/faulty-store.js.map +1 -0
  627. package/dist/testing/generation.d.ts +60 -0
  628. package/dist/testing/generation.js +252 -0
  629. package/dist/testing/generation.js.map +1 -0
  630. package/dist/testing/index.d.ts +28 -0
  631. package/dist/testing/index.js +51 -0
  632. package/dist/testing/index.js.map +1 -0
  633. package/package.json +188 -44
  634. package/dist/libs/eth/account.d.ts +0 -9
  635. package/dist/libs/eth/account.js +0 -58
  636. package/dist/libs/eth/account.js.map +0 -1
  637. package/dist/libs/eth/contract.d.ts +0 -2
  638. package/dist/libs/eth/contract.js +0 -7
  639. package/dist/libs/eth/contract.js.map +0 -1
  640. package/dist/libs/eth/index.d.ts +0 -20
  641. package/dist/libs/eth/index.js +0 -62
  642. package/dist/libs/eth/index.js.map +0 -1
  643. package/dist/libs/eth/transact.d.ts +0 -2
  644. package/dist/libs/eth/transact.js +0 -7
  645. package/dist/libs/eth/transact.js.map +0 -1
  646. package/dist/libs/index.d.ts +0 -1
  647. package/dist/libs/index.js +0 -18
  648. package/dist/libs/index.js.map +0 -1
  649. package/dist/tool/common.d.ts +0 -28
  650. package/dist/tool/common.js +0 -33
  651. package/dist/tool/common.js.map +0 -1
  652. package/dist/tool/eth-tools.d.ts +0 -3
  653. package/dist/tool/eth-tools.js +0 -33
  654. package/dist/tool/eth-tools.js.map +0 -1
  655. package/dist/tool/index.d.ts +0 -4
  656. package/dist/tool/index.js +0 -21
  657. package/dist/tool/index.js.map +0 -1
  658. package/dist/tool/logging.d.ts +0 -3
  659. package/dist/tool/logging.js +0 -11
  660. package/dist/tool/logging.js.map +0 -1
  661. package/dist/tool/options.d.ts +0 -4
  662. package/dist/tool/options.js +0 -28
  663. package/dist/tool/options.js.map +0 -1
  664. package/dist/type/account.d.ts +0 -9
  665. package/dist/type/account.js.map +0 -1
  666. package/dist/type/common.d.ts +0 -18
  667. package/dist/type/common.js.map +0 -1
  668. package/dist/type/index.d.ts +0 -3
  669. package/dist/type/index.js +0 -20
  670. package/dist/type/index.js.map +0 -1
  671. package/dist/type/lib-types.d.ts +0 -7
  672. package/dist/type/lib-types.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proofs.js","sourceRoot":"","sources":["../../../src/adapters/ton/proofs.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Proofs and address history. Every proof attests a fact at its own height, with a\n * monotone predicate or at a fixed block, and no endpoint proposes a height. The one\n * exception is the unanchored head: one endpoint's masterchain head, trailed by\n * `finalitySkewBlocks` and attested by a quorum read of that block, retried at the\n * transport's own lag tolerance. Every lookup is bound to what it asked for: a header\n * names the block asked, the shard tops cover the basechain, a state and a get-method\n * name the block asked and the state read there.\n *\n * \"Not included\" rests only on authenticated chain data, never on an indexer's records: a\n * lying or lagging indexer can miss a message that ran, and a `rebuild` on its word would\n * pay twice. The proof reads, at an attested block where the message is expired, the\n * account's own chain of transactions, as the liteserver serves their cells, each hashed\n * here and linked by its `prev_trans` fields back from the attested state's last\n * transaction. A wallet can be reset (deleted, or destroyed to uninitialized, then\n * re-deployed from its public `StateInit` with seqno 0), so an activation, a destruction\n * or a chain start inside what the proof must see decides nothing, unless the chain\n * itself shows our transaction. Anything not yet decidable throws a retryable\n * `PROVIDER_UNAVAILABLE`, and an answer the chain could not have produced a retryable\n * `PROVIDER_INCONSISTENT`; both decide nothing.\n */\nimport { Cell, loadTransaction, type Message, type Transaction } from '@ton/core';\nimport type { AddressHistorySource, ProofSource } from '../../core/driver/types';\nimport {\n ProviderError,\n ValidationError,\n isCryptoAioError,\n} from '../../core/errors/error';\nimport type { OrderingData } from '../../core/model/ordering';\nimport {\n MASTERCHAIN_SHARD,\n MONITOR,\n PROOF,\n READ,\n boundRunResultOf,\n runResultOf,\n sameBlock,\n type AccountState,\n type BlockHeader,\n type BlockId,\n type BoundRunResult,\n type RawTransaction,\n type RunResult,\n type TransactionId,\n type V3Transaction,\n} from './api';\nimport { OP } from './messages';\nimport {\n CHAIN_MEMO,\n MEMO_TX_LENGTH,\n confirmLegs,\n decodeWithJettons,\n findOwnAttempt,\n keep,\n pageMemo,\n provenRequest,\n publicKeyAt,\n traceBlock,\n type TonContext,\n} from './reader';\nimport {\n CHAIN_TIME_TOLERANCE,\n MAX_VALID_FOR_SECONDS,\n recordedValidFrom,\n} from './network';\nimport { attemptVerdict, consumesSeqno, isOwnAttempt } from './trace';\nimport { externalHashOf, requestIsOwn } from './wallets';\n\n/** How far back the consumer of a seqno is searched: pages of `CONSUMER_PAGE` transactions. */\nexport const CONSUMER_PAGES = 8;\nconst CONSUMER_PAGE = 64;\n\n/** How far the chain is walked: pages of `WALK_PAGE` transactions. */\nexport const WALK_PAGES = 16;\nconst WALK_PAGE = 32;\n/** How far an anchored indexer history is read: pages of `HISTORY_PAGE` transactions. */\nconst HISTORY_PAGES = 8;\nconst HISTORY_PAGE = 64;\n\n/** toncenter v3 refuses a page of more rows (\"limit is not allowed: 1001 > 1000\", live). */\nconst HISTORY_PAGE_MAX = 1000;\n/** A logical time is a u64; a history cursor is one, in decimal. */\nconst MAX_LT = (1n << 64n) - 1n;\nconst MAX_LT_DIGITS = 20;\n/** A wallet seqno is a u32: any other number is no seqno. */\nconst MAX_WALLET_SEQNO = 0xffff_ffffn;\n/** The shard id space of a workchain: 2^64 ids, which its shards partition. */\nconst SHARD_SPACE = 1n << 64n;\n\nconst undecided = (reason: string) =>\n new ProviderError('PROVIDER_UNAVAILABLE', reason, { retryable: true });\n\nconst inconsistent = (reason: string) =>\n new ProviderError('PROVIDER_INCONSISTENT', reason, { retryable: true });\n\n/**\n * The masterchain block `seqno`, attested by the proof quorum (ids, hashes, time, global\n * id), and bound to the block asked: an answer about another block or network decides\n * nothing.\n */\nasync function masterchainBlock(ctx: TonContext, seqno: number): Promise<BlockHeader> {\n const header = await ctx.api.masterchainHeader(seqno, PROOF);\n const { id } = header;\n if (\n id.workchain !== -1 ||\n id.shard !== MASTERCHAIN_SHARD ||\n id.seqno !== seqno ||\n header.globalId !== ctx.config.globalId\n ) {\n throw inconsistent('the endpoints answered another block than the one asked');\n }\n return header;\n}\n\n/**\n * The one unanchored head: one endpoint's head, trailed by the network's skew and\n * attested by the quorum; when a healthy peer trails further, retried at the transport's\n * lag tolerance, the furthest a proof endpoint may trail. Never a false head, only a\n * later one.\n */\nexport async function attestedHead(ctx: TonContext): Promise<BlockHeader> {\n const head = await ctx.api.masterchainHead(MONITOR);\n const skew = ctx.config.finalitySkewBlocks;\n const lag = ctx.api.lagTolerance;\n let last: unknown;\n for (const trail of lag > skew ? [skew, lag] : [skew]) {\n try {\n return await masterchainBlock(ctx, Math.max(1, head - trail));\n } catch (error) {\n if (!isCryptoAioError(error) || !error.retryable) throw error;\n last = error;\n }\n }\n throw last;\n}\n\n/**\n * Whether the basechain shards among `tops` partition its whole id space: a shard id is its\n * prefix, then a 1 bit, then zeros, so it covers `id ± lowest set bit` (unsigned). A set that\n * leaves a shard out would hide that shard's time.\n */\nfunction coversBasechain(tops: readonly BlockId[]): boolean {\n const ranges: (readonly [bigint, bigint])[] = [];\n for (const top of tops) {\n if (top.workchain !== 0) continue;\n const id = BigInt.asUintN(64, BigInt(top.shard));\n const half = id & -id;\n if (half === 0n) return false;\n ranges.push([id - half, id + half]);\n }\n ranges.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));\n let next = 0n;\n for (const [start, end] of ranges) {\n if (start !== next) return false;\n next = end;\n }\n return next === SHARD_SPACE;\n}\n\n/**\n * The earliest chain time our message can have run at. The build recorded it\n * (`TonSeqnoOrdering.validFrom`); less the builder's chain-time tolerance, it covers an\n * endpoint whose time ran ahead of the chain within that tolerance, whatever the\n * network's `validForSeconds` is now (a window from today's setting could start after an\n * earlier run, and a reset wallet's history would then prove \"not included\" falsely).\n * Without a well-formed record (an attempt built before it, or bytes this driver did not\n * assemble), the widest lifetime any network allows before `validUntil`, less the\n * tolerance.\n * Known gap: an endpoint and the local clock both more than the tolerance ahead of the\n * chain start the window too late; the host's clock must stay in sync.\n */\nfunction windowStartOf(slot: { readonly validUntil: number }): number {\n const recorded = recordedValidFrom(slot);\n return (recorded ?? slot.validUntil - MAX_VALID_FOR_SECONDS) - CHAIN_TIME_TOLERANCE;\n}\n\n/** A lifetime is a positive chain time; the reservation's placeholder 0 is none. */\nconst hasLifetime = (validUntil: number): boolean =>\n Number.isSafeInteger(validUntil) && validUntil > 0;\n\n/**\n * No block after `header` can include a message valid until `validUntil`: the\n * masterchain block and every shard top it commits are at least that old, every later block\n * of a shard is younger than its top (the collator's `now` rises), and a wallet rejects a\n * message once `valid_until <= now()`. The shard tops are asked for the attested block's\n * seqno; toncenter's answer names no block (live), so only the proof quorum binds the list\n * to it, and it must cover the basechain. Each top's header is read under the quorum\n * and bound to the id the list gives. A lifetime that is no time decides nothing.\n */\nexport async function expiredAt(\n ctx: TonContext,\n header: BlockHeader,\n validUntil: number,\n): Promise<boolean> {\n if (!hasLifetime(validUntil)) throw undecided('a TON attempt needs its lifetime');\n if (validUntil > header.genUtime) return false;\n const tops = await ctx.api.shards(header.id.seqno, PROOF);\n if (!coversBasechain(tops)) {\n throw inconsistent('the shard tops do not cover the basechain');\n }\n for (const top of tops) {\n const shard = await ctx.api.blockHeader(top, PROOF);\n if (!sameBlock(shard.id, top) || shard.globalId !== ctx.config.globalId) {\n throw inconsistent('the endpoints answered another shard block than the one asked');\n }\n if (validUntil > shard.genUtime) return false;\n }\n return true;\n}\n\n/** The seqno a `seqno` get-method answers; undefined when it answers none. */\nfunction seqnoIn(result: RunResult): bigint | undefined {\n const first = result.stack[0];\n return result.exitCode === 0 &&\n first?.type === 'num' &&\n first.value >= 0n &&\n first.value <= MAX_WALLET_SEQNO\n ? first.value\n : undefined;\n}\n\n/**\n * The account state at the attested block `head`, bound to it: the block the\n * answer names is `head`, its workchain, shard, seqno and hashes.\n */\nasync function stateAt(\n ctx: TonContext,\n wallet: string,\n head: BlockHeader,\n): Promise<AccountState> {\n const state = await ctx.api.account(wallet, PROOF, head.id.seqno);\n if (!sameBlock(state.block, head.id)) {\n throw inconsistent('the endpoints answered the state at another block');\n }\n return state;\n}\n\n/**\n * The wallet's seqno in the attested `state`: the get-method's answer must name the\n * attested block and the state's last transaction, so it is the state whose status was\n * read, never an endpoint's latest one. The quorum key is the seqno and that binding, as\n * parsed values, so formatting never splits the quorum; it never throws.\n */\nasync function seqnoAt(\n ctx: TonContext,\n wallet: string,\n head: BlockHeader,\n state: AccountState,\n): Promise<bigint | undefined> {\n const bound = (result: BoundRunResult): boolean =>\n sameBlock(result.block, head.id) &&\n result.lastTransaction.lt === state.lastLt &&\n result.lastTransaction.hash === state.lastHash;\n const key = (body: unknown): unknown => {\n try {\n const result = boundRunResultOf(body);\n return { seqno: seqnoIn(result)?.toString() ?? null, bound: bound(result) };\n } catch {\n return 'malformed';\n }\n };\n const result = await ctx.api.runGetMethodAt(\n wallet,\n 'seqno',\n [],\n { ...PROOF, quorumKey: key },\n head.id.seqno,\n );\n if (!bound(result)) {\n throw inconsistent('the seqno was read at another state than the attested one');\n }\n return seqnoIn(result);\n}\n\n/** An Attempt id (a 32-byte hash in hex, either case) in lower case; undefined otherwise. */\nconst attemptId = (id: string): string | undefined =>\n /^[0-9a-fA-F]{64}$/.test(id) ? id.toLowerCase() : undefined;\n\n/**\n * A positive-path hint only: the wallet transaction the indexer lists as the consumer of\n * `seqno`, searched newest-first below the wallet's last transaction at the attested\n * block `head`, on the indexer's pages as served. Only a proven request counts\n * (`provenRequest`), and one whose request had expired by its transaction's time\n * contradicts the chain. The caller takes it only when it is our own; it is never the\n * basis of \"not included\". `undefined` when none is indexed.\n */\nasync function consumerOf(\n ctx: TonContext,\n from: string,\n seqno: bigint,\n head: BlockHeader,\n state: AccountState,\n): Promise<V3Transaction | undefined> {\n const keyAtHead = publicKeyAt(ctx, from, PROOF, head.id, state);\n const key = () => keyAtHead();\n let endLt = state.lastLt;\n for (let page = 0; page < CONSUMER_PAGES; page++) {\n const { transactions, next } = await ctx.api.accountTransactionsPage(\n from,\n { limit: CONSUMER_PAGE, endLt },\n PROOF,\n );\n for (const tx of transactions) {\n const request = await provenRequest(ctx, tx, from, key);\n if (!request) continue;\n const claimed = BigInt(request.seqno);\n if (claimed > seqno) continue;\n if (claimed < seqno) return undefined;\n if (request.validUntil <= tx.now) {\n throw inconsistent('the seqno consumer ran after its request expired');\n }\n return tx;\n }\n if (next === undefined) return undefined;\n endLt = next;\n }\n ctx.log.warn('the seqno consumer is beyond the search window', {\n code: 'SEQNO_CONSUMER_NOT_FOUND',\n });\n return undefined;\n}\n\n// ---- the account's own chain --------------------------------------------------------------\n\nconst hex256 = (value: bigint): string => value.toString(16).padStart(64, '0');\n\n/**\n * A transaction the liteserver served, authenticated: its cell (capped by the API before\n * this decodes it) hashes to the id expected, and it is the account's own at the lt\n * expected. Anything else is not the chain's.\n */\nconst notTheChains = () =>\n inconsistent(\"the liteserver answered a transaction that is not the chain's\");\n\nfunction authenticated(\n row: RawTransaction,\n expected: TransactionId,\n account: bigint,\n): Transaction {\n if (row.lt !== expected.lt || row.hash !== expected.hash) throw notTheChains();\n let cell: Cell;\n let tx: Transaction;\n try {\n const cells = Cell.fromBoc(Buffer.from(row.boc, 'base64'));\n if (cells.length !== 1) throw notTheChains();\n cell = cells[0] as Cell;\n tx = loadTransaction(cell.beginParse());\n } catch {\n throw notTheChains();\n }\n if (\n cell.hash().toString('hex') !== expected.hash ||\n tx.lt !== expected.lt ||\n tx.address !== account\n ) {\n throw notTheChains();\n }\n return tx;\n}\n\n/** The most transactions one walk visits, fetched or kept: `WALK_PAGES` full pages. */\nconst WALK_LIMIT = WALK_PAGES * WALK_PAGE;\n\n/**\n * The account's chain from `from` back, one authenticated transaction at a time, each naming\n * the next by its `prev_trans_lt`/`prev_trans_hash`; `visit` returns true to stop. Ends at\n * the chain's start (`prev_trans_lt` 0: the account's first transaction, or its first since\n * a deletion, transaction.cpp `init_new`), or after `WALK_LIMIT` transactions or\n * `WALK_PAGES` pages. The replay guard walks before every resend, so a transaction\n * authenticated once is kept by its id (`chainTxs`), and a walk fetches only the part of\n * the chain it has not seen; a kept one is bound to the account as a fetched one is.\n */\nasync function walkChain(\n ctx: TonContext,\n wallet: string,\n from: TransactionId,\n visit: (tx: Transaction, hash: string) => Promise<boolean>,\n): Promise<'stopped' | 'start' | 'exhausted'> {\n const account = BigInt(`0x${wallet.slice(wallet.indexOf(':') + 1)}`);\n let expected = from;\n let page: RawTransaction[] = [];\n let fetched = 0;\n for (let visited = 0; visited < WALK_LIMIT; visited++) {\n const key = `${expected.lt}:${expected.hash}`;\n const row = page.shift();\n let tx = ctx.chainTxs.get(key);\n if (tx !== undefined) {\n if (tx.address !== account) throw notTheChains();\n // The page fetched earlier no longer follows the walk: drop it.\n if (row !== undefined && (row.lt !== expected.lt || row.hash !== expected.hash)) {\n page = [];\n }\n } else {\n let next = row;\n if (next === undefined) {\n if (fetched === WALK_PAGES) return 'exhausted';\n fetched += 1;\n page = await ctx.api.rawTransactions(wallet, expected, WALK_PAGE, PROOF);\n next = page.shift();\n if (next === undefined) {\n throw undecided('the liteserver does not hold the transaction asked');\n }\n }\n tx = authenticated(next, expected, account);\n // Only a wallet-sized transaction is kept (a lying endpoint's is not): the memo\n // stays bounded.\n if (next.boc.length <= MEMO_TX_LENGTH) keep(ctx.chainTxs, key, tx, CHAIN_MEMO);\n }\n if (await visit(tx, expected.hash)) return 'stopped';\n if (tx.prevTransactionLt === 0n) return 'start';\n expected = { lt: tx.prevTransactionLt, hash: hex256(tx.prevTransactionHash) };\n }\n return 'exhausted';\n}\n\nconst CODE: ReadonlySet<string> = new Set(['active', 'frozen']);\nconst NO_CODE: ReadonlySet<string> = new Set(['uninitialized', 'non-existing']);\n\n/** What a transaction did, as the chain records it. */\nfunction phasesOf(tx: Transaction) {\n const d = tx.description;\n const compute = 'computePhase' in d ? d.computePhase : undefined;\n const vm = compute?.type === 'vm' ? compute : undefined;\n return {\n /** The wallet's code ran: the chain runs it only when code exists or a StateInit\n * activates the account (transaction.cpp). */\n ran: vm !== undefined,\n /** A request ran to the end, so a seqno moved (the action phase keeps it). */\n consumed:\n d.type === 'generic' && vm?.success === true && d.actionPhase?.success === true,\n /** The account had code before or after. */\n lived: CODE.has(tx.oldStatus) || CODE.has(tx.endStatus),\n /** A re-deploy from no code: the seqno starts again (transaction.cpp activation). */\n activation: NO_CODE.has(tx.oldStatus) && tx.endStatus === 'active',\n /** The code went (+32 destroy, storage deletion): the seqno goes with it. */\n destruction:\n (CODE.has(tx.oldStatus) && NO_CODE.has(tx.endStatus)) ||\n ('destroyed' in d && d.destroyed),\n };\n}\n\n/**\n * The seqno a request the wallet ran claims, read from its signed header alone (so a\n * v4r2 plugin request or a W5 extended-action request counts too): an external request, or\n * a W5 `internal_signed` one, signed by the wallet's key for this very wallet\n * (`requestIsOwn`: a v5r1 wallet runs a forged relayed body and ignores it).\n */\nasync function claimedSeqno(\n ctx: TonContext,\n wallet: string,\n message: Message | null | undefined,\n key: () => Promise<Uint8Array | undefined>,\n): Promise<bigint | undefined> {\n if (!message) return undefined;\n const { body } = message;\n const op = body.bits.length >= 32 ? body.beginParse().preloadUint(32) : undefined;\n const w5 = op === OP.w5SignedExternal || op === OP.w5SignedInternal;\n if (\n message.info.type === 'internal'\n ? op !== OP.w5SignedInternal\n : message.info.type !== 'external-in'\n ) {\n return undefined;\n }\n let seqno: number;\n try {\n const s = body.beginParse();\n // W5: op, wallet id, valid_until, seqno; v4r2: signature, subwallet id, valid_until, seqno.\n s.skip(w5 ? 32 + 32 + 32 : 512 + 32 + 32);\n seqno = s.loadUint(32);\n } catch {\n return undefined;\n }\n const publicKey = await key();\n return publicKey && requestIsOwn(wallet, body, publicKey, ctx.config.globalId)\n ? BigInt(seqno)\n : undefined;\n}\n\ntype Absence = { readonly ours: string } | { readonly absent: true };\n\ninterface ChainQuestion {\n readonly wallet: string;\n readonly id: string;\n readonly slot: { readonly seqno: bigint; readonly validUntil: number };\n readonly head: BlockHeader;\n readonly state: AccountState;\n readonly active: boolean;\n /** The seqno at `head` (0 for an uninitialized wallet). */\n readonly seqno: bigint;\n}\n\nconst resetSuspected = (ctx: TonContext) => {\n ctx.log.warn('the wallet may have been reset since our message', {\n code: 'WALLET_RESET_SUSPECTED',\n });\n return undecided('the wallet may have been reset since our message');\n};\n\nconst walkExhausted = (ctx: TonContext) => {\n ctx.log.warn('the wallet history is beyond the proof window', {\n code: 'TX_CHAIN_WALK_EXHAUSTED',\n });\n return undecided('the wallet history is beyond the proof window');\n};\n\n/**\n * The wallet's code never ran in the history the indexer holds\n * below lt `below` (an earlier incarnation, before a chain start), or in all of it when\n * `below` is undefined (no chain now: never created, or deleted with its last transaction),\n * read under the proof quorum once the indexer has indexed masterchain block `reached`: no\n * compute phase that ran, and no status with code. Our message runs only in the wallet's\n * code, so an incarnation whose code never ran cannot hold it, whether the wallet is active\n * or uninitialized now (a deposit that bounced before the wallet existed is no reset).\n * A row where the code ran, a row without its statuses, or a history past the window\n * decides nothing.\n */\nasync function codeNeverRan(\n ctx: TonContext,\n wallet: string,\n reached: number,\n below?: bigint,\n): Promise<void> {\n if (!(await ctx.api.indexerReached(reached, PROOF))) {\n throw undecided('the indexer has not reached the attested block yet');\n }\n let endLt = below === undefined ? undefined : below - 1n;\n for (let page = 0; page < HISTORY_PAGES; page++) {\n const { transactions, next } = await ctx.api.accountTransactionsPage(\n wallet,\n { limit: HISTORY_PAGE, ...(endLt !== undefined ? { endLt } : {}) },\n PROOF,\n );\n for (const tx of transactions) {\n const { origStatus, endStatus } = tx;\n if (\n !tx.compute.skipped ||\n origStatus === undefined ||\n endStatus === undefined ||\n origStatus === 'active' ||\n origStatus === 'frozen' ||\n endStatus === 'active' ||\n endStatus === 'frozen'\n ) {\n throw resetSuspected(ctx);\n }\n }\n if (next === undefined) return;\n endLt = next;\n }\n throw walkExhausted(ctx);\n}\n\n/**\n * At an attested block where the message is expired, whether our message\n * consumed its seqno, from the account's own chain alone, walked back from the attested\n * state's last transaction:\n * - our message (its TEP-467 hash computed here) run to the end: ours, proven by the caller;\n * - otherwise \"absent\" only when the chain shows no reset: the walk reaches the earliest\n * time our message could have run (`windowStart`, from the attempt's own record) with,\n * when our seqno is consumed at `head`, its consumer found (another request, by its\n * signed header); or it reaches the chain's start inside that window, and the anchored\n * indexer history shows that the code never ran before it.\n * An activation, a destruction, or a consumer of a lower seqno first is a reset: from then\n * on the wallet must never have run, as far as the chain goes back into the window; a walk\n * past its cap decides nothing. An uninitialized wallet must never have run in the\n * window (our message cannot have run before it), nor, without a chain, at all.\n */\nasync function fromTheChain(ctx: TonContext, q: ChainQuestion): Promise<Absence> {\n const needConsumer = q.active && q.seqno > q.slot.seqno;\n if (q.state.lastLt === 0n) {\n // No chain at `head`: never created, or deleted with its last transaction.\n if (q.active) throw inconsistent('an active account without a transaction');\n await codeNeverRan(ctx, q.wallet, q.head.id.seqno);\n return { absent: true };\n }\n const windowStart = windowStartOf(q.slot);\n const key = publicKeyAt(ctx, q.wallet, PROOF, q.head.id, q.state);\n let codeless = !q.active;\n let consumerFound = false;\n let reset = false;\n let ours: string | undefined;\n let first = q.state.lastLt;\n const end = await walkChain(\n ctx,\n q.wallet,\n { lt: q.state.lastLt, hash: q.state.lastHash },\n async (tx, hash) => {\n first = tx.lt;\n const t = phasesOf(tx);\n const inbound = tx.inMessage;\n if (ourRun(tx, t, q.wallet, q.id)) {\n ours = hash;\n return true;\n }\n if (tx.now < windowStart && (!needConsumer || consumerFound)) return true;\n if (codeless) {\n if (t.ran || t.lived || t.destruction) reset = true;\n return false;\n }\n if (t.destruction) reset = true;\n if (needConsumer && !consumerFound && t.consumed) {\n const claimed = await claimedSeqno(ctx, q.wallet, inbound, key);\n if (claimed === q.slot.seqno) consumerFound = true;\n else if (claimed !== undefined && claimed < q.slot.seqno) reset = true;\n }\n if (t.activation) {\n if (needConsumer && !consumerFound) reset = true;\n codeless = true;\n }\n return false;\n },\n );\n if (ours !== undefined) return { ours };\n if (end === 'exhausted') throw walkExhausted(ctx);\n if (reset || (needConsumer && !consumerFound)) throw resetSuspected(ctx);\n if (end === 'start') await codeNeverRan(ctx, q.wallet, q.head.id.seqno, first);\n return { absent: true };\n}\n\n/**\n * Whether `tx` is our message run to the end: its inbound external message's TEP-467 hash,\n * computed here from the authenticated body, is `id`, and it consumed its seqno.\n */\nfunction ourRun(\n tx: Transaction,\n t: ReturnType<typeof phasesOf>,\n wallet: string,\n id: string,\n): boolean {\n const inbound = tx.inMessage;\n return (\n t.consumed &&\n inbound?.info.type === 'external-in' &&\n externalHashOf(wallet, inbound.body) === id\n );\n}\n\n// ---- the replay guard ---------------------------------------------------------------------\n\n/**\n * Stored bytes about to be sent again: the wallet they go to (raw), their TEP-467 hash, and\n * the seqno and lifetime their signed header carries. `validFrom` is the build's recorded\n * chain time when this driver assembled them; otherwise the widest lifetime applies.\n */\nexport interface StoredMessage {\n readonly wallet: string;\n readonly id: string;\n readonly seqno: bigint;\n readonly validUntil: number;\n readonly validFrom?: number;\n}\n\n/**\n * The monotone predicate \"my seqno is above `seqno`\" at the endpoints' own states, under the\n * proof quorum; its key is the verdict itself and never throws.\n */\nasync function seqnoAbove(\n ctx: TonContext,\n wallet: string,\n seqno: bigint,\n): Promise<boolean> {\n const above = (result: RunResult): boolean => {\n const value = seqnoIn(result);\n return value !== undefined && value > seqno;\n };\n const key = (body: unknown): unknown => {\n try {\n return above(runResultOf(body));\n } catch {\n return 'malformed';\n }\n };\n return above(\n await ctx.api.runGetMethod(wallet, 'seqno', [], { ...PROOF, quorumKey: key }),\n );\n}\n\n/**\n * Whether stored bytes may go out again. A wallet reset (a deletion, then a deposit,\n * or a re-deploy from the public `StateInit` back to our seqno) makes a message that already\n * ran and paid runnable again while it is valid, so every send of stored bytes asks first:\n * - `send`: the wallet's seqno is already above ours under the proof quorum, so the message\n * cannot run (no walk); or the chain shows it cannot have run: the walk reaches the\n * earliest time it could have run (`windowStartOf`, from the recorded build time, else\n * the widest lifetime) with no reset, or a chain start whose earlier history shows the\n * code never ran (a wallet funded a minute ago is sent to);\n * - `ours`: the chain holds our message run to the end: it must never be sent again.\n * The walk starts from the freshest state an endpoint serves (the attested head trails it\n * by 10 to 150 blocks, and a reset in that trail is exactly the danger), and must lead\n * down to the attested state's last transaction, so a lying fresh endpoint can hide only\n * what the attested walk could not see either. Anything else, including a deletion or a\n * new chain since the attested head, an activation or a destruction in the window, a walk\n * past its cap, an indexer behind the fresh block or a failed read, throws a retryable\n * error: the guard never sends while it cannot decide, and the proof decides.\n * Known gap: once a wallet is reset (which takes software that shares its key), anyone\n * can replay our message from the chain's public record; no client can stop that, and the\n * guard covers only this library's own sends.\n */\nexport async function replayVerdict(\n ctx: TonContext,\n message: StoredMessage,\n): Promise<'send' | 'ours'> {\n const { wallet, id } = message;\n // A seqno past ours needs no walk. A failed read is only \"not known\".\n const past = await seqnoAbove(ctx, wallet, message.seqno).catch(() => false);\n if (past) return 'send';\n const windowStart = windowStartOf(message);\n const head = await attestedHead(ctx);\n const attested = await stateAt(ctx, wallet, head);\n const fresh = await ctx.api.account(wallet, MONITOR);\n // An endpoint behind the attested head adds nothing; one past it must agree with it.\n const top = fresh.blockSeqno > head.id.seqno ? fresh : attested;\n if (top === fresh) {\n if (\n fresh.lastLt === attested.lastLt\n ? fresh.lastHash !== attested.lastHash\n : fresh.lastLt < attested.lastLt && fresh.lastLt !== 0n\n ) {\n throw inconsistent('the freshest state does not follow the attested one');\n }\n }\n if (top.status === 'frozen')\n throw undecided('the wallet state does not show its seqno');\n // The account was deleted since the attested head: our message may have run just before.\n if (top.lastLt === 0n && attested.lastLt !== 0n) throw resetSuspected(ctx);\n if (top.lastLt === 0n) {\n // No chain now, nor at the attested head: never created, or deleted long ago.\n await codeNeverRan(ctx, wallet, top.blockSeqno);\n return 'send';\n }\n // The fresh part of the chain must lead to the attested state's last transaction.\n const link = top !== attested && attested.lastLt !== 0n ? attested : undefined;\n let linked = link === undefined || link.lastLt === top.lastLt;\n let codeless = top.status !== 'active';\n let reset = false;\n let ours = false;\n let first = top.lastLt;\n const end = await walkChain(\n ctx,\n wallet,\n { lt: top.lastLt, hash: top.lastHash },\n async (tx, hash) => {\n first = tx.lt;\n if (!linked && link !== undefined) {\n if (tx.lt < link.lastLt || (tx.lt === link.lastLt && hash !== link.lastHash)) {\n throw inconsistent('the freshest state does not follow the attested one');\n }\n linked = tx.lt === link.lastLt;\n }\n const t = phasesOf(tx);\n if (ourRun(tx, t, wallet, id)) {\n ours = true;\n return true;\n }\n if (linked && tx.now < windowStart) return true;\n if (codeless) {\n if (t.ran || t.lived || t.destruction) reset = true;\n return false;\n }\n if (t.destruction) reset = true;\n if (t.activation) codeless = true;\n return false;\n },\n );\n if (ours) return 'ours';\n if (end === 'exhausted') throw walkExhausted(ctx);\n // Not linked at the chain's start: a new chain since the attested head, so a deletion.\n if (reset || !linked) throw resetSuspected(ctx);\n if (end === 'start') await codeNeverRan(ctx, wallet, top.blockSeqno, first);\n return 'send';\n}\n\ntype Included = Extract<\n Awaited<ReturnType<ProofSource['includedFinal']>>,\n { included: true }\n>;\n\n/**\n * Our indexed transaction that consumed its seqno, proven: a complete trace, whose last\n * block the endpoints attest they hold, and the verdict, its jetton wallets confirmed at\n * that block under the proof quorum.\n */\nasync function proveIncluded(\n ctx: TonContext,\n tx: V3Transaction,\n from: string,\n): Promise<Included> {\n const trace = await ctx.api.trace(tx.hash, PROOF);\n if (!trace || !trace.complete) throw undecided('the message trace is not complete yet');\n const last = traceBlock(tx, trace);\n if (!(await ctx.api.reachedMasterchain(last, PROOF))) {\n throw undecided('the endpoints have not reached the trace yet');\n }\n const verdict = await confirmLegs(ctx, attemptVerdict(tx, trace), from, PROOF, last);\n if (verdict.kind === 'pending')\n throw undecided('the message trace is not complete yet');\n const header = await masterchainBlock(ctx, tx.mcSeqno);\n return {\n included: true,\n success: verdict.kind === 'success',\n blockHeight: BigInt(tx.mcSeqno),\n blockHash: header.id.rootHash,\n txHash: tx.hash,\n ...(verdict.kind === 'failed' ? { reason: verdict.reason } : {}),\n };\n}\n\n/**\n * Our transaction the chain itself holds (`hash`), proven through the indexer's record of\n * that very transaction, which must be our message and have consumed its seqno.\n */\nasync function proveOurs(\n ctx: TonContext,\n hash: string,\n wallet: string,\n id: string,\n): Promise<Included> {\n const record = await ctx.api.transaction(hash, PROOF);\n if (!record) throw undecided('our transaction is not indexed yet');\n if (!isOwnAttempt(record, wallet, id) || !consumesSeqno(record)) {\n throw inconsistent(\"the indexer's record is not the chain's transaction\");\n }\n return proveIncluded(ctx, record, wallet);\n}\n\nconst seqnoOrdering = (ordering: OrderingData) =>\n ordering.kind === 'seqno' ? ordering : undefined;\n\nexport function createTonProofs(ctx: TonContext): ProofSource {\n const { api } = ctx;\n const walletOf = (from: string) => ctx.codec.normalize(from).canonical;\n return {\n async finalizedHead() {\n const header = await attestedHead(ctx);\n return {\n height: BigInt(header.id.seqno),\n hash: header.id.rootHash,\n timestamp: header.genUtime,\n };\n },\n\n async includedFinal(ref, ordering, from) {\n const wallet = walletOf(from);\n // Only our own wallet transaction, its hash computed here from the bound body. A\n // run that did not consume its seqno (a failed action phase) moved nothing and may\n // run again until the message expires: only the seqno decides it.\n const own = await findOwnAttempt(ctx, ref, wallet, PROOF);\n if (own && consumesSeqno(own)) return proveIncluded(ctx, own, wallet);\n const id = attemptId(ref.id);\n if (id === undefined) throw undecided('a TON attempt needs its message hash');\n const slot = seqnoOrdering(ordering);\n if (!slot) throw undecided('a TON attempt needs its seqno ordering');\n if (!hasLifetime(slot.validUntil))\n throw undecided('a TON attempt needs its lifetime');\n // Not proven under our hash: decide only from state at an attested block.\n const head = await attestedHead(ctx);\n const state = await stateAt(ctx, wallet, head);\n const active = state.status === 'active';\n // A frozen wallet, or an uninitialized one past seqno 0, shows no seqno (never 0).\n if (!active && (state.status === 'frozen' || slot.seqno !== 0n)) {\n throw undecided('the wallet state does not show its seqno');\n }\n const seqno = active ? await seqnoAt(ctx, wallet, head, state) : 0n;\n if (seqno === undefined)\n throw undecided('the wallet state does not show its seqno');\n if (seqno > slot.seqno) {\n // The indexer's consumer search: a hint that finds ours, never a \"no\", nor a veto\n // either; a hint that cannot be used (a record the chain could not produce, a\n // failed read) is logged, and the authenticated path decides.\n let hint: V3Transaction | undefined;\n try {\n hint = await consumerOf(ctx, wallet, slot.seqno, head, state);\n } catch (error) {\n if (!isCryptoAioError(error) || !error.retryable) throw error;\n ctx.log.warn('the indexer gave no usable seqno consumer', {\n code: 'SEQNO_CONSUMER_HINT_UNUSABLE',\n });\n }\n if (hint && isOwnAttempt(hint, wallet, id))\n return proveIncluded(ctx, hint, wallet);\n }\n // Never \"not included\" while the message may still run: a reset of the wallet could\n // bring its seqno back to ours.\n if (!(await expiredAt(ctx, head, slot.validUntil))) {\n throw undecided('the message may still be included');\n }\n const chain = await fromTheChain(ctx, {\n wallet,\n id,\n slot,\n head,\n state,\n active,\n seqno,\n });\n if ('ours' in chain) return proveOurs(ctx, chain.ours, wallet, id);\n return { included: false };\n },\n\n async slotConsumed(ordering, from, level) {\n const slot = seqnoOrdering(ordering);\n if (!slot) return false;\n // Masterchain state is final once it exists, so TON gives no separate `latest`\n // evidence: our own landed-but-unindexed message is never observed as `replaced`.\n if (level === 'latest') return false;\n // \"My seqno at the final state is above n\", a monotone predicate.\n return seqnoAbove(ctx, walletOf(from), slot.seqno);\n },\n\n async expired(ordering) {\n const slot = seqnoOrdering(ordering);\n if (!slot) return false;\n return expiredAt(ctx, await attestedHead(ctx), slot.validUntil);\n },\n\n async blockHash(height) {\n // Every masterchain block is final once it exists: both levels read the same.\n if (height < 0n || height > BigInt(await api.masterchainHead(MONITOR))) return null;\n return (await masterchainBlock(ctx, Number(height))).id.rootHash;\n },\n };\n}\n\n/** A history cursor: the next page's `end_lt`, a u64 in decimal, capped before use. */\nfunction cursorLt(cursor: string | undefined): bigint | undefined {\n if (cursor === undefined) return undefined;\n if (\n cursor.length === 0 ||\n cursor.length > MAX_LT_DIGITS ||\n !/^\\d+$/.test(cursor) ||\n BigInt(cursor) > MAX_LT\n ) {\n throw new ValidationError('INVALID_INTENT', 'not a TON history cursor');\n }\n return BigInt(cursor);\n}\n\n/**\n * An address's transactions from the indexer, newest first, decoded with jettons only for\n * verified jetton wallets. The cursor is the next page's `end_lt`, taken from the page as\n * the indexer served it, so rows not final yet never end the history early; a page\n * is at most what toncenter serves.\n */\nexport function createTonHistory(ctx: TonContext): AddressHistorySource {\n return {\n async list(address, options) {\n const endLt = cursorLt(options.cursor);\n const account = ctx.codec.normalize(address).canonical;\n const page = await ctx.api.accountTransactionsPage(\n account,\n {\n limit: Math.min(options.limit, HISTORY_PAGE_MAX),\n ...(endLt !== undefined ? { endLt } : {}),\n },\n READ,\n );\n const items = [];\n const memo = pageMemo();\n for (const tx of page.transactions) {\n items.push(await decodeWithJettons(ctx, tx, READ, memo));\n }\n return {\n items,\n ...(page.next !== undefined ? { next: page.next.toString() } : {}),\n };\n },\n };\n}\n"]}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * TON addresses, reads, seqnos, jetton lookups and the `ext.ton` API. Every call carries the
3
+ * tags of the `ChainDriver` contract table (`src/core/driver/types.ts`): `read` for point
4
+ * queries, `monitor` for heights, observations and seqnos. Jetton metadata, which the
5
+ * core caches for the container's life, is a `read` under the proof quorum.
6
+ */
7
+ import { type Transaction } from '@ton/core';
8
+ import type { AddressCodec, ChainReader, DriverBlock, SequenceSource } from '../../core/driver/types';
9
+ import type { Logger } from '../../core/events/logger';
10
+ import type { AssetRef } from '../../core/model/asset';
11
+ import type { ChainInfo, NetworkInfo } from '../../core/model/chain';
12
+ import type { AttemptRef } from '../../core/model/transaction';
13
+ import type { Clock } from '../../core/util/clock';
14
+ import { type AccountState, type BlockHeader, type BlockId, type TonApi, type V3Trace, type V3Transaction } from './api';
15
+ import { type VerifiedJettonWallet } from './decode';
16
+ import { type WalletRequest } from './messages';
17
+ import type { TonNetworkConfig } from './network';
18
+ import { type Verdict } from './trace';
19
+ import type { TonCallTags, TonExt } from './types';
20
+ /**
21
+ * What every TON port is built from. Drivers are shared: the caches hold only immutable
22
+ * chain data, values the proof quorum attested or transactions bound to their own hash
23
+ * (`chainTxs`); a single `read` or `monitor` answer is used once and never cached. The one
24
+ * record of anything else is `assembled`, for the replay guard: what this driver itself
25
+ * built and sent.
26
+ */
27
+ export interface TonContext {
28
+ readonly api: TonApi;
29
+ readonly chain: ChainInfo;
30
+ readonly network: NetworkInfo;
31
+ readonly config: TonNetworkConfig;
32
+ readonly log: Logger;
33
+ readonly clock: Clock;
34
+ readonly codec: AddressCodec;
35
+ /** `master|owner` → the jetton wallet the master names, as the quorum attested it. */
36
+ readonly jettonWallets: Map<string, string>;
37
+ /** jetton wallet → its owner and master, verified under the quorum. */
38
+ readonly verified: Map<string, VerifiedJettonWallet>;
39
+ /**
40
+ * Wallet transactions the chain walk authenticated, by `lt:hash`. A
41
+ * transaction is immutable and its cell hashes to its id, so a kept one is as good as one
42
+ * fetched again; each walk fetches only what it has not seen (bounded, `CHAIN_MEMO`).
43
+ */
44
+ readonly chainTxs: Map<string, Transaction>;
45
+ /**
46
+ * The external messages this driver assembled, by TEP-467 hash: the build's recorded
47
+ * chain time and whether they were ever handed to a send (bounded, `ASSEMBLED_MEMO`).
48
+ * Known gap: the `Broadcaster` port carries only the bytes, never the Attempt's
49
+ * ordering, so the replay guard keeps this memo; bytes this driver did not assemble, or
50
+ * has evicted, are guarded with the widest window (one day).
51
+ */
52
+ readonly assembled: Map<string, AssembledMessage>;
53
+ }
54
+ /** What `assemble` recorded about a message it made. */
55
+ export interface AssembledMessage {
56
+ /** `TonSeqnoOrdering.validFrom`, as the ordering bound to the signed bytes holds it. */
57
+ readonly validFrom: number;
58
+ /**
59
+ * The driver's clock when `assemble` ran, in ms: a first send skips the replay guard only
60
+ * within `FIRST_SEND_MS` of it.
61
+ */
62
+ readonly assembledAt: number;
63
+ /** Set before the first send; never cleared. */
64
+ sent: boolean;
65
+ }
66
+ /** The most authenticated transactions a driver keeps (each at most `MEMO_TX_LENGTH`). */
67
+ export declare const CHAIN_MEMO = 4096;
68
+ /** The longest transaction BOC text kept: a wallet transaction takes about 1-2 KB. */
69
+ export declare const MEMO_TX_LENGTH = 16384;
70
+ /** The most assembled messages a driver remembers; an evicted one is guarded as foreign. */
71
+ export declare const ASSEMBLED_MEMO = 4096;
72
+ /** Keeps `value` in a bounded memo, dropping the oldest entry beyond `size`. */
73
+ export declare function keep<K, V>(memo: Map<K, V>, key: K, value: V, size: number): void;
74
+ export declare function createTonContext(args: {
75
+ readonly api: TonApi;
76
+ readonly chain: ChainInfo;
77
+ readonly network: NetworkInfo;
78
+ readonly config: TonNetworkConfig;
79
+ readonly log: Logger;
80
+ readonly clock: Clock;
81
+ }): TonContext;
82
+ /**
83
+ * The jetton wallet `master` assigns to `owner` (`get_wallet_address`), at masterchain
84
+ * block `block` when given. Cached only when the proof quorum attested it: the builder
85
+ * sends jettons to it and the verdict checks it, so one endpoint's answer must never stick.
86
+ * Under a quorum the endpoints agree on the address itself (`walletAddressKey`).
87
+ */
88
+ export declare function jettonWalletAddress(ctx: TonContext, master: string, owner: string, tags: TonCallTags, block?: number): Promise<string>;
89
+ /**
90
+ * `owner`'s jetton balance; 0 while its jetton wallet is not deployed. The state and the
91
+ * balance are read at one block, so a load-balanced endpoint never mixes two views.
92
+ */
93
+ export declare function jettonBalance(ctx: TonContext, master: string, owner: string, tags: TonCallTags): Promise<bigint>;
94
+ /**
95
+ * What the get-methods at masterchain block `block` say about a jetton wallet:
96
+ * - `verified`: it names an owner and a master, and that master names it for that owner;
97
+ * - `foreign`: it names an owner and a master that parse, and that master names another
98
+ * wallet for that owner: positive evidence that it is not the master's;
99
+ * - `unknown`: no evidence either way. `get_wallet_data` exited with `exitCode` (toncenter
100
+ * answers -13 for an account it holds no state for at that block), or named no owner
101
+ * or master that parses, or the master named no wallet.
102
+ * Both get-methods run at `block`, one at which the wallet had already run a transaction
103
+ * (a fact at its own height): an endpoint that lags behind it refuses
104
+ * (retryable), where a read at its own head would take a wallet it has not seen yet for a
105
+ * fake. Cached once verified under the quorum.
106
+ */
107
+ export type JettonWalletFacts = {
108
+ readonly kind: 'verified';
109
+ readonly wallet: VerifiedJettonWallet;
110
+ } | {
111
+ readonly kind: 'foreign';
112
+ } | {
113
+ readonly kind: 'unknown';
114
+ readonly exitCode?: number;
115
+ };
116
+ /** toncenter's exit code for an account it holds no state for at the block asked. */
117
+ export declare const NO_STATE_EXIT = -13;
118
+ export declare function jettonWalletFacts(ctx: TonContext, address: string, tags: TonCallTags, block: number): Promise<JettonWalletFacts>;
119
+ /**
120
+ * The lenient reading for history: a wallet the master names, else `undefined` (any
121
+ * other contract; the transaction is then `partial`), so a fake contract never stalls a
122
+ * page. One exception: "no state at this block" (exit -13) for the jetton
123
+ * wallet whose own transaction this is (`ranHere`) contradicts the chain, which shows it
124
+ * running there, so it is unavailable data (retryable), never a silent drop of a deposit.
125
+ */
126
+ export declare function verifyJettonWallet(ctx: TonContext, address: string, tags: TonCallTags, block: number, ranHere?: boolean, memo?: PageMemo): Promise<VerifiedJettonWallet | undefined>;
127
+ /** The canonical master address of a jetton asset ref; `ASSET_RESOLUTION` otherwise. */
128
+ export declare function jettonMaster(ctx: TonContext, asset: AssetRef): string;
129
+ export declare function toDriverBlock(header: BlockHeader): DriverBlock;
130
+ /**
131
+ * Our own Attempt's wallet transaction, bound by account and a locally computed hash
132
+ * (`isOwnAttempt`, never a first-result fallback). A run that did not consume its
133
+ * seqno (a failed action phase, or a compute phase that failed before `commit()`) leaves the
134
+ * same message valid, so it may run again; the run that consumed the seqno is preferred,
135
+ * since only it decides.
136
+ */
137
+ export declare function findOwnAttempt(ctx: TonContext, ref: AttemptRef, from: string, tags: TonCallTags): Promise<V3Transaction | undefined>;
138
+ /**
139
+ * Each jetton leg's wallets must be the master's own for the sender and the intended
140
+ * recipient (the same master), as masterchain block `block` (the trace's last) records
141
+ * them: a fake jetton wallet can "accept" a transfer that moves nothing. The verdict
142
+ * unchanged when they are.
143
+ *
144
+ * Only positive evidence decides `failed`, never a missing
145
+ * answer. The sender's jetton wallet is the one the proof quorum attested at build and the
146
+ * trace shows both wallets running, so a leg that cannot be verified (no answer, exit -13
147
+ * "no state at this block", nothing that parses), or a sender wallet that is not ours,
148
+ * contradicts the chain: a retryable `PROVIDER_INCONSISTENT` (logged `JETTON_UNVERIFIED`),
149
+ * never a terminal failure that a new key would pay again. `failed` only when the recipient
150
+ * wallet answered, and it is not the master's for the intended recipient (another wallet
151
+ * named, another owner, another master): the jettons went elsewhere.
152
+ */
153
+ export declare function confirmLegs(ctx: TonContext, verdict: Verdict, from: string, tags: TonCallTags, block: number): Promise<Verdict>;
154
+ /** The newest masterchain block of a trace: every leg's wallet has run by then. */
155
+ export declare function traceBlock(root: V3Transaction, trace: V3Trace | null): number;
156
+ /**
157
+ * What one history page reads once and uses for every transaction on it:
158
+ * each masterchain block's header, and each jetton wallet's facts, read at the block of the
159
+ * first (newest) transaction that needs them. The same answer reused, so it trusts nothing
160
+ * more; a page reads from then on only what it has not read.
161
+ */
162
+ export interface PageMemo {
163
+ readonly headers: Map<number, Promise<BlockHeader>>;
164
+ readonly jettonWallets: Map<string, Promise<JettonWalletFacts>>;
165
+ }
166
+ export declare const pageMemo: () => PageMemo;
167
+ /**
168
+ * A transaction decoded with its jetton wallet verified at the transaction's own block
169
+ * and its block's hash; `memo` shares both reads across one history page.
170
+ */
171
+ export declare function decodeWithJettons(ctx: TonContext, tx: V3Transaction, tags: TonCallTags, memo?: PageMemo): Promise<import("../../core/driver/types").DriverTransaction>;
172
+ export declare function createTonReader(ctx: TonContext): ChainReader;
173
+ /** The wallet's seqno at the latest state: 0 while undeployed (its first message deploys it). */
174
+ export declare function walletSeqno(ctx: TonContext, address: string, tags: TonCallTags): Promise<bigint>;
175
+ /**
176
+ * The wallet's public key at masterchain block `block` (`get_public_key`), read once and
177
+ * only when needed; undefined when the account has none there. The answer is bound to the
178
+ * block asked and, when given, to the account state read there.
179
+ */
180
+ export declare function publicKeyAt(ctx: TonContext, address: string, tags: TonCallTags, block: BlockId | number, state?: Pick<AccountState, 'lastLt' | 'lastHash'>): () => Promise<Uint8Array | undefined>;
181
+ /**
182
+ * The wallet request `tx` proves `from` consumed its seqno,
183
+ * else null. Every request must be the wallet's own, signed by its key (`requestIsOwn`): a
184
+ * lone lying indexer can make up an external one, and anyone can post a relayed W5 body for
185
+ * a small fee (a v5r1 wallet ignores a forged one). And it must have consumed the seqno: an
186
+ * external request only when `consumesSeqno` holds (its action phase succeeded, or W5
187
+ * committed and then threw 137), a relayed one only when the wallet ran it to the end
188
+ * (`ran`: with no `commit()` there, a failed action phase rolls the seqno back). A foreign
189
+ * request signed with the same key whose action phase failed consumed nothing. `publicKey`
190
+ * gives the wallet's key for `tx`; it is read only for a request that passed the rest.
191
+ */
192
+ export declare function provenRequest(ctx: TonContext, tx: V3Transaction, from: string, publicKey: (tx: V3Transaction) => Promise<Uint8Array | undefined>): Promise<WalletRequest | null>;
193
+ export declare function createTonSequence(ctx: TonContext): SequenceSource;
194
+ export declare function createTonExt(ctx: TonContext): TonExt;