web3-wizzard-lib 0.0.2__py3-none-any.whl

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 (547) hide show
  1. core/__init__.py +1 -0
  2. core/contract/__init__.py +0 -0
  3. core/contract/aavecontract.py +36 -0
  4. core/contract/alienswap_contract.py +21 -0
  5. core/contract/arena_games_contract.py +16 -0
  6. core/contract/basiliskcontract.py +58 -0
  7. core/contract/bilinear_contract.py +22 -0
  8. core/contract/bungee.py +33 -0
  9. core/contract/coredao_contract.py +35 -0
  10. core/contract/coredao_from_contract.py +40 -0
  11. core/contract/dmail_send_mail.py +18 -0
  12. core/contract/empty_nft.py +18 -0
  13. core/contract/era_name.py +23 -0
  14. core/contract/eralendcontract.py +34 -0
  15. core/contract/eth_scroll_bridge_contract.py +25 -0
  16. core/contract/frog_war_contract.py +48 -0
  17. core/contract/horizondex_quoter.py +14 -0
  18. core/contract/horizondex_router.py +91 -0
  19. core/contract/imagine_contract.py +18 -0
  20. core/contract/izumi.py +63 -0
  21. core/contract/kreatorland_contract.py +21 -0
  22. core/contract/l0_claim.py +254 -0
  23. core/contract/l2_telegraph.py +21 -0
  24. core/contract/layerbank_price.py +18 -0
  25. core/contract/layerbank_token.py +29 -0
  26. core/contract/layerbankcontract.py +59 -0
  27. core/contract/linea_day_2_contract.py +19 -0
  28. core/contract/linea_day_3_contract.py +55 -0
  29. core/contract/linea_ens_names_contract.py +55 -0
  30. core/contract/lineaswaprouter.py +52 -0
  31. core/contract/maverick_multicall.py +52 -0
  32. core/contract/mendi_finance_contract.py +11 -0
  33. core/contract/mendi_token.py +25 -0
  34. core/contract/merkly_minter.py +47 -0
  35. core/contract/micro3_contract.py +18 -0
  36. core/contract/mute_router.py +93 -0
  37. core/contract/nidum_contract.py +44 -0
  38. core/contract/nile_contract.py +60 -0
  39. core/contract/nomis_attest_contract.py +40 -0
  40. core/contract/nomis_contract.py +40 -0
  41. core/contract/octomos.py +31 -0
  42. core/contract/odos.py +104 -0
  43. core/contract/omnisea.py +29 -0
  44. core/contract/orbiter_starknet.py +30 -0
  45. core/contract/pancake_pool.py +19 -0
  46. core/contract/pancake_quoter.py +20 -0
  47. core/contract/pancake_router.py +72 -0
  48. core/contract/rage_claim.py +24 -0
  49. core/contract/reactor_fusion_contract.py +78 -0
  50. core/contract/readon_contract.py +19 -0
  51. core/contract/rubyscore_contract.py +31 -0
  52. core/contract/satoshi_universe_contract.py +29 -0
  53. core/contract/scroll_bridge_contract.py +24 -0
  54. core/contract/scroll_canvas_mint_contract.py +26 -0
  55. core/contract/scroll_oracle.py +11 -0
  56. core/contract/snap_contract.py +16 -0
  57. core/contract/social_scan_contract.py +20 -0
  58. core/contract/stargate_farming.py +37 -0
  59. core/contract/stargate_router.py +84 -0
  60. core/contract/stargate_router_eth.py +41 -0
  61. core/contract/stargate_token_pool.py +46 -0
  62. core/contract/stargate_v2_contract.py +36 -0
  63. core/contract/syncswap_classic_pool.py +15 -0
  64. core/contract/syncswap_classic_pool_factory.py +15 -0
  65. core/contract/syncswap_pool.py +25 -0
  66. core/contract/syncswap_router.py +123 -0
  67. core/contract/tavaera_id.py +18 -0
  68. core/contract/tavaera_mint.py +17 -0
  69. core/contract/townstory_bonus_contract.py +19 -0
  70. core/contract/townstory_contract.py +21 -0
  71. core/contract/velocore_lens.py +44 -0
  72. core/contract/velocore_pool.py +198 -0
  73. core/contract/velocore_router.py +80 -0
  74. core/contract/woofi_swap.py +29 -0
  75. core/contract/xy_finance_contract.py +87 -0
  76. core/contract/yoddlo_contract.py +19 -0
  77. core/contract/yuliverse_contract.py +36 -0
  78. core/contract/zebra_contract.py +68 -0
  79. core/contract/zerolend_contract.py +34 -0
  80. core/contract/zerolend_liq_contract.py +20 -0
  81. core/contract/zkdx_contract.py +40 -0
  82. core/contract/zkdx_data.py +14 -0
  83. core/contract/zks.py +24 -0
  84. core/modules/__init__.py +0 -0
  85. core/modules/ads_import_proxy.py +52 -0
  86. core/modules/airdrop_printer.py +80 -0
  87. core/modules/bank/__init__.py +0 -0
  88. core/modules/bank/aave.py +25 -0
  89. core/modules/bank/bank.py +15 -0
  90. core/modules/bank/bank_module.py +99 -0
  91. core/modules/bank/basilisk.py +25 -0
  92. core/modules/bank/eralend.py +25 -0
  93. core/modules/bank/layerbank.py +116 -0
  94. core/modules/bank/mendi_finance.py +57 -0
  95. core/modules/bank/reactorfusion.py +25 -0
  96. core/modules/bank/zerolend.py +36 -0
  97. core/modules/bridge/__init__.py +0 -0
  98. core/modules/bridge/bridge.py +8 -0
  99. core/modules/bridge/coredao_bridge_sub.py +47 -0
  100. core/modules/bridge/orbiter_sub.py +112 -0
  101. core/modules/bridge/scroll_bridge_sub.py +42 -0
  102. core/modules/bridge/stargate_v2_sub.py +74 -0
  103. core/modules/bridge_module.py +47 -0
  104. core/modules/bungee.py +109 -0
  105. core/modules/cex_sender.py +60 -0
  106. core/modules/cex_subaccount_transfer.py +34 -0
  107. core/modules/cex_withdraw.py +91 -0
  108. core/modules/claimer.py +45 -0
  109. core/modules/claims/__init__.py +0 -0
  110. core/modules/claims/layerzero_claimer.py +64 -0
  111. core/modules/claims/rabby_claimer.py +81 -0
  112. core/modules/concrete_swap.py +97 -0
  113. core/modules/coredao_bridge.py +32 -0
  114. core/modules/coredao_bridge_auto.py +39 -0
  115. core/modules/debank_checker.py +90 -0
  116. core/modules/dmail.py +54 -0
  117. core/modules/erc20_balance.py +42 -0
  118. core/modules/intract/__init__.py +0 -0
  119. core/modules/intract/intract_api.py +212 -0
  120. core/modules/intract/utils.py +81 -0
  121. core/modules/intract_claim.py +104 -0
  122. core/modules/layer_2_20.py +65 -0
  123. core/modules/lending_module.py +134 -0
  124. core/modules/linea_appeal.py +70 -0
  125. core/modules/linea_poh_lxp.py +64 -0
  126. core/modules/liquidity/__init__.py +0 -0
  127. core/modules/liquidity/nile_pool.py +64 -0
  128. core/modules/liquidity/pool.py +16 -0
  129. core/modules/liquidity/syncswap_pool.py +61 -0
  130. core/modules/liquidity/velocore_pool.py +55 -0
  131. core/modules/liquidity/zerolend_liquidity.py +26 -0
  132. core/modules/liquidity_pool.py +60 -0
  133. core/modules/merkly_refuel.py +87 -0
  134. core/modules/modules.py +4 -0
  135. core/modules/nft/__init__.py +0 -0
  136. core/modules/nft/abbys_world.py +22 -0
  137. core/modules/nft/acg_worlds.py +25 -0
  138. core/modules/nft/alienswap_linea.py +22 -0
  139. core/modules/nft/arena_games.py +22 -0
  140. core/modules/nft/asmatch.py +22 -0
  141. core/modules/nft/battlemon.py +25 -0
  142. core/modules/nft/bilinear.py +22 -0
  143. core/modules/nft/bitavatar.py +25 -0
  144. core/modules/nft/culture_satoshi_universe.py +24 -0
  145. core/modules/nft/efrogs.py +26 -0
  146. core/modules/nft/empty_nft.py +22 -0
  147. core/modules/nft/era_domain.py +42 -0
  148. core/modules/nft/frog_war.py +22 -0
  149. core/modules/nft/frog_war_bonus.py +22 -0
  150. core/modules/nft/gamerboom.py +25 -0
  151. core/modules/nft/gamerboom_bonus.py +26 -0
  152. core/modules/nft/imagine.py +32 -0
  153. core/modules/nft/kreatorland_module.py +35 -0
  154. core/modules/nft/l2_telegraph_module.py +22 -0
  155. core/modules/nft/layer3_meta.py +25 -0
  156. core/modules/nft/linea_culture_2_2_linus.py +24 -0
  157. core/modules/nft/linea_culture_2_3_yooldo.py +24 -0
  158. core/modules/nft/linea_culture_2_4_frogwar.py +24 -0
  159. core/modules/nft/linea_culture_2_5_acg.py +25 -0
  160. core/modules/nft/linea_culture_2_6_ascend_the_end.py +25 -0
  161. core/modules/nft/linea_culture_3_1_ascend_the_end.py +25 -0
  162. core/modules/nft/linea_culture_3_2_sending_me.py +25 -0
  163. core/modules/nft/linea_culture_3_3_townstory.py +25 -0
  164. core/modules/nft/linea_culture_3_4_daniele.py +25 -0
  165. core/modules/nft/linea_culture_3_5_demmortal.py +25 -0
  166. core/modules/nft/linea_culture_3_6_foxy.py +25 -0
  167. core/modules/nft/linea_culture_4_1_coop_records.py +60 -0
  168. core/modules/nft/linea_culture_4_2_borja_moskv.py +65 -0
  169. core/modules/nft/linea_culture_4_2_borja_moskv_approve.py +27 -0
  170. core/modules/nft/linea_culture_4_3_fruit.py +66 -0
  171. core/modules/nft/linea_culture_4_4_fruit_crux.py +67 -0
  172. core/modules/nft/linea_culture_4_5_forbidden_fruit.py +67 -0
  173. core/modules/nft/linea_culture_4_6_laurent.py +67 -0
  174. core/modules/nft/linea_culture_day2.py +20 -0
  175. core/modules/nft/linea_culture_day3.py +20 -0
  176. core/modules/nft/linea_ens_names.py +107 -0
  177. core/modules/nft/lucky_cat.py +25 -0
  178. core/modules/nft/merkly_minter_module.py +22 -0
  179. core/modules/nft/micro3.py +23 -0
  180. core/modules/nft/mint_2048.py +28 -0
  181. core/modules/nft/nft_submodule.py +16 -0
  182. core/modules/nft/nidum.py +87 -0
  183. core/modules/nft/nidum_bonus.py +23 -0
  184. core/modules/nft/nomis.py +64 -0
  185. core/modules/nft/nomis_attest.py +66 -0
  186. core/modules/nft/nouns.py +27 -0
  187. core/modules/nft/octomos.py +32 -0
  188. core/modules/nft/omnisea.py +33 -0
  189. core/modules/nft/omnizone.py +25 -0
  190. core/modules/nft/orbiter_claim.py +87 -0
  191. core/modules/nft/readon.py +30 -0
  192. core/modules/nft/rubyscore.py +45 -0
  193. core/modules/nft/sarubol.py +22 -0
  194. core/modules/nft/satoshi_universe.py +22 -0
  195. core/modules/nft/scroll_canvas_attest_year_badge.py +35 -0
  196. core/modules/nft/scroll_canvas_mint.py +51 -0
  197. core/modules/nft/sign.py +32 -0
  198. core/modules/nft/snap.py +25 -0
  199. core/modules/nft/snap_bonus.py +31 -0
  200. core/modules/nft/social_scan.py +22 -0
  201. core/modules/nft/sub_module.py +8 -0
  202. core/modules/nft/tavaera.py +30 -0
  203. core/modules/nft/townstory.py +75 -0
  204. core/modules/nft/townstory_bonus.py +45 -0
  205. core/modules/nft/trusta_reputation.py +48 -0
  206. core/modules/nft/trustaa_poh.py +49 -0
  207. core/modules/nft/uber_poh.py +24 -0
  208. core/modules/nft/wizards_of_linea.py +26 -0
  209. core/modules/nft/yoddlo.py +22 -0
  210. core/modules/nft/yuliverse.py +22 -0
  211. core/modules/nft/zace.py +25 -0
  212. core/modules/nft/zks_domain.py +41 -0
  213. core/modules/nft_minter.py +107 -0
  214. core/modules/orbiter.py +39 -0
  215. core/modules/orbiter_checker.py +26 -0
  216. core/modules/rage.py +54 -0
  217. core/modules/scroll_bridge.py +45 -0
  218. core/modules/sell_all.py +51 -0
  219. core/modules/sleep_module.py +25 -0
  220. core/modules/smart_contract_deployment.py +37 -0
  221. core/modules/stargate/__init__.py +0 -0
  222. core/modules/stargate/auto_bridge.py +91 -0
  223. core/modules/stargate/bridge.py +38 -0
  224. core/modules/stargate/bridge_eth.py +59 -0
  225. core/modules/stargate/bridge_tokens.py +48 -0
  226. core/modules/stargate/classic_bridge.py +34 -0
  227. core/modules/stargate/farming.py +163 -0
  228. core/modules/stargate/l0_data.py +10 -0
  229. core/modules/stargate/pool.py +74 -0
  230. core/modules/stargate/stargate_balance_utils.py +25 -0
  231. core/modules/stargate/stargate_gas_checker.py +68 -0
  232. core/modules/swap/__init__.py +1 -0
  233. core/modules/swap/horizondex.py +38 -0
  234. core/modules/swap/izumi.py +41 -0
  235. core/modules/swap/lineaswap.py +34 -0
  236. core/modules/swap/maverick.py +66 -0
  237. core/modules/swap/mute.py +39 -0
  238. core/modules/swap/odos.py +58 -0
  239. core/modules/swap/one_inch.py +58 -0
  240. core/modules/swap/pancake.py +41 -0
  241. core/modules/swap/swap_facade.py +10 -0
  242. core/modules/swap/syncswap.py +62 -0
  243. core/modules/swap/velocore.py +40 -0
  244. core/modules/swap/woofi.py +38 -0
  245. core/modules/swap/xy_finance.py +43 -0
  246. core/modules/swap/zebra.py +32 -0
  247. core/modules/warm_up.py +98 -0
  248. core/modules/wrapping.py +74 -0
  249. core/modules/zkdx.py +63 -0
  250. data/__init__.py +0 -0
  251. data/config_default.py +52 -0
  252. data/module_config_default.py +209 -0
  253. tests/__init__.py +0 -0
  254. tests/core/__init__.py +0 -0
  255. tests/core/contracts/__init__.py +0 -0
  256. tests/core/contracts/test_horizondex_quoter.py +37 -0
  257. tests/core/contracts/test_uniswap_quoter.py +35 -0
  258. tests/core/contracts/test_velocore_lens.py +67 -0
  259. tests/core/contracts/test_velocore_pool.py +57 -0
  260. tests/core/modules/__init__.py +67 -0
  261. tests/core/modules/swap/__init__.py +0 -0
  262. tests/core/modules/swap/test_horizondex.py +37 -0
  263. tests/core/modules/swap/test_lineaswap.py +28 -0
  264. tests/core/modules/swap/test_maverick.py +31 -0
  265. tests/core/modules/swap/test_mute.py +29 -0
  266. tests/core/modules/swap/test_odos.py +36 -0
  267. tests/core/modules/swap/test_pancake.py +54 -0
  268. tests/core/modules/swap/test_syncswap.py +59 -0
  269. tests/core/modules/swap/test_velocore.py +33 -0
  270. tests/core/modules/swap/test_woofi.py +22 -0
  271. tests/core/modules/test_bungee.py +27 -0
  272. tests/core/modules/test_concrete_swap.py +62 -0
  273. tests/core/modules/test_dmail.py +41 -0
  274. tests/core/modules/test_lending.py +122 -0
  275. tests/core/modules/test_nft.py +32 -0
  276. tests/core/modules/test_nft_minter.py +30 -0
  277. tests/core/modules/test_orbiter.py +28 -0
  278. tests/core/modules/test_sellall.py +27 -0
  279. tests/core/modules/test_send_to_cex.py +27 -0
  280. tests/core/modules/test_stargate_auto_bridge.py +32 -0
  281. tests/core/modules/test_stargate_bridge.py +25 -0
  282. tests/core/modules/test_stargate_farming.py +108 -0
  283. tests/core/modules/test_warmup.py +78 -0
  284. tests/core/modules/test_wrapping.py +68 -0
  285. tests/core/scenario/__init__.py +0 -0
  286. tests/core/scenario/module_0_test_config.py +91 -0
  287. tests/core/test_app.py +19 -0
  288. tests/core/test_config.py +34 -0
  289. web3_wizzard_lib/__init__.py +0 -0
  290. web3_wizzard_lib/core/__init__.py +1 -0
  291. web3_wizzard_lib/core/contract/__init__.py +0 -0
  292. web3_wizzard_lib/core/contract/aavecontract.py +36 -0
  293. web3_wizzard_lib/core/contract/alienswap_contract.py +21 -0
  294. web3_wizzard_lib/core/contract/arena_games_contract.py +16 -0
  295. web3_wizzard_lib/core/contract/basiliskcontract.py +58 -0
  296. web3_wizzard_lib/core/contract/bilinear_contract.py +22 -0
  297. web3_wizzard_lib/core/contract/bungee.py +33 -0
  298. web3_wizzard_lib/core/contract/coredao_contract.py +35 -0
  299. web3_wizzard_lib/core/contract/coredao_from_contract.py +40 -0
  300. web3_wizzard_lib/core/contract/dmail_send_mail.py +18 -0
  301. web3_wizzard_lib/core/contract/empty_nft.py +18 -0
  302. web3_wizzard_lib/core/contract/era_name.py +23 -0
  303. web3_wizzard_lib/core/contract/eralendcontract.py +34 -0
  304. web3_wizzard_lib/core/contract/eth_scroll_bridge_contract.py +25 -0
  305. web3_wizzard_lib/core/contract/frog_war_contract.py +48 -0
  306. web3_wizzard_lib/core/contract/horizondex_quoter.py +14 -0
  307. web3_wizzard_lib/core/contract/horizondex_router.py +91 -0
  308. web3_wizzard_lib/core/contract/imagine_contract.py +18 -0
  309. web3_wizzard_lib/core/contract/izumi.py +63 -0
  310. web3_wizzard_lib/core/contract/kreatorland_contract.py +21 -0
  311. web3_wizzard_lib/core/contract/l0_claim.py +254 -0
  312. web3_wizzard_lib/core/contract/l2_telegraph.py +21 -0
  313. web3_wizzard_lib/core/contract/layerbank_price.py +18 -0
  314. web3_wizzard_lib/core/contract/layerbank_token.py +29 -0
  315. web3_wizzard_lib/core/contract/layerbankcontract.py +59 -0
  316. web3_wizzard_lib/core/contract/linea_day_2_contract.py +19 -0
  317. web3_wizzard_lib/core/contract/linea_day_3_contract.py +55 -0
  318. web3_wizzard_lib/core/contract/linea_ens_names_contract.py +55 -0
  319. web3_wizzard_lib/core/contract/lineaswaprouter.py +52 -0
  320. web3_wizzard_lib/core/contract/maverick_multicall.py +52 -0
  321. web3_wizzard_lib/core/contract/mendi_finance_contract.py +11 -0
  322. web3_wizzard_lib/core/contract/mendi_token.py +25 -0
  323. web3_wizzard_lib/core/contract/merkly_minter.py +47 -0
  324. web3_wizzard_lib/core/contract/micro3_contract.py +18 -0
  325. web3_wizzard_lib/core/contract/mute_router.py +93 -0
  326. web3_wizzard_lib/core/contract/nidum_contract.py +44 -0
  327. web3_wizzard_lib/core/contract/nile_contract.py +60 -0
  328. web3_wizzard_lib/core/contract/nomis_attest_contract.py +40 -0
  329. web3_wizzard_lib/core/contract/nomis_contract.py +40 -0
  330. web3_wizzard_lib/core/contract/octomos.py +31 -0
  331. web3_wizzard_lib/core/contract/odos.py +104 -0
  332. web3_wizzard_lib/core/contract/omnisea.py +29 -0
  333. web3_wizzard_lib/core/contract/orbiter_starknet.py +30 -0
  334. web3_wizzard_lib/core/contract/pancake_pool.py +19 -0
  335. web3_wizzard_lib/core/contract/pancake_quoter.py +20 -0
  336. web3_wizzard_lib/core/contract/pancake_router.py +72 -0
  337. web3_wizzard_lib/core/contract/rage_claim.py +24 -0
  338. web3_wizzard_lib/core/contract/reactor_fusion_contract.py +78 -0
  339. web3_wizzard_lib/core/contract/readon_contract.py +19 -0
  340. web3_wizzard_lib/core/contract/rubyscore_contract.py +31 -0
  341. web3_wizzard_lib/core/contract/satoshi_universe_contract.py +29 -0
  342. web3_wizzard_lib/core/contract/scroll_bridge_contract.py +24 -0
  343. web3_wizzard_lib/core/contract/scroll_canvas_mint_contract.py +26 -0
  344. web3_wizzard_lib/core/contract/scroll_oracle.py +11 -0
  345. web3_wizzard_lib/core/contract/snap_contract.py +16 -0
  346. web3_wizzard_lib/core/contract/social_scan_contract.py +20 -0
  347. web3_wizzard_lib/core/contract/stargate_farming.py +37 -0
  348. web3_wizzard_lib/core/contract/stargate_router.py +84 -0
  349. web3_wizzard_lib/core/contract/stargate_router_eth.py +41 -0
  350. web3_wizzard_lib/core/contract/stargate_token_pool.py +46 -0
  351. web3_wizzard_lib/core/contract/stargate_v2_contract.py +36 -0
  352. web3_wizzard_lib/core/contract/syncswap_classic_pool.py +15 -0
  353. web3_wizzard_lib/core/contract/syncswap_classic_pool_factory.py +15 -0
  354. web3_wizzard_lib/core/contract/syncswap_pool.py +25 -0
  355. web3_wizzard_lib/core/contract/syncswap_router.py +123 -0
  356. web3_wizzard_lib/core/contract/tavaera_id.py +18 -0
  357. web3_wizzard_lib/core/contract/tavaera_mint.py +17 -0
  358. web3_wizzard_lib/core/contract/townstory_bonus_contract.py +19 -0
  359. web3_wizzard_lib/core/contract/townstory_contract.py +21 -0
  360. web3_wizzard_lib/core/contract/velocore_lens.py +44 -0
  361. web3_wizzard_lib/core/contract/velocore_pool.py +198 -0
  362. web3_wizzard_lib/core/contract/velocore_router.py +80 -0
  363. web3_wizzard_lib/core/contract/woofi_swap.py +29 -0
  364. web3_wizzard_lib/core/contract/xy_finance_contract.py +87 -0
  365. web3_wizzard_lib/core/contract/yoddlo_contract.py +19 -0
  366. web3_wizzard_lib/core/contract/yuliverse_contract.py +36 -0
  367. web3_wizzard_lib/core/contract/zebra_contract.py +68 -0
  368. web3_wizzard_lib/core/contract/zerolend_contract.py +34 -0
  369. web3_wizzard_lib/core/contract/zerolend_liq_contract.py +20 -0
  370. web3_wizzard_lib/core/contract/zkdx_contract.py +40 -0
  371. web3_wizzard_lib/core/contract/zkdx_data.py +14 -0
  372. web3_wizzard_lib/core/contract/zks.py +24 -0
  373. web3_wizzard_lib/core/modules/__init__.py +0 -0
  374. web3_wizzard_lib/core/modules/ads_import_proxy.py +52 -0
  375. web3_wizzard_lib/core/modules/airdrop_printer.py +80 -0
  376. web3_wizzard_lib/core/modules/bank/__init__.py +0 -0
  377. web3_wizzard_lib/core/modules/bank/aave.py +25 -0
  378. web3_wizzard_lib/core/modules/bank/bank.py +15 -0
  379. web3_wizzard_lib/core/modules/bank/bank_module.py +99 -0
  380. web3_wizzard_lib/core/modules/bank/basilisk.py +25 -0
  381. web3_wizzard_lib/core/modules/bank/eralend.py +25 -0
  382. web3_wizzard_lib/core/modules/bank/layerbank.py +116 -0
  383. web3_wizzard_lib/core/modules/bank/mendi_finance.py +57 -0
  384. web3_wizzard_lib/core/modules/bank/reactorfusion.py +25 -0
  385. web3_wizzard_lib/core/modules/bank/zerolend.py +36 -0
  386. web3_wizzard_lib/core/modules/bridge/__init__.py +0 -0
  387. web3_wizzard_lib/core/modules/bridge/bridge.py +8 -0
  388. web3_wizzard_lib/core/modules/bridge/coredao_bridge_sub.py +47 -0
  389. web3_wizzard_lib/core/modules/bridge/orbiter_sub.py +112 -0
  390. web3_wizzard_lib/core/modules/bridge/scroll_bridge_sub.py +42 -0
  391. web3_wizzard_lib/core/modules/bridge/stargate_v2_sub.py +74 -0
  392. web3_wizzard_lib/core/modules/bridge_module.py +47 -0
  393. web3_wizzard_lib/core/modules/bungee.py +109 -0
  394. web3_wizzard_lib/core/modules/cex_sender.py +60 -0
  395. web3_wizzard_lib/core/modules/cex_subaccount_transfer.py +34 -0
  396. web3_wizzard_lib/core/modules/cex_withdraw.py +91 -0
  397. web3_wizzard_lib/core/modules/claimer.py +45 -0
  398. web3_wizzard_lib/core/modules/claims/__init__.py +0 -0
  399. web3_wizzard_lib/core/modules/claims/layerzero_claimer.py +64 -0
  400. web3_wizzard_lib/core/modules/claims/rabby_claimer.py +81 -0
  401. web3_wizzard_lib/core/modules/concrete_swap.py +97 -0
  402. web3_wizzard_lib/core/modules/coredao_bridge.py +32 -0
  403. web3_wizzard_lib/core/modules/coredao_bridge_auto.py +39 -0
  404. web3_wizzard_lib/core/modules/debank_checker.py +90 -0
  405. web3_wizzard_lib/core/modules/dmail.py +54 -0
  406. web3_wizzard_lib/core/modules/erc20_balance.py +42 -0
  407. web3_wizzard_lib/core/modules/intract/__init__.py +0 -0
  408. web3_wizzard_lib/core/modules/intract/intract_api.py +212 -0
  409. web3_wizzard_lib/core/modules/intract/utils.py +81 -0
  410. web3_wizzard_lib/core/modules/intract_claim.py +104 -0
  411. web3_wizzard_lib/core/modules/layer_2_20.py +65 -0
  412. web3_wizzard_lib/core/modules/lending_module.py +134 -0
  413. web3_wizzard_lib/core/modules/linea_appeal.py +70 -0
  414. web3_wizzard_lib/core/modules/linea_poh_lxp.py +64 -0
  415. web3_wizzard_lib/core/modules/liquidity/__init__.py +0 -0
  416. web3_wizzard_lib/core/modules/liquidity/nile_pool.py +64 -0
  417. web3_wizzard_lib/core/modules/liquidity/pool.py +16 -0
  418. web3_wizzard_lib/core/modules/liquidity/syncswap_pool.py +61 -0
  419. web3_wizzard_lib/core/modules/liquidity/velocore_pool.py +55 -0
  420. web3_wizzard_lib/core/modules/liquidity/zerolend_liquidity.py +26 -0
  421. web3_wizzard_lib/core/modules/liquidity_pool.py +60 -0
  422. web3_wizzard_lib/core/modules/merkly_refuel.py +87 -0
  423. web3_wizzard_lib/core/modules/modules.py +27 -0
  424. web3_wizzard_lib/core/modules/nft/__init__.py +0 -0
  425. web3_wizzard_lib/core/modules/nft/abbys_world.py +22 -0
  426. web3_wizzard_lib/core/modules/nft/acg_worlds.py +25 -0
  427. web3_wizzard_lib/core/modules/nft/alienswap_linea.py +22 -0
  428. web3_wizzard_lib/core/modules/nft/arena_games.py +22 -0
  429. web3_wizzard_lib/core/modules/nft/asmatch.py +22 -0
  430. web3_wizzard_lib/core/modules/nft/battlemon.py +25 -0
  431. web3_wizzard_lib/core/modules/nft/bilinear.py +22 -0
  432. web3_wizzard_lib/core/modules/nft/bitavatar.py +25 -0
  433. web3_wizzard_lib/core/modules/nft/culture_satoshi_universe.py +24 -0
  434. web3_wizzard_lib/core/modules/nft/efrogs.py +26 -0
  435. web3_wizzard_lib/core/modules/nft/empty_nft.py +22 -0
  436. web3_wizzard_lib/core/modules/nft/era_domain.py +42 -0
  437. web3_wizzard_lib/core/modules/nft/frog_war.py +22 -0
  438. web3_wizzard_lib/core/modules/nft/frog_war_bonus.py +22 -0
  439. web3_wizzard_lib/core/modules/nft/gamerboom.py +25 -0
  440. web3_wizzard_lib/core/modules/nft/gamerboom_bonus.py +26 -0
  441. web3_wizzard_lib/core/modules/nft/imagine.py +32 -0
  442. web3_wizzard_lib/core/modules/nft/kreatorland_module.py +35 -0
  443. web3_wizzard_lib/core/modules/nft/l2_telegraph_module.py +22 -0
  444. web3_wizzard_lib/core/modules/nft/layer3_meta.py +25 -0
  445. web3_wizzard_lib/core/modules/nft/linea_culture_2_2_linus.py +24 -0
  446. web3_wizzard_lib/core/modules/nft/linea_culture_2_3_yooldo.py +24 -0
  447. web3_wizzard_lib/core/modules/nft/linea_culture_2_4_frogwar.py +24 -0
  448. web3_wizzard_lib/core/modules/nft/linea_culture_2_5_acg.py +25 -0
  449. web3_wizzard_lib/core/modules/nft/linea_culture_2_6_ascend_the_end.py +25 -0
  450. web3_wizzard_lib/core/modules/nft/linea_culture_3_1_ascend_the_end.py +25 -0
  451. web3_wizzard_lib/core/modules/nft/linea_culture_3_2_sending_me.py +25 -0
  452. web3_wizzard_lib/core/modules/nft/linea_culture_3_3_townstory.py +25 -0
  453. web3_wizzard_lib/core/modules/nft/linea_culture_3_4_daniele.py +25 -0
  454. web3_wizzard_lib/core/modules/nft/linea_culture_3_5_demmortal.py +25 -0
  455. web3_wizzard_lib/core/modules/nft/linea_culture_3_6_foxy.py +25 -0
  456. web3_wizzard_lib/core/modules/nft/linea_culture_4_1_coop_records.py +60 -0
  457. web3_wizzard_lib/core/modules/nft/linea_culture_4_2_borja_moskv.py +65 -0
  458. web3_wizzard_lib/core/modules/nft/linea_culture_4_2_borja_moskv_approve.py +27 -0
  459. web3_wizzard_lib/core/modules/nft/linea_culture_4_3_fruit.py +66 -0
  460. web3_wizzard_lib/core/modules/nft/linea_culture_4_4_fruit_crux.py +67 -0
  461. web3_wizzard_lib/core/modules/nft/linea_culture_4_5_forbidden_fruit.py +67 -0
  462. web3_wizzard_lib/core/modules/nft/linea_culture_4_6_laurent.py +67 -0
  463. web3_wizzard_lib/core/modules/nft/linea_culture_day2.py +20 -0
  464. web3_wizzard_lib/core/modules/nft/linea_culture_day3.py +20 -0
  465. web3_wizzard_lib/core/modules/nft/linea_ens_names.py +107 -0
  466. web3_wizzard_lib/core/modules/nft/lucky_cat.py +25 -0
  467. web3_wizzard_lib/core/modules/nft/merkly_minter_module.py +22 -0
  468. web3_wizzard_lib/core/modules/nft/micro3.py +23 -0
  469. web3_wizzard_lib/core/modules/nft/mint_2048.py +28 -0
  470. web3_wizzard_lib/core/modules/nft/nft_submodule.py +16 -0
  471. web3_wizzard_lib/core/modules/nft/nidum.py +87 -0
  472. web3_wizzard_lib/core/modules/nft/nidum_bonus.py +23 -0
  473. web3_wizzard_lib/core/modules/nft/nomis.py +64 -0
  474. web3_wizzard_lib/core/modules/nft/nomis_attest.py +66 -0
  475. web3_wizzard_lib/core/modules/nft/nouns.py +27 -0
  476. web3_wizzard_lib/core/modules/nft/octomos.py +32 -0
  477. web3_wizzard_lib/core/modules/nft/omnisea.py +33 -0
  478. web3_wizzard_lib/core/modules/nft/omnizone.py +25 -0
  479. web3_wizzard_lib/core/modules/nft/orbiter_claim.py +87 -0
  480. web3_wizzard_lib/core/modules/nft/readon.py +30 -0
  481. web3_wizzard_lib/core/modules/nft/rubyscore.py +45 -0
  482. web3_wizzard_lib/core/modules/nft/sarubol.py +22 -0
  483. web3_wizzard_lib/core/modules/nft/satoshi_universe.py +22 -0
  484. web3_wizzard_lib/core/modules/nft/scroll_canvas_attest_year_badge.py +35 -0
  485. web3_wizzard_lib/core/modules/nft/scroll_canvas_mint.py +51 -0
  486. web3_wizzard_lib/core/modules/nft/sign.py +32 -0
  487. web3_wizzard_lib/core/modules/nft/snap.py +25 -0
  488. web3_wizzard_lib/core/modules/nft/snap_bonus.py +31 -0
  489. web3_wizzard_lib/core/modules/nft/social_scan.py +22 -0
  490. web3_wizzard_lib/core/modules/nft/sub_module.py +8 -0
  491. web3_wizzard_lib/core/modules/nft/tavaera.py +30 -0
  492. web3_wizzard_lib/core/modules/nft/townstory.py +75 -0
  493. web3_wizzard_lib/core/modules/nft/townstory_bonus.py +45 -0
  494. web3_wizzard_lib/core/modules/nft/trusta_reputation.py +48 -0
  495. web3_wizzard_lib/core/modules/nft/trustaa_poh.py +49 -0
  496. web3_wizzard_lib/core/modules/nft/uber_poh.py +24 -0
  497. web3_wizzard_lib/core/modules/nft/wizards_of_linea.py +26 -0
  498. web3_wizzard_lib/core/modules/nft/yoddlo.py +22 -0
  499. web3_wizzard_lib/core/modules/nft/yuliverse.py +22 -0
  500. web3_wizzard_lib/core/modules/nft/zace.py +25 -0
  501. web3_wizzard_lib/core/modules/nft/zks_domain.py +41 -0
  502. web3_wizzard_lib/core/modules/nft_minter.py +107 -0
  503. web3_wizzard_lib/core/modules/orbiter.py +39 -0
  504. web3_wizzard_lib/core/modules/orbiter_checker.py +26 -0
  505. web3_wizzard_lib/core/modules/rage.py +54 -0
  506. web3_wizzard_lib/core/modules/scroll_bridge.py +45 -0
  507. web3_wizzard_lib/core/modules/sell_all.py +51 -0
  508. web3_wizzard_lib/core/modules/sleep_module.py +25 -0
  509. web3_wizzard_lib/core/modules/smart_contract_deployment.py +37 -0
  510. web3_wizzard_lib/core/modules/stargate/__init__.py +0 -0
  511. web3_wizzard_lib/core/modules/stargate/auto_bridge.py +91 -0
  512. web3_wizzard_lib/core/modules/stargate/bridge.py +38 -0
  513. web3_wizzard_lib/core/modules/stargate/bridge_eth.py +59 -0
  514. web3_wizzard_lib/core/modules/stargate/bridge_tokens.py +48 -0
  515. web3_wizzard_lib/core/modules/stargate/classic_bridge.py +34 -0
  516. web3_wizzard_lib/core/modules/stargate/farming.py +163 -0
  517. web3_wizzard_lib/core/modules/stargate/l0_data.py +10 -0
  518. web3_wizzard_lib/core/modules/stargate/pool.py +74 -0
  519. web3_wizzard_lib/core/modules/stargate/stargate_balance_utils.py +25 -0
  520. web3_wizzard_lib/core/modules/stargate/stargate_gas_checker.py +68 -0
  521. web3_wizzard_lib/core/modules/swap/__init__.py +1 -0
  522. web3_wizzard_lib/core/modules/swap/horizondex.py +38 -0
  523. web3_wizzard_lib/core/modules/swap/izumi.py +41 -0
  524. web3_wizzard_lib/core/modules/swap/lineaswap.py +34 -0
  525. web3_wizzard_lib/core/modules/swap/maverick.py +66 -0
  526. web3_wizzard_lib/core/modules/swap/mute.py +39 -0
  527. web3_wizzard_lib/core/modules/swap/odos.py +58 -0
  528. web3_wizzard_lib/core/modules/swap/one_inch.py +58 -0
  529. web3_wizzard_lib/core/modules/swap/pancake.py +41 -0
  530. web3_wizzard_lib/core/modules/swap/swap_facade.py +10 -0
  531. web3_wizzard_lib/core/modules/swap/swap_list.py +10 -0
  532. web3_wizzard_lib/core/modules/swap/syncswap.py +62 -0
  533. web3_wizzard_lib/core/modules/swap/velocore.py +40 -0
  534. web3_wizzard_lib/core/modules/swap/woofi.py +38 -0
  535. web3_wizzard_lib/core/modules/swap/xy_finance.py +43 -0
  536. web3_wizzard_lib/core/modules/swap/zebra.py +32 -0
  537. web3_wizzard_lib/core/modules/warm_up.py +98 -0
  538. web3_wizzard_lib/core/modules/wrapping.py +74 -0
  539. web3_wizzard_lib/core/modules/zkdx.py +63 -0
  540. web3_wizzard_lib/core/utils/__init__.py +0 -0
  541. web3_wizzard_lib/core/utils/sub_module.py +8 -0
  542. web3_wizzard_lib/launcher.py +39 -0
  543. web3_wizzard_lib-0.0.2.data/data/requirements.txt +1 -0
  544. web3_wizzard_lib-0.0.2.dist-info/METADATA +10 -0
  545. web3_wizzard_lib-0.0.2.dist-info/RECORD +547 -0
  546. web3_wizzard_lib-0.0.2.dist-info/WHEEL +5 -0
  547. web3_wizzard_lib-0.0.2.dist-info/top_level.txt +3 -0
@@ -0,0 +1,134 @@
1
+ import random
2
+
3
+ from loguru import logger
4
+ from sybil_engine.data.contracts import get_contracts_for_chain
5
+ from sybil_engine.data.networks import get_chain_instance
6
+ from sybil_engine.domain.balance.balance import NativeBalance
7
+ from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance, from_eth_to_wei, verify_balance
8
+ from sybil_engine.module.module import Order, RepeatableModule
9
+ from sybil_engine.utils.app_account_utils import AppAccount
10
+ from sybil_engine.utils.utils import ConfigurationException, interval_to_round
11
+ from sybil_engine.utils.validation_utils import validate_amount_interval, validate_interval
12
+ from sybil_engine.utils.web3_utils import init_web3
13
+
14
+ from web3_wizzard_lib.core.contract.basiliskcontract import BasiliskContract
15
+ from web3_wizzard_lib.core.contract.eralendcontract import EraLendContract
16
+ from web3_wizzard_lib.core.contract.reactor_fusion_contract import ReactorFusionContract
17
+ from web3_wizzard_lib.core.modules.bank.layerbank import LayerBank
18
+ from web3_wizzard_lib.core.modules.bank.aave import Aave
19
+
20
+
21
+ class Lending(RepeatableModule):
22
+ module_name = 'LENDING'
23
+ module_config = 'lending_config'
24
+ random_order = Order.RANDOM
25
+
26
+ @RepeatableModule.repeatable_log
27
+ def execute(self, lending_apps, amount: float, action: str, withdraw_sleep_interval: dict, chain,
28
+ account: AppAccount):
29
+ chain_instance = get_chain_instance(chain)
30
+ web3 = init_web3(chain_instance, account.proxy)
31
+
32
+ lending_app_name = random.choice(lending_apps)
33
+ lending_app = self.get_lending_app(lending_app_name, chain, web3)
34
+
35
+ verify_balance(self.min_native_balance, chain_instance, account, web3)
36
+
37
+ if action == 'DEPOSIT':
38
+ self.deposit(account, amount, lending_app, lending_app_name, chain, web3)
39
+ elif action == 'WITHDRAW':
40
+ self.withdraw(account, amount, chain, lending_app, lending_app_name)
41
+ elif action == 'WITHDRAW_ALL':
42
+ for app_name, app in self.lending_apps_with_deposit(account, chain, web3):
43
+ self.withdraw(account, amount, chain, app, app_name)
44
+ else:
45
+ raise ConfigurationException("Unsupported action")
46
+
47
+ def deposit(self, account, amount, lending_app, lending_app_name, chain, web3):
48
+ amount_balance = interval_to_eth_balance(amount, account, chain, web3)
49
+
50
+ if amount == 'all_balance':
51
+ amount_balance = amount_balance.minus(self.min_native_balance)
52
+
53
+ logger.info(f"Make deposit on {lending_app_name} | {amount_balance}")
54
+
55
+ lending_app.mint(account, amount_balance.wei)
56
+
57
+ def withdraw(self, account, amount, chain, lending_app, lending_app_name):
58
+ deposit_balance = NativeBalance(lending_app.get_deposit_amount(account), chain, 'ETH')
59
+
60
+ if deposit_balance.wei < 1000000000000:
61
+ raise EmptyDepositException(f"[{account.address}] Deposit balance is 0, skip")
62
+
63
+ logger.info(f"Deposit balance: {deposit_balance}")
64
+
65
+ if amount == 'all_balance':
66
+ withdraw_wei = deposit_balance.wei
67
+ else:
68
+ balance = NativeBalance(from_eth_to_wei(interval_to_round(amount)), chain, 'ETH')
69
+ amount_balance = NativeBalance(int(balance.wei // 10000) * 10000, chain, balance.token)
70
+ withdraw_wei = amount_balance.wei
71
+
72
+ if deposit_balance.wei < withdraw_wei:
73
+ logger.info(
74
+ f"Deposit {deposit_balance} < withdraw amount {amount_balance}"
75
+ f", withdrawing all deposit")
76
+ withdraw_wei = deposit_balance.wei
77
+
78
+ logger.info(f"Withdraw from {lending_app_name} | {deposit_balance}")
79
+
80
+ lending_app.redeem_underlying(account, withdraw_wei)
81
+
82
+ def get_lending_app(self, lending_app, chain, web3):
83
+ lending_apps = self.get_lending_apps(chain, web3)
84
+
85
+ if lending_app not in lending_apps.keys():
86
+ raise ConfigurationException(f"{lending_app} not supported in {chain}. Supported lending: {list(lending_apps.keys())} supported")
87
+
88
+ return lending_apps[lending_app]
89
+
90
+ def get_lending_apps(self, chain, web3):
91
+ contracts = get_contracts_for_chain(chain)
92
+
93
+ apps = {
94
+ 'BASILISK_LANDING': BasiliskContract,
95
+ 'REACTORFUSION_LANDING': ReactorFusionContract,
96
+ 'ERALEND': EraLendContract,
97
+ 'AAVE': Aave,
98
+ 'LAYERBANK': LayerBank
99
+ }
100
+
101
+ return {k: v(contracts[k], web3) for k, v in apps.items() if k in contracts}
102
+
103
+ def lending_apps_with_deposit(self, account, chain, web3):
104
+ with_deposit = []
105
+
106
+ for lending_app_name, lending_app in self.get_lending_apps(chain, web3).items():
107
+ if lending_app.get_deposit_amount(account) > 1000000000000:
108
+ with_deposit.append((lending_app_name, lending_app))
109
+
110
+ return with_deposit
111
+
112
+ def log(self):
113
+ return "LENDING"
114
+
115
+ def parse_params(self, module_params):
116
+ validate_amount_interval(module_params['amount'])
117
+ validate_interval(module_params['withdraw_sleep_interval'])
118
+
119
+ if 'chain' not in module_params:
120
+ module_params['chain'] = 'ZKSYNC'
121
+
122
+ return [
123
+ module_params['lending_apps'],
124
+ module_params['amount'],
125
+ module_params['action'],
126
+ module_params['withdraw_sleep_interval'],
127
+ module_params['chain']
128
+ ]
129
+
130
+
131
+ class EmptyDepositException(Exception):
132
+ def __init__(self, message):
133
+ self.message = message
134
+ super().__init__(self.message)
@@ -0,0 +1,70 @@
1
+ import webbrowser
2
+
3
+ from loguru import logger
4
+ from sybil_engine.module.module import Module
5
+ import requests
6
+
7
+
8
+ class LineaAppeal(Module):
9
+ module_name = 'LINEA_APPEAL'
10
+ module_config = None
11
+
12
+ # with open("resources/linea_appeal.txt") as f:
13
+ # linea_appeal_reason = f.read()
14
+
15
+ linea_appeal_reason = """
16
+ Меня проект Linea забанили акки и пометили как сибила. Планирую писать апелляции с указанием причин почему я не сибил.
17
+ Вот список аргументов:
18
+ 1. Получал дроп LayerZero.
19
+ 2. Получал дроп ZKsync
20
+ 3. Получал дроп ODOS
21
+ 4. Был активен в более чем 10 сетях
22
+ 5. Потратил 60-100$ на кампании Линея начиная от Defi Voyage
23
+ 6. Прошел POH
24
+ 7. Получил дроп Scroll
25
+ 8. Обьем торгов по аккаунту более 100 тыс$. Возьми составь аргументации для 10 аккаунтов,
26
+ выбрав рандомно от 5 до 8 из этих причин для разбана. Все на англ.
27
+ """
28
+
29
+ def execute(self, account, chain="LINEA", statistic_write="GOOGLE"):
30
+ base_url = "https://docs.google.com/forms/d/e/1FAIpQLSfkbHzC1hZTy6u5R8S5i6wQ2xCyUZQjvucmlyChwg04fJIO5Q/viewform"
31
+
32
+ reason = self.get_reason()
33
+
34
+ logger.info(reason)
35
+
36
+ payload = {
37
+ "entry.1292139045": account.address,
38
+ "entry.1099559693": "",
39
+ "entry.1296389817": reason['choices'][0]['message']['content']
40
+ # Add other entries based on the form's structure
41
+ }
42
+
43
+ # Build the pre-filled URL
44
+ query_string = "&".join(f"{key}={value}" for key, value in payload.items())
45
+ pre_filled_url = f"{base_url}?{query_string}"
46
+
47
+ # Open the pre-filled form in the default web browser
48
+ print(f"Opening form: {pre_filled_url}")
49
+ webbrowser.open(pre_filled_url)
50
+
51
+ def get_reason(self):
52
+ # logger.info(self.linea_appeal_reason)
53
+ reason = self.get_chat_gpt(self.linea_appeal_reason)
54
+ return reason
55
+
56
+ def get_chat_gpt(self, linea_appeal_reason):
57
+ url = "https://api.openai.com/v1/chat/completions"
58
+ headers = {
59
+ "Content-Type": "application/json",
60
+ "Authorization": f"Bearer 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"
61
+ }
62
+ data = {
63
+ "model": "gpt-4o-mini",
64
+ "messages": [{"role": "user", "content": linea_appeal_reason}],
65
+ "temperature": 0.7
66
+ }
67
+
68
+ response = requests.post(url, headers=headers, json=data)
69
+
70
+ return response.json()
@@ -0,0 +1,64 @@
1
+ import requests
2
+ from loguru import logger
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.domain.balance.balance import Erc20Balance
5
+ from sybil_engine.domain.balance.tokens import Erc20Token
6
+ from sybil_engine.module.module import Module
7
+ from sybil_engine.utils.accumulator import add_accumulator_balance, add_accumulator, get_value
8
+ from sybil_engine.utils.statistic_utils import statistic_date_string, get_statistic_writer
9
+ from sybil_engine.utils.web3_utils import init_web3
10
+
11
+
12
+ class LineaPOHLXP(Module):
13
+ module_name = 'LINEA_POH_LXP'
14
+ module_config = None
15
+
16
+ lxp_contract = "0xd83af4fbD77f3AB65C3B1Dc4B38D7e67AEcf599A"
17
+
18
+ def execute(self, account, chain="LINEA", statistic_write="GOOGLE"):
19
+ poh = self.linea_poh_passed(account)
20
+
21
+ chain_instance = get_chain_instance(chain)
22
+ web3 = init_web3(chain_instance, account.proxy)
23
+ erc20_token = Erc20Token(chain, self.lxp_contract, web3)
24
+ balance = erc20_token.balance(account)
25
+
26
+ logger.info(f"{account.address} balance is {balance}")
27
+ job_name = f"lxp_{statistic_date_string}"
28
+ statistics_writer = get_statistic_writer()
29
+
30
+ statistics_writer.init_if_required(
31
+ job_name,
32
+ ['#', 'Address', 'rLXP', 'POH', 'LXP', 'Remark']
33
+ )
34
+
35
+ if poh:
36
+ rLXP = balance
37
+ add_accumulator_balance("Total rLXP", rLXP.wei)
38
+ else:
39
+ rLXP = Erc20Balance(0, 'LINEA', "LXP")
40
+
41
+ add_accumulator_balance("Total LXP", balance.wei)
42
+ add_accumulator("Acc Num", 1)
43
+
44
+ row = [account.app_id, account.address, float(rLXP.readable()), poh, float(balance.readable()), ""]
45
+ statistics_writer.write_row(job_name, row)
46
+
47
+ if get_value("Acc Num") == get_value("Acc Amount"):
48
+ row = [
49
+ "TOTAL",
50
+ "",
51
+ float(get_value("Total rLXP").readable() / 10 ** 12),
52
+ "",
53
+ float(get_value("Total LXP").readable() / 10 ** 12),
54
+ ""
55
+ ]
56
+
57
+ statistics_writer.write_row(job_name, row)
58
+
59
+ def linea_poh_passed(self, account):
60
+ result = requests.get(f"https://linea-xp-poh-api.linea.build/poh/{account.address}").json()
61
+ return result["poh"]
62
+
63
+ def log(self):
64
+ return "LINEA POH LXP"
File without changes
@@ -0,0 +1,64 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.tokens import get_tokens_for_chain
3
+ from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance
4
+ from sybil_engine.domain.balance.tokens import Erc20Token
5
+ from sybil_engine.utils.retry import retry
6
+
7
+ from web3_wizzard_lib.core.contract.nile_contract import NileContract
8
+ from web3_wizzard_lib.core.modules.liquidity.pool import Pool
9
+
10
+
11
+ class NilePool(Pool):
12
+ pool_contract = 'NILE_POOL'
13
+
14
+ def __init__(self, chain_instance, web3):
15
+ super().__init__(chain_instance, web3)
16
+ self.nile_contract = NileContract(self.velocore_pool_contract_address, self.web3)
17
+
18
+ @retry(max_attempts=10, retry_interval={'from': 10, 'to': 20})
19
+ def deposit(self, amount_interval, account, token, min_native_balance, chain):
20
+ amount = interval_to_eth_balance(amount_interval, account, chain, self.web3)
21
+
22
+ pool_amount = self.nile_contract.get_amount_out(
23
+ amount,
24
+ get_tokens_for_chain(chain)['WETH'],
25
+ get_tokens_for_chain(chain)[token]
26
+ )[0]
27
+
28
+ nile_token = Erc20Token(chain, token, self.web3)
29
+
30
+ if nile_token.allowance(account, self.nile_contract.contract_address) < nile_token.balance(account).wei:
31
+ nile_token.approve(account, self.nile_contract.contract_address)
32
+
33
+ logger.info(f"Deposit {amount} and {nile_token.balance(account)}")
34
+ self.nile_contract.add_liquidity_eth(account, nile_token.erc20_contract.contract_address, pool_amount, amount)
35
+
36
+ @retry(max_attempts=10, retry_interval={'from': 10, 'to': 20})
37
+ def withdraw(self, account, token, chain):
38
+ weth_zero_address = get_tokens_for_chain(chain)[f"WETH_{token}_LP"]
39
+
40
+ weth_zero = Erc20Token(chain, weth_zero_address, self.web3)
41
+
42
+ if weth_zero.balance(account).wei < 10000:
43
+ logger.info("NILE almost zero balance")
44
+
45
+ zero_token_address = get_tokens_for_chain(chain)[token]
46
+
47
+ amount = self.nile_contract.quote_remove_liquidity_eth(
48
+ get_tokens_for_chain(chain)['WETH'],
49
+ get_tokens_for_chain(chain)[token],
50
+ weth_zero.balance(account).wei
51
+ )
52
+
53
+ if weth_zero.allowance(account, self.nile_contract.contract_address) < weth_zero.balance(account).wei:
54
+ weth_zero.approve(account, self.nile_contract.contract_address)
55
+
56
+ logger.info(f"Withdraw {token} on NILE {weth_zero.balance(account)}")
57
+
58
+ self.nile_contract.remove_liquidity_eth(
59
+ account,
60
+ zero_token_address,
61
+ weth_zero.balance(account).wei,
62
+ amount[0],
63
+ amount[1]
64
+ )
@@ -0,0 +1,16 @@
1
+ from sybil_engine.data.contracts import get_contracts_for_chain
2
+
3
+
4
+ class Pool:
5
+ pool_contract = ''
6
+
7
+ def __init__(self, chain_instance, web3):
8
+ self.chain_contracts = get_contracts_for_chain(chain_instance['chain'])
9
+ self.velocore_pool_contract_address = self.chain_contracts[self.pool_contract]
10
+ self.web3 = web3
11
+
12
+ def deposit(self, amount_interval, account, token, min_native_balance, chain):
13
+ pass
14
+
15
+ def withdraw(self, account, token, chain):
16
+ pass
@@ -0,0 +1,61 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.tokens import get_tokens_for_chain
4
+ from sybil_engine.domain.balance.balance import NativeBalance
5
+ from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance
6
+ from sybil_engine.domain.balance.tokens import Erc20Token
7
+
8
+ from web3_wizzard_lib.core.contract.syncswap_pool import SyncSwapPoolContract
9
+ from web3_wizzard_lib.core.contract.syncswap_classic_pool import SyncSwapClassicPool
10
+ from web3_wizzard_lib.core.contract.syncswap_router import SyncSwapRouter
11
+ from web3_wizzard_lib.core.modules.liquidity.pool import Pool
12
+
13
+
14
+ class SyncswapPool(Pool):
15
+ module_name = 'SYNCSWAP_LIQUIDITY'
16
+ pool_contract = 'SYNCSWAP'
17
+
18
+ def __init__(self, chain_instance, web3):
19
+ super().__init__(chain_instance, web3)
20
+ self.syncswap_router = SyncSwapRouter(self.velocore_pool_contract_address, self.web3)
21
+
22
+ def deposit(self, amount_interval, account, token, min_native_balance, chain):
23
+ amount = interval_to_eth_balance(amount_interval, account, chain, self.web3)
24
+
25
+ pool = self.get_pool(chain)
26
+ pool_amount = self.get_pool_amount(account, chain, pool)
27
+
28
+ if pool_amount.wei < 10000000000:
29
+ logger.info(f"Deposit {amount}")
30
+ self.syncswap_router.add_liquidity2(account, amount)
31
+ else:
32
+ logger.info("This account already has deposit, skip")
33
+
34
+ def withdraw(self, account, token, chain):
35
+ pool = self.get_pool(chain)
36
+ pool_amount = self.get_pool_amount(account, chain, pool)
37
+
38
+ if pool_amount.wei < 10000000000:
39
+ logger.info(f"Withdraw amount is to small")
40
+ return
41
+
42
+ erc20_token = Erc20Token(chain, pool, self.web3)
43
+
44
+ if erc20_token.allowance(account, self.syncswap_router.contract_address) < pool_amount.wei:
45
+ erc20_token.approve(account, self.syncswap_router.contract_address)
46
+
47
+ print(erc20_token.balance(account).wei)
48
+
49
+ logger.info(f"Withdraw {pool_amount}")
50
+ self.syncswap_router.burn_liquidity(account, pool, pool_amount)
51
+
52
+ def get_pool_amount(self, account, chain, pool):
53
+ return NativeBalance(
54
+ SyncSwapPoolContract(pool, self.web3).balanceOf(account),
55
+ chain,
56
+ 'ETH'
57
+ )
58
+
59
+ def get_pool(self, chain):
60
+ syncswap_classic_pool = SyncSwapClassicPool(get_contracts_for_chain(chain)["SYNCSWAP_CLASSIC_POOL_FACTORY"], self.web3)
61
+ return syncswap_classic_pool.get_pool(get_tokens_for_chain(chain)['ETH'], get_tokens_for_chain(chain)['USDC'])
@@ -0,0 +1,55 @@
1
+ from loguru import logger
2
+ from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance, interval_to_erc20_balance
3
+ from sybil_engine.domain.balance.tokens import Erc20Token
4
+
5
+ from web3_wizzard_lib.core.contract.velocore_lens import VelocoreLensContract
6
+ from web3_wizzard_lib.core.contract.velocore_pool import VelocorePoolContract
7
+ from web3_wizzard_lib.core.modules.liquidity.pool import Pool
8
+
9
+
10
+ class VelocorePool(Pool):
11
+ module_name = 'VELOCORE_LIQUIDITY'
12
+ pool_contract = 'VELOCORE_POOL'
13
+ pool_lens_contract = 'VELOCORE_LENS'
14
+
15
+ def __init__(self, chain_instance, web3):
16
+ super().__init__(chain_instance, web3)
17
+ self.chain_instance = chain_instance
18
+ self.velocore_pool = VelocorePoolContract(self.velocore_pool_contract_address, self.web3)
19
+ self.velocore_lens = VelocoreLensContract('0xaA18cDb16a4DD88a59f4c2f45b5c91d009549e06', self.web3)
20
+
21
+ def deposit(self, amount_interval, account, token, min_native_balance, chain):
22
+ if token == 'ETH':
23
+ amount = interval_to_eth_balance(amount_interval, account, chain, self.web3)
24
+
25
+ if amount_interval == 'all_balance':
26
+ amount = amount.minus(min_native_balance)
27
+ else:
28
+ amount = interval_to_erc20_balance(amount_interval, account, token, chain, self.web3)
29
+
30
+ erc20_token = Erc20Token(self.chain_instance['chain'], "wstETH", self.web3)
31
+
32
+ if erc20_token.allowance(account, self.velocore_pool.contract_address) < amount.wei:
33
+ erc20_token.approve(account, self.velocore_pool.contract_address)
34
+
35
+ pool_address = '0x2BD146e7d95cea62C89fcCA8E529e06EEc1b053C'
36
+
37
+ logger.info(f"Deposit {amount}")
38
+
39
+ self.velocore_pool.deposit(account, int(amount.wei * 0.99), token, pool_address)
40
+
41
+ def withdraw(self, account, token, chain):
42
+ pool_address = '0x2BD146e7d95cea62C89fcCA8E529e06EEc1b053C'
43
+
44
+ gauge = self.velocore_lens.query_gauge(pool_address, account)
45
+
46
+ usdc_eth_vlp = gauge[14]
47
+ eth = gauge[9]
48
+
49
+ logger.info(f"Withdraw {eth / 10 ** 18} ETH")
50
+
51
+ if eth / 10 ** 18 < 0.0005:
52
+ logger.info("Withdraw amount less than 0.0005, skip")
53
+ return
54
+
55
+ self.velocore_pool.withdraw(account, eth, usdc_eth_vlp, pool_address)
@@ -0,0 +1,26 @@
1
+ from sybil_engine.data.contracts import get_contracts_for_chain
2
+ from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance
3
+ from sybil_engine.domain.balance.tokens import Erc20Token
4
+ from sybil_engine.utils.retry import retry
5
+
6
+ from web3_wizzard_lib.core.contract.zerolend_liq_contract import ZeroLendLiqContract
7
+ from web3_wizzard_lib.core.modules.liquidity.pool import Pool
8
+
9
+
10
+ class ZeroLendLiquidity(Pool):
11
+ module_name = 'ZEROLEND_LIQUIDITY'
12
+ pool_contract = 'ZEROLEND'
13
+
14
+ @retry(max_attempts=5, retry_interval={'from': 15 * 1, 'to': 30 * 1})
15
+ def deposit(self, amount_interval, account, deposit_token, min_native_balance, chain):
16
+ contract = ZeroLendLiqContract(get_contracts_for_chain(chain)['ZEROLEND'], self.web3)
17
+
18
+ zerolend_token = Erc20Token(chain, deposit_token, self.web3)
19
+
20
+ amount = interval_to_eth_balance(amount_interval, account, chain, self.web3)
21
+
22
+ if zerolend_token.allowance(account, contract.contract_address) < zerolend_token.balance(account).wei:
23
+ zerolend_token.approve(account, contract.contract_address)
24
+
25
+ contract.create_lock(account, amount)
26
+
@@ -0,0 +1,60 @@
1
+ from venv import logger
2
+
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.module.module import Module
5
+ from sybil_engine.utils.app_account_utils import AppAccount
6
+ from sybil_engine.utils.validation_utils import validate_amount_interval
7
+ from sybil_engine.utils.web3_utils import init_web3
8
+
9
+ from web3_wizzard_lib.core.modules.liquidity.syncswap_pool import SyncswapPool
10
+ from web3_wizzard_lib.core.modules.liquidity.velocore_pool import VelocorePool
11
+ from web3_wizzard_lib.core.modules.liquidity.nile_pool import NilePool
12
+ from web3_wizzard_lib.core.modules.liquidity.zerolend_liquidity import ZeroLendLiquidity
13
+
14
+
15
+ class LiquidityPool(Module):
16
+ module_name = 'LIQUIDITY_POOL'
17
+ module_config = 'liquidity_pool'
18
+
19
+ def execute(self, action, amount_interval, token, dex, chain, account: AppAccount):
20
+ chain_instance = get_chain_instance(chain)
21
+ web3 = init_web3(chain_instance, account.proxy)
22
+
23
+ if dex == 'syncswap':
24
+ pool = SyncswapPool(chain_instance, web3)
25
+ elif dex == 'velocore':
26
+ pool = VelocorePool(chain_instance, web3)
27
+ elif dex == 'nile':
28
+ pool = NilePool(chain_instance, web3)
29
+ elif dex == 'zerolend':
30
+ pool = ZeroLendLiquidity(chain_instance, web3)
31
+ else:
32
+ raise Exception(f" {dex} Not supported")
33
+
34
+ if action == 'DEPOSIT':
35
+ logger.info(f"Deposit {token} to {dex}")
36
+ pool.deposit(amount_interval, account, token, self.min_native_balance, chain)
37
+ elif action == 'WITHDRAW':
38
+ pool.withdraw(account, token, chain)
39
+ else:
40
+ raise Exception(f"{action} action not supported")
41
+
42
+ def log(self):
43
+ return "LIQUIDITY_POOL"
44
+
45
+ def parse_params(self, module_params):
46
+ validate_amount_interval(module_params['amount'])
47
+
48
+ return [
49
+ module_params['action'],
50
+ module_params['amount'],
51
+ module_params['token'],
52
+ module_params['dex'],
53
+ module_params['chain']
54
+ ]
55
+
56
+
57
+ class EmptyDepositException(Exception):
58
+ def __init__(self, message):
59
+ self.message = message
60
+ super().__init__(self.message)
@@ -0,0 +1,87 @@
1
+ import random
2
+
3
+ from loguru import logger
4
+ from sybil_engine.data.contracts import get_contracts_for_chain
5
+ from sybil_engine.data.networks import get_chain_instance
6
+ from sybil_engine.domain.balance.balance_utils import interval_to_eth_balance, verify_balance, from_wei_to_eth
7
+ from sybil_engine.module.module import Module
8
+ from sybil_engine.utils.utils import ConfigurationException, randomized_sleeping, print_exception_chain
9
+ from sybil_engine.utils.validation_utils import validate_chain, validate_refuel_interval
10
+ from sybil_engine.utils.web3_utils import init_web3
11
+
12
+ from web3_wizzard_lib.core.contract.merkly_minter import MerklyMinter
13
+ from web3_wizzard_lib.core.modules.stargate.l0_data import l0_chain_ids
14
+
15
+
16
+ class MerklyRefuel(Module):
17
+ module_name = 'MERKLY_REFUEL'
18
+ module_config = 'merkly_refuel_config'
19
+
20
+ def execute(self, start_chain, end_chain, chains, refuel_amount_interval, sleeping_interval, account):
21
+ from_chain_instance = get_chain_instance(start_chain)
22
+ web3 = init_web3(from_chain_instance, account.proxy)
23
+
24
+ if start_chain not in chains or end_chain not in chains:
25
+ raise ConfigurationException(f"'end_chain' and 'start_start' should be in 'chains'. Actual:"
26
+ f"start_chain: {start_chain} end_chain: {end_chain} chains: {chains}"
27
+ )
28
+
29
+ merkly_contract = get_contracts_for_chain(start_chain)['MERKLY']
30
+ merkly = MerklyMinter(merkly_contract, web3)
31
+
32
+ self.shuffle_chain_sequence(start_chain, end_chain, chains)
33
+
34
+ logger.info(f"Refuel chain sequence: {chains}")
35
+
36
+ for current_chain, next_chain in zip(chains, chains[1:]):
37
+ native_without_min = verify_balance(self.min_native_balance, from_chain_instance, account, web3)
38
+
39
+ amount = interval_to_eth_balance(refuel_amount_interval, account, start_chain, web3)
40
+
41
+ if amount.wei > native_without_min.wei:
42
+ amount = native_without_min
43
+
44
+ logger.info(f"Refuel {current_chain} > {next_chain} | {amount}")
45
+
46
+ hex_amount = merkly.decimal_to_hex_padded(amount.wei)
47
+
48
+ try:
49
+ fee = merkly.estimate_send_fee(account, l0_chain_ids[next_chain], hex_amount)
50
+ logger.info(f"L0 Fee: {from_wei_to_eth(fee)} ETH")
51
+
52
+ merkly.refuel(account, l0_chain_ids[next_chain], amount.wei, fee)
53
+ randomized_sleeping(sleeping_interval)
54
+ except Exception as e:
55
+ print_exception_chain(e)
56
+
57
+ def shuffle_chain_sequence(self, start_chain, end_chain, chain_sequence):
58
+ if start_chain != '':
59
+ chain_sequence.remove(start_chain)
60
+
61
+ if end_chain != '' and end_chain in chain_sequence:
62
+ chain_sequence.remove(end_chain)
63
+
64
+ random.shuffle(chain_sequence)
65
+
66
+ if start_chain != '':
67
+ chain_sequence.insert(0, start_chain)
68
+
69
+ if end_chain != '':
70
+ chain_sequence.append(end_chain)
71
+
72
+ return chain_sequence
73
+
74
+ def log(self):
75
+ return "MERKLY REFUEL"
76
+
77
+ def parse_params(self, module_params):
78
+ validate_chain(module_params['end_chain'])
79
+ validate_refuel_interval(module_params['refuel_amount_interval'])
80
+
81
+ return (
82
+ module_params['start_chain'],
83
+ module_params['end_chain'],
84
+ module_params['chains'],
85
+ module_params['refuel_amount_interval'],
86
+ module_params['sleeping_interval']
87
+ )
@@ -0,0 +1,27 @@
1
+ import importlib
2
+ import pkgutil
3
+
4
+ from loguru import logger
5
+ from sybil_engine.app import launch_with_data
6
+ from sybil_engine.utils.configuration_loader import load_module_vars
7
+
8
+ import web3_wizzard_lib.core.modules
9
+ from web3_wizzard_lib.core.modules.swap.swap_list import swap_facade
10
+
11
+
12
+ def launch():
13
+ modules_package = "web3_wizzard_lib.core.modules"
14
+
15
+ # package = importlib.import_module(modules_package)
16
+ # for loader, module_name, is_pkg in pkgutil.walk_packages(path=package.__path__):
17
+ # if not is_pkg:
18
+ # try:
19
+ # importlib.import_module('.' + module_name, package=modules_package)
20
+ # except Exception as e:
21
+ # logger.error('Failed to import module "{}" from package "{}"'.format(module_name, modules_package))
22
+
23
+ #modules_data = load_module_vars(modules_package)['modules_data']
24
+
25
+ from sybil_engine.module.modules import Modules
26
+ modules_data = Modules(None, swap_facade)
27
+ launch_with_data(modules_data)
File without changes