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,595 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isVote = void 0;
4
+ exports.parseTransaction = parseTransaction;
5
+ exports.decodeTransaction = decodeTransaction;
6
+ exports.touches = touches;
7
+ exports.tokenTransfersLanded = tokenTransfersLanded;
8
+ const json_1 = require("../../core/util/json");
9
+ const programs_1 = require("./programs");
10
+ const rpc_1 = require("./rpc");
11
+ /** Account indexes are u8: no transaction names more accounts, loaded ones included. */
12
+ const MAX_ACCOUNT_KEYS = 256;
13
+ /** The longest base58 text of an address (32 bytes) and of a signature (64 bytes). */
14
+ const MAX_ADDRESS_CHARS = 44;
15
+ const MAX_SIGNATURE_CHARS = 88;
16
+ /**
17
+ * Every outer instruction takes at least 3 bytes of the packet (its program index and its
18
+ * account and data lengths).
19
+ */
20
+ const MAX_OUTER_INSTRUCTIONS = Math.floor(programs_1.MAX_TRANSACTION_SIZE / 3);
21
+ /**
22
+ * A generous bound on one instruction's inner instructions that keeps old blocks readable:
23
+ * every CPI costs at least 1,000 compute units, and no instruction ever ran on more than
24
+ * 1.4 M. (Today's runtime also caps a transaction's whole trace at 64.)
25
+ */
26
+ const MAX_INNER_INSTRUCTIONS = Number(programs_1.MAX_COMPUTE_UNIT_LIMIT / 1000n);
27
+ /** A CPI's instruction data is at most 10 KiB (agave `MAX_CPI_INSTRUCTION_DATA_LEN`). */
28
+ const MAX_CPI_INSTRUCTION_DATA = 10_240;
29
+ /**
30
+ * A real `TransactionError` nests three levels (`{"InstructionError":[0,{"Custom":1}]}`)
31
+ * and holds a few short values: anything far larger is not one.
32
+ */
33
+ const MAX_ERROR_DEPTH = 6;
34
+ const MAX_ERROR_VALUES = 64;
35
+ const MAX_ERROR_TEXT = 256;
36
+ /** A `TransactionError` variant name, such as `AccountInUse` or `InstructionError`. */
37
+ const ERROR_VARIANT = /^[A-Z][A-Za-z0-9]{0,63}$/;
38
+ const TOKEN_PROGRAMS = [programs_1.TOKEN_PROGRAM, programs_1.TOKEN_2022_PROGRAM];
39
+ const absent = (value) => value === undefined || value === null;
40
+ const text = (value, max) => typeof value === 'string' && value.length > 0 && value.length <= max;
41
+ function address(value, what) {
42
+ if (!text(value, MAX_ADDRESS_CHARS))
43
+ throw (0, rpc_1.malformed)(what);
44
+ return value;
45
+ }
46
+ const optionalAddress = (value, what) => absent(value) ? undefined : address(value, what);
47
+ /** Whether a node's JSON value stays within `depth` levels and the shared `budget`. */
48
+ function bounded(value, depth, budget) {
49
+ if (--budget.left < 0)
50
+ return false;
51
+ switch (typeof value) {
52
+ case 'number':
53
+ case 'bigint':
54
+ case 'boolean':
55
+ return true;
56
+ case 'string':
57
+ return value.length <= MAX_ERROR_TEXT;
58
+ case 'object': {
59
+ if (value === null)
60
+ return true;
61
+ if (depth === 0)
62
+ return false;
63
+ const children = Array.isArray(value) ? value : Object.values(value);
64
+ return children.every((child) => bounded(child, depth - 1, budget));
65
+ }
66
+ default:
67
+ return false;
68
+ }
69
+ }
70
+ /**
71
+ * `meta.err`: required; `null`, or a `TransactionError`: a unit variant's name
72
+ * (`"AccountInUse"`), or an object with exactly one variant name as its key and a small
73
+ * value (`{"InstructionError":[0,{"Custom":1}]}`). A drifted `{}` or free text is malformed.
74
+ */
75
+ function executionError(value) {
76
+ if (value === null)
77
+ return null;
78
+ const object = (0, rpc_1.record)(value);
79
+ const [variant, ...others] = object ? Object.keys(object) : [];
80
+ const valid = typeof value === 'string'
81
+ ? ERROR_VARIANT.test(value)
82
+ : variant !== undefined &&
83
+ others.length === 0 &&
84
+ ERROR_VARIANT.test(variant) &&
85
+ bounded(value, MAX_ERROR_DEPTH, { left: MAX_ERROR_VALUES });
86
+ if (!valid)
87
+ throw (0, rpc_1.malformed)('transaction status');
88
+ return value;
89
+ }
90
+ /**
91
+ * The deprecated `meta.status` (`{"Ok":null}` or `{"Err":…}`) may be left out; when a node
92
+ * reports it, it must say what `meta.err` says, or the answer drifted.
93
+ */
94
+ function checkStatus(status, err) {
95
+ if (absent(status))
96
+ return;
97
+ const object = (0, rpc_1.record)(status);
98
+ const [variant, ...others] = object ? Object.keys(object) : [];
99
+ const agrees = object !== null &&
100
+ others.length === 0 &&
101
+ (err === null
102
+ ? variant === 'Ok' && object.Ok === null
103
+ : variant === 'Err' &&
104
+ (0, json_1.canonicalJson)(executionError(object.Err)) === (0, json_1.canonicalJson)(err));
105
+ if (!agrees)
106
+ throw (0, rpc_1.malformed)('transaction status');
107
+ }
108
+ function tokenBalances(value, keys) {
109
+ if (!Array.isArray(value))
110
+ throw (0, rpc_1.malformed)('token balances');
111
+ const balances = new Map();
112
+ for (const entry of value) {
113
+ const balance = (0, rpc_1.record)(entry);
114
+ const index = balance?.accountIndex;
115
+ if (!balance ||
116
+ typeof index !== 'number' ||
117
+ !Number.isInteger(index) ||
118
+ index < 0 ||
119
+ index >= keys ||
120
+ balances.has(index)) {
121
+ throw (0, rpc_1.malformed)('token balances');
122
+ }
123
+ const owner = optionalAddress(balance.owner, 'token balances');
124
+ const programId = optionalAddress(balance.programId, 'token balances');
125
+ balances.set(index, {
126
+ mint: address(balance.mint, 'token balances'),
127
+ ...(owner !== undefined ? { owner } : {}),
128
+ ...(programId !== undefined ? { programId } : {}),
129
+ amount: (0, rpc_1.amountString)((0, rpc_1.record)(balance.uiTokenAmount)?.amount, 'token amount'),
130
+ });
131
+ }
132
+ return balances;
133
+ }
134
+ function instruction(value, locator, inner) {
135
+ const ix = (0, rpc_1.record)(value);
136
+ if (!ix)
137
+ throw (0, rpc_1.malformed)('instruction');
138
+ const programId = address(ix.programId, 'instruction');
139
+ const { parsed } = ix;
140
+ const object = (0, rpc_1.record)(parsed);
141
+ if (!absent(parsed) && !object && typeof parsed !== 'string') {
142
+ throw (0, rpc_1.malformed)('instruction');
143
+ }
144
+ // A parsed memo is its UTF-8 text. The packet bounds an outer one, so a longer one is
145
+ // malformed. An inner one is a CPI's data, and a reader never refuses what the chain
146
+ // accepts: past the CPI data limit, the text is not kept and the decoding is partial.
147
+ const tooLong = typeof parsed === 'string' &&
148
+ parsed.length > (inner ? MAX_CPI_INSTRUCTION_DATA : programs_1.MAX_TRANSACTION_SIZE);
149
+ if (tooLong && !inner)
150
+ throw (0, rpc_1.malformed)('instruction');
151
+ return {
152
+ locator,
153
+ inner,
154
+ programId,
155
+ ...(typeof object?.type === 'string' ? { type: object.type } : {}),
156
+ info: (0, rpc_1.record)(object?.info),
157
+ ...(typeof parsed === 'string'
158
+ ? tooLong
159
+ ? { textTooLong: true }
160
+ : { parsedText: parsed }
161
+ : {}),
162
+ };
163
+ }
164
+ /** Outer instructions, each followed by its inner ones (a group per outer instruction). */
165
+ function instructions(outer, groups) {
166
+ if (outer.length > MAX_OUTER_INSTRUCTIONS)
167
+ throw (0, rpc_1.malformed)('instructions');
168
+ const inner = new Map();
169
+ if (!absent(groups)) {
170
+ if (!Array.isArray(groups))
171
+ throw (0, rpc_1.malformed)('inner instructions');
172
+ for (const group of groups) {
173
+ const g = (0, rpc_1.record)(group);
174
+ const index = g?.index;
175
+ if (!g ||
176
+ typeof index !== 'number' ||
177
+ !Number.isInteger(index) ||
178
+ index < 0 ||
179
+ index >= outer.length ||
180
+ inner.has(index) ||
181
+ !Array.isArray(g.instructions) ||
182
+ g.instructions.length > MAX_INNER_INSTRUCTIONS) {
183
+ throw (0, rpc_1.malformed)('inner instructions');
184
+ }
185
+ inner.set(index, g.instructions);
186
+ }
187
+ }
188
+ return outer.flatMap((ix, i) => [
189
+ instruction(ix, `ix:${i}`, false),
190
+ ...(inner.get(i) ?? []).map((child, j) => instruction(child, `ix:${i}.${j}`, true)),
191
+ ]);
192
+ }
193
+ /**
194
+ * Validates a `jsonParsed` transaction (from `getTransaction` or a block's list). With
195
+ * `signature`, the answer must be that transaction: a lookup answered with another one
196
+ * decides nothing (a retryable "not yet"), never reads as ours.
197
+ */
198
+ function parseTransaction(value, signature) {
199
+ const tx = (0, rpc_1.record)(value);
200
+ const meta = (0, rpc_1.record)(tx?.meta);
201
+ const transaction = (0, rpc_1.record)(tx?.transaction);
202
+ const message = (0, rpc_1.record)(transaction?.message);
203
+ if (!tx || !meta || !transaction || !message)
204
+ throw (0, rpc_1.malformed)('transaction');
205
+ const signatures = transaction.signatures;
206
+ const id = Array.isArray(signatures) ? signatures[0] : undefined;
207
+ if (!text(id, MAX_SIGNATURE_CHARS))
208
+ throw (0, rpc_1.malformed)('transaction signatures');
209
+ if (signature !== undefined && id !== signature) {
210
+ throw (0, rpc_1.notYet)('the transaction asked for');
211
+ }
212
+ const accountKeys = message.accountKeys;
213
+ if (!Array.isArray(accountKeys) ||
214
+ accountKeys.length === 0 ||
215
+ accountKeys.length > MAX_ACCOUNT_KEYS) {
216
+ throw (0, rpc_1.malformed)('account keys');
217
+ }
218
+ const accountIndex = new Map();
219
+ const keys = accountKeys.map((key, i) => {
220
+ const pubkey = address((0, rpc_1.record)(key)?.pubkey ?? key, 'account keys');
221
+ if (accountIndex.has(pubkey))
222
+ throw (0, rpc_1.malformed)('account keys');
223
+ accountIndex.set(pubkey, i);
224
+ return pubkey;
225
+ });
226
+ const balances = (field) => {
227
+ if (!Array.isArray(field) || field.length !== keys.length) {
228
+ throw (0, rpc_1.malformed)('balances');
229
+ }
230
+ return field.map((v) => (0, rpc_1.u64)(v, 'balance'));
231
+ };
232
+ const { preTokenBalances, postTokenBalances } = meta;
233
+ if (absent(preTokenBalances) !== absent(postTokenBalances)) {
234
+ throw (0, rpc_1.malformed)('token balances');
235
+ }
236
+ if (!Array.isArray(message.instructions))
237
+ throw (0, rpc_1.malformed)('instructions');
238
+ const version = tx.version === undefined || tx.version === 'legacy' ? 'legacy' : tx.version;
239
+ if (version !== 'legacy' &&
240
+ (typeof version !== 'number' || !Number.isSafeInteger(version) || version < 0)) {
241
+ throw (0, rpc_1.malformed)('version');
242
+ }
243
+ const err = executionError(meta.err);
244
+ checkStatus(meta.status, err);
245
+ return {
246
+ signature: id,
247
+ keys,
248
+ accountIndex,
249
+ err,
250
+ fee: (0, rpc_1.u64)(meta.fee, 'fee'),
251
+ preBalances: balances(meta.preBalances),
252
+ postBalances: balances(meta.postBalances),
253
+ preTokens: absent(preTokenBalances)
254
+ ? new Map()
255
+ : tokenBalances(preTokenBalances, keys.length),
256
+ postTokens: absent(postTokenBalances)
257
+ ? new Map()
258
+ : tokenBalances(postTokenBalances, keys.length),
259
+ tokenBalances: absent(preTokenBalances) ? 'absent' : 'present',
260
+ innerInstructions: absent(meta.innerInstructions) ? 'absent' : 'present',
261
+ instructions: instructions(message.instructions, meta.innerInstructions),
262
+ version,
263
+ ...(tx.slot !== undefined ? { slot: (0, rpc_1.u64)(tx.slot, 'slot') } : {}),
264
+ ...(typeof tx.blockTime === 'number' && Number.isSafeInteger(tx.blockTime)
265
+ ? { blockTime: tx.blockTime }
266
+ : {}),
267
+ };
268
+ }
269
+ function nativeMove(ix) {
270
+ if (ix.programId !== programs_1.SYSTEM_PROGRAM || !ix.info)
271
+ return null;
272
+ const { info } = ix;
273
+ const to = ix.type === 'transfer' || ix.type === 'transferWithSeed'
274
+ ? info.destination
275
+ : ix.type === 'createAccount' || ix.type === 'createAccountWithSeed'
276
+ ? info.newAccount
277
+ : undefined;
278
+ if (to === undefined)
279
+ return null;
280
+ return {
281
+ from: address(info.source, 'system instruction'),
282
+ to: address(to, 'system instruction'),
283
+ amount: (0, rpc_1.u64)(info.lamports, 'lamports'),
284
+ };
285
+ }
286
+ function tokenMove(ix) {
287
+ if (ix.programId !== programs_1.TOKEN_PROGRAM || !ix.info)
288
+ return null;
289
+ if (ix.type !== 'transfer' && ix.type !== 'transferChecked')
290
+ return null;
291
+ const { info } = ix;
292
+ const authority = optionalAddress(info.authority ?? info.multisigAuthority, 'token instruction');
293
+ const mint = optionalAddress(info.mint, 'token instruction');
294
+ const raw = ix.type === 'transfer' ? info.amount : (0, rpc_1.record)(info.tokenAmount)?.amount;
295
+ return {
296
+ source: address(info.source, 'token instruction'),
297
+ destination: address(info.destination, 'token instruction'),
298
+ ...(authority !== undefined ? { authority } : {}),
299
+ ...(mint !== undefined ? { mint } : {}),
300
+ amount: (0, rpc_1.amountString)(raw, 'token amount'),
301
+ };
302
+ }
303
+ /** A parsed memo instruction (its text kept, or too long to keep). */
304
+ const isMemo = (ix) => (ix.programId === programs_1.MEMO_PROGRAM || ix.programId === programs_1.MEMO_V1_PROGRAM) &&
305
+ (ix.parsedText !== undefined || ix.textTooLong === true);
306
+ /** A token program ran, or could have: named by an instruction, or keyed for a CPI. */
307
+ const tokenProgramKeyed = (tx) => TOKEN_PROGRAMS.some((program) => tx.accountIndex.has(program)) ||
308
+ tx.instructions.some((ix) => TOKEN_PROGRAMS.includes(ix.programId));
309
+ const add = (totals, key, amount) => {
310
+ totals.set(key, (totals.get(key) ?? 0n) + amount);
311
+ };
312
+ /** Token amounts moved per account and mint (`<index>:<mint>`), as the balances report. */
313
+ function reportedTokenMoves(tx) {
314
+ const moved = new Map();
315
+ for (const [index, balance] of tx.preTokens) {
316
+ add(moved, `${index}:${balance.mint}`, -balance.amount);
317
+ }
318
+ for (const [index, balance] of tx.postTokens) {
319
+ add(moved, `${index}:${balance.mint}`, balance.amount);
320
+ }
321
+ return moved;
322
+ }
323
+ function tokensReconcile(tx, moves) {
324
+ const expected = new Map();
325
+ for (const { move, mint } of moves) {
326
+ const from = tx.accountIndex.get(move.source);
327
+ const to = tx.accountIndex.get(move.destination);
328
+ if (from === undefined || to === undefined)
329
+ return false;
330
+ add(expected, `${from}:${mint}`, -move.amount);
331
+ add(expected, `${to}:${mint}`, move.amount);
332
+ }
333
+ const actual = reportedTokenMoves(tx);
334
+ for (const key of new Set([...actual.keys(), ...expected.keys()])) {
335
+ if ((actual.get(key) ?? 0n) !== (expected.get(key) ?? 0n))
336
+ return false;
337
+ }
338
+ return true;
339
+ }
340
+ function lamportsReconcile(tx, moves) {
341
+ const expected = new Map([[0, -tx.fee]]);
342
+ for (const move of moves) {
343
+ const from = tx.accountIndex.get(move.from);
344
+ const to = tx.accountIndex.get(move.to);
345
+ if (from === undefined || to === undefined)
346
+ return false;
347
+ expected.set(from, (expected.get(from) ?? 0n) - move.amount);
348
+ expected.set(to, (expected.get(to) ?? 0n) + move.amount);
349
+ }
350
+ return tx.keys.every((_, i) => tx.postBalances[i] - tx.preBalances[i] ===
351
+ (expected.get(i) ?? 0n));
352
+ }
353
+ /**
354
+ * A vote transaction: consensus traffic, moving nothing but its fee (skipped by scans). A
355
+ * vote-program transaction that moves value, such as a vote-account withdrawal, is not one:
356
+ * a scan must still see it.
357
+ */
358
+ const isVote = (tx) => tx.instructions.length > 0 &&
359
+ tx.instructions.every((ix) => ix.programId === programs_1.VOTE_PROGRAM) &&
360
+ lamportsReconcile(tx, []) &&
361
+ tokensReconcile(tx, []);
362
+ exports.isVote = isVote;
363
+ const tokenAt = (tx, address) => {
364
+ const index = tx.accountIndex.get(address);
365
+ return index === undefined
366
+ ? {}
367
+ : { pre: tx.preTokens.get(index), post: tx.postTokens.get(index) };
368
+ };
369
+ const ownerOf = (tx, address) => {
370
+ const { pre, post } = tokenAt(tx, address);
371
+ return post?.owner ?? pre?.owner;
372
+ };
373
+ const mintOf = (tx, move) => {
374
+ if (move.mint !== undefined)
375
+ return move.mint;
376
+ for (const address of [move.source, move.destination]) {
377
+ const { pre, post } = tokenAt(tx, address);
378
+ const mint = post?.mint ?? pre?.mint;
379
+ if (mint !== undefined)
380
+ return mint;
381
+ }
382
+ return undefined;
383
+ };
384
+ /** Decodes a parsed transaction as the chain reports it. */
385
+ function decodeTransaction(tx, place) {
386
+ const success = tx.err === null;
387
+ const memos = tx.instructions.filter(isMemo);
388
+ // The one memo, when its text was kept.
389
+ const memo = memos.length === 1 ? memos[0]?.parsedText : undefined;
390
+ // A failed transaction moved nothing but its fee. A successful one can be checked only
391
+ // with its inner instructions, and with its token balances when a token program ran. A
392
+ // text too long to keep is unexplained too.
393
+ let complete = (!success ||
394
+ (tx.innerInstructions === 'present' &&
395
+ (tx.tokenBalances === 'present' || !tokenProgramKeyed(tx)))) &&
396
+ !tx.instructions.some((ix) => ix.textTooLong);
397
+ const natives = [];
398
+ const tokens = [];
399
+ const transfers = [];
400
+ for (const ix of success ? tx.instructions : []) {
401
+ const native = nativeMove(ix);
402
+ if (native) {
403
+ natives.push(native);
404
+ transfers.push({
405
+ locator: ix.locator,
406
+ from: [native.from],
407
+ to: native.to,
408
+ asset: 'native',
409
+ amount: native.amount,
410
+ source: ix.inner ? 'internal' : 'native',
411
+ ...(memo !== undefined ? { memo } : {}),
412
+ });
413
+ continue;
414
+ }
415
+ const move = tokenMove(ix);
416
+ if (!move)
417
+ continue;
418
+ const mint = mintOf(tx, move);
419
+ if (mint === undefined) {
420
+ complete = false;
421
+ continue;
422
+ }
423
+ tokens.push({ move, mint });
424
+ const from = ownerOf(tx, move.source);
425
+ const to = ownerOf(tx, move.destination);
426
+ // Without the owners the node did not report, the token accounts stand in for them.
427
+ if (from === undefined || to === undefined)
428
+ complete = false;
429
+ transfers.push({
430
+ locator: ix.locator,
431
+ from: [from ?? move.source],
432
+ to: to ?? move.destination,
433
+ asset: { standard: 'spl', contract: mint },
434
+ amount: move.amount,
435
+ source: 'token-event',
436
+ ...(memo !== undefined ? { memo } : {}),
437
+ });
438
+ }
439
+ if (!lamportsReconcile(tx, natives) || !tokensReconcile(tx, tokens))
440
+ complete = false;
441
+ return {
442
+ id: tx.signature,
443
+ observation: {
444
+ seen: 'block',
445
+ txHash: tx.signature,
446
+ blockHeight: place.height,
447
+ blockHash: place.hash,
448
+ success,
449
+ ...(success ? {} : { reason: 'transaction failed' }),
450
+ },
451
+ fee: [{ asset: 'native', amount: tx.fee }],
452
+ transfers,
453
+ decoding: complete ? 'complete' : 'partial',
454
+ ...(place.blockTime !== undefined ? { timestamp: place.blockTime } : {}),
455
+ details: {
456
+ ...(tx.slot !== undefined ? { slot: tx.slot } : {}),
457
+ version: tx.version,
458
+ ...(success ? {} : { err: (0, json_1.canonicalJson)(tx.err) }),
459
+ },
460
+ };
461
+ }
462
+ /**
463
+ * The scan filter. A scan must return at least every transaction with a transfer from or
464
+ * to the addresses, so this is a conservative superset over wallets and token accounts
465
+ * alike: a decoded transfer names a watched address; a successful token transfer moves
466
+ * tokens into or out of a watched token account (its decoded transfer names the owners
467
+ * instead); the decoding is partial and a watched address is among the account keys; a
468
+ * watched account's lamports changed; the node reported no token balances and a token
469
+ * program ran or was keyed (a deposit into an existing token account names no owner
470
+ * then); or a token holding changed (per account and mint) whose owner is watched or was
471
+ * not reported (it cannot be attributed). A watched token account's holding cannot change
472
+ * unnoticed: a change no parsed transfer explains makes the decoding partial, and the
473
+ * account is a key.
474
+ */
475
+ function touches(decoded, tx, addresses) {
476
+ const named = decoded.transfers.some((transfer) => addresses.has(transfer.to) || transfer.from.some((f) => addresses.has(f)));
477
+ if (named)
478
+ return true;
479
+ // `decodeTransaction` already read these instructions: none of them throws here.
480
+ const account = tx.err === null &&
481
+ tx.instructions.some((ix) => {
482
+ const move = tokenMove(ix);
483
+ return (move !== null && (addresses.has(move.source) || addresses.has(move.destination)));
484
+ });
485
+ if (account)
486
+ return true;
487
+ const keyed = tx.keys.some((key) => addresses.has(key));
488
+ if (keyed && decoded.decoding === 'partial')
489
+ return true;
490
+ const lamportsMoved = tx.keys.some((key, i) => addresses.has(key) && tx.preBalances[i] !== tx.postBalances[i]);
491
+ if (lamportsMoved)
492
+ return true;
493
+ if (tx.tokenBalances === 'absent' && tokenProgramKeyed(tx))
494
+ return true;
495
+ const indexes = new Set([...tx.preTokens.keys(), ...tx.postTokens.keys()]);
496
+ for (const index of indexes) {
497
+ const pre = tx.preTokens.get(index);
498
+ const post = tx.postTokens.get(index);
499
+ const moved = pre?.mint === post?.mint
500
+ ? (pre?.amount ?? 0n) !== (post?.amount ?? 0n)
501
+ : (pre?.amount ?? 0n) !== 0n || (post?.amount ?? 0n) !== 0n;
502
+ if (!moved)
503
+ continue;
504
+ for (const balance of [pre, post]) {
505
+ if (balance && (balance.owner === undefined || addresses.has(balance.owner))) {
506
+ return true;
507
+ }
508
+ }
509
+ }
510
+ return false;
511
+ }
512
+ /**
513
+ * An account's balance of `mint` before and after, as the classic Token program holds it.
514
+ * The owning program comes from each balance's `programId`, which the provider must report
515
+ * (current agave does). Through a provider that leaves it out, no SPL verdict ever decides:
516
+ * a cost in liveness only, never a wrong verdict.
517
+ */
518
+ function holding(tx, address, mint) {
519
+ const index = tx.accountIndex.get(address);
520
+ if (index === undefined)
521
+ throw (0, rpc_1.notYet)('the accounts of the token transfer');
522
+ const pre = tx.preTokens.get(index);
523
+ const post = tx.postTokens.get(index);
524
+ // A successful transfer leaves both accounts in place: no balance is missing evidence.
525
+ if (!post)
526
+ throw (0, rpc_1.notYet)('the token balances of the transfer');
527
+ for (const balance of [pre, post]) {
528
+ if (!balance)
529
+ continue;
530
+ if (balance.programId === undefined) {
531
+ throw (0, rpc_1.notYet)('the token balances of the transfer');
532
+ }
533
+ if (balance.mint !== mint || balance.programId !== programs_1.TOKEN_PROGRAM) {
534
+ throw (0, rpc_1.inconsistent)('the token balances do not match the signed transfer');
535
+ }
536
+ }
537
+ return { ...(pre ? { pre: pre.amount } : {}), post: post.amount };
538
+ }
539
+ /** One of the sender's transfers, read from the balances by account, mint and program. */
540
+ function landed(tx, move) {
541
+ // We sign `transferChecked` only, which names its mint.
542
+ if (move.mint === undefined) {
543
+ throw (0, rpc_1.inconsistent)('the token instructions do not match the signed transaction');
544
+ }
545
+ const source = holding(tx, move.source, move.mint);
546
+ const destination = holding(tx, move.destination, move.mint);
547
+ // The sender's account held the tokens before the transfer (only a recipient's account
548
+ // can be created by the same transaction).
549
+ if (source.pre === undefined)
550
+ throw (0, rpc_1.notYet)('the token balances of the transfer');
551
+ // A zero-amount record moved nothing; a transfer to itself cannot show in balances.
552
+ if (move.amount === 0n)
553
+ return false;
554
+ if (move.source === move.destination)
555
+ return true;
556
+ return source.post - source.pre < 0n && destination.post - (destination.pre ?? 0n) > 0n;
557
+ }
558
+ /**
559
+ * The phantom-success guard, for verdict
560
+ * paths only: a token transfer counts as executed only when the balances show a transfer
561
+ * of a positive amount from the sender's account to the intended recipient's account, of
562
+ * the signed mint, in accounts the classic Token program owns. The exact amount is not
563
+ * required (fee-on-transfer tokens exist). The intended recipient is the destination of
564
+ * the sender's own signed instruction. Missing evidence (no token balances, a balance or
565
+ * its owning program not reported, an unparsed instruction, accounts not in the keys)
566
+ * decides nothing (a retryable `PROVIDER_UNAVAILABLE`), and so does an answer that
567
+ * contradicts the signed message: token instructions, none of them by the sender, where
568
+ * the sender signed its own `transferChecked`, or balances of another mint or program
569
+ * (a retryable `PROVIDER_INCONSISTENT`). Seeing no transfer never
570
+ * passes; a failed transaction never lands; a native transfer keeps the chain's status.
571
+ * The balances must carry `programId` (current agave reports it): without it, SPL verdicts
572
+ * through that provider never decide, which costs liveness only.
573
+ */
574
+ function tokenTransfersLanded(tx, from) {
575
+ if (tx.err !== null)
576
+ return false;
577
+ const tokenInstructions = tx.instructions.filter((ix) => !ix.inner && TOKEN_PROGRAMS.includes(ix.programId));
578
+ // A native transfer: the chain's own status is the verdict.
579
+ if (tokenInstructions.length === 0)
580
+ return true;
581
+ if (tokenInstructions.some((ix) => !ix.info)) {
582
+ throw (0, rpc_1.notYet)('the parsed token instructions');
583
+ }
584
+ const ours = tokenInstructions.flatMap((ix) => {
585
+ const move = tokenMove(ix);
586
+ return move && move.authority === from ? [move] : [];
587
+ });
588
+ if (ours.length === 0) {
589
+ throw (0, rpc_1.inconsistent)('the token instructions do not match the signed transaction');
590
+ }
591
+ if (tx.tokenBalances === 'absent')
592
+ throw (0, rpc_1.notYet)('the token balances');
593
+ return ours.every((move) => landed(tx, move));
594
+ }
595
+ //# sourceMappingURL=decode.js.map