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,102 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVM_PEER_DEPENDENCIES = void 0;
4
+ exports.evmManifests = evmManifests;
5
+ exports.evmPlugin = evmPlugin;
6
+ exports.evmChainPlugin = evmChainPlugin;
7
+ const error_1 = require("../../core/errors/error");
8
+ const chains_1 = require("./chains");
9
+ const network_1 = require("./network");
10
+ const presets_1 = require("./presets");
11
+ const tokens_1 = require("./tokens");
12
+ /** The SDK versions this adapter is validated against. */
13
+ exports.EVM_PEER_DEPENDENCIES = {
14
+ ethers: { name: 'ethers', range: '^6.17.0' },
15
+ web3: { name: 'web3', range: '^4.16.0' },
16
+ };
17
+ /**
18
+ * The manifests' `load` functions, shared by every `evmManifests(...)` call, so that
19
+ * registering `evmPlugin()` or the same `evmChainPlugin(...)` again is the same plugin:
20
+ * the registry compares a plugin's functions by identity, and refuses a different plugin
21
+ * under a registered name. Each `require`s its client module, and with it the SDK, only
22
+ * when called.
23
+ */
24
+ const loadEthers = async () => {
25
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
26
+ const mod = require('./ethers-client');
27
+ return mod.ethersDriverFactory;
28
+ };
29
+ const loadWeb3 = async () => {
30
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
31
+ const mod = require('./web3-client');
32
+ return mod.web3DriverFactory;
33
+ };
34
+ /** The `ethers` and `web3` manifests for `chains`, keyed `<family>/<library>`. */
35
+ function evmManifests(family, chains) {
36
+ return [
37
+ {
38
+ family,
39
+ library: 'ethers',
40
+ chains,
41
+ capabilities: network_1.EVM_CAPABILITIES,
42
+ peerDependencies: [exports.EVM_PEER_DEPENDENCIES.ethers],
43
+ load: loadEthers,
44
+ },
45
+ {
46
+ family,
47
+ library: 'web3',
48
+ chains,
49
+ capabilities: network_1.EVM_CAPABILITIES,
50
+ peerDependencies: [exports.EVM_PEER_DEPENDENCIES.web3],
51
+ load: loadWeb3,
52
+ },
53
+ ];
54
+ }
55
+ /**
56
+ * The built-in EVM family: Ethereum, BNB Smart Chain, Polygon PoS, Avalanche C-Chain,
57
+ * Arbitrum One, OP Mainnet and Base, with their testnets.
58
+ */
59
+ function evmPlugin() {
60
+ return {
61
+ name: 'evm',
62
+ chains: chains_1.EVM_CHAINS,
63
+ adapters: evmManifests('evm', chains_1.EVM_CHAINS.map((chain) => chain.id)),
64
+ presets: presets_1.EVM_PRESETS,
65
+ assets: tokens_1.EVM_TOKENS,
66
+ };
67
+ }
68
+ /** A plugin name: lower-case letters, digits and hyphens, starting with a letter. */
69
+ const PLUGIN_NAME = /^[a-z][a-z0-9-]*$/;
70
+ /**
71
+ * A plugin for EVM chains of your own, served by the built-in EVM driver with either
72
+ * library. Every network is validated here, so bad data fails at registration.
73
+ */
74
+ function evmChainPlugin(options) {
75
+ if (!PLUGIN_NAME.test(options.name)) {
76
+ throw new error_1.ConfigError('CONFIG_INVALID', `EVM chain plugin name ${JSON.stringify(options.name)} must match ${String(PLUGIN_NAME)}`);
77
+ }
78
+ const name = `evm:${options.name}`;
79
+ for (const chain of options.chains) {
80
+ const fail = (reason) => {
81
+ throw new error_1.ConfigError('CONFIG_INVALID', `EVM chain '${chain.id}': ${reason}`);
82
+ };
83
+ if (chain.family !== 'evm')
84
+ fail(`its family must be 'evm'`);
85
+ if (chain.model !== 'account' || chain.ordering !== 'nonce') {
86
+ fail(`it must use the account model and nonce ordering`);
87
+ }
88
+ if (chain.schemes.length !== 1 || chain.schemes[0] !== 'secp256k1-ecdsa') {
89
+ fail(`its only scheme must be 'secp256k1-ecdsa'`);
90
+ }
91
+ for (const network of Object.values(chain.networks))
92
+ (0, network_1.evmNetworkConfig)(chain, network);
93
+ }
94
+ return {
95
+ name,
96
+ chains: options.chains,
97
+ adapters: evmManifests(name, options.chains.map((chain) => chain.id)),
98
+ ...(options.presets ? { presets: options.presets } : {}),
99
+ ...(options.assets ? { assets: options.assets } : {}),
100
+ };
101
+ }
102
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/adapters/evm/plugin.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The EVM family plugin: chains, tokens and provider presets as data, plus one\n * adapter manifest per library. SDK-free: only a manifest's `load()` requires a client\n * module, and with it the SDK. `ethers` is registered first, so it is the family default.\n */\nimport type {\n AdapterManifest,\n DriverFactory,\n PeerDependency,\n} from '../../core/driver/types';\nimport { ConfigError } from '../../core/errors/error';\nimport type { ChainInfo } from '../../core/model/chain';\nimport type { AssetRegistration } from '../../core/registry/assets';\nimport type { Plugin } from '../../core/registry/plugin';\nimport type { ProviderPreset } from '../../core/registry/providers';\nimport { EVM_CHAINS } from './chains';\nimport { EVM_CAPABILITIES, evmNetworkConfig } from './network';\nimport { EVM_PRESETS } from './presets';\nimport { EVM_TOKENS } from './tokens';\n\n/** The SDK versions this adapter is validated against. */\nexport const EVM_PEER_DEPENDENCIES: Readonly<Record<'ethers' | 'web3', PeerDependency>> =\n {\n ethers: { name: 'ethers', range: '^6.17.0' },\n web3: { name: 'web3', range: '^4.16.0' },\n };\n\n/**\n * The manifests' `load` functions, shared by every `evmManifests(...)` call, so that\n * registering `evmPlugin()` or the same `evmChainPlugin(...)` again is the same plugin:\n * the registry compares a plugin's functions by identity, and refuses a different plugin\n * under a registered name. Each `require`s its client module, and with it the SDK, only\n * when called.\n */\nconst loadEthers = async (): Promise<DriverFactory> => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const mod = require('./ethers-client') as typeof import('./ethers-client');\n return mod.ethersDriverFactory;\n};\n\nconst loadWeb3 = async (): Promise<DriverFactory> => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const mod = require('./web3-client') as typeof import('./web3-client');\n return mod.web3DriverFactory;\n};\n\n/** The `ethers` and `web3` manifests for `chains`, keyed `<family>/<library>`. */\nexport function evmManifests(\n family: string,\n chains: readonly string[],\n): AdapterManifest[] {\n return [\n {\n family,\n library: 'ethers',\n chains,\n capabilities: EVM_CAPABILITIES,\n peerDependencies: [EVM_PEER_DEPENDENCIES.ethers],\n load: loadEthers,\n },\n {\n family,\n library: 'web3',\n chains,\n capabilities: EVM_CAPABILITIES,\n peerDependencies: [EVM_PEER_DEPENDENCIES.web3],\n load: loadWeb3,\n },\n ];\n}\n\n/**\n * The built-in EVM family: Ethereum, BNB Smart Chain, Polygon PoS, Avalanche C-Chain,\n * Arbitrum One, OP Mainnet and Base, with their testnets.\n */\nexport function evmPlugin(): Plugin {\n return {\n name: 'evm',\n chains: EVM_CHAINS,\n adapters: evmManifests(\n 'evm',\n EVM_CHAINS.map((chain) => chain.id),\n ),\n presets: EVM_PRESETS,\n assets: EVM_TOKENS,\n };\n}\n\n/** A plugin name: lower-case letters, digits and hyphens, starting with a letter. */\nconst PLUGIN_NAME = /^[a-z][a-z0-9-]*$/;\n\nexport interface EvmChainPluginOptions {\n /**\n * A unique name matching `/^[a-z][a-z0-9-]*$/`. The plugin registers as `evm:<name>`, so\n * it never collides with a family plugin, and its manifests as `evm:<name>/ethers` and\n * `evm:<name>/web3`.\n */\n readonly name: string;\n /** Chains with `family: 'evm'`, nonce ordering and the `secp256k1-ecdsa` scheme. */\n readonly chains: readonly ChainInfo[];\n readonly presets?: readonly ProviderPreset[];\n readonly assets?: readonly AssetRegistration[];\n}\n\n/**\n * A plugin for EVM chains of your own, served by the built-in EVM driver with either\n * library. Every network is validated here, so bad data fails at registration.\n */\nexport function evmChainPlugin(options: EvmChainPluginOptions): Plugin {\n if (!PLUGIN_NAME.test(options.name)) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `EVM chain plugin name ${JSON.stringify(options.name)} must match ${String(PLUGIN_NAME)}`,\n );\n }\n const name = `evm:${options.name}`;\n for (const chain of options.chains) {\n const fail = (reason: string): never => {\n throw new ConfigError('CONFIG_INVALID', `EVM chain '${chain.id}': ${reason}`);\n };\n if (chain.family !== 'evm') fail(`its family must be 'evm'`);\n if (chain.model !== 'account' || chain.ordering !== 'nonce') {\n fail(`it must use the account model and nonce ordering`);\n }\n if (chain.schemes.length !== 1 || chain.schemes[0] !== 'secp256k1-ecdsa') {\n fail(`its only scheme must be 'secp256k1-ecdsa'`);\n }\n for (const network of Object.values(chain.networks)) evmNetworkConfig(chain, network);\n }\n return {\n name,\n chains: options.chains,\n adapters: evmManifests(\n name,\n options.chains.map((chain) => chain.id),\n ),\n ...(options.presets ? { presets: options.presets } : {}),\n ...(options.assets ? { assets: options.assets } : {}),\n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ import type { ProviderPreset } from '../../core/registry/providers';
2
+ export declare const EVM_PRESETS: readonly ProviderPreset[];
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EVM_PRESETS = void 0;
4
+ /**
5
+ * EVM provider presets. Only URL templates verified against the provider's own
6
+ * documentation are listed; a preset refuses every other network with `CONFIG_INVALID`.
7
+ * `public` has no Ethereum entry: no operator-run public endpoint is documented for it.
8
+ * Keyed URLs are `Secret`s, so the key never reaches logs or errors.
9
+ */
10
+ const error_1 = require("../../core/errors/error");
11
+ const secret_1 = require("../../core/secret/secret");
12
+ /**
13
+ * Free public endpoints named in each chain's own documentation: the chain operator's, or a
14
+ * third party's where the docs list one (Polygon's are drpc's).
15
+ */
16
+ const PUBLIC = {
17
+ bsc: {
18
+ mainnet: 'https://bsc-dataseed.bnbchain.org',
19
+ testnet: 'https://bsc-testnet-dataseed.bnbchain.org',
20
+ },
21
+ polygon: {
22
+ mainnet: 'https://polygon.drpc.org',
23
+ amoy: 'https://polygon-amoy.drpc.org',
24
+ },
25
+ avalanche: {
26
+ mainnet: 'https://api.avax.network/ext/bc/C/rpc',
27
+ fuji: 'https://api.avax-test.network/ext/bc/C/rpc',
28
+ },
29
+ arbitrum: {
30
+ mainnet: 'https://arb1.arbitrum.io/rpc',
31
+ sepolia: 'https://sepolia-rollup.arbitrum.io/rpc',
32
+ },
33
+ optimism: {
34
+ mainnet: 'https://mainnet.optimism.io',
35
+ sepolia: 'https://sepolia.optimism.io',
36
+ },
37
+ base: { mainnet: 'https://mainnet.base.org', sepolia: 'https://sepolia.base.org' },
38
+ };
39
+ /** `https://<host>.g.alchemy.com/v2/<key>`. */
40
+ const ALCHEMY = {
41
+ ethereum: { mainnet: 'eth-mainnet', sepolia: 'eth-sepolia', hoodi: 'eth-hoodi' },
42
+ bsc: { mainnet: 'bnb-mainnet', testnet: 'bnb-testnet' },
43
+ polygon: { mainnet: 'polygon-mainnet', amoy: 'polygon-amoy' },
44
+ avalanche: { mainnet: 'avax-mainnet', fuji: 'avax-fuji' },
45
+ arbitrum: { mainnet: 'arb-mainnet', sepolia: 'arb-sepolia' },
46
+ optimism: { mainnet: 'opt-mainnet', sepolia: 'opt-sepolia' },
47
+ base: { mainnet: 'base-mainnet', sepolia: 'base-sepolia' },
48
+ };
49
+ /** `https://<host>.infura.io/v3/<key>`. */
50
+ const INFURA = {
51
+ ethereum: { mainnet: 'mainnet', sepolia: 'sepolia', hoodi: 'hoodi' },
52
+ bsc: { mainnet: 'bsc-mainnet', testnet: 'bsc-testnet' },
53
+ polygon: { mainnet: 'polygon-mainnet', amoy: 'polygon-amoy' },
54
+ avalanche: { mainnet: 'avalanche-mainnet', fuji: 'avalanche-fuji' },
55
+ arbitrum: { mainnet: 'arbitrum-mainnet', sepolia: 'arbitrum-sepolia' },
56
+ optimism: { mainnet: 'optimism-mainnet', sepolia: 'optimism-sepolia' },
57
+ base: { mainnet: 'base-mainnet', sepolia: 'base-sepolia' },
58
+ };
59
+ /** `https://rpc.ankr.com/<path>/<key>`: only the paths Ankr's documentation shows. */
60
+ const ANKR = {
61
+ ethereum: { mainnet: 'eth' },
62
+ bsc: { mainnet: 'bsc' },
63
+ avalanche: { mainnet: 'avalanche' },
64
+ arbitrum: { mainnet: 'arbitrum' },
65
+ base: { mainnet: 'base' },
66
+ };
67
+ function entry(table, input) {
68
+ const value = table[input.chain]?.[input.network];
69
+ // Unreachable through the catalog, which asks `supports` first.
70
+ if (value === undefined)
71
+ throw new Error(`no entry for ${input.chain}:${input.network}`);
72
+ return value;
73
+ }
74
+ /** The revealed key; the error names the preset and network, never the key. */
75
+ function apiKeyOf(name, input) {
76
+ const key = input.apiKey === undefined ? undefined : (0, secret_1.reveal)(input.apiKey);
77
+ if (typeof key !== 'string' || key.trim() === '') {
78
+ throw new error_1.ConfigError('CONFIG_INVALID', `provider preset '${name}' requires a non-empty apiKey for ${input.chain}:${input.network}`);
79
+ }
80
+ return key;
81
+ }
82
+ function keyed(name, table, url) {
83
+ return {
84
+ name,
85
+ kind: 'rpc',
86
+ requiresApiKey: true,
87
+ supports: (chain, network) => table[chain]?.[network] !== undefined,
88
+ endpoints: (input) => [
89
+ { name, url: (0, secret_1.secret)(url(entry(table, input), apiKeyOf(name, input))) },
90
+ ],
91
+ };
92
+ }
93
+ exports.EVM_PRESETS = [
94
+ {
95
+ name: 'public',
96
+ kind: 'rpc',
97
+ production: false,
98
+ supports: (chain, network) => PUBLIC[chain]?.[network] !== undefined,
99
+ endpoints: (input) => [{ name: 'public', url: entry(PUBLIC, input) }],
100
+ },
101
+ keyed('alchemy', ALCHEMY, (host, key) => `https://${host}.g.alchemy.com/v2/${key}`),
102
+ keyed('infura', INFURA, (host, key) => `https://${host}.infura.io/v3/${key}`),
103
+ keyed('ankr', ANKR, (path, key) => `https://rpc.ankr.com/${path}/${key}`),
104
+ ];
105
+ //# sourceMappingURL=presets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../src/adapters/evm/presets.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * EVM provider presets. Only URL templates verified against the provider's own\n * documentation are listed; a preset refuses every other network with `CONFIG_INVALID`.\n * `public` has no Ethereum entry: no operator-run public endpoint is documented for it.\n * Keyed URLs are `Secret`s, so the key never reaches logs or errors.\n */\nimport { ConfigError } from '../../core/errors/error';\nimport type { PresetInput, ProviderPreset } from '../../core/registry/providers';\nimport { reveal, secret } from '../../core/secret/secret';\nimport type { EndpointConfig } from '../../core/transport/types';\n\ntype Table = Readonly<Record<string, Readonly<Record<string, string>>>>;\n\n/**\n * Free public endpoints named in each chain's own documentation: the chain operator's, or a\n * third party's where the docs list one (Polygon's are drpc's).\n */\nconst PUBLIC: Table = {\n bsc: {\n mainnet: 'https://bsc-dataseed.bnbchain.org',\n testnet: 'https://bsc-testnet-dataseed.bnbchain.org',\n },\n polygon: {\n mainnet: 'https://polygon.drpc.org',\n amoy: 'https://polygon-amoy.drpc.org',\n },\n avalanche: {\n mainnet: 'https://api.avax.network/ext/bc/C/rpc',\n fuji: 'https://api.avax-test.network/ext/bc/C/rpc',\n },\n arbitrum: {\n mainnet: 'https://arb1.arbitrum.io/rpc',\n sepolia: 'https://sepolia-rollup.arbitrum.io/rpc',\n },\n optimism: {\n mainnet: 'https://mainnet.optimism.io',\n sepolia: 'https://sepolia.optimism.io',\n },\n base: { mainnet: 'https://mainnet.base.org', sepolia: 'https://sepolia.base.org' },\n};\n\n/** `https://<host>.g.alchemy.com/v2/<key>`. */\nconst ALCHEMY: Table = {\n ethereum: { mainnet: 'eth-mainnet', sepolia: 'eth-sepolia', hoodi: 'eth-hoodi' },\n bsc: { mainnet: 'bnb-mainnet', testnet: 'bnb-testnet' },\n polygon: { mainnet: 'polygon-mainnet', amoy: 'polygon-amoy' },\n avalanche: { mainnet: 'avax-mainnet', fuji: 'avax-fuji' },\n arbitrum: { mainnet: 'arb-mainnet', sepolia: 'arb-sepolia' },\n optimism: { mainnet: 'opt-mainnet', sepolia: 'opt-sepolia' },\n base: { mainnet: 'base-mainnet', sepolia: 'base-sepolia' },\n};\n\n/** `https://<host>.infura.io/v3/<key>`. */\nconst INFURA: Table = {\n ethereum: { mainnet: 'mainnet', sepolia: 'sepolia', hoodi: 'hoodi' },\n bsc: { mainnet: 'bsc-mainnet', testnet: 'bsc-testnet' },\n polygon: { mainnet: 'polygon-mainnet', amoy: 'polygon-amoy' },\n avalanche: { mainnet: 'avalanche-mainnet', fuji: 'avalanche-fuji' },\n arbitrum: { mainnet: 'arbitrum-mainnet', sepolia: 'arbitrum-sepolia' },\n optimism: { mainnet: 'optimism-mainnet', sepolia: 'optimism-sepolia' },\n base: { mainnet: 'base-mainnet', sepolia: 'base-sepolia' },\n};\n\n/** `https://rpc.ankr.com/<path>/<key>`: only the paths Ankr's documentation shows. */\nconst ANKR: Table = {\n ethereum: { mainnet: 'eth' },\n bsc: { mainnet: 'bsc' },\n avalanche: { mainnet: 'avalanche' },\n arbitrum: { mainnet: 'arbitrum' },\n base: { mainnet: 'base' },\n};\n\nfunction entry(table: Table, input: PresetInput): string {\n const value = table[input.chain]?.[input.network];\n // Unreachable through the catalog, which asks `supports` first.\n if (value === undefined)\n throw new Error(`no entry for ${input.chain}:${input.network}`);\n return value;\n}\n\n/** The revealed key; the error names the preset and network, never the key. */\nfunction apiKeyOf(name: string, input: PresetInput): string {\n const key: unknown = input.apiKey === undefined ? undefined : reveal(input.apiKey);\n if (typeof key !== 'string' || key.trim() === '') {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `provider preset '${name}' requires a non-empty apiKey for ${input.chain}:${input.network}`,\n );\n }\n return key;\n}\n\nfunction keyed(\n name: string,\n table: Table,\n url: (value: string, key: string) => string,\n): ProviderPreset {\n return {\n name,\n kind: 'rpc',\n requiresApiKey: true,\n supports: (chain, network) => table[chain]?.[network] !== undefined,\n endpoints: (input): readonly EndpointConfig[] => [\n { name, url: secret(url(entry(table, input), apiKeyOf(name, input))) },\n ],\n };\n}\n\nexport const EVM_PRESETS: readonly ProviderPreset[] = [\n {\n name: 'public',\n kind: 'rpc',\n production: false,\n supports: (chain, network) => PUBLIC[chain]?.[network] !== undefined,\n endpoints: (input) => [{ name: 'public', url: entry(PUBLIC, input) }],\n },\n keyed('alchemy', ALCHEMY, (host, key) => `https://${host}.g.alchemy.com/v2/${key}`),\n keyed('infura', INFURA, (host, key) => `https://${host}.infura.io/v3/${key}`),\n keyed('ankr', ANKR, (path, key) => `https://rpc.ankr.com/${path}/${key}`),\n];\n"]}
@@ -0,0 +1,19 @@
1
+ import type { BlockSource, ProofSource } from '../../core/driver/types';
2
+ import { type EvmContext } from './reader';
3
+ /**
4
+ * The lowest height at or below `final` where `consumed` holds, given that it holds at
5
+ * `final`. A gallop back (`final` less 1, 2, 4, …) finds a height where it does not, then a
6
+ * bisection the first where it does. `consumed` never turns false again as the height
7
+ * grows, since an account's nonce never falls. Beyond `MAX_SEARCH_READS` reads, it decides
8
+ * nothing.
9
+ */
10
+ export declare function consumptionHeight(consumed: (height: bigint) => Promise<boolean>, final: bigint): Promise<bigint>;
11
+ export declare function createEvmProofs(ctx: EvmContext): ProofSource;
12
+ /**
13
+ * Whether a block's `logsBloom` may hold `value` (a log's address or topic), by the
14
+ * yellow paper's M3:2048: three bits, each the low 11 bits of a byte pair of the value's
15
+ * keccak-256. `false` is definitive; `true` may be a false positive. No bloom may hold
16
+ * anything.
17
+ */
18
+ export declare function mayHold(bloom: string | undefined, value: string): boolean;
19
+ export declare function createEvmBlocks(ctx: EvmContext): BlockSource;
@@ -0,0 +1,358 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.consumptionHeight = consumptionHeight;
4
+ exports.createEvmProofs = createEvmProofs;
5
+ exports.mayHold = mayHold;
6
+ exports.createEvmBlocks = createEvmBlocks;
7
+ /**
8
+ * Proofs and block scanning. Every proof read is a quorum read under `PROOF`, comparing
9
+ * only consensus facts (`rpc.ts`). No proof lets one endpoint choose the final height: a
10
+ * proof attests the fact it needs at that fact's own
11
+ * height, so honest endpoints disagree only while it is final on one and not yet on another,
12
+ * which decides nothing. The block source serves dense heights with native transfers and
13
+ * ERC-20 `Transfer` logs, as the chain reports them. Every error thrown here is a
14
+ * `PROVIDER_*` code, retryable by the code table: look again later.
15
+ */
16
+ const sha3_1 = require("@noble/hashes/sha3");
17
+ const utils_1 = require("@noble/hashes/utils");
18
+ const error_1 = require("../../core/errors/error");
19
+ const client_1 = require("./client");
20
+ const decode_1 = require("./decode");
21
+ const reader_1 = require("./reader");
22
+ const rpc_1 = require("./rpc");
23
+ /**
24
+ * A quorum key under which every endpoint whose nonce is past `nonce` agrees. A
25
+ * malformed answer throws, which the transport counts as a disagreement.
26
+ */
27
+ const nonceAbove = (nonce) => (result) => (0, client_1.quantity)(result, 'nonce') > nonce;
28
+ /**
29
+ * Node texts for state it does not hold: pruned, beyond its recent-state window, or
30
+ * not served at a tag (geth, op-geth, Nitro, BSC, Erigon, Reth, Besu wordings).
31
+ */
32
+ const STATE_UNAVAILABLE = /missing trie node|historical state .* not available|header not found|state (is )?not available|pruned/i;
33
+ /**
34
+ * The boundary of every proof. Only a definitive negative answer may
35
+ * say "no", and a JSON-RPC error answer is none: state the node does not hold, an index it
36
+ * is still building (geth's "transaction indexing is in progress"), or any other error,
37
+ * ambiguous or not. Every `RPC_ERROR` becomes a retryable `PROVIDER_UNAVAILABLE` (look again
38
+ * later, or elsewhere) that carries it as its cause, so no caller takes it for an answer and
39
+ * the monitor keeps watching. Every other error passes unchanged: `PROVIDER_MISCONFIGURED`
40
+ * stays final, and aborts and foreign errors stay what they are.
41
+ */
42
+ async function undecided(proof) {
43
+ try {
44
+ return await proof();
45
+ }
46
+ catch (error) {
47
+ if (!(0, error_1.isCryptoAioError)(error, 'RPC_ERROR'))
48
+ throw error;
49
+ const message = String(error.details?.rpcMessage ?? error.message);
50
+ throw new error_1.ProviderError('PROVIDER_UNAVAILABLE', STATE_UNAVAILABLE.test(message)
51
+ ? 'finalized state not available'
52
+ : 'the endpoints gave no answer', { cause: error });
53
+ }
54
+ }
55
+ /** A retryable "decide nothing": look again later, or elsewhere. */
56
+ const undecidable = (reason) => new error_1.ProviderError('PROVIDER_UNAVAILABLE', reason);
57
+ /**
58
+ * At most this many nonce reads look for the height that consumed a nonce. The gallop
59
+ * and the bisection take about two reads per doubling of the distance back: at worst 60
60
+ * reads below a final height of 2^30, and 64 below 2^32, so this reaches every consumption
61
+ * on any chain served today.
62
+ */
63
+ const MAX_SEARCH_READS = 64;
64
+ /**
65
+ * The lowest height at or below `final` where `consumed` holds, given that it holds at
66
+ * `final`. A gallop back (`final` less 1, 2, 4, …) finds a height where it does not, then a
67
+ * bisection the first where it does. `consumed` never turns false again as the height
68
+ * grows, since an account's nonce never falls. Beyond `MAX_SEARCH_READS` reads, it decides
69
+ * nothing.
70
+ */
71
+ async function consumptionHeight(consumed, final) {
72
+ let reads = 0;
73
+ const read = (height) => {
74
+ if (reads === MAX_SEARCH_READS) {
75
+ throw undecidable('the nonce was consumed too far back to look up');
76
+ }
77
+ reads += 1;
78
+ return consumed(height);
79
+ };
80
+ // Consumed at `high`; not at `low` (below genesis, until a read says otherwise).
81
+ let high = final;
82
+ let low = -1n;
83
+ for (let step = 1n; high > 0n && low < 0n; step *= 2n) {
84
+ const height = final > step ? final - step : 0n;
85
+ if (await read(height))
86
+ high = height;
87
+ else
88
+ low = height;
89
+ }
90
+ while (high - low > 1n) {
91
+ const middle = (low + high) / 2n;
92
+ if (await read(middle))
93
+ high = middle;
94
+ else
95
+ low = middle;
96
+ }
97
+ return high;
98
+ }
99
+ /**
100
+ * Whether `txHash` is final, when no endpoint serves its
101
+ * receipt. `null` is no proof of absence: a node answers it for every transaction outside its
102
+ * index (geth indexes the last 2,350,000 blocks by default, and pruning nodes of other
103
+ * clients drop theirs), so "not included" would prove a final, executed transfer `replaced`.
104
+ * The nonce's consumer decides instead. The quorum attests the nonce consumed at a final
105
+ * height, a search finds the block that consumed it, and the sender's transaction at that
106
+ * nonce there answers: another one proves ours is not included; ours is included, with the
107
+ * verdict its receipt in that block gives. Anything else decides nothing, and so does
108
+ * an endpoint without the historical state the search reads.
109
+ *
110
+ * Known gap: nothing caches the consumer per sender and nonce, so an undecided Attempt
111
+ * repeats the search on every monitor pass. A nonce that an EIP-7702 authorization
112
+ * consumed (no transaction from the sender) is never decided, the safe direction.
113
+ */
114
+ async function nonceConsumer(ctx, txHash, ordering, from) {
115
+ if (ordering.kind !== 'nonce')
116
+ throw undecidable('no nonce to look the transaction up by');
117
+ const { client } = ctx;
118
+ const { nonce } = ordering;
119
+ const tags = { ...reader_1.PROOF, quorumKey: nonceAbove(nonce) };
120
+ const consumed = async (height) => (await client.getTransactionCount(from, height, tags)) > nonce;
121
+ const { height: final } = await (0, reader_1.provenFinal)(ctx, reader_1.PROOF);
122
+ if (!(await consumed(final)))
123
+ throw undecidable('the nonce is not consumed at finality');
124
+ const height = await consumptionHeight(consumed, final);
125
+ const block = await client.getBlockWithTransactions(height, {
126
+ ...reader_1.PROOF,
127
+ quorumKey: rpc_1.blockTransactionsKey,
128
+ });
129
+ if (block?.number !== height)
130
+ throw undecidable('the endpoints serve no final block');
131
+ const sender = from.toLowerCase();
132
+ const consumer = block.transactions.find((tx) => tx.from.toLowerCase() === sender && tx.nonce === nonce);
133
+ // No transaction from the sender used the nonce: an EIP-7702 authorization can.
134
+ if (!consumer)
135
+ throw undecidable('no transaction in its block used the nonce');
136
+ // Another transaction is final at our nonce: ours can never be included.
137
+ if (consumer.hash !== txHash.toLowerCase())
138
+ return { included: false };
139
+ const receipts = await client.getBlockReceipts(block.hash, reader_1.PROOF);
140
+ const receipt = receipts?.find((r) => r.transactionHash === consumer.hash);
141
+ if (receipt?.blockHash !== block.hash) {
142
+ throw undecidable('the final block has no receipts on the endpoints');
143
+ }
144
+ return {
145
+ included: true,
146
+ success: receipt.status === 1 && (0, decode_1.tokenTransferLanded)(client.abi, consumer, receipt),
147
+ blockHeight: height,
148
+ blockHash: block.hash,
149
+ txHash: consumer.hash,
150
+ };
151
+ }
152
+ function createEvmProofs(ctx) {
153
+ const { client } = ctx;
154
+ return {
155
+ finalizedHead: () => undecided(async () => {
156
+ const { height, block } = await (0, reader_1.provenFinal)(ctx, reader_1.PROOF);
157
+ const final = block ?? (await client.getBlock(height, reader_1.PROOF));
158
+ if (!final) {
159
+ throw new error_1.ProviderError('PROVIDER_UNAVAILABLE', 'the endpoints serve no finalized block');
160
+ }
161
+ return { height: final.number, hash: final.hash, timestamp: final.timestamp };
162
+ }),
163
+ includedFinal: (ref, ordering, from) => undecided(async () => {
164
+ const receipt = await client.getReceipt(ref.id, reader_1.PROOF);
165
+ // No receipt is no proof of absence; the transaction at our nonce decides.
166
+ if (!receipt)
167
+ return nonceConsumer(ctx, ref.id, ordering, from);
168
+ const final = await (0, reader_1.finalBlockAt)(ctx, receipt.blockNumber, reader_1.PROOF);
169
+ // The transaction is in a block, just not a final one on these endpoints yet.
170
+ // "Not included" would let the core prove a final transfer `replaced` (whenAbsent,
171
+ // after the slot was proven consumed on endpoints whose finality is further along),
172
+ // so this decides nothing.
173
+ if (!final) {
174
+ throw new error_1.ProviderError('PROVIDER_UNAVAILABLE', 'receipt not yet final');
175
+ }
176
+ // The endpoints agree on a receipt from a block that is not the final one at its
177
+ // height: the chain reorganized between the reads, or their receipt index lags. The
178
+ // transaction may be final elsewhere, so this decides nothing.
179
+ if (final.hash !== receipt.blockHash) {
180
+ throw new error_1.ProviderError('PROVIDER_INCONSISTENT', 'the receipt is not in the final block at its height');
181
+ }
182
+ let success = receipt.status === 1;
183
+ if (success) {
184
+ // A token transfer that logged no transfer to its recipient paid it nothing
185
+ // (read from the ref alone, the call's arguments from its keyed calldata). The
186
+ // core proves only its own Attempts, so this is always a verdict.
187
+ const tx = await client.getTransaction(ref.id, reader_1.PROOF);
188
+ if (!tx) {
189
+ throw new error_1.ProviderError('PROVIDER_INCONSISTENT', 'a receipt without its transaction');
190
+ }
191
+ success = (0, decode_1.tokenTransferLanded)(client.abi, tx, receipt);
192
+ }
193
+ return {
194
+ included: true,
195
+ success,
196
+ blockHeight: receipt.blockNumber,
197
+ blockHash: receipt.blockHash,
198
+ txHash: receipt.transactionHash,
199
+ };
200
+ }),
201
+ slotConsumed: (ordering, from, level) => undecided(async () => {
202
+ if (ordering.kind !== 'nonce')
203
+ return false;
204
+ if (level === 'latest') {
205
+ return ((await client.getTransactionCount(from, 'latest', reader_1.MONITOR)) > ordering.nonce);
206
+ }
207
+ // The nonce at a height the quorum attests final (one endpoint's view proposes
208
+ // it, trailed by PEER_SKEW), on tag and confirmation networks alike. State at a final
209
+ // height never changes, so honest endpoints agree however their heads move, and one
210
+ // that over-reports its finalized block cannot advance the height. A number,
211
+ // not the `finalized` tag: some nodes (BSC's) serve no state at the tag.
212
+ const { height } = await (0, reader_1.provenFinal)(ctx, reader_1.PROOF);
213
+ const count = await client.getTransactionCount(from, height, {
214
+ ...reader_1.PROOF,
215
+ quorumKey: nonceAbove(ordering.nonce),
216
+ });
217
+ return count > ordering.nonce;
218
+ }),
219
+ // Nonce ordering: an EVM transaction never expires.
220
+ expired: async () => false,
221
+ blockHash: (height, level) => undecided(async () => {
222
+ if (level === 'finalized') {
223
+ return (await (0, reader_1.finalBlockAt)(ctx, height, reader_1.PROOF))?.hash ?? null;
224
+ }
225
+ return (await client.getBlock(height, reader_1.PROOF))?.hash ?? null;
226
+ }),
227
+ };
228
+ }
229
+ const changed = (height) => new error_1.ProviderError('PROVIDER_INCONSISTENT', `block ${height} changed while scanning`);
230
+ /**
231
+ * Whether a block's `logsBloom` may hold `value` (a log's address or topic), by the
232
+ * yellow paper's M3:2048: three bits, each the low 11 bits of a byte pair of the value's
233
+ * keccak-256. `false` is definitive; `true` may be a false positive. No bloom may hold
234
+ * anything.
235
+ */
236
+ function mayHold(bloom, value) {
237
+ if (bloom === undefined)
238
+ return true;
239
+ const hash = (0, sha3_1.keccak_256)((0, utils_1.hexToBytes)(value.slice(2)));
240
+ for (let i = 0; i < 6; i += 2) {
241
+ const bit = ((hash[i] << 8) | hash[i + 1]) & 2047;
242
+ // Bit 0 is the last byte's lowest bit.
243
+ const byte = 255 - (bit >> 3);
244
+ const bits = Number.parseInt(bloom.slice(2 + 2 * byte, 4 + 2 * byte), 16);
245
+ if ((bits & (1 << (bit & 7))) === 0)
246
+ return false;
247
+ }
248
+ return true;
249
+ }
250
+ /** Provider texts for a method they do not serve, whatever their error code. */
251
+ const METHOD_MISSING = /method .*(not found|not supported|does not exist|is not available)/i;
252
+ /**
253
+ * A definitive answer that the node does not serve `eth_getBlockReceipts`: JSON-RPC's
254
+ * "method not found" (-32601), EIP-1474's "method not supported" (-32004), or a provider's
255
+ * own code with a text that says so.
256
+ */
257
+ function methodMissing(error) {
258
+ if (!(0, error_1.isCryptoAioError)(error, 'RPC_ERROR') || error.ambiguous)
259
+ return false;
260
+ const { rpcCode, rpcMessage } = error.details ?? {};
261
+ return (rpcCode === -32601 ||
262
+ rpcCode === -32004 ||
263
+ METHOD_MISSING.test(String(rpcMessage ?? '')));
264
+ }
265
+ /**
266
+ * Every receipt of `block` in one call, by transaction hash. The node reads them by
267
+ * block, never through a log or transaction index that may lag. `undefined` when the node
268
+ * does not serve `eth_getBlockReceipts`.
269
+ */
270
+ async function blockReceipts(client, block) {
271
+ let receipts;
272
+ try {
273
+ receipts = await client.getBlockReceipts(block.hash, reader_1.MONITOR);
274
+ }
275
+ catch (error) {
276
+ if (methodMissing(error))
277
+ return undefined;
278
+ throw error;
279
+ }
280
+ if (receipts === null)
281
+ throw changed(block.number);
282
+ return new Map(receipts.map((receipt) => [receipt.transactionHash, receipt]));
283
+ }
284
+ /** The fallback: one `eth_getTransactionReceipt` per transaction. */
285
+ async function receiptsOf(client, txs) {
286
+ const receipts = await Promise.all(txs.map((tx) => client.getReceipt(tx.hash, reader_1.MONITOR)));
287
+ return new Map(receipts.flatMap((receipt, i) => receipt ? [[txs[i]?.hash, receipt]] : []));
288
+ }
289
+ /**
290
+ * The logs of every transaction of `block`. A receipt missing, or from another block, could
291
+ * hide a deposit, so it fails the scan retryably instead.
292
+ */
293
+ function blockLogs(block, receipts) {
294
+ return block.transactions.flatMap((tx) => {
295
+ const receipt = receipts.get(tx.hash);
296
+ if (receipt?.blockHash !== block.hash)
297
+ throw changed(block.number);
298
+ return receipt.logs;
299
+ });
300
+ }
301
+ function createEvmBlocks(ctx) {
302
+ const { client, config } = ctx;
303
+ /**
304
+ * The block's `Transfer` logs without block receipts: `eth_getLogs`, which a lagging
305
+ * log index answers empty without an error. So when it answers nothing while the header's
306
+ * bloom may hold the topic, every transaction's receipt is read before the empty answer
307
+ * is trusted: any call may have logged one.
308
+ */
309
+ const transferLogs = async (block) => {
310
+ const topic = client.abi.transferTopic;
311
+ const logs = await client.getLogs({ blockHash: block.hash, topics: [topic] }, reader_1.MONITOR);
312
+ if (logs.length > 0 || !mayHold(block.logsBloom, topic))
313
+ return { logs };
314
+ const receipts = await receiptsOf(client, block.transactions);
315
+ return { logs: blockLogs(block, receipts), receipts };
316
+ };
317
+ return {
318
+ async header(height) {
319
+ const block = await client.getBlock(height, reader_1.MONITOR);
320
+ return block ? (0, reader_1.toDriverBlock)(block) : null;
321
+ },
322
+ async transactions(block, filter) {
323
+ const full = await client.getBlockWithTransactions(block.height, reader_1.MONITOR);
324
+ if (!full || full.hash !== block.hash)
325
+ throw changed(block.height);
326
+ // One call for every receipt of the block, filtered scans included.
327
+ let receipts = await blockReceipts(client, full);
328
+ let selected = full.transactions;
329
+ if (filter?.addresses?.length) {
330
+ const wanted = new Set(filter.addresses.map((a) => a.toLowerCase()));
331
+ const watched = (address) => address !== null && wanted.has(address.toLowerCase());
332
+ let logs;
333
+ if (receipts)
334
+ logs = blockLogs(full, receipts);
335
+ else
336
+ ({ logs, receipts } = await transferLogs(full));
337
+ const tokenTxs = new Set(logs
338
+ .filter((log) => {
339
+ const transfer = client.abi.decodeTransfer(log);
340
+ return (transfer !== null && (watched(transfer.from) || watched(transfer.to)));
341
+ })
342
+ .map((log) => log.transactionHash));
343
+ // A contract creation's recipient is only in its receipt, so every creation stays.
344
+ selected = full.transactions.filter((tx) => tx.to === null || watched(tx.from) || watched(tx.to) || tokenTxs.has(tx.hash));
345
+ }
346
+ receipts ??= await receiptsOf(client, selected);
347
+ return selected.map((tx) => {
348
+ const receipt = receipts.get(tx.hash);
349
+ if (!receipt || receipt.blockHash !== block.hash)
350
+ throw changed(block.height);
351
+ // The chain's view, with the network's config so bor's system logs do not make a
352
+ // plain Polygon transfer `partial`.
353
+ return (0, decode_1.decodeTransaction)(client.abi, tx, receipt, full.timestamp, config);
354
+ });
355
+ },
356
+ };
357
+ }
358
+ //# sourceMappingURL=proofs.js.map