crypto-aio 0.0.3 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (691) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +144 -14
  3. package/dist/adapters/avalanche/address.d.ts +15 -0
  4. package/dist/adapters/avalanche/address.js +74 -0
  5. package/dist/adapters/avalanche/address.js.map +1 -0
  6. package/dist/adapters/avalanche/api.d.ts +100 -0
  7. package/dist/adapters/avalanche/api.js +381 -0
  8. package/dist/adapters/avalanche/api.js.map +1 -0
  9. package/dist/adapters/avalanche/builder.d.ts +13 -0
  10. package/dist/adapters/avalanche/builder.js +336 -0
  11. package/dist/adapters/avalanche/builder.js.map +1 -0
  12. package/dist/adapters/avalanche/cb58.d.ts +7 -0
  13. package/dist/adapters/avalanche/cb58.js +49 -0
  14. package/dist/adapters/avalanche/cb58.js.map +1 -0
  15. package/dist/adapters/avalanche/chains.d.ts +21 -0
  16. package/dist/adapters/avalanche/chains.js +79 -0
  17. package/dist/adapters/avalanche/chains.js.map +1 -0
  18. package/dist/adapters/avalanche/codec.d.ts +94 -0
  19. package/dist/adapters/avalanche/codec.js +371 -0
  20. package/dist/adapters/avalanche/codec.js.map +1 -0
  21. package/dist/adapters/avalanche/context.d.ts +59 -0
  22. package/dist/adapters/avalanche/context.js +114 -0
  23. package/dist/adapters/avalanche/context.js.map +1 -0
  24. package/dist/adapters/avalanche/decode.d.ts +16 -0
  25. package/dist/adapters/avalanche/decode.js +101 -0
  26. package/dist/adapters/avalanche/decode.js.map +1 -0
  27. package/dist/adapters/avalanche/driver.d.ts +22 -0
  28. package/dist/adapters/avalanche/driver.js +81 -0
  29. package/dist/adapters/avalanche/driver.js.map +1 -0
  30. package/dist/adapters/avalanche/errors.d.ts +18 -0
  31. package/dist/adapters/avalanche/errors.js +61 -0
  32. package/dist/adapters/avalanche/errors.js.map +1 -0
  33. package/dist/adapters/avalanche/fees.d.ts +23 -0
  34. package/dist/adapters/avalanche/fees.js +105 -0
  35. package/dist/adapters/avalanche/fees.js.map +1 -0
  36. package/dist/adapters/avalanche/index.d.ts +19 -0
  37. package/dist/adapters/avalanche/index.js +8 -0
  38. package/dist/adapters/avalanche/index.js.map +1 -0
  39. package/dist/adapters/avalanche/network.d.ts +37 -0
  40. package/dist/adapters/avalanche/network.js +135 -0
  41. package/dist/adapters/avalanche/network.js.map +1 -0
  42. package/dist/adapters/avalanche/plugin.d.ts +21 -0
  43. package/dist/adapters/avalanche/plugin.js +46 -0
  44. package/dist/adapters/avalanche/plugin.js.map +1 -0
  45. package/dist/adapters/avalanche/presets.d.ts +6 -0
  46. package/dist/adapters/avalanche/presets.js +86 -0
  47. package/dist/adapters/avalanche/presets.js.map +1 -0
  48. package/dist/adapters/avalanche/proofs.d.ts +41 -0
  49. package/dist/adapters/avalanche/proofs.js +270 -0
  50. package/dist/adapters/avalanche/proofs.js.map +1 -0
  51. package/dist/adapters/avalanche/reader.d.ts +40 -0
  52. package/dist/adapters/avalanche/reader.js +231 -0
  53. package/dist/adapters/avalanche/reader.js.map +1 -0
  54. package/dist/adapters/avalanche/sdk.d.ts +182 -0
  55. package/dist/adapters/avalanche/sdk.js +21 -0
  56. package/dist/adapters/avalanche/sdk.js.map +1 -0
  57. package/dist/adapters/avalanche/types.d.ts +86 -0
  58. package/dist/{type/common.js → adapters/avalanche/types.js} +1 -1
  59. package/dist/adapters/avalanche/types.js.map +1 -0
  60. package/dist/adapters/evm/builder.d.ts +11 -0
  61. package/dist/adapters/evm/builder.js +326 -0
  62. package/dist/adapters/evm/builder.js.map +1 -0
  63. package/dist/adapters/evm/chains.d.ts +6 -0
  64. package/dist/adapters/evm/chains.js +203 -0
  65. package/dist/adapters/evm/chains.js.map +1 -0
  66. package/dist/adapters/evm/client.d.ts +84 -0
  67. package/dist/adapters/evm/client.js +335 -0
  68. package/dist/adapters/evm/client.js.map +1 -0
  69. package/dist/adapters/evm/decode.d.ts +35 -0
  70. package/dist/adapters/evm/decode.js +170 -0
  71. package/dist/adapters/evm/decode.js.map +1 -0
  72. package/dist/adapters/evm/driver.d.ts +8 -0
  73. package/dist/adapters/evm/driver.js +61 -0
  74. package/dist/adapters/evm/driver.js.map +1 -0
  75. package/dist/adapters/evm/errors.d.ts +20 -0
  76. package/dist/adapters/evm/errors.js +110 -0
  77. package/dist/adapters/evm/errors.js.map +1 -0
  78. package/dist/adapters/evm/ethers-client.d.ts +43 -0
  79. package/dist/adapters/evm/ethers-client.js +135 -0
  80. package/dist/adapters/evm/ethers-client.js.map +1 -0
  81. package/dist/adapters/evm/fees.d.ts +79 -0
  82. package/dist/adapters/evm/fees.js +234 -0
  83. package/dist/adapters/evm/fees.js.map +1 -0
  84. package/dist/adapters/evm/index.d.ts +20 -0
  85. package/dist/adapters/evm/index.js +11 -0
  86. package/dist/adapters/evm/index.js.map +1 -0
  87. package/dist/adapters/evm/network.d.ts +60 -0
  88. package/dist/adapters/evm/network.js +131 -0
  89. package/dist/adapters/evm/network.js.map +1 -0
  90. package/dist/adapters/evm/plugin.d.ts +36 -0
  91. package/dist/adapters/evm/plugin.js +102 -0
  92. package/dist/adapters/evm/plugin.js.map +1 -0
  93. package/dist/adapters/evm/presets.d.ts +2 -0
  94. package/dist/adapters/evm/presets.js +105 -0
  95. package/dist/adapters/evm/presets.js.map +1 -0
  96. package/dist/adapters/evm/proofs.d.ts +19 -0
  97. package/dist/adapters/evm/proofs.js +358 -0
  98. package/dist/adapters/evm/proofs.js.map +1 -0
  99. package/dist/adapters/evm/rawtx.d.ts +25 -0
  100. package/dist/adapters/evm/rawtx.js +176 -0
  101. package/dist/adapters/evm/rawtx.js.map +1 -0
  102. package/dist/adapters/evm/reader.d.ts +65 -0
  103. package/dist/adapters/evm/reader.js +292 -0
  104. package/dist/adapters/evm/reader.js.map +1 -0
  105. package/dist/adapters/evm/rpc.d.ts +39 -0
  106. package/dist/adapters/evm/rpc.js +152 -0
  107. package/dist/adapters/evm/rpc.js.map +1 -0
  108. package/dist/adapters/evm/tokens.d.ts +7 -0
  109. package/dist/adapters/evm/tokens.js +23 -0
  110. package/dist/adapters/evm/tokens.js.map +1 -0
  111. package/dist/adapters/evm/types.d.ts +255 -0
  112. package/dist/{type/account.js → adapters/evm/types.js} +1 -1
  113. package/dist/adapters/evm/types.js.map +1 -0
  114. package/dist/adapters/evm/web3-client.d.ts +23 -0
  115. package/dist/adapters/evm/web3-client.js +159 -0
  116. package/dist/adapters/evm/web3-client.js.map +1 -0
  117. package/dist/adapters/solana/builder.d.ts +18 -0
  118. package/dist/adapters/solana/builder.js +545 -0
  119. package/dist/adapters/solana/builder.js.map +1 -0
  120. package/dist/adapters/solana/chains.d.ts +13 -0
  121. package/dist/adapters/solana/chains.js +37 -0
  122. package/dist/adapters/solana/chains.js.map +1 -0
  123. package/dist/adapters/solana/decode.d.ts +111 -0
  124. package/dist/adapters/solana/decode.js +595 -0
  125. package/dist/adapters/solana/decode.js.map +1 -0
  126. package/dist/adapters/solana/driver.d.ts +15 -0
  127. package/dist/adapters/solana/driver.js +72 -0
  128. package/dist/adapters/solana/driver.js.map +1 -0
  129. package/dist/adapters/solana/errors.d.ts +36 -0
  130. package/dist/adapters/solana/errors.js +154 -0
  131. package/dist/adapters/solana/errors.js.map +1 -0
  132. package/dist/adapters/solana/fees.d.ts +68 -0
  133. package/dist/adapters/solana/fees.js +205 -0
  134. package/dist/adapters/solana/fees.js.map +1 -0
  135. package/dist/adapters/solana/heights.d.ts +47 -0
  136. package/dist/adapters/solana/heights.js +185 -0
  137. package/dist/adapters/solana/heights.js.map +1 -0
  138. package/dist/adapters/solana/history.d.ts +10 -0
  139. package/dist/adapters/solana/history.js +71 -0
  140. package/dist/adapters/solana/history.js.map +1 -0
  141. package/dist/adapters/solana/index.d.ts +16 -0
  142. package/dist/adapters/solana/index.js +9 -0
  143. package/dist/adapters/solana/index.js.map +1 -0
  144. package/dist/adapters/solana/keys.d.ts +13 -0
  145. package/dist/adapters/solana/keys.js +69 -0
  146. package/dist/adapters/solana/keys.js.map +1 -0
  147. package/dist/adapters/solana/network.d.ts +24 -0
  148. package/dist/adapters/solana/network.js +95 -0
  149. package/dist/adapters/solana/network.js.map +1 -0
  150. package/dist/adapters/solana/plugin.d.ts +18 -0
  151. package/dist/adapters/solana/plugin.js +41 -0
  152. package/dist/adapters/solana/plugin.js.map +1 -0
  153. package/dist/adapters/solana/presets.d.ts +2 -0
  154. package/dist/adapters/solana/presets.js +77 -0
  155. package/dist/adapters/solana/presets.js.map +1 -0
  156. package/dist/adapters/solana/programs.d.ts +44 -0
  157. package/dist/adapters/solana/programs.js +159 -0
  158. package/dist/adapters/solana/programs.js.map +1 -0
  159. package/dist/adapters/solana/proofs.d.ts +56 -0
  160. package/dist/adapters/solana/proofs.js +540 -0
  161. package/dist/adapters/solana/proofs.js.map +1 -0
  162. package/dist/adapters/solana/reader.d.ts +82 -0
  163. package/dist/adapters/solana/reader.js +326 -0
  164. package/dist/adapters/solana/reader.js.map +1 -0
  165. package/dist/adapters/solana/rpc.d.ts +102 -0
  166. package/dist/adapters/solana/rpc.js +301 -0
  167. package/dist/adapters/solana/rpc.js.map +1 -0
  168. package/dist/adapters/solana/tokens.d.ts +7 -0
  169. package/dist/adapters/solana/tokens.js +19 -0
  170. package/dist/adapters/solana/tokens.js.map +1 -0
  171. package/dist/adapters/solana/types.d.ts +121 -0
  172. package/dist/{type/contract.js → adapters/solana/types.js} +1 -1
  173. package/dist/adapters/solana/types.js.map +1 -0
  174. package/dist/adapters/solana/web3.d.ts +5 -0
  175. package/dist/adapters/solana/web3.js +83 -0
  176. package/dist/adapters/solana/web3.js.map +1 -0
  177. package/dist/adapters/solana/wire.d.ts +62 -0
  178. package/dist/adapters/solana/wire.js +168 -0
  179. package/dist/adapters/solana/wire.js.map +1 -0
  180. package/dist/adapters/ton/address.d.ts +43 -0
  181. package/dist/adapters/ton/address.js +168 -0
  182. package/dist/adapters/ton/address.js.map +1 -0
  183. package/dist/adapters/ton/api.d.ts +344 -0
  184. package/dist/adapters/ton/api.js +942 -0
  185. package/dist/adapters/ton/api.js.map +1 -0
  186. package/dist/adapters/ton/builder.d.ts +18 -0
  187. package/dist/adapters/ton/builder.js +701 -0
  188. package/dist/adapters/ton/builder.js.map +1 -0
  189. package/dist/adapters/ton/chains.d.ts +16 -0
  190. package/dist/adapters/ton/chains.js +39 -0
  191. package/dist/adapters/ton/chains.js.map +1 -0
  192. package/dist/adapters/ton/decode.d.ts +43 -0
  193. package/dist/adapters/ton/decode.js +219 -0
  194. package/dist/adapters/ton/decode.js.map +1 -0
  195. package/dist/adapters/ton/driver.d.ts +10 -0
  196. package/dist/adapters/ton/driver.js +117 -0
  197. package/dist/adapters/ton/driver.js.map +1 -0
  198. package/dist/adapters/ton/errors.d.ts +36 -0
  199. package/dist/adapters/ton/errors.js +89 -0
  200. package/dist/adapters/ton/errors.js.map +1 -0
  201. package/dist/adapters/ton/fees.d.ts +28 -0
  202. package/dist/adapters/ton/fees.js +121 -0
  203. package/dist/adapters/ton/fees.js.map +1 -0
  204. package/dist/adapters/ton/index.d.ts +16 -0
  205. package/dist/adapters/ton/index.js +9 -0
  206. package/dist/adapters/ton/index.js.map +1 -0
  207. package/dist/adapters/ton/messages.d.ts +157 -0
  208. package/dist/adapters/ton/messages.js +397 -0
  209. package/dist/adapters/ton/messages.js.map +1 -0
  210. package/dist/adapters/ton/native-client.d.ts +10 -0
  211. package/dist/adapters/ton/native-client.js +47 -0
  212. package/dist/adapters/ton/native-client.js.map +1 -0
  213. package/dist/adapters/ton/network.d.ts +58 -0
  214. package/dist/adapters/ton/network.js +207 -0
  215. package/dist/adapters/ton/network.js.map +1 -0
  216. package/dist/adapters/ton/plugin.d.ts +24 -0
  217. package/dist/adapters/ton/plugin.js +57 -0
  218. package/dist/adapters/ton/plugin.js.map +1 -0
  219. package/dist/adapters/ton/presets.d.ts +6 -0
  220. package/dist/adapters/ton/presets.js +94 -0
  221. package/dist/adapters/ton/presets.js.map +1 -0
  222. package/dist/adapters/ton/proofs.d.ts +66 -0
  223. package/dist/adapters/ton/proofs.js +813 -0
  224. package/dist/adapters/ton/proofs.js.map +1 -0
  225. package/dist/adapters/ton/reader.d.ts +194 -0
  226. package/dist/adapters/ton/reader.js +781 -0
  227. package/dist/adapters/ton/reader.js.map +1 -0
  228. package/dist/adapters/ton/tokens.d.ts +10 -0
  229. package/dist/adapters/ton/tokens.js +27 -0
  230. package/dist/adapters/ton/tokens.js.map +1 -0
  231. package/dist/adapters/ton/trace.d.ts +48 -0
  232. package/dist/adapters/ton/trace.js +277 -0
  233. package/dist/adapters/ton/trace.js.map +1 -0
  234. package/dist/adapters/ton/types.d.ts +105 -0
  235. package/dist/{type/transact.js → adapters/ton/types.js} +1 -1
  236. package/dist/adapters/ton/types.js.map +1 -0
  237. package/dist/adapters/ton/wallets.d.ts +86 -0
  238. package/dist/adapters/ton/wallets.js +373 -0
  239. package/dist/adapters/ton/wallets.js.map +1 -0
  240. package/dist/adapters/tron/abi.d.ts +39 -0
  241. package/dist/adapters/tron/abi.js +110 -0
  242. package/dist/adapters/tron/abi.js.map +1 -0
  243. package/dist/adapters/tron/address.d.ts +20 -0
  244. package/dist/adapters/tron/address.js +110 -0
  245. package/dist/adapters/tron/address.js.map +1 -0
  246. package/dist/adapters/tron/builder.d.ts +12 -0
  247. package/dist/adapters/tron/builder.js +553 -0
  248. package/dist/adapters/tron/builder.js.map +1 -0
  249. package/dist/adapters/tron/chains.d.ts +12 -0
  250. package/dist/adapters/tron/chains.js +35 -0
  251. package/dist/adapters/tron/chains.js.map +1 -0
  252. package/dist/adapters/tron/codec.d.ts +10 -0
  253. package/dist/adapters/tron/codec.js +322 -0
  254. package/dist/adapters/tron/codec.js.map +1 -0
  255. package/dist/adapters/tron/decode.d.ts +50 -0
  256. package/dist/adapters/tron/decode.js +280 -0
  257. package/dist/adapters/tron/decode.js.map +1 -0
  258. package/dist/adapters/tron/driver.d.ts +12 -0
  259. package/dist/adapters/tron/driver.js +106 -0
  260. package/dist/adapters/tron/driver.js.map +1 -0
  261. package/dist/adapters/tron/errors.d.ts +74 -0
  262. package/dist/adapters/tron/errors.js +261 -0
  263. package/dist/adapters/tron/errors.js.map +1 -0
  264. package/dist/adapters/tron/fees.d.ts +49 -0
  265. package/dist/adapters/tron/fees.js +166 -0
  266. package/dist/adapters/tron/fees.js.map +1 -0
  267. package/dist/adapters/tron/http.d.ts +173 -0
  268. package/dist/adapters/tron/http.js +729 -0
  269. package/dist/adapters/tron/http.js.map +1 -0
  270. package/dist/adapters/tron/index.d.ts +16 -0
  271. package/dist/adapters/tron/index.js +15 -0
  272. package/dist/adapters/tron/index.js.map +1 -0
  273. package/dist/adapters/tron/network.d.ts +44 -0
  274. package/dist/adapters/tron/network.js +163 -0
  275. package/dist/adapters/tron/network.js.map +1 -0
  276. package/dist/adapters/tron/plugin.d.ts +17 -0
  277. package/dist/adapters/tron/plugin.js +39 -0
  278. package/dist/adapters/tron/plugin.js.map +1 -0
  279. package/dist/adapters/tron/presets.d.ts +5 -0
  280. package/dist/adapters/tron/presets.js +68 -0
  281. package/dist/adapters/tron/presets.js.map +1 -0
  282. package/dist/adapters/tron/proofs.d.ts +80 -0
  283. package/dist/adapters/tron/proofs.js +370 -0
  284. package/dist/adapters/tron/proofs.js.map +1 -0
  285. package/dist/adapters/tron/protobuf.d.ts +36 -0
  286. package/dist/adapters/tron/protobuf.js +90 -0
  287. package/dist/adapters/tron/protobuf.js.map +1 -0
  288. package/dist/adapters/tron/reader.d.ts +47 -0
  289. package/dist/adapters/tron/reader.js +203 -0
  290. package/dist/adapters/tron/reader.js.map +1 -0
  291. package/dist/adapters/tron/tokens.d.ts +7 -0
  292. package/dist/adapters/tron/tokens.js +14 -0
  293. package/dist/adapters/tron/tokens.js.map +1 -0
  294. package/dist/adapters/tron/types.d.ts +166 -0
  295. package/dist/adapters/tron/types.js +3 -0
  296. package/dist/adapters/tron/types.js.map +1 -0
  297. package/dist/adapters/utxo/address.d.ts +51 -0
  298. package/dist/adapters/utxo/address.js +341 -0
  299. package/dist/adapters/utxo/address.js.map +1 -0
  300. package/dist/adapters/utxo/builder.d.ts +35 -0
  301. package/dist/adapters/utxo/builder.js +380 -0
  302. package/dist/adapters/utxo/builder.js.map +1 -0
  303. package/dist/adapters/utxo/chains.d.ts +17 -0
  304. package/dist/adapters/utxo/chains.js +99 -0
  305. package/dist/adapters/utxo/chains.js.map +1 -0
  306. package/dist/adapters/utxo/codec.d.ts +120 -0
  307. package/dist/adapters/utxo/codec.js +408 -0
  308. package/dist/adapters/utxo/codec.js.map +1 -0
  309. package/dist/adapters/utxo/coinselect.d.ts +48 -0
  310. package/dist/adapters/utxo/coinselect.js +131 -0
  311. package/dist/adapters/utxo/coinselect.js.map +1 -0
  312. package/dist/adapters/utxo/context.d.ts +57 -0
  313. package/dist/adapters/utxo/context.js +118 -0
  314. package/dist/adapters/utxo/context.js.map +1 -0
  315. package/dist/adapters/utxo/decode.d.ts +14 -0
  316. package/dist/adapters/utxo/decode.js +85 -0
  317. package/dist/adapters/utxo/decode.js.map +1 -0
  318. package/dist/adapters/utxo/driver.d.ts +16 -0
  319. package/dist/adapters/utxo/driver.js +74 -0
  320. package/dist/adapters/utxo/driver.js.map +1 -0
  321. package/dist/adapters/utxo/ecc.d.ts +9 -0
  322. package/dist/adapters/utxo/ecc.js +26 -0
  323. package/dist/adapters/utxo/ecc.js.map +1 -0
  324. package/dist/adapters/utxo/errors.d.ts +52 -0
  325. package/dist/adapters/utxo/errors.js +191 -0
  326. package/dist/adapters/utxo/errors.js.map +1 -0
  327. package/dist/adapters/utxo/esplora.d.ts +79 -0
  328. package/dist/adapters/utxo/esplora.js +451 -0
  329. package/dist/adapters/utxo/esplora.js.map +1 -0
  330. package/dist/adapters/utxo/fees.d.ts +41 -0
  331. package/dist/adapters/utxo/fees.js +125 -0
  332. package/dist/adapters/utxo/fees.js.map +1 -0
  333. package/dist/adapters/utxo/index.d.ts +17 -0
  334. package/dist/adapters/utxo/index.js +8 -0
  335. package/dist/adapters/utxo/index.js.map +1 -0
  336. package/dist/adapters/utxo/network.d.ts +50 -0
  337. package/dist/adapters/utxo/network.js +165 -0
  338. package/dist/adapters/utxo/network.js.map +1 -0
  339. package/dist/adapters/utxo/plugin.d.ts +17 -0
  340. package/dist/adapters/utxo/plugin.js +41 -0
  341. package/dist/adapters/utxo/plugin.js.map +1 -0
  342. package/dist/adapters/utxo/presets.d.ts +12 -0
  343. package/dist/adapters/utxo/presets.js +47 -0
  344. package/dist/adapters/utxo/presets.js.map +1 -0
  345. package/dist/adapters/utxo/preview.d.ts +3 -0
  346. package/dist/adapters/utxo/preview.js +65 -0
  347. package/dist/adapters/utxo/preview.js.map +1 -0
  348. package/dist/adapters/utxo/proofs.d.ts +57 -0
  349. package/dist/adapters/utxo/proofs.js +331 -0
  350. package/dist/adapters/utxo/proofs.js.map +1 -0
  351. package/dist/adapters/utxo/rawtx.d.ts +59 -0
  352. package/dist/adapters/utxo/rawtx.js +234 -0
  353. package/dist/adapters/utxo/rawtx.js.map +1 -0
  354. package/dist/adapters/utxo/reader.d.ts +36 -0
  355. package/dist/adapters/utxo/reader.js +265 -0
  356. package/dist/adapters/utxo/reader.js.map +1 -0
  357. package/dist/adapters/utxo/sdk.d.ts +18 -0
  358. package/dist/adapters/utxo/sdk.js +17 -0
  359. package/dist/adapters/utxo/sdk.js.map +1 -0
  360. package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
  361. package/dist/adapters/utxo/signed-psbt.js +428 -0
  362. package/dist/adapters/utxo/signed-psbt.js.map +1 -0
  363. package/dist/adapters/utxo/spend.d.ts +59 -0
  364. package/dist/adapters/utxo/spend.js +230 -0
  365. package/dist/adapters/utxo/spend.js.map +1 -0
  366. package/dist/adapters/utxo/types.d.ts +167 -0
  367. package/dist/adapters/utxo/types.js +3 -0
  368. package/dist/adapters/utxo/types.js.map +1 -0
  369. package/dist/core/assets/service.d.ts +18 -0
  370. package/dist/core/assets/service.js +69 -0
  371. package/dist/core/assets/service.js.map +1 -0
  372. package/dist/core/blockchain/default-ref.d.ts +4 -0
  373. package/dist/core/blockchain/default-ref.js +16 -0
  374. package/dist/core/blockchain/default-ref.js.map +1 -0
  375. package/dist/core/blockchain/handle.d.ts +200 -0
  376. package/dist/core/blockchain/handle.js +579 -0
  377. package/dist/core/blockchain/handle.js.map +1 -0
  378. package/dist/core/blockchain/internal.d.ts +19 -0
  379. package/dist/core/blockchain/internal.js +16 -0
  380. package/dist/core/blockchain/internal.js.map +1 -0
  381. package/dist/core/blockchain/mapping.d.ts +22 -0
  382. package/dist/core/blockchain/mapping.js +136 -0
  383. package/dist/core/blockchain/mapping.js.map +1 -0
  384. package/dist/core/config/env.d.ts +8 -0
  385. package/dist/core/config/env.js +60 -0
  386. package/dist/core/config/env.js.map +1 -0
  387. package/dist/core/config/merge.d.ts +26 -0
  388. package/dist/core/config/merge.js +144 -0
  389. package/dist/core/config/merge.js.map +1 -0
  390. package/dist/core/config/resolve.d.ts +12 -0
  391. package/dist/core/config/resolve.js +251 -0
  392. package/dist/core/config/resolve.js.map +1 -0
  393. package/dist/core/config/types.d.ts +165 -0
  394. package/dist/core/config/types.js +3 -0
  395. package/dist/core/config/types.js.map +1 -0
  396. package/dist/core/container/builtins.d.ts +4 -0
  397. package/dist/core/container/builtins.js +13 -0
  398. package/dist/core/container/builtins.js.map +1 -0
  399. package/dist/core/container/container.d.ts +69 -0
  400. package/dist/core/container/container.js +466 -0
  401. package/dist/core/container/container.js.map +1 -0
  402. package/dist/core/container/default.d.ts +15 -0
  403. package/dist/core/container/default.js +70 -0
  404. package/dist/core/container/default.js.map +1 -0
  405. package/dist/core/container/internals.d.ts +54 -0
  406. package/dist/core/container/internals.js +21 -0
  407. package/dist/core/container/internals.js.map +1 -0
  408. package/dist/core/container/pool.d.ts +27 -0
  409. package/dist/core/container/pool.js +77 -0
  410. package/dist/core/container/pool.js.map +1 -0
  411. package/dist/core/driver/types.d.ts +346 -0
  412. package/dist/core/driver/types.js +3 -0
  413. package/dist/core/driver/types.js.map +1 -0
  414. package/dist/core/errors/codes.d.ts +153 -0
  415. package/dist/core/errors/codes.js +49 -0
  416. package/dist/core/errors/codes.js.map +1 -0
  417. package/dist/core/errors/error.d.ts +66 -0
  418. package/dist/core/errors/error.js +129 -0
  419. package/dist/core/errors/error.js.map +1 -0
  420. package/dist/core/events/bus.d.ts +12 -0
  421. package/dist/core/events/bus.js +46 -0
  422. package/dist/core/events/bus.js.map +1 -0
  423. package/dist/core/events/logger.d.ts +13 -0
  424. package/dist/core/events/logger.js +42 -0
  425. package/dist/core/events/logger.js.map +1 -0
  426. package/dist/core/events/types.d.ts +131 -0
  427. package/dist/core/events/types.js +3 -0
  428. package/dist/core/events/types.js.map +1 -0
  429. package/dist/core/lifecycle/engine-rules.d.ts +107 -0
  430. package/dist/core/lifecycle/engine-rules.js +257 -0
  431. package/dist/core/lifecycle/engine-rules.js.map +1 -0
  432. package/dist/core/lifecycle/engine.d.ts +500 -0
  433. package/dist/core/lifecycle/engine.js +1732 -0
  434. package/dist/core/lifecycle/engine.js.map +1 -0
  435. package/dist/core/lifecycle/evaluate.d.ts +19 -0
  436. package/dist/core/lifecycle/evaluate.js +72 -0
  437. package/dist/core/lifecycle/evaluate.js.map +1 -0
  438. package/dist/core/lifecycle/intent.d.ts +11 -0
  439. package/dist/core/lifecycle/intent.js +88 -0
  440. package/dist/core/lifecycle/intent.js.map +1 -0
  441. package/dist/core/lifecycle/monitor.d.ts +138 -0
  442. package/dist/core/lifecycle/monitor.js +606 -0
  443. package/dist/core/lifecycle/monitor.js.map +1 -0
  444. package/dist/core/lifecycle/observations.d.ts +17 -0
  445. package/dist/core/lifecycle/observations.js +59 -0
  446. package/dist/core/lifecycle/observations.js.map +1 -0
  447. package/dist/core/lifecycle/reconcile.d.ts +58 -0
  448. package/dist/core/lifecycle/reconcile.js +112 -0
  449. package/dist/core/lifecycle/reconcile.js.map +1 -0
  450. package/dist/core/lifecycle/views.d.ts +49 -0
  451. package/dist/core/lifecycle/views.js +57 -0
  452. package/dist/core/lifecycle/views.js.map +1 -0
  453. package/dist/core/lifecycle/workers.d.ts +82 -0
  454. package/dist/core/lifecycle/workers.js +329 -0
  455. package/dist/core/lifecycle/workers.js.map +1 -0
  456. package/dist/core/model/address.d.ts +32 -0
  457. package/dist/core/model/address.js +43 -0
  458. package/dist/core/model/address.js.map +1 -0
  459. package/dist/core/model/amount.d.ts +25 -0
  460. package/dist/core/model/amount.js +102 -0
  461. package/dist/core/model/amount.js.map +1 -0
  462. package/dist/core/model/asset.d.ts +28 -0
  463. package/dist/core/model/asset.js +47 -0
  464. package/dist/core/model/asset.js.map +1 -0
  465. package/dist/core/model/capability.d.ts +3 -0
  466. package/dist/core/model/capability.js +18 -0
  467. package/dist/core/model/capability.js.map +1 -0
  468. package/dist/core/model/chain.d.ts +63 -0
  469. package/dist/core/model/chain.js +8 -0
  470. package/dist/core/model/chain.js.map +1 -0
  471. package/dist/core/model/fee.d.ts +36 -0
  472. package/dist/core/model/fee.js +17 -0
  473. package/dist/core/model/fee.js.map +1 -0
  474. package/dist/core/model/ids.d.ts +37 -0
  475. package/dist/core/model/ids.js +13 -0
  476. package/dist/core/model/ids.js.map +1 -0
  477. package/dist/core/model/intent.d.ts +63 -0
  478. package/dist/core/model/intent.js +81 -0
  479. package/dist/core/model/intent.js.map +1 -0
  480. package/dist/core/model/ordering.d.ts +20 -0
  481. package/dist/core/model/ordering.js +29 -0
  482. package/dist/core/model/ordering.js.map +1 -0
  483. package/dist/core/model/transaction.d.ts +116 -0
  484. package/dist/{type/lib-types.js → core/model/transaction.js} +1 -1
  485. package/dist/core/model/transaction.js.map +1 -0
  486. package/dist/core/observe/scanner.d.ts +135 -0
  487. package/dist/core/observe/scanner.js +355 -0
  488. package/dist/core/observe/scanner.js.map +1 -0
  489. package/dist/core/ordering/reservations.d.ts +16 -0
  490. package/dist/core/ordering/reservations.js +53 -0
  491. package/dist/core/ordering/reservations.js.map +1 -0
  492. package/dist/core/ordering/sequence.d.ts +61 -0
  493. package/dist/core/ordering/sequence.js +155 -0
  494. package/dist/core/ordering/sequence.js.map +1 -0
  495. package/dist/core/registry/adapters.d.ts +10 -0
  496. package/dist/core/registry/adapters.js +56 -0
  497. package/dist/core/registry/adapters.js.map +1 -0
  498. package/dist/core/registry/assets.d.ts +18 -0
  499. package/dist/core/registry/assets.js +90 -0
  500. package/dist/core/registry/assets.js.map +1 -0
  501. package/dist/core/registry/chains.d.ts +10 -0
  502. package/dist/core/registry/chains.js +80 -0
  503. package/dist/core/registry/chains.js.map +1 -0
  504. package/dist/core/registry/plugin.d.ts +41 -0
  505. package/dist/core/registry/plugin.js +109 -0
  506. package/dist/core/registry/plugin.js.map +1 -0
  507. package/dist/core/registry/providers.d.ts +31 -0
  508. package/dist/core/registry/providers.js +43 -0
  509. package/dist/core/registry/providers.js.map +1 -0
  510. package/dist/core/registry/schemes.d.ts +30 -0
  511. package/dist/core/registry/schemes.js +84 -0
  512. package/dist/core/registry/schemes.js.map +1 -0
  513. package/dist/core/secret/fragments.d.ts +33 -0
  514. package/dist/core/secret/fragments.js +110 -0
  515. package/dist/core/secret/fragments.js.map +1 -0
  516. package/dist/core/secret/redact.d.ts +10 -0
  517. package/dist/core/secret/redact.js +110 -0
  518. package/dist/core/secret/redact.js.map +1 -0
  519. package/dist/core/secret/secret.d.ts +14 -0
  520. package/dist/core/secret/secret.js +42 -0
  521. package/dist/core/secret/secret.js.map +1 -0
  522. package/dist/core/signing/callback.d.ts +10 -0
  523. package/dist/core/signing/callback.js +22 -0
  524. package/dist/core/signing/callback.js.map +1 -0
  525. package/dist/core/signing/guard.d.ts +18 -0
  526. package/dist/core/signing/guard.js +72 -0
  527. package/dist/core/signing/guard.js.map +1 -0
  528. package/dist/core/signing/hd.d.ts +36 -0
  529. package/dist/core/signing/hd.js +167 -0
  530. package/dist/core/signing/hd.js.map +1 -0
  531. package/dist/core/signing/local.d.ts +48 -0
  532. package/dist/core/signing/local.js +190 -0
  533. package/dist/core/signing/local.js.map +1 -0
  534. package/dist/core/signing/orchestrator.d.ts +40 -0
  535. package/dist/core/signing/orchestrator.js +300 -0
  536. package/dist/core/signing/orchestrator.js.map +1 -0
  537. package/dist/core/signing/types.d.ts +64 -0
  538. package/dist/core/signing/types.js +3 -0
  539. package/dist/core/signing/types.js.map +1 -0
  540. package/dist/core/signing/wallet.d.ts +48 -0
  541. package/dist/core/signing/wallet.js +153 -0
  542. package/dist/core/signing/wallet.js.map +1 -0
  543. package/dist/core/store/clone.d.ts +25 -0
  544. package/dist/core/store/clone.js +71 -0
  545. package/dist/core/store/clone.js.map +1 -0
  546. package/dist/core/store/memory.d.ts +38 -0
  547. package/dist/core/store/memory.js +325 -0
  548. package/dist/core/store/memory.js.map +1 -0
  549. package/dist/core/store/types.d.ts +246 -0
  550. package/dist/core/store/types.js +117 -0
  551. package/dist/core/store/types.js.map +1 -0
  552. package/dist/core/transport/backoff.d.ts +8 -0
  553. package/dist/core/transport/backoff.js +27 -0
  554. package/dist/core/transport/backoff.js.map +1 -0
  555. package/dist/core/transport/circuit.d.ts +25 -0
  556. package/dist/core/transport/circuit.js +61 -0
  557. package/dist/core/transport/circuit.js.map +1 -0
  558. package/dist/core/transport/http-transport.d.ts +30 -0
  559. package/dist/core/transport/http-transport.js +1695 -0
  560. package/dist/core/transport/http-transport.js.map +1 -0
  561. package/dist/core/transport/rate-limit.d.ts +27 -0
  562. package/dist/core/transport/rate-limit.js +78 -0
  563. package/dist/core/transport/rate-limit.js.map +1 -0
  564. package/dist/core/transport/stale-view.d.ts +11 -0
  565. package/dist/core/transport/stale-view.js +17 -0
  566. package/dist/core/transport/stale-view.js.map +1 -0
  567. package/dist/core/transport/types.d.ts +144 -0
  568. package/dist/core/transport/types.js +6 -0
  569. package/dist/core/transport/types.js.map +1 -0
  570. package/dist/core/util/bytes.d.ts +9 -0
  571. package/dist/core/util/bytes.js +40 -0
  572. package/dist/core/util/bytes.js.map +1 -0
  573. package/dist/core/util/clock.d.ts +6 -0
  574. package/dist/core/util/clock.js +26 -0
  575. package/dist/core/util/clock.js.map +1 -0
  576. package/dist/core/util/freeze.d.ts +8 -0
  577. package/dist/core/util/freeze.js +31 -0
  578. package/dist/core/util/freeze.js.map +1 -0
  579. package/dist/core/util/json.d.ts +29 -0
  580. package/dist/core/util/json.js +165 -0
  581. package/dist/core/util/json.js.map +1 -0
  582. package/dist/core/util/names.d.ts +21 -0
  583. package/dist/core/util/names.js +46 -0
  584. package/dist/core/util/names.js.map +1 -0
  585. package/dist/index.d.ts +64 -14
  586. package/dist/index.js +105 -49
  587. package/dist/index.js.map +1 -1
  588. package/dist/native.d.ts +21 -0
  589. package/dist/native.js +44 -0
  590. package/dist/native.js.map +1 -0
  591. package/dist/testing/contracts/api.d.ts +12 -0
  592. package/dist/testing/contracts/api.js +58 -0
  593. package/dist/testing/contracts/api.js.map +1 -0
  594. package/dist/testing/contracts/cursors.d.ts +6 -0
  595. package/dist/testing/contracts/cursors.js +43 -0
  596. package/dist/testing/contracts/cursors.js.map +1 -0
  597. package/dist/testing/contracts/locks.d.ts +10 -0
  598. package/dist/testing/contracts/locks.js +63 -0
  599. package/dist/testing/contracts/locks.js.map +1 -0
  600. package/dist/testing/contracts/operations.d.ts +21 -0
  601. package/dist/testing/contracts/operations.js +718 -0
  602. package/dist/testing/contracts/operations.js.map +1 -0
  603. package/dist/testing/contracts/sequences.d.ts +6 -0
  604. package/dist/testing/contracts/sequences.js +68 -0
  605. package/dist/testing/contracts/sequences.js.map +1 -0
  606. package/dist/testing/env.d.ts +63 -0
  607. package/dist/testing/env.js +105 -0
  608. package/dist/testing/env.js.map +1 -0
  609. package/dist/testing/fake-chain.d.ts +118 -0
  610. package/dist/testing/fake-chain.js +536 -0
  611. package/dist/testing/fake-chain.js.map +1 -0
  612. package/dist/testing/fake-clock.d.ts +15 -0
  613. package/dist/testing/fake-clock.js +86 -0
  614. package/dist/testing/fake-clock.js.map +1 -0
  615. package/dist/testing/fake-driver.d.ts +15 -0
  616. package/dist/testing/fake-driver.js +458 -0
  617. package/dist/testing/fake-driver.js.map +1 -0
  618. package/dist/testing/fake-fetch.d.ts +32 -0
  619. package/dist/testing/fake-fetch.js +81 -0
  620. package/dist/testing/fake-fetch.js.map +1 -0
  621. package/dist/testing/fake-plugin.d.ts +30 -0
  622. package/dist/testing/fake-plugin.js +66 -0
  623. package/dist/testing/fake-plugin.js.map +1 -0
  624. package/dist/testing/faulty-store.d.ts +36 -0
  625. package/dist/testing/faulty-store.js +66 -0
  626. package/dist/testing/faulty-store.js.map +1 -0
  627. package/dist/testing/generation.d.ts +60 -0
  628. package/dist/testing/generation.js +252 -0
  629. package/dist/testing/generation.js.map +1 -0
  630. package/dist/testing/index.d.ts +28 -0
  631. package/dist/testing/index.js +51 -0
  632. package/dist/testing/index.js.map +1 -0
  633. package/package.json +188 -45
  634. package/dist/libs/eth/account.d.ts +0 -9
  635. package/dist/libs/eth/account.js +0 -58
  636. package/dist/libs/eth/account.js.map +0 -1
  637. package/dist/libs/eth/contract.d.ts +0 -7
  638. package/dist/libs/eth/contract.js +0 -42
  639. package/dist/libs/eth/contract.js.map +0 -1
  640. package/dist/libs/eth/index.d.ts +0 -24
  641. package/dist/libs/eth/index.js +0 -72
  642. package/dist/libs/eth/index.js.map +0 -1
  643. package/dist/libs/eth/transact.d.ts +0 -7
  644. package/dist/libs/eth/transact.js +0 -26
  645. package/dist/libs/eth/transact.js.map +0 -1
  646. package/dist/libs/index.d.ts +0 -2
  647. package/dist/libs/index.js +0 -19
  648. package/dist/libs/index.js.map +0 -1
  649. package/dist/libs/trx/account.d.ts +0 -9
  650. package/dist/libs/trx/account.js +0 -55
  651. package/dist/libs/trx/account.js.map +0 -1
  652. package/dist/libs/trx/contract.d.ts +0 -7
  653. package/dist/libs/trx/contract.js +0 -27
  654. package/dist/libs/trx/contract.js.map +0 -1
  655. package/dist/libs/trx/index.d.ts +0 -22
  656. package/dist/libs/trx/index.js +0 -64
  657. package/dist/libs/trx/index.js.map +0 -1
  658. package/dist/libs/trx/transact.d.ts +0 -7
  659. package/dist/libs/trx/transact.js +0 -26
  660. package/dist/libs/trx/transact.js.map +0 -1
  661. package/dist/tool/common.d.ts +0 -28
  662. package/dist/tool/common.js +0 -33
  663. package/dist/tool/common.js.map +0 -1
  664. package/dist/tool/eth-tools.d.ts +0 -3
  665. package/dist/tool/eth-tools.js +0 -33
  666. package/dist/tool/eth-tools.js.map +0 -1
  667. package/dist/tool/index.d.ts +0 -5
  668. package/dist/tool/index.js +0 -22
  669. package/dist/tool/index.js.map +0 -1
  670. package/dist/tool/logging.d.ts +0 -3
  671. package/dist/tool/logging.js +0 -11
  672. package/dist/tool/logging.js.map +0 -1
  673. package/dist/tool/options.d.ts +0 -6
  674. package/dist/tool/options.js +0 -41
  675. package/dist/tool/options.js.map +0 -1
  676. package/dist/tool/trx-tools.d.ts +0 -3
  677. package/dist/tool/trx-tools.js +0 -20
  678. package/dist/tool/trx-tools.js.map +0 -1
  679. package/dist/type/account.d.ts +0 -9
  680. package/dist/type/account.js.map +0 -1
  681. package/dist/type/common.d.ts +0 -18
  682. package/dist/type/common.js.map +0 -1
  683. package/dist/type/contract.d.ts +0 -10
  684. package/dist/type/contract.js.map +0 -1
  685. package/dist/type/index.d.ts +0 -5
  686. package/dist/type/index.js +0 -22
  687. package/dist/type/index.js.map +0 -1
  688. package/dist/type/lib-types.d.ts +0 -9
  689. package/dist/type/lib-types.js.map +0 -1
  690. package/dist/type/transact.d.ts +0 -7
  691. package/dist/type/transact.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/adapters/ton/api.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The TON driver's only path to the network: toncenter API v2 (the `rpc` transport: live\n * liteserver state, get-methods at a fixed masterchain block, fee emulation, sending) and\n * API v3 (the `indexer` transport: message → transaction, traces, history, jetton\n * metadata), as REST calls through the core transports. Not JSON-RPC: toncenter's\n * `/jsonRPC` answers carry no `id`, which `transport.rpc` refuses, and `TonClient` would\n * put a real timer on the request path. Each call carries its driver method's tags and a\n * `route` with no identifiers in it (events and logs show it), and reads integers exactly\n * (toncenter writes some u64 values as JSON numbers). Answers are validated here: a\n * malformed one, including a missing or ill-typed field a verdict reads, is a retryable\n * `PROVIDER_UNAVAILABLE`, never a default or a foreign error. Lookups by id keep only\n * what they asked for, so a dropped server-side filter reads as \"none yet\"; a history\n * that breaks its query is malformed. Numbers, cells and metadata are bounded before use.\n * Under a quorum, every method compares the parsed facts it returns (so honest endpoints\n * that format a fact differently agree), or the caller's predicate key. SDK-free.\n */\nimport {\n ProviderError,\n ValidationError,\n isCryptoAioError,\n} from '../../core/errors/error';\nimport type { CallOptions, HttpRequest, Transport } from '../../core/transport/types';\nimport { MAX_COINS } from './fees';\nimport type { TonCallTags } from './types';\n\nexport const READ: TonCallTags = { purpose: 'read', retry: 'safe' };\nexport const MONITOR: TonCallTags = { purpose: 'monitor', retry: 'safe' };\nexport const PROOF: TonCallTags = { purpose: 'proof', retry: 'safe', quorum: 'proof' };\nexport const BROADCAST: TonCallTags = {\n purpose: 'broadcast',\n retry: 'ambiguous-on-failure',\n};\n\nexport const withSignal = (tags: TonCallTags, signal?: AbortSignal): TonCallTags =>\n signal ? { ...tags, signal } : tags;\n\n/** The masterchain's one shard, as toncenter v2 writes it. */\nexport const MASTERCHAIN_SHARD = '-9223372036854775808';\n\n/**\n * The most cells a message body may hold, checked in the BOC header before the\n * SDK parses anything. TON refuses a message of more than 2^13 cells or 2^21 bits (config\n * param 43, \"account and message limits\", docs.ton.org/foundations/config; the node's\n * defaults `max_msg_cells = 1 << 13` and `max_msg_bits = 1 << 21` in `SizeLimitsConfig`,\n * ton-blockchain/ton `crypto/block/mc-config.h`), so no body the chain carried holds more.\n * The text length alone does not bound the work: minimal cells cost about 4 bytes each,\n * and `Cell.fromBoc` takes about 20-50 µs per cell.\n */\nexport const MAX_BODY_CELLS = 1 << 13;\n\n/**\n * The longest message body BOC text `cellFromBoc` decodes. The same limits give\n * at most 2^21 / 8 bytes of data in 2^13 cells, each with 2 descriptor bytes, 4 two-byte\n * refs, a rounding byte and a 3-byte index entry, plus a header and a checksum: under\n * 377,000 bytes, about 502,500 base64 characters.\n */\nexport const MAX_BODY_BOC_LENGTH = 1 << 19;\n\n/**\n * The most cells of a jetton master's content that `jettonData` hands\n * on. The content is part of the master's account state, not a message, and TON caps a state\n * at 2^16 cells and 2^16 × 1023 bits (config param 43, `max_acc_state_cells` and\n * `max_acc_state_bits`, the node's defaults in `SizeLimitsConfig`, ton-blockchain/ton\n * `crypto/block/mc-config.h`), so no content the chain holds is larger.\n */\nexport const MAX_STATE_CELLS = 1 << 16;\n\n/**\n * The longest content BOC text `jettonData` hands on. The same limits\n * give at most 2^16 × 1023 / 8 bytes of data in 2^16 cells, each with 2 descriptor bytes, 4\n * three-byte refs, a rounding byte and a 4-byte index entry, plus a header and a checksum:\n * under 9.7 MB, about 12.9 million base64 characters. Decoding a state of that size takes\n * about 2 s (`@ton/core` 0.63.1, measured); only a master's metadata, read once per token\n * and cached, can be that large.\n */\nexport const MAX_STATE_BOC_LENGTH = 1 << 24;\n\n/**\n * The cell count a BOC header declares, for the three layouts `@ton/core` reads (magic,\n * then the size byte or flags with the size in their low 3 bits, the offset size, and the\n * count in `size` bytes); undefined for anything else.\n */\nfunction bocCellCount(bytes: Buffer): number | undefined {\n if (bytes.length < 6) return undefined;\n const magic = bytes.readUInt32BE(0);\n const head = bytes[4] as number;\n const size =\n magic === 0xb5ee9c72\n ? head & 0x07\n : magic === 0x68ff65f3 || magic === 0xacc3a728\n ? head\n : 0;\n if (size < 1 || size > 4 || bytes.length < 6 + size) return undefined;\n return bytes.readUIntBE(6, size);\n}\n\n/**\n * A base64 BOC measured against limits, by default one message's (at most\n * `maxLength` characters, and a header, its first 16 characters, declaring at most\n * `maxCells` cells): `oversized` beyond them, `malformed` without a BOC header.\n */\nfunction bocSize(\n boc: string,\n maxCells: number = MAX_BODY_CELLS,\n maxLength: number = MAX_BODY_BOC_LENGTH,\n): 'ok' | 'oversized' | 'malformed' {\n if (boc.length === 0) return 'malformed';\n const count = bocCellCount(Buffer.from(boc.slice(0, 16), 'base64'));\n if (count === undefined) return 'malformed';\n return boc.length > maxLength || count > maxCells ? 'oversized' : 'ok';\n}\n\n/**\n * Whether a base64 BOC is within one message's limits. SDK-free, so the API layer\n * bounds the cells it hands on (config params, get-method stacks) and `cellFromBoc` the\n * bodies it decodes.\n */\nexport function bocWithinLimits(boc: string): boolean {\n return bocSize(boc) === 'ok';\n}\n\n/**\n * The longest token metadata texts read from the indexer (decimals: 0..255). A longer or\n * ill-typed `symbol` is reported unreadable; a `name` beyond its limit is absent, never\n * an error: it is author-set text every endpoint agrees on, so a refusal would retry\n * forever.\n */\nconst CONTENT_LIMITS = { symbol: 256, name: 256 } as const;\n\ntype Json = Record<string, unknown>;\n\nfunction malformed(route: string): ProviderError {\n return new ProviderError(\n 'PROVIDER_UNAVAILABLE',\n `malformed toncenter answer to ${route}`,\n {\n retryable: true,\n },\n );\n}\n\nconst isRecord = (value: unknown): value is Json =>\n value !== null && typeof value === 'object' && !Array.isArray(value);\n\n/** Checks, else throws the retryable malformed-answer error. */\nfunction need<T>(value: T | undefined | null, route: string): T {\n if (value === undefined || value === null) throw malformed(route);\n return value;\n}\n\n/** An optional field: absent (undefined or null), else `read` must accept it. */\nfunction optional<T>(\n value: unknown,\n read: (value: unknown) => T | undefined,\n route: string,\n): T | undefined {\n return value === undefined || value === null ? undefined : need(read(value), route);\n}\n\nconst str = (value: unknown): string | undefined =>\n typeof value === 'string' ? value : undefined;\nconst bool = (value: unknown): boolean | undefined =>\n typeof value === 'boolean' ? value : undefined;\nconst record = (value: unknown): Json | undefined =>\n isRecord(value) ? value : undefined;\nconst int = (value: unknown): number | undefined =>\n typeof value === 'number' && Number.isSafeInteger(value)\n ? value\n : typeof value === 'string' && /^-?\\d{1,15}$/.test(value)\n ? Number(value)\n : undefined;\n/**\n * An integer as a decimal string, a safe number or an exactly read bigint (the\n * transport's `exactIntegers`). At most 80 digits (the core's exact-integer cap; u256 has\n * 78), refused before `BigInt`.\n */\nconst big = (value: unknown): bigint | undefined =>\n typeof value === 'bigint'\n ? value\n : typeof value === 'string' && /^-?\\d{1,80}$/.test(value)\n ? BigInt(value)\n : typeof value === 'number' && Number.isSafeInteger(value)\n ? BigInt(value)\n : undefined;\n\nconst U64_MAX = 2n ** 64n - 1n;\n\n/** An unsigned integer up to `max`. */\nfunction unsigned(value: unknown, max: bigint): bigint | undefined {\n const n = big(value);\n return n !== undefined && n >= 0n && n <= max ? n : undefined;\n}\n/** An amount of nanograms (`Coins`, a VarUInteger 16: below 2^120). */\nconst coins = (value: unknown): bigint | undefined => unsigned(value, MAX_COINS);\n/** A logical time (u64). */\nconst u64 = (value: unknown): bigint | undefined => unsigned(value, U64_MAX);\n\nconst INT64_MIN = -(2n ** 63n);\nconst INT64_MAX = 2n ** 63n - 1n;\n\n/** A shard id (a signed 64-bit integer) as canonical decimal, however it was written. */\nfunction shardOf(value: unknown): string | undefined {\n const shard = big(value);\n return shard !== undefined && shard >= INT64_MIN && shard <= INT64_MAX\n ? shard.toString()\n : undefined;\n}\n\n/** A 32-byte hash given in base64 (toncenter's form) as lower-case hex. */\nexport function hashHex(value: unknown): string | undefined {\n if (typeof value !== 'string') return undefined;\n if (/^[0-9a-fA-F]{64}$/.test(value)) return value.toLowerCase();\n if (!/^[A-Za-z0-9+/_-]{43}=?$/.test(value)) return undefined;\n const bytes = Buffer.from(value.replace(/-/g, '+').replace(/_/g, '/'), 'base64');\n return bytes.length === 32 ? bytes.toString('hex') : undefined;\n}\n\n/** toncenter v3 writes raw addresses in upper case; the canonical form is lower case. */\nexport function rawOf(value: unknown): string | null | undefined {\n if (value === null) return null;\n if (typeof value !== 'string' || !/^(0|-1):[0-9a-fA-F]{64}$/.test(value))\n return undefined;\n return value.toLowerCase();\n}\n\n/**\n * A lookup that filters its answer by address needs the address's raw form (the\n * codec's canonical form); anything else is refused before any request, never retried as a\n * provider fault.\n */\nfunction rawAddress(address: string): string {\n const raw = rawOf(address);\n if (!raw) {\n throw new ValidationError(\n 'INVALID_ADDRESS',\n 'a toncenter lookup needs a raw address',\n );\n }\n return raw;\n}\n\n// ---- wire types (validated) ---------------------------------------------------------------\n\nexport interface BlockId {\n readonly workchain: number;\n /** A signed 64-bit shard id in canonical decimal (the masterchain's: `MASTERCHAIN_SHARD`). */\n readonly shard: string;\n readonly seqno: number;\n /** Lower-case hex. */\n readonly rootHash: string;\n readonly fileHash: string;\n}\n\nexport interface BlockHeader {\n readonly id: BlockId;\n readonly globalId: number;\n /** Seconds. */\n readonly genUtime: number;\n readonly prev: readonly BlockId[];\n}\n\nexport type AccountStatus = 'active' | 'uninitialized' | 'frozen';\n\nexport interface AccountState {\n readonly balance: bigint;\n readonly status: AccountStatus;\n readonly lastLt: bigint;\n /** Lower-case hex; all zeros for an account that never had a transaction. */\n readonly lastHash: string;\n /** The masterchain block the state was read at. */\n readonly blockSeqno: number;\n /** That block's full id: a proof binds the state to the block it asked for. */\n readonly block: BlockId;\n /** The state's time (seconds): the chain's `now` for the next message. */\n readonly syncUtime: number;\n}\n\nexport type StackEntry =\n | { readonly type: 'num'; readonly value: bigint }\n /** A cell or slice (base64 BOC), within one message's limits. */\n | { readonly type: 'cell'; readonly boc: string }\n | { readonly type: 'other' };\n\nexport interface RunResult {\n readonly exitCode: number;\n readonly stack: readonly StackEntry[];\n}\n\n/** A transaction's id: its logical time and hash (lower-case hex). */\nexport interface TransactionId {\n readonly lt: bigint;\n readonly hash: string;\n}\n\n/**\n * A get-method's result with what it was run on: the masterchain block and the\n * account's last transaction there, as live toncenter answers name them.\n */\nexport interface BoundRunResult extends RunResult {\n readonly block: BlockId;\n readonly lastTransaction: TransactionId;\n}\n\n/**\n * One transaction as the liteserver serves it (v2 `getTransactions`): its id and its raw\n * cell (base64 BOC, within an account state's limits), which a caller hashes itself:\n * only a cell whose hash is the id it expects authenticates anything.\n */\nexport interface RawTransaction {\n readonly lt: bigint;\n readonly hash: string;\n readonly boc: string;\n}\n\n/** toncenter v3's account statuses (`orig_status`, `end_status`). */\nexport type V3AccountStatus = 'nonexist' | 'uninit' | 'active' | 'frozen';\n\nexport interface SourceFees {\n readonly importFee: bigint;\n readonly storageFee: bigint;\n readonly gasFee: bigint;\n readonly forwardFee: bigint;\n}\n\nexport interface SentMessage {\n readonly hash: string;\n readonly hashNorm: string;\n}\n\nexport interface V3Message {\n readonly hash: string;\n readonly hashNorm?: string;\n readonly source: string | null;\n readonly destination: string | null;\n readonly value: bigint | null;\n readonly bounce: boolean | null;\n readonly bounced: boolean | null;\n /** Body hash (hex) and body (base64 BOC), when the indexer has them. */\n readonly bodyHash?: string;\n readonly body?: string;\n}\n\nexport interface V3Transaction {\n readonly hash: string;\n readonly lt: bigint;\n readonly account: string;\n readonly now: number;\n readonly mcSeqno: number;\n /** The trace's id (its root transaction's hash), lower-case hex. */\n readonly traceId: string;\n readonly totalFees: bigint;\n readonly aborted: boolean;\n /**\n * The compute phase. A skipped one is `{ skipped: true, success: false }`, and so is the\n * missing phase of a transaction type that has none (storage, split, merge).\n */\n readonly compute: {\n readonly skipped: boolean;\n readonly success: boolean;\n readonly exitCode?: number;\n };\n readonly action?: {\n readonly success: boolean;\n readonly resultCode: number;\n readonly skippedActions: number;\n readonly msgsCreated: number;\n };\n /** The bounce phase's type (`ok`, `nofunds`, `negfunds`), when there was one. */\n readonly bounce?: string;\n /**\n * The account's status before and after, when the indexer writes them: the proof reads\n * a wallet's earlier incarnations from them.\n */\n readonly origStatus?: V3AccountStatus;\n readonly endStatus?: V3AccountStatus;\n readonly inMsg: V3Message | null;\n readonly outMsgs: readonly V3Message[];\n}\n\nexport interface V3Trace {\n /** Lower-case hex. */\n readonly traceId: string;\n readonly complete: boolean;\n readonly transactions: readonly V3Transaction[];\n}\n\n/** One page of an account's history, newest first. */\nexport interface TransactionPage {\n /** The page's committed transactions (not yet finalized ones are left out). */\n readonly transactions: V3Transaction[];\n /**\n * The `endLt` of the next page, when the indexer's page was full. Counted on the\n * page as the indexer served it, before the transactions not yet final were left out, so\n * a pager never stops early and never skips an older final transaction.\n */\n readonly next?: bigint;\n}\n\n/** A jetton master's TEP-64 content cell, as `get_jetton_data` returns it (entry 3). */\nexport type JettonContentCell =\n | { readonly kind: 'cell'; readonly boc: string }\n /** Beyond one message's limits: never decoded. */\n | { readonly kind: 'oversized' };\n\nexport interface JettonData {\n readonly exitCode: number;\n /** Absent when the get-method failed or its fourth entry is not a cell. */\n readonly content?: JettonContentCell;\n}\n\n/**\n * A token's metadata as the indexer fetched it (for a jetton: its off-chain JSON). `null`\n * marks a field the token's metadata holds but that is not one (ill-typed, out of range or\n * over its limit): the token's own data, which every endpoint agrees on, for the caller to\n * judge only if it uses that field.\n */\nexport interface TokenInfo {\n readonly symbol?: string | null;\n /** 0..255, in decimal. */\n readonly decimals?: string | null;\n readonly name?: string;\n}\n\n/** Whether two block ids name the same block: workchain, shard, seqno and both hashes. */\nexport const sameBlock = (a: BlockId, b: BlockId): boolean =>\n a.workchain === b.workchain &&\n a.shard === b.shard &&\n a.seqno === b.seqno &&\n a.rootHash === b.rootHash &&\n a.fileHash === b.fileHash;\n\n// ---- parsers ------------------------------------------------------------------------------\n// A field a verdict reads is required, or optional and then well typed; a missing or\n// ill-typed one is malformed (retryable), never `false` or `0`. Every endpoint running\n// the same indexer would agree on a drifted answer, so a quorum does not catch what the\n// parser lets through: a truncated answer read as `false` would end a delivered transfer\n// `failed`, and a caller's retry with a new seqno would pay twice.\n\nfunction blockIdOf(value: unknown, route: string): BlockId {\n const v = need(record(value), route);\n return {\n workchain: need(int(v.workchain), route),\n shard: need(shardOf(v.shard), route),\n seqno: need(int(v.seqno), route),\n rootHash: need(hashHex(v.root_hash), route),\n fileHash: need(hashHex(v.file_hash), route),\n };\n}\n\nfunction v2Result(body: unknown, route: string): unknown {\n if (!isRecord(body) || body.ok !== true || !('result' in body)) throw malformed(route);\n return body.result;\n}\n\n/** A cell's base64 BOC, within one message's limits. */\nfunction cellOf(value: unknown, route: string): string {\n const boc = need(str(value), route);\n if (!bocWithinLimits(boc)) throw malformed(route);\n return boc;\n}\n\nfunction stackOf(value: unknown, route: string): StackEntry[] {\n if (!Array.isArray(value)) throw malformed(route);\n return value.map((entry): StackEntry => {\n if (!Array.isArray(entry) || entry.length !== 2) throw malformed(route);\n const [type, data] = entry as [unknown, unknown];\n if (type === 'num') {\n const text = need(str(data), route);\n const negative = text.startsWith('-');\n const digits = negative ? text.slice(1) : text;\n // A TVM integer has 257 bits (65 hex digits); bounded before `BigInt`.\n if (!/^0x[0-9a-fA-F]{1,80}$/.test(digits)) throw malformed(route);\n const value = BigInt(digits);\n return { type: 'num', value: negative ? -value : value };\n }\n if (\n type === 'cell' ||\n type === 'slice' ||\n type === 'tvm.Cell' ||\n type === 'tvm.Slice'\n ) {\n return { type: 'cell', boc: cellOf(isRecord(data) ? data.bytes : data, route) };\n }\n return { type: 'other' };\n });\n}\n\nfunction messageOf(value: unknown, route: string): V3Message {\n const m = need(record(value), route);\n const content = optional(m.message_content, record, route);\n const source = rawOf(m.source ?? null);\n const destination = rawOf(m.destination ?? null);\n if (source === undefined || destination === undefined) throw malformed(route);\n const hashNorm = optional(m.hash_norm, hashHex, route);\n const bodyHash = content ? optional(content.hash, hashHex, route) : undefined;\n const body = content ? optional(content.body, str, route) : undefined;\n return {\n hash: need(hashHex(m.hash), route),\n ...(hashNorm !== undefined ? { hashNorm } : {}),\n source,\n destination,\n value: optional(m.value, coins, route) ?? null,\n bounce: optional(m.bounce, bool, route) ?? null,\n bounced: optional(m.bounced, bool, route) ?? null,\n ...(bodyHash !== undefined ? { bodyHash } : {}),\n ...(body !== undefined ? { body } : {}),\n };\n}\n\n/** Transaction types with a compute phase (block.tlb `trans_ord`, `trans_tick_tock`). */\nconst COMPUTING: ReadonlySet<string> = new Set(['ord', 'tick_tock']);\n/** Bounce phase types (block.tlb `tr_phase_bounce_ok`, `_nofunds`, `_negfunds`). */\nconst BOUNCES: ReadonlySet<string> = new Set(['ok', 'nofunds', 'negfunds']);\n\n/** The compute phase; an ord or tick-tock transaction always has one. */\nfunction computeOf(d: Json, route: string): V3Transaction['compute'] {\n const type = need(str(d.type), route);\n if (d.compute_ph === undefined || d.compute_ph === null) {\n if (COMPUTING.has(type)) throw malformed(route);\n return { skipped: true, success: false };\n }\n const c = need(record(d.compute_ph), route);\n const skipped = need(bool(c.skipped), route);\n // A skipped phase (`tr_phase_compute_skipped`) carries only its reason.\n const success = skipped\n ? (optional(c.success, bool, route) ?? false)\n : need(bool(c.success), route);\n const exitCode = optional(c.exit_code, int, route);\n return { skipped, success, ...(exitCode !== undefined ? { exitCode } : {}) };\n}\n\n/** The action phase, when there was one, with every field a verdict reads. */\nfunction actionOf(value: unknown, route: string): V3Transaction['action'] {\n const a = optional(value, record, route);\n if (!a) return undefined;\n return {\n success: need(bool(a.success), route),\n resultCode: need(int(a.result_code), route),\n skippedActions: need(int(a.skipped_actions), route),\n msgsCreated: need(int(a.msgs_created), route),\n };\n}\n\n/** The bounce phase's type, one of block.tlb's three. */\nfunction bounceOf(value: unknown, route: string): string | undefined {\n const b = optional(value, record, route);\n if (!b) return undefined;\n const type = need(str(b.type), route);\n if (!BOUNCES.has(type)) throw malformed(route);\n return type;\n}\n\nconst V3_STATUSES: ReadonlySet<unknown> = new Set([\n 'nonexist',\n 'uninit',\n 'active',\n 'frozen',\n]);\n\n/** A v3 account status: one of the four (well typed when present). */\nconst accountStatus = (value: unknown): V3AccountStatus | undefined =>\n V3_STATUSES.has(value) ? (value as V3AccountStatus) : undefined;\n\nexport function transactionOf(value: unknown, route: string): V3Transaction {\n const t = need(record(value), route);\n const d = need(record(t.description), route);\n const action = actionOf(d.action, route);\n const bounce = bounceOf(d.bounce, route);\n const origStatus = optional(t.orig_status, accountStatus, route);\n const endStatus = optional(t.end_status, accountStatus, route);\n return {\n hash: need(hashHex(t.hash), route),\n lt: need(u64(t.lt), route),\n account: need(rawOf(t.account) ?? undefined, route),\n now: need(int(t.now), route),\n mcSeqno: need(int(t.mc_block_seqno), route),\n traceId: need(hashHex(t.trace_id), route),\n totalFees: need(coins(t.total_fees), route),\n aborted: need(bool(d.aborted), route),\n compute: computeOf(d, route),\n ...(action ? { action } : {}),\n ...(bounce !== undefined ? { bounce } : {}),\n ...(origStatus !== undefined ? { origStatus } : {}),\n ...(endStatus !== undefined ? { endStatus } : {}),\n inMsg:\n t.in_msg === null || t.in_msg === undefined ? null : messageOf(t.in_msg, route),\n outMsgs: need(Array.isArray(t.out_msgs) ? t.out_msgs : undefined, route).map((m) =>\n messageOf(m, route),\n ),\n };\n}\n\n/**\n * Whether a v3 `finality` is the masterchain's: live answers name the state (`finalized`),\n * the swagger declares an int enum (0 pending, 1 confirmed, 2 finalized). An indexer that\n * writes none is read as before: every transaction still needs its masterchain block.\n */\nfunction finalized(f: unknown): boolean {\n return f === undefined || f === null || f === 'finalized' || f === 2;\n}\n\n/**\n * Only chain evidence counts: an emulated (pending) transaction is toncenter's guess, and\n * one not yet `finalized` (a shard block the masterchain has not committed) is not final;\n * either reads as \"not yet\", and a trace holding one is incomplete.\n */\nconst committed = (value: unknown): boolean =>\n !(isRecord(value) && (value.emulated === true || !finalized(value.finality)));\n\n/**\n * A v3 transaction list, emulated or not yet finalized ones dropped; more than `limit`\n * items is malformed.\n */\nfunction transactionsOf(body: unknown, route: string, limit: number): V3Transaction[] {\n if (\n !isRecord(body) ||\n !Array.isArray(body.transactions) ||\n body.transactions.length > limit\n ) {\n throw malformed(route);\n }\n return body.transactions.filter(committed).map((t) => transactionOf(t, route));\n}\n\n/** A block header, parsed. */\nfunction headerOf(result: unknown, route: string): BlockHeader {\n const h = need(record(result), route);\n return {\n id: blockIdOf(h.id, route),\n globalId: need(int(h.global_id), route),\n genUtime: need(int(h.gen_utime), route),\n prev: Array.isArray(h.prev_blocks)\n ? h.prev_blocks.map((p) => blockIdOf(p, route))\n : [],\n };\n}\n\n/**\n * The one parser of a masterchain block id's seqno, for the proofs' head reads and the\n * driver's health probes alike (a node's height is a claim): only a\n * masterchain id (workchain -1), and only within a masterchain seqno's range (u32).\n */\nfunction masterchainIdSeqno(value: unknown, route: string): number {\n const id = record(value);\n const seqno = int(id?.seqno);\n if (id?.workchain !== -1 || seqno === undefined || seqno < 0 || seqno > 0xffff_ffff) {\n throw malformed(route);\n }\n return seqno;\n}\n\n/** The newest masterchain block's seqno in a v2 `getMasterchainInfo` answer body. */\nexport function masterchainInfoSeqno(body: unknown, route: string): number {\n return masterchainIdSeqno(record(v2Result(body, route))?.last, route);\n}\n\n/**\n * A v3 `masterchainInfo` answer body: the indexed head's seqno (`masterchainSeqnoOf`) and the\n * network's global id, an int32.\n */\nexport function indexedHeadOf(\n body: unknown,\n route: string,\n): { readonly seqno: number; readonly globalId: number } {\n const last = record(record(body)?.last);\n const globalId = int(last?.global_id);\n if (globalId === undefined || globalId < -(2 ** 31) || globalId > 2 ** 31 - 1) {\n throw malformed(route);\n }\n return { seqno: masterchainIdSeqno(last, route), globalId };\n}\n\n/** A config param's cell (base64 BOC, within one message's limits) in a v2 answer body. */\nexport function configParamBoc(body: unknown, route: string): string {\n const result = v2Result(body, route);\n return cellOf(\n need(isRecord(result) ? record(result.config) : undefined, route).bytes,\n route,\n );\n}\n\n/** An account state, parsed. */\nfunction accountOf(result: unknown, route: string): AccountState {\n const r = need(record(result), route);\n const state = r.state;\n const status: AccountStatus | undefined =\n state === 'active' || state === 'frozen'\n ? state\n : state === 'uninitialized' || state === 'uninit' || state === 'nonexist'\n ? 'uninitialized'\n : undefined;\n const last = transactionIdOf(r.last_transaction_id, route);\n const block = blockIdOf(r.block_id, route);\n return {\n balance: need(coins(r.balance), route),\n status: need(status, route),\n lastLt: last.lt,\n lastHash: last.hash,\n blockSeqno: block.seqno,\n block,\n syncUtime: need(int(r.sync_utime), route),\n };\n}\n\n/** A v2 `internal.transactionId`: lt and hash. */\nfunction transactionIdOf(value: unknown, route: string): TransactionId {\n const id = need(record(value), route);\n return { lt: need(u64(id.lt), route), hash: need(hashHex(id.hash), route) };\n}\n\nfunction runOf(result: unknown, route: string): RunResult {\n if (!isRecord(result)) throw malformed(route);\n return {\n exitCode: need(int(result.exit_code), route),\n stack: stackOf(result.stack, route),\n };\n}\n\n/** A v2 `runGetMethod` answer body, parsed; for callers' quorum predicates. */\nexport function runResultOf(body: unknown): RunResult {\n return runOf(v2Result(body, '/runGetMethod'), '/runGetMethod');\n}\n\n/** A get-method's result with its block and the account's last transaction. */\nfunction boundRunOf(result: unknown, route: string): BoundRunResult {\n const r = need(record(result), route);\n return {\n ...runOf(result, route),\n block: blockIdOf(r.block_id, route),\n lastTransaction: transactionIdOf(r.last_transaction_id, route),\n };\n}\n\n/** A v2 `runGetMethod` answer body with its binding, parsed; for callers' quorum keys. */\nexport function boundRunResultOf(body: unknown): BoundRunResult {\n return boundRunOf(v2Result(body, '/runGetMethod'), '/runGetMethod');\n}\n\n/**\n * A v2 `getTransactions` result: at most `limit` rows, each with its id and a raw cell\n * within an account state's limits, checked in the BOC header before anyone decodes it.\n * What the rows are is for the caller to prove by their hashes.\n */\nfunction rawTransactionsOf(\n result: unknown,\n route: string,\n limit: number,\n): RawTransaction[] {\n if (!Array.isArray(result) || result.length > limit) throw malformed(route);\n return result.map((item): RawTransaction => {\n const row = need(record(item), route);\n const { lt, hash } = transactionIdOf(row.transaction_id, route);\n const boc = need(str(row.data), route);\n if (bocSize(boc, MAX_STATE_CELLS, MAX_STATE_BOC_LENGTH) !== 'ok')\n throw malformed(route);\n return { lt, hash, boc };\n });\n}\n\n/**\n * `get_jetton_data`'s exit code and content cell (TEP-74: total supply, mintable, admin,\n * content, wallet code). Only the content is read, so no other entry (a supply, a large\n * wallet code) is held to anything. A content cell beyond an account state's limits\n * (`MAX_STATE_CELLS`, `MAX_STATE_BOC_LENGTH`) is reported `oversized`, never decoded:\n * no chain content is that large, and a caller that agrees on it under the proof quorum\n * takes it as the token's own, not as an answer to retry forever.\n * A stack that is not one, or a content entry without a BOC header, is malformed.\n */\nfunction jettonDataFrom(result: unknown, route: string): JettonData {\n const r = need(record(result), route);\n const exitCode = need(int(r.exit_code), route);\n const stack = need(Array.isArray(r.stack) ? r.stack : undefined, route);\n if (exitCode !== 0) return { exitCode };\n const entry: unknown = stack[3];\n if (entry === undefined) return { exitCode };\n if (!Array.isArray(entry) || entry.length !== 2) throw malformed(route);\n const [type, data] = entry as [unknown, unknown];\n if (\n type !== 'cell' &&\n type !== 'slice' &&\n type !== 'tvm.Cell' &&\n type !== 'tvm.Slice'\n ) {\n return { exitCode };\n }\n const boc = need(str(isRecord(data) ? data.bytes : data), route);\n const size = bocSize(boc, MAX_STATE_CELLS, MAX_STATE_BOC_LENGTH);\n if (size === 'malformed') throw malformed(route);\n return {\n exitCode,\n content: size === 'oversized' ? { kind: 'oversized' } : { kind: 'cell', boc },\n };\n}\n\n/** A v2 `get_jetton_data` answer body, parsed; for callers' quorum keys. */\nexport function jettonDataOf(body: unknown): JettonData {\n return jettonDataFrom(v2Result(body, '/runGetMethod'), '/runGetMethod');\n}\n\n/**\n * A trace, parsed: its transactions in trace order, each listed once under its own hash\n * (a transaction counted twice would count its transfer twice). An emulated or not yet\n * finalized one is left out and leaves the trace incomplete.\n */\nfunction traceOf(value: unknown, route: string): V3Trace {\n const t = need(record(value), route);\n const info = isRecord(t.trace_info) ? t.trace_info : {};\n const txs = need(record(t.transactions), route);\n const order = need(\n Array.isArray(t.transactions_order) ? t.transactions_order : undefined,\n route,\n );\n const listed = new Set<string>();\n const entries = order.map((item) => {\n const key = need(str(item), route);\n const hash = need(hashHex(key), route);\n if (listed.has(hash) || !Object.hasOwn(txs, key)) throw malformed(route);\n listed.add(hash);\n const value = txs[key];\n if (!committed(value)) return undefined;\n const tx = transactionOf(value, route);\n if (tx.hash !== hash) throw malformed(route);\n return tx;\n });\n return {\n traceId: need(hashHex(t.trace_id), route),\n complete:\n t.is_incomplete === false &&\n info.trace_state === 'complete' &&\n entries.every((tx) => tx !== undefined),\n transactions: entries.filter((tx): tx is V3Transaction => tx !== undefined),\n };\n}\n\n/**\n * One `/metadata` token entry, the indexer's copy of the token's\n * off-chain JSON. Only the fields a caller may use are read, and each as the token wrote it:\n * a symbol or decimals that are not one are `null` (the token's own data, which every\n * endpoint agrees on, so never malformed and retried forever); a name beyond its limit is\n * absent. toncenter writes the JSON's decimals under `extra` (live, 2026-09-28).\n */\nfunction tokenInfoOf(token: Json): TokenInfo {\n const info: { symbol?: string | null; decimals?: string | null; name?: string } = {};\n const { symbol, name, extra } = token;\n if (symbol !== undefined && symbol !== null) {\n info.symbol =\n typeof symbol === 'string' && symbol.length <= CONTENT_LIMITS.symbol\n ? symbol\n : null;\n }\n if (typeof name === 'string' && name.length <= CONTENT_LIMITS.name) info.name = name;\n if (extra !== undefined && extra !== null) {\n const decimals = isRecord(extra) ? extra.decimals : null;\n const value = int(decimals);\n if (!isRecord(extra)) info.decimals = null;\n else if (decimals !== undefined && decimals !== null) {\n info.decimals =\n value !== undefined && value >= 0 && value <= 255 ? String(value) : null;\n }\n }\n return info;\n}\n\n// ---- quorum facts -------------------------------------------------------------------------\n// Each method's key is its parsed value: honest endpoints that format a fact\n// differently (a number or a string, `uninit` or `uninitialized`, v2's `@extra`) agree, and\n// a key that throws is a disagreement. A key covers every field a verdict reads;\n// message bodies are left out (their serialization varies) and are bound to the keyed body\n// hash where they are decoded (`messageBody`). The transport compares keys as canonical\n// JSON, bigints included.\n\n/** Every fact of a transaction a verdict or a decoding reads, bodies as their hashes. */\nfunction factsOf(tx: V3Transaction): unknown {\n const { inMsg, outMsgs, ...facts } = tx;\n const message = (m: V3Message | null) => {\n if (!m) return null;\n const { body: _body, ...rest } = m;\n return rest;\n };\n return { ...facts, inMsg: message(inMsg), outMsgs: outMsgs.map(message) };\n}\n\n/** A trace's id, completeness and every transaction's facts, in trace order. */\nfunction traceFacts(trace: V3Trace | null): unknown {\n return trace && { ...trace, transactions: trace.transactions.map(factsOf) };\n}\n\n// ---- the client ---------------------------------------------------------------------------\n\n/** Validates an answer body; `route` labels a malformed one. */\ntype Parse<T> = (body: unknown, route: string) => T;\n\nconst itself = (value: unknown): unknown => value;\n\n/** The most transactions a message hash can name (a few forks of one external, retried). */\nconst BY_MESSAGE_LIMIT = 8;\n\nexport class TonApi {\n constructor(\n private readonly rpc: Transport,\n private readonly indexer: Transport,\n ) {}\n\n /** The rpc transport's lag tolerance, as the pool resolved it; proofs' last skew. */\n get lagTolerance(): number {\n return this.rpc.maxLagBlocks;\n }\n\n async #call(\n transport: Transport,\n request: HttpRequest,\n tags: TonCallTags,\n quorumKey: (result: unknown) => unknown,\n ): Promise<unknown> {\n // The caller's key (a predicate) replaces the call's consensus facts.\n const key = tags.quorumKey ?? quorumKey;\n const options: CallOptions = {\n ...tags,\n exactIntegers: true,\n ...(tags.quorum !== undefined ? { quorumKey: key } : {}),\n };\n try {\n return await transport.http<unknown>(request, options);\n } catch (error) {\n // On a proof or monitor read, any definitive RPC error,\n // whatever its text (a block the endpoint does not hold yet, pruned state, a provider\n // that answers 4xx rather than toncenter's 500), decides nothing. TON's negatives come\n // only from attested state, never from an error, so no error text is read here.\n // A misconfigured endpoint (`PROVIDER_MISCONFIGURED`) still surfaces as the\n // configuration error it is.\n if (\n (tags.purpose === 'proof' || tags.purpose === 'monitor') &&\n isCryptoAioError(error, 'RPC_ERROR') &&\n !error.retryable\n ) {\n throw new ProviderError(\n 'PROVIDER_UNAVAILABLE',\n `${request.route ?? 'a state read'} was refused; deciding nothing`,\n { retryable: true, cause: error },\n );\n }\n throw error;\n }\n }\n\n /**\n * One request whose answer `parse` validates. Under a quorum, each endpoint's answer is\n * keyed on `facts` of its parsed value: the fields a verdict reads, never the envelope.\n */\n async #read<T>(\n transport: Transport,\n request: HttpRequest & { readonly route: string },\n tags: TonCallTags,\n parse: Parse<T>,\n facts: (value: T) => unknown = itself,\n ): Promise<T> {\n const body = await this.#call(transport, request, tags, (answer) =>\n facts(parse(answer, 'quorum')),\n );\n return parse(body, request.route);\n }\n\n #v2<T>(\n route: string,\n query: Record<string, string>,\n tags: TonCallTags,\n parse: Parse<T>,\n facts?: (value: T) => unknown,\n ): Promise<T> {\n return this.#read(\n this.rpc,\n { method: 'GET', path: route, query, route },\n tags,\n (body, label) => parse(v2Result(body, label), label),\n facts,\n );\n }\n\n #v2Post<T>(\n route: string,\n body: Json,\n tags: TonCallTags,\n parse: Parse<T>,\n facts?: (value: T) => unknown,\n ): Promise<T> {\n return this.#read(\n this.rpc,\n { method: 'POST', path: route, body, route },\n tags,\n (answer, label) => parse(v2Result(answer, label), label),\n facts,\n );\n }\n\n #v3<T>(\n route: string,\n query: Record<string, string>,\n tags: TonCallTags,\n parse: Parse<T>,\n facts?: (value: T) => unknown,\n ): Promise<T> {\n return this.#read(\n this.indexer,\n { method: 'GET', path: route, query, route },\n tags,\n parse,\n facts,\n );\n }\n\n /** The newest masterchain block the liteserver knows. */\n masterchainHead(tags: TonCallTags): Promise<number> {\n return this.#v2('/getMasterchainInfo', {}, tags, (result, route) =>\n masterchainIdSeqno(record(result)?.last, route),\n );\n }\n\n /**\n * Whether the liteserver holds masterchain block `seqno` (every masterchain block is\n * final once it exists). Under a quorum the key is this predicate: endpoints\n * past `seqno` agree whatever their heads.\n */\n reachedMasterchain(seqno: number, tags: TonCallTags): Promise<boolean> {\n return this.#v2(\n '/getMasterchainInfo',\n {},\n tags,\n (result, route) => masterchainIdSeqno(record(result)?.last, route) >= seqno,\n );\n }\n\n /** A block's header; `seqno` above the endpoint's head fails (retryable). */\n blockHeader(\n block: { readonly workchain: number; readonly shard: string; readonly seqno: number },\n tags: TonCallTags,\n ): Promise<BlockHeader> {\n return this.#v2(\n '/getBlockHeader',\n {\n workchain: String(block.workchain),\n shard: block.shard,\n seqno: String(block.seqno),\n },\n tags,\n headerOf,\n // The facts a proof reads; `prev_blocks` only feeds `getBlock`'s parent hash (a `read`).\n ({ prev: _prev, ...facts }) => facts,\n );\n }\n\n masterchainHeader(seqno: number, tags: TonCallTags): Promise<BlockHeader> {\n return this.blockHeader({ workchain: -1, shard: MASTERCHAIN_SHARD, seqno }, tags);\n }\n\n /** The shard blocks masterchain block `seqno` commits. */\n shards(seqno: number, tags: TonCallTags): Promise<BlockId[]> {\n return this.#v2('/getShards', { seqno: String(seqno) }, tags, (result, route) =>\n need(\n isRecord(result) && Array.isArray(result.shards) ? result.shards : undefined,\n route,\n ).map((s) => blockIdOf(s, route)),\n );\n }\n\n /** A config param's cell (base64 BOC, within one message's limits). */\n configParam(param: number, tags: TonCallTags, seqno?: number): Promise<string> {\n return this.#v2(\n '/getConfigParam',\n {\n param: String(param),\n ...(seqno !== undefined ? { seqno: String(seqno) } : {}),\n },\n tags,\n (result, route) =>\n cellOf(\n need(isRecord(result) ? record(result.config) : undefined, route).bytes,\n route,\n ),\n );\n }\n\n /** An account's state, at masterchain block `seqno` when given. */\n account(address: string, tags: TonCallTags, seqno?: number): Promise<AccountState> {\n return this.#v2(\n '/getAddressInformation',\n { address, ...(seqno !== undefined ? { seqno: String(seqno) } : {}) },\n tags,\n accountOf,\n // `sync_utime` is when the endpoint answered, not a fact of the state at that block.\n ({ syncUtime: _syncUtime, ...facts }) => facts,\n );\n }\n\n /** A get-method, at masterchain block `seqno` when given. */\n runGetMethod(\n address: string,\n method: string,\n stack: readonly (readonly [string, string])[],\n tags: TonCallTags,\n seqno?: number,\n ): Promise<RunResult> {\n return this.#v2Post(\n '/runGetMethod',\n { address, method, stack, ...(seqno !== undefined ? { seqno } : {}) },\n tags,\n runOf,\n );\n }\n\n /**\n * A get-method at masterchain block `seqno`, with the block and the account's last\n * transaction the answer names: a caller binds the result to the state it\n * read, since an endpoint that drops the block answers at its own latest state.\n */\n runGetMethodAt(\n address: string,\n method: string,\n stack: readonly (readonly [string, string])[],\n tags: TonCallTags,\n seqno: number,\n ): Promise<BoundRunResult> {\n return this.#v2Post(\n '/runGetMethod',\n { address, method, stack, seqno },\n tags,\n boundRunOf,\n );\n }\n\n /**\n * Up to `limit` of an account's transactions (a raw address) from `from` back, as the\n * liteserver serves them (v2 `getTransactions`), each with its raw cell. Under a quorum\n * the endpoints agree on the ids; the cells are the caller's to hash.\n */\n async rawTransactions(\n address: string,\n from: TransactionId,\n limit: number,\n tags: TonCallTags,\n ): Promise<RawTransaction[]> {\n rawAddress(address);\n return this.#v2(\n '/getTransactions',\n {\n address,\n lt: from.lt.toString(),\n hash: from.hash,\n limit: String(limit),\n // A walk may reach old history, which only archive liteservers hold.\n archival: 'true',\n },\n tags,\n (result, route) => rawTransactionsOf(result, route, limit),\n (rows) => rows.map(({ lt, hash }) => ({ lt, hash })),\n );\n }\n\n /** A jetton master's `get_jetton_data`: its exit code and content cell (`jettonDataOf`). */\n jettonData(master: string, tags: TonCallTags, seqno?: number): Promise<JettonData> {\n return this.#v2Post(\n '/runGetMethod',\n {\n address: master,\n method: 'get_jetton_data',\n stack: [],\n ...(seqno !== undefined ? { seqno } : {}),\n },\n tags,\n jettonDataFrom,\n );\n }\n\n /** The emulated source fees of an external message body (signature check skipped). */\n estimateFee(\n request: {\n readonly address: string;\n readonly body: string;\n readonly initCode?: string;\n readonly initData?: string;\n },\n tags: TonCallTags,\n ): Promise<SourceFees> {\n return this.#v2Post(\n '/estimateFee',\n {\n address: request.address,\n body: request.body,\n init_code: request.initCode ?? '',\n init_data: request.initData ?? '',\n ignore_chksig: true,\n },\n tags,\n (result, route): SourceFees => {\n // toncenter writes these fees as JSON numbers: read exactly, as coins.\n const fees = need(\n isRecord(result) ? record(result.source_fees) : undefined,\n route,\n );\n return {\n importFee: need(coins(fees.in_fwd_fee), route),\n storageFee: need(coins(fees.storage_fee), route),\n gasFee: need(coins(fees.gas_fee), route),\n forwardFee: need(coins(fees.fwd_fee), route),\n };\n },\n );\n }\n\n /** Sends an external message; resolves with the node's hashes (hex). */\n send(boc: string, tags: TonCallTags): Promise<SentMessage> {\n return this.#v2Post('/sendBocReturnHash', { boc }, tags, (result, route) => {\n const r = need(record(result), route);\n return {\n hash: need(hashHex(r.hash), route),\n hashNorm: need(hashHex(r.hash_norm), route),\n };\n });\n }\n\n /** The indexer's newest indexed masterchain block and the network's global id. */\n indexerHead(\n tags: TonCallTags,\n ): Promise<{ readonly seqno: number; readonly globalId: number }> {\n return this.#v3('/masterchainInfo', {}, tags, indexedHeadOf);\n }\n\n /**\n * Whether the indexer has indexed masterchain block `seqno`. Under a quorum the key is\n * this predicate: indexers past `seqno` agree whatever their heads.\n */\n indexerReached(seqno: number, tags: TonCallTags): Promise<boolean> {\n return this.#v3(\n '/masterchainInfo',\n {},\n tags,\n (body, route) => indexedHeadOf(body, route).seqno >= seqno,\n );\n }\n\n /** The seqno of the masterchain block with this root hash (hex); null if unknown. */\n masterchainSeqnoOf(rootHash: string, tags: TonCallTags): Promise<number | null> {\n const wanted = hashHex(rootHash);\n return this.#v3(\n '/blocks',\n { workchain: '-1', root_hash: rootHash, limit: '1' },\n tags,\n (body, route) => {\n if (!isRecord(body) || !Array.isArray(body.blocks) || body.blocks.length > 1) {\n throw malformed(route);\n }\n for (const item of body.blocks) {\n const block = need(record(item), route);\n const workchain = need(int(block.workchain), route);\n // A lookup by id keeps only the block asked for.\n if (workchain === -1 && need(hashHex(block.root_hash), route) === wanted) {\n return need(int(block.seqno), route);\n }\n }\n return null;\n },\n );\n }\n\n /**\n * Committed transactions whose inbound message has this raw or normalized hash (hex).\n * Only those; a dropped filter's strangers read as \"none yet\".\n */\n transactionsByMessage(hash: string, tags: TonCallTags): Promise<V3Transaction[]> {\n const wanted = hashHex(hash);\n return this.#v3(\n '/transactionsByMessage',\n { msg_hash: hash, direction: 'in', limit: String(BY_MESSAGE_LIMIT) },\n tags,\n (body, route) =>\n transactionsOf(body, route, BY_MESSAGE_LIMIT).filter(\n (tx) =>\n wanted !== undefined &&\n tx.inMsg !== null &&\n (tx.inMsg.hash === wanted || tx.inMsg.hashNorm === wanted),\n ),\n (txs) => txs.map(factsOf),\n );\n }\n\n /** The committed transaction with this hash; null when the indexer has none (yet). */\n transaction(hash: string, tags: TonCallTags): Promise<V3Transaction | null> {\n const wanted = hashHex(hash);\n return this.#v3(\n '/transactions',\n { hash, limit: '1' },\n tags,\n (body, route) =>\n transactionsOf(body, route, 1).find((tx) => tx.hash === wanted) ?? null,\n (tx) => (tx ? factsOf(tx) : null),\n );\n }\n\n /**\n * One page of an account's transactions (a raw address), newest first, at or below\n * `endLt` when given, with the next page's `endLt` when this one was full. An answer that\n * breaks the query (another account, an lt out of order or above `endLt`, more than\n * `limit`), counting the transactions not yet final, is malformed: a verdict reads it as\n * the account's history. `next` comes from the page as served, so a page whose\n * newest transactions are not yet final still leads to the older ones.\n */\n async accountTransactionsPage(\n account: string,\n options: { readonly limit: number; readonly endLt?: bigint },\n tags: TonCallTags,\n ): Promise<TransactionPage> {\n const wanted = rawAddress(account);\n return this.#v3(\n '/transactions',\n {\n account,\n limit: String(options.limit),\n sort: 'desc',\n ...(options.endLt !== undefined ? { end_lt: options.endLt.toString() } : {}),\n },\n tags,\n (body, route): TransactionPage => {\n if (\n !isRecord(body) ||\n !Array.isArray(body.transactions) ||\n body.transactions.length > options.limit\n ) {\n throw malformed(route);\n }\n const transactions: V3Transaction[] = [];\n let below = options.endLt === undefined ? undefined : options.endLt + 1n;\n let last: bigint | undefined;\n for (const item of body.transactions) {\n const t = need(record(item), route);\n const lt = need(u64(t.lt), route);\n if (rawOf(t.account) !== wanted || (below !== undefined && lt >= below)) {\n throw malformed(route);\n }\n below = lt;\n last = lt;\n if (committed(item)) transactions.push(transactionOf(item, route));\n }\n const full = body.transactions.length === options.limit;\n return {\n transactions,\n ...(full && last !== undefined && last > 0n ? { next: last - 1n } : {}),\n };\n },\n (page) => ({\n transactions: page.transactions.map(factsOf),\n next: page.next ?? null,\n }),\n );\n }\n\n /** An account's committed transactions: one page (`accountTransactionsPage`). */\n async accountTransactions(\n account: string,\n options: { readonly limit: number; readonly endLt?: bigint },\n tags: TonCallTags,\n ): Promise<V3Transaction[]> {\n return (await this.accountTransactionsPage(account, options, tags)).transactions;\n }\n\n /** The trace that holds this transaction; null when the indexer has none (yet). */\n trace(txHash: string, tags: TonCallTags): Promise<V3Trace | null> {\n const wanted = hashHex(txHash);\n return this.#v3(\n '/traces',\n { tx_hash: txHash, include_actions: 'false', limit: '1' },\n tags,\n (body, route) => {\n if (!isRecord(body) || !Array.isArray(body.traces) || body.traces.length > 1) {\n throw malformed(route);\n }\n for (const value of body.traces) {\n const trace = traceOf(value, route);\n // A lookup by id keeps only the trace asked for.\n if (trace.transactions.some((tx) => tx.hash === wanted)) return trace;\n }\n return null;\n },\n traceFacts,\n );\n }\n\n /**\n * The indexer's metadata for a raw token address: its first valid jetton entry\n * (`tokenInfoOf`). Undefined while the indexer has none: no entry (an unknown address, a\n * lagging index or a dropped filter all read alike), an entry not indexed yet, or no\n * valid metadata fetched (yet), so a caller never takes it for a definitive answer.\n */\n async tokenInfo(address: string, tags: TonCallTags): Promise<TokenInfo | undefined> {\n const wanted = rawAddress(address);\n return this.#v3(\n '/metadata',\n { address },\n tags,\n (body, route) => {\n if (!isRecord(body)) throw malformed(route);\n for (const [key, value] of Object.entries(body)) {\n // The answer is keyed by address; a lookup by id reads only its own entry.\n if (rawOf(key) !== wanted) continue;\n const entry = need(record(value), route);\n if (optional(entry.is_indexed, bool, route) === false) return undefined;\n const info =\n optional(\n entry.token_info,\n (v) => (Array.isArray(v) ? v : undefined),\n route,\n ) ?? [];\n for (const item of info) {\n const token = need(record(item), route);\n const type = optional(token.type, str, route);\n if (\n token.valid === false ||\n (type !== undefined && type !== 'jetton_masters')\n ) {\n continue;\n }\n return tokenInfoOf(token);\n }\n }\n return undefined;\n },\n (info) => info ?? null,\n );\n }\n}\n"]}
@@ -0,0 +1,18 @@
1
+ import type { Broadcaster, TxBuilder } from '../../core/driver/types';
2
+ import { CHAIN_TIME_TOLERANCE } from './network';
3
+ import { type TonContext } from './reader';
4
+ /** The id of the one signing request (1 × ed25519 over the signing cell hash). */
5
+ export declare const REQUEST_ID = "wallet";
6
+ /** How far an endpoint's `sync_utime` may be from the local clock, in seconds. */
7
+ export { CHAIN_TIME_TOLERANCE };
8
+ /**
9
+ * How long after `assemble` a first send may skip the replay guard, in milliseconds. A
10
+ * normal transfer sends milliseconds after `assemble`. A first send that comes later (a
11
+ * slow store, a paused process) may follow another process's send of the same bytes
12
+ * through a shared store, and a wallet reset in between would make an unguarded late send
13
+ * pay twice, so it is guarded like a resend. The bound stays well below any sane
14
+ * `lifecycle.leaseMs`; a slower first send only costs one guard.
15
+ */
16
+ export declare const FIRST_SEND_MS = 2000;
17
+ export declare function createTonBuilder(ctx: TonContext): TxBuilder;
18
+ export declare function createTonBroadcaster(ctx: TonContext): Broadcaster;