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
core/modules/bungee.py ADDED
@@ -0,0 +1,109 @@
1
+ from typing import Union
2
+
3
+ import requests
4
+ from loguru import logger
5
+ from sybil_engine.data.contracts import get_contracts_for_chain
6
+ from sybil_engine.data.networks import get_chain_instance
7
+ from sybil_engine.domain.balance.balance_utils import get_native_balance, interval_to_eth_balance, from_wei_to_eth
8
+ from sybil_engine.module.module import Module
9
+ from sybil_engine.utils.utils import ConfigurationException
10
+ from sybil_engine.utils.validation_utils import validate_chain, validate_refuel_interval
11
+ from sybil_engine.utils.web3_utils import init_web3
12
+
13
+ from web3_wizzard_lib.core.contract.bungee import bungee_chain_ids, Bungee
14
+
15
+
16
+ class BungeeRefuel(Module):
17
+ module_name = 'BUNGEE'
18
+ module_config = 'bungee_config'
19
+
20
+ def execute(self, refuel_amount_interval, from_chain, to_chain, account):
21
+ from_chain_instance = get_chain_instance(from_chain)
22
+ web3 = init_web3(from_chain_instance, account.proxy)
23
+
24
+ bungee_contract = get_contracts_for_chain(from_chain)['BUNGEE']
25
+ bungee = Bungee(bungee_contract, web3)
26
+
27
+ try:
28
+ limits = self.get_bungee_limits(from_chain)
29
+
30
+ to_chain_limits = [
31
+ chain for chain in limits if chain["chainId"] == bungee_chain_ids[to_chain] and chain["isEnabled"]
32
+ ]
33
+
34
+ if to_chain_limits:
35
+ min_amount = float(from_wei_to_eth(int(to_chain_limits[0]["minAmount"])))
36
+ max_amount = float(from_wei_to_eth(int(to_chain_limits[0]["maxAmount"])))
37
+
38
+ if refuel_amount_interval == 'max':
39
+ refuel_amount_interval = {'from': max_amount * 0.9, 'to': max_amount * 0.98}
40
+
41
+ if refuel_amount_interval == '':
42
+ refuel_amount_interval = {'from': min_amount, 'to': max_amount}
43
+
44
+ if refuel_amount_interval['from'] < min_amount:
45
+ raise ConfigurationException(
46
+ f'Min refuel amount for {from_chain} is {min_amount} < {refuel_amount_interval["from"]}')
47
+
48
+ if refuel_amount_interval['to'] > max_amount:
49
+ raise ConfigurationException(
50
+ f'Max refuel amount for {from_chain} is {max_amount} > {refuel_amount_interval["to"]}')
51
+
52
+ native_without_min = get_native_balance(account, web3, from_chain_instance).minus(
53
+ self.min_native_balance)
54
+
55
+ amount = interval_to_eth_balance(refuel_amount_interval, account, from_chain, web3)
56
+
57
+ if amount.wei > native_without_min.wei:
58
+ amount = native_without_min
59
+
60
+ logger.info(f"Refuel {from_chain.title()} > {to_chain.title()} | {amount}")
61
+
62
+ bungee.refuel(account, to_chain, amount.wei)
63
+ else:
64
+ logger.info("skip")
65
+ except Exception as e:
66
+ logger.error(f"Bungee refuel error | error {e}")
67
+
68
+ def get_bungee_limits(self, from_chain) -> Union[dict, bool]:
69
+ bungee_data = self.get_bungee_data()
70
+
71
+ try:
72
+ if from_chain == 'ZKSYNC':
73
+ limits = [chain_data for chain_data in bungee_data if chain_data["name"] == "zkSync"][0]["limits"]
74
+ elif from_chain == 'ARBITRUM':
75
+ limits = [chain_data for chain_data in bungee_data if chain_data["name"] == "Arbitrum"][0]["limits"]
76
+ elif from_chain == 'OPTIMISM':
77
+ limits = [chain_data for chain_data in bungee_data if chain_data["name"] == "Optimism"][0]["limits"]
78
+ elif from_chain == 'POLYGON':
79
+ limits = [chain_data for chain_data in bungee_data if chain_data["name"] == "Polygon"][0]["limits"]
80
+ elif from_chain == 'AVALANCHE':
81
+ limits = [chain_data for chain_data in bungee_data if chain_data["name"] == "Avalanche"][0]["limits"]
82
+ elif from_chain == 'BSC':
83
+ limits = [chain_data for chain_data in bungee_data if chain_data["name"] == "BSC"][0]["limits"]
84
+ elif from_chain == 'BASE':
85
+ limits = [chain_data for chain_data in bungee_data if chain_data["name"] == "Base"][0]["limits"]
86
+ else:
87
+ raise Exception("Not supported")
88
+
89
+ return limits
90
+ except Exception as e:
91
+ return False
92
+
93
+ def get_bungee_data(self):
94
+ url = "https://refuel.socket.tech/chains"
95
+ response = requests.get(url)
96
+ if response.status_code == 200:
97
+ data = response.json()["result"]
98
+ return data
99
+ return False
100
+
101
+ def log(self):
102
+ return "BUNGEE REFUEL"
103
+
104
+ def parse_params(self, module_params):
105
+ validate_chain(module_params['from_chain'])
106
+ validate_chain(module_params['to_chain'])
107
+ validate_refuel_interval(module_params['refuel_amount_interval'])
108
+
109
+ return module_params['refuel_amount_interval'], module_params['from_chain'], module_params['to_chain']
@@ -0,0 +1,60 @@
1
+ from loguru import logger
2
+ from sybil_engine.contract.send import Send
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.domain.balance.balance_utils import interval_to_native_balance, interval_to_erc20_balance
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_native_balance
8
+ from sybil_engine.utils.retry import retry
9
+ from sybil_engine.utils.validation_utils import validate_chain, validate_amount_interval
10
+ from sybil_engine.utils.web3_utils import init_web3
11
+
12
+
13
+ class SendToCex(Module):
14
+ module_name = 'SEND_TO_CEX'
15
+ module_config = 'send_to_cex_config'
16
+ supported_chains = ['USDC', 'USDT', 'ZK', 'ZRO', 'OBT']
17
+
18
+ def execute(self, chain, send_to_cex_amount_interval, token, account):
19
+ cex_address = account.cex_address
20
+ chain_instance = get_chain_instance(chain)
21
+ web3 = init_web3(chain_instance, account.proxy)
22
+
23
+ if token == 'NATIVE':
24
+ amount = interval_to_native_balance(send_to_cex_amount_interval, account, chain_instance['chain'], web3)
25
+
26
+ if send_to_cex_amount_interval == 'all_balance':
27
+ amount = amount.minus(self.min_native_balance)
28
+ elif token in self.supported_chains:
29
+ amount = interval_to_erc20_balance(send_to_cex_amount_interval, account, token, chain, web3)
30
+ else:
31
+ raise Exception(f"Token {token} not supported. Only NATIVE and USDC/USDT are supported.")
32
+
33
+ if amount.wei == 0 :
34
+ logger.info("Wallet is empty")
35
+ return
36
+
37
+ self.send_funds(account, amount, cex_address, chain, chain_instance, token, web3)
38
+
39
+ add_accumulator_native_balance("Total sent to cex", amount.wei)
40
+
41
+ @retry(max_attempts=5, retry_interval={'from': 60 * 2, 'to': 60 * 3})
42
+ def send_funds(self, account, amount, cex_address, chain, chain_instance, token, web3):
43
+ logger.info(f"Send {amount} to {cex_address} ({chain_instance['chain']})")
44
+ if token == 'NATIVE':
45
+ send = Send(None, web3)
46
+ send.send_to_wallet(account, cex_address, amount)
47
+ elif token in self.supported_chains:
48
+ erc20_token = Erc20Token(chain, token, web3)
49
+ erc20_token.transfer(amount, cex_address, account)
50
+ else:
51
+ raise Exception(f"Token {token} not supported. Only NATIVE and USDC/USDT are supported.")
52
+
53
+ def log(self):
54
+ return "SEND TO CEX"
55
+
56
+ def parse_params(self, module_params):
57
+ validate_chain(module_params['chain'])
58
+ validate_amount_interval(module_params['amount'])
59
+
60
+ return module_params['chain'], module_params['amount'], module_params['token']
@@ -0,0 +1,34 @@
1
+ from sybil_engine.config.app_config import get_cex_data, get_cex_conf
2
+ from sybil_engine.domain.cex.binance import Binance
3
+ from sybil_engine.domain.cex.okx import OKX
4
+ from sybil_engine.module.module import Module
5
+ from sybil_engine.utils.app_account_utils import AppAccount
6
+ from sybil_engine.utils.utils import ConfigurationException
7
+
8
+
9
+ class CEXSubAccountTransfer(Module):
10
+ module_name = 'CEX_SUB_ACCOUNT_TRANSFER'
11
+ module_config = 'cex_account_transfer_config'
12
+
13
+ def execute(self, cex, account: AppAccount):
14
+ password, cex_data = get_cex_data()
15
+
16
+ tokens = ['ETH', 'CORE', 'POL', 'USDC', 'USDT', 'OKB', 'ZRO']
17
+
18
+ if cex == 'okx':
19
+ cex_obj = OKX(cex_data[get_cex_conf()], password)
20
+ elif cex == 'binance':
21
+ cex_obj = Binance(cex_data[get_cex_conf()], password)
22
+ else:
23
+ raise ConfigurationException(f"{cex} is not")
24
+
25
+ cex_obj.transfer_from_sub_account(tokens)
26
+
27
+ def log(self):
28
+ return "CEX SUB ACCOUNT TRANSFER"
29
+
30
+ def parse_params(self, module_params):
31
+ if 'cex' not in module_params:
32
+ module_params['cex'] = 'okx'
33
+
34
+ return [module_params['cex']]
@@ -0,0 +1,91 @@
1
+ import random
2
+
3
+ from loguru import logger
4
+ from sybil_engine.config.app_config import get_cex_data, get_cex_conf
5
+ from sybil_engine.data.networks import get_chain_instance
6
+ from sybil_engine.domain.balance.balance_utils import get_native_balance, \
7
+ interval_to_native_balance, interval_to_erc20_balance
8
+ from sybil_engine.domain.balance.tokens import Erc20Token
9
+ from sybil_engine.domain.cex.binance import Binance
10
+ from sybil_engine.domain.cex.okx import OKX
11
+ from sybil_engine.module.module import Module
12
+ from sybil_engine.utils.app_account_utils import AppAccount
13
+ from sybil_engine.utils.utils import randomized_sleeping, ConfigurationException
14
+ from sybil_engine.utils.web3_utils import init_web3
15
+
16
+
17
+ class CEXWithdraw(Module):
18
+ module_name = 'CEX_WITHDRAW'
19
+ sleep_after_conf = True
20
+ module_config = 'cex_withdraw'
21
+
22
+ def execute(self, chain, withdraw_interval, min_auto_withdraw_interval, token, cex, account: AppAccount):
23
+ self.sleep_after_conf = True
24
+ chain_instance = get_chain_instance(chain)
25
+ web3 = init_web3(chain_instance, None)
26
+
27
+ balance, min_auto_withdraw, withdraw_token = self.balance(account, chain, chain_instance,
28
+ min_auto_withdraw_interval, token, web3)
29
+ logger.info(f"{chain}")
30
+ logger.info(f"Minimum balance should be {min_auto_withdraw}")
31
+
32
+ if min_auto_withdraw.wei < balance.wei:
33
+ self.sleep_after_conf = False
34
+
35
+ while min_auto_withdraw.wei > balance.wei:
36
+ logger.info(f"Actual balance: {balance}")
37
+
38
+ amount = round(random.uniform(withdraw_interval['from'], withdraw_interval['to']), 6)
39
+ logger.info(f"Withdraw {amount} {chain_instance['gas_token']} from {cex} to {account.address}")
40
+
41
+ password, cex_data = get_cex_data()
42
+
43
+ if cex == 'okx':
44
+ cex_obj = OKX(cex_data[get_cex_conf()], password)
45
+ elif cex == 'binance':
46
+ cex_obj = Binance(cex_data[get_cex_conf()], password)
47
+ else:
48
+ raise ConfigurationException(f"{cex} is not")
49
+
50
+ if withdraw_token == 'WETH':
51
+ withdraw_token = 'ETH'
52
+
53
+ cex_obj.withdrawal(account.address, chain, amount, withdraw_token)
54
+
55
+ randomized_sleeping({'from': 60 * 2, 'to': 60 * 4})
56
+
57
+ balance, _, _ = self.balance(account, chain, chain_instance, min_auto_withdraw_interval, token, web3)
58
+
59
+ def balance(self, account, chain, chain_instance, min_auto_withdraw_interval, token, web3):
60
+ if token == 'NATIVE':
61
+ min_auto_withdraw = interval_to_native_balance(min_auto_withdraw_interval, account, chain, web3)
62
+ balance = get_native_balance(account, web3, chain_instance)
63
+ withdraw_token = chain_instance['gas_token']
64
+ elif token in ['USDC', 'USDT', 'WETH', 'ETH']:
65
+ if token == 'ETH':
66
+ token = 'WETH'
67
+ min_auto_withdraw = interval_to_erc20_balance(min_auto_withdraw_interval, account, token, chain, web3)
68
+ erc20_token = Erc20Token(chain, token, web3)
69
+ balance = erc20_token.balance(account)
70
+ withdraw_token = token
71
+ else:
72
+ raise ConfigurationException(f"Unsupported token {token}, supported tokens are: NATIVE, USDC")
73
+ return balance, min_auto_withdraw, withdraw_token
74
+
75
+ def log(self):
76
+ return "CEX WITHDRAW"
77
+
78
+ def parse_params(self, module_params):
79
+ if 'cex' not in module_params:
80
+ module_params['cex'] = 'okx'
81
+
82
+ return [
83
+ module_params['chain'],
84
+ module_params['withdraw_interval'],
85
+ module_params['min_auto_withdraw_interval'],
86
+ module_params['token'],
87
+ module_params['cex']
88
+ ]
89
+
90
+ def sleep_after(self):
91
+ return self.sleep_after_conf
@@ -0,0 +1,45 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.networks import get_chain_instance
3
+ from sybil_engine.module.module import Module
4
+ from sybil_engine.utils.app_account_utils import AppAccount
5
+ from sybil_engine.utils.web3_utils import init_web3
6
+
7
+ from web3_wizzard_lib.core.modules import claimer_zro
8
+ from web3_wizzard_lib.core.modules.claims.rabby_claimer import claimer_rabby
9
+
10
+ native_prices = {
11
+ 'ETH': 3700,
12
+ 'USDT': 1
13
+ }
14
+
15
+
16
+ class Claimer(Module):
17
+ module_name = 'CLAIMER'
18
+ sleep_after_conf = True
19
+ module_config = 'claimer_config'
20
+
21
+ def execute(self, chain, layerzero_token, project, account: AppAccount):
22
+ logger.info(f"CLAIM L0 tokens for {account} on {chain}")
23
+ chain_instance = get_chain_instance(chain)
24
+ web3 = init_web3(chain_instance, None)
25
+
26
+ if project == 'ZRO':
27
+ claimer_zro(account, chain_instance, layerzero_token, web3)
28
+ else:
29
+ claimer_rabby(account, web3)
30
+
31
+ def log(self):
32
+ return "CLAIMER"
33
+
34
+ def parse_params(self, module_params):
35
+ if 'project' not in module_params:
36
+ module_params['project'] = 'ZRO'
37
+
38
+ return [
39
+ module_params['chain'],
40
+ module_params['token'],
41
+ module_params['project']
42
+ ]
43
+
44
+ def sleep_after(self):
45
+ return self.sleep_after_conf
File without changes
@@ -0,0 +1,64 @@
1
+ import requests
2
+ from loguru import logger
3
+ from sybil_engine.config.app_config import get_cex_conf, get_cex_data
4
+ from sybil_engine.domain.balance.balance import NativeBalance, Erc20Balance
5
+ from sybil_engine.domain.balance.balance_utils import get_native_balance
6
+ from sybil_engine.domain.balance.tokens import Erc20Token
7
+ from sybil_engine.domain.cex.okx import OKX
8
+
9
+ total_zro = 0
10
+
11
+ def claimer_zro(account, chain_instance, token, web3):
12
+ allocation_data = get_allocation(account.address)
13
+ if not allocation_data:
14
+ raise Exception("Failed to fetch allocation data.")
15
+ amount_raw = int(allocation_data.get('zroAllocation', {}).get('asBigInt'))
16
+ logger.info(f"ZRO Allocation for {account.address} is {amount_raw}")
17
+ if token == 'NATIVE':
18
+ withdraw_token = chain_instance['gas_token']
19
+ claim_price = NativeBalance(int((round(amount_raw / 10 ** 18) + 1) * 0.00005 * 10 ** 18),
20
+ chain_instance['chain'], token)
21
+ balance = get_native_balance(account, web3, chain_instance)
22
+ logger.info(f"Native balance is {balance}")
23
+ else:
24
+ claim_price = Erc20Balance(
25
+ int((round(amount_raw / 10 ** 18) + 1) * 0.00003 * 10 ** 18),
26
+ chain_instance['chain'],
27
+ token,
28
+ decimal=18
29
+ )
30
+ withdraw_token = token
31
+ balance = Erc20Token(chain_instance['chain'], token, web3).balance(account)
32
+ logger.info(f"Native balance is {balance}")
33
+ logger.info(f"Need {claim_price} for claim")
34
+ if claim_price.wei > balance.wei:
35
+ password, cex_data = get_cex_data()
36
+ cex_obj = OKX(cex_data[get_cex_conf()], password)
37
+ cex_obj.withdrawal(account.address, chain_instance['chain'], float(balance.readable()), withdraw_token)
38
+
39
+ proof = get_proof(account.address)
40
+ logger.info(proof)
41
+ global total_zro
42
+ total_zro = total_zro + int(proof['amount'])
43
+ amount_to_claim = int(proof['amount'])
44
+ merkle_proof = proof['proof'].split('|')
45
+ #contract_address = get_contracts_for_chain(chain_instance['chain'])['ZRO_CLAIMER']
46
+ #claimer = L0Claim(contract_address, web3)
47
+ #claimer.donateAndClaim(account, claim_price.wei, amount_to_claim, merkle_proof)
48
+
49
+ def get_proof(wallet):
50
+ url = f"https://www.layerzero.foundation/api/proof/{wallet}?address={wallet}"
51
+ response = requests.get(url)
52
+ if response.status_code == 200:
53
+ return response.json()
54
+ else:
55
+ return None
56
+
57
+
58
+ def get_allocation(wallet):
59
+ url = f"https://www.layerzero.foundation/api/allocation/{wallet}"
60
+ response = requests.get(url)
61
+ if response.status_code == 200:
62
+ return response.json()
63
+ else:
64
+ return None
@@ -0,0 +1,81 @@
1
+ import time
2
+ from random import randint
3
+
4
+ from eth_account.messages import encode_defunct, SignableMessage
5
+ from fake_useragent import UserAgent
6
+ from loguru import logger
7
+
8
+ import requests
9
+ from sybil_engine.utils.utils import randomized_sleeping
10
+
11
+ url = "https://api.rabby.io/v2/points/claim_snapshot"
12
+
13
+ headers = {
14
+ "Host": "api.rabby.io",
15
+ "Connection": "keep-alive",
16
+ "Content-Length": "224",
17
+ "sec-ch-ua": '"Not_A Brand";v="8", "Chromium";v="120", "Google Chrome";v="120"',
18
+ "X-Version": "0.92.48",
19
+ "sec-ch-ua-mobile": "?0",
20
+ "User-Agent": UserAgent().random,
21
+ "x-api-ts": str(int(time.time())),
22
+ "Content-Type": "application/json",
23
+ "x-api-ver": "v2",
24
+ "Accept": "application/json, text/plain, */*",
25
+ "X-Client": "Rabby",
26
+ "sec-ch-ua-platform": '"Windows"',
27
+ "Origin": "chrome-extension://acmacodkjb dgmoleebolmdjonilkdbch",
28
+ "Sec-Fetch-Site": "none",
29
+ "Sec-Fetch-Mode": "cors",
30
+ "Sec-Fetch-Dest": "empty",
31
+ "Accept-Encoding": "gzip, deflate, br",
32
+ "Accept-Language": "uk-UA,uk;q=0.9,en-US;q=0.8,en;q=0.7",
33
+ }
34
+
35
+
36
+ def claimer_rabby(account, web3):
37
+ try:
38
+ address = account.address.lower()
39
+ msg = f"{address} Claims Rabby Points"
40
+
41
+ payload = {
42
+ "id": address,
43
+ "signature": get_signed_code(web3, account, msg),
44
+ "invite_code": "FREEBONUS"
45
+ }
46
+
47
+ proxies = {}
48
+ proxies.update(
49
+ {"http": account.proxy,
50
+ "https": account.proxy}
51
+ )
52
+
53
+ response = make_request_with_retries(url, headers=headers, json=payload, proxies=proxies)
54
+
55
+ if response.json().get("error_code") == 0:
56
+ logger.success(f"{address} | Claimed!")
57
+ else:
58
+ resp_msg = response.json().get("error_msg")
59
+ logger.info(f"{address} | {resp_msg} | {response.json()}")
60
+ except Exception as e:
61
+ logger.error(f"{account}... | {e}")
62
+
63
+
64
+ def sign(web3, account, encoded_msg: SignableMessage):
65
+ return web3.eth.account.sign_message(encoded_msg, account.key)
66
+
67
+
68
+ def get_signed_code(web3, account, msg) -> str:
69
+ return sign(web3, account, encode_defunct(text=msg)).signature.hex()
70
+
71
+ def make_request_with_retries(url, headers, json, proxies, max_retries=5):
72
+ for attempt in range(max_retries):
73
+ response = requests.post(url, headers=headers, json=json, proxies=proxies)
74
+ if response.status_code == 429:
75
+ retry_after = int(response.headers.get("Retry-After", randint(1, 5)))
76
+ logger.info(f"Rate limited. Retrying after {retry_after} seconds. Attempt {attempt + 1}/{max_retries}")
77
+ time.sleep(retry_after)
78
+ else:
79
+ return response
80
+ logger.error("Max retries reached. Giving up.")
81
+ return None
@@ -0,0 +1,97 @@
1
+ import random
2
+
3
+ from loguru import logger
4
+ from sybil_engine.data.networks import get_chain_instance
5
+ from sybil_engine.domain.balance.balance_utils import verify_balance, amount_to_swap_from_interval
6
+ from sybil_engine.domain.balance.tokens import Erc20Token
7
+ from sybil_engine.module.module import Module
8
+ from sybil_engine.utils.utils import SwapException
9
+ from sybil_engine.utils.validation_utils import validate_amount_interval, validate_token
10
+ from sybil_engine.utils.web3_utils import init_web3
11
+
12
+ from web3_wizzard_lib.core.modules import swap_facade
13
+
14
+
15
+ class ConcreteSwap(Module):
16
+ module_name = 'CONCRETE_SWAP'
17
+ module_config = 'swap_config'
18
+ allowed_chains = ['ZKSYNC', 'LINEA', 'BASE', 'SCROLL', 'ARBITRUM']
19
+ sleep_after_var = True
20
+
21
+ def execute(self, chain, amount_interval, from_token, to_token, swap_app, account):
22
+ if isinstance(swap_app, list):
23
+ swap_app = random.choice(swap_app)
24
+
25
+ self.sleep_after_var = True
26
+ chain_instance = get_chain_instance(chain)
27
+ web3 = init_web3(chain_instance, account.proxy)
28
+
29
+ native_balance = verify_balance(self.min_native_balance, chain_instance, account, web3)
30
+
31
+ from_token_contract = Erc20Token(chain, from_token, web3)
32
+ to_token_contract = Erc20Token(chain, to_token, web3)
33
+
34
+ pair_to_swap = self.create_pair_to_swap(
35
+ from_token_contract.symbol(),
36
+ swap_app,
37
+ to_token_contract.symbol(),
38
+ )
39
+
40
+ amount_to_swap = amount_to_swap_from_interval(
41
+ account,
42
+ chain,
43
+ self.min_native_balance,
44
+ native_balance,
45
+ amount_interval,
46
+ from_token,
47
+ web3
48
+ )
49
+
50
+ if amount_to_swap.wei < 100000:
51
+ logger.info("Low balance, ignore")
52
+ return
53
+
54
+ try:
55
+ swap_facade.swap(
56
+ account,
57
+ amount_to_swap,
58
+ chain_instance,
59
+ pair_to_swap,
60
+ swap_app,
61
+ from_token,
62
+ to_token,
63
+ web3
64
+ )
65
+ except SwapException as e:
66
+ logger.info(e.message)
67
+ self.sleep_after_var = False
68
+
69
+ def create_pair_to_swap(self, from_token, swap_app, to_token):
70
+ pair_to_swap = {
71
+ 'name': f'{from_token}>{to_token}',
72
+ 'tokens': [from_token, to_token],
73
+ 'slippage': 2,
74
+ 'app': swap_app
75
+ }
76
+ return pair_to_swap
77
+
78
+ def log(self):
79
+ return "SWAP"
80
+
81
+ def sleep_after(self):
82
+ return self.sleep_after_var
83
+
84
+ def parse_params(self, module_params):
85
+ self.validate_supported_chain(module_params['chain'])
86
+ validate_amount_interval(module_params['amount_interval'])
87
+ validate_token(module_params['from_token'])
88
+ validate_token(module_params['to_token'])
89
+ #validate_dex(module_params['app'])
90
+
91
+ return (
92
+ module_params['chain'],
93
+ module_params['amount_interval'],
94
+ module_params['from_token'],
95
+ module_params['to_token'],
96
+ module_params['app']
97
+ )
@@ -0,0 +1,32 @@
1
+ from sybil_engine.module.module import Order, Module
2
+
3
+ from web3_wizzard_lib.core.modules.bridge.coredao_bridge_sub import CoreDaoBridgeSubModule
4
+
5
+
6
+ class CoreDaoBridge(Module):
7
+ module_name = 'COREDAO_BRIDGE'
8
+ allowed_chains = ['POLYGON', 'COREDAO']
9
+ module_config = 'coredao_bridge_config'
10
+
11
+ def execute(self, bridge_amount_interval, from_chain, to_chain, token, account):
12
+ CoreDaoBridgeSubModule().execute(
13
+ bridge_amount_interval,
14
+ from_chain,
15
+ to_chain,
16
+ token,
17
+ self.min_native_balance,
18
+ account
19
+ )
20
+
21
+ def log(self):
22
+ return "COREDAO BRIDGE"
23
+
24
+ def parse_params(self, module_params):
25
+ self.validate_supported_chain(module_params['from_chain'])
26
+ self.validate_supported_chain(module_params['to_chain'])
27
+
28
+ return module_params['bridge_amount_interval'], module_params['from_chain'], module_params['to_chain'], \
29
+ module_params['token']
30
+
31
+ def order(self):
32
+ return Order.RANDOM
@@ -0,0 +1,39 @@
1
+ from sybil_engine.module.module import Order, RepeatableModule
2
+ from sybil_engine.utils.utils import interval_to_int, randomized_sleeping
3
+
4
+ from web3_wizzard_lib.core.modules.bridge.coredao_bridge_sub import CoreDaoBridgeSubModule
5
+
6
+
7
+ class CoreDaoBridgeAuto(RepeatableModule):
8
+ module_name = 'COREDAO_BRIDGE_AUTO'
9
+ allowed_chains = ['POLYGON', 'COREDAO']
10
+ random_order = Order.RANDOM
11
+ repeat_conf = 'repeats'
12
+ module_config = 'coredao_bridge_auto_config'
13
+
14
+ @RepeatableModule.repeatable_log
15
+ def execute(self, from_chain, to_chain, bridge_amount_interval, token, sleep_interval, account):
16
+ CoreDaoBridgeSubModule().execute(bridge_amount_interval, from_chain, to_chain, token, account)
17
+ randomized_sleeping(sleep_interval)
18
+ CoreDaoBridgeSubModule().execute(bridge_amount_interval, to_chain, from_chain, token, account)
19
+
20
+ def log(self):
21
+ return "COREDAO BRIDGE AUTO"
22
+
23
+ def parse_params(self, module_params):
24
+ return [
25
+ module_params['from_chain'],
26
+ module_params['to_chain'],
27
+ module_params['bridge_amount_interval'],
28
+ module_params['token'],
29
+ module_params['sleep_interval'],
30
+ ]
31
+
32
+ def order(self):
33
+ return Order.RANDOM
34
+
35
+ def repeats(self, module_params):
36
+ if self.repeat_conf not in module_params:
37
+ return 1
38
+ else:
39
+ return range(interval_to_int(module_params[self.repeat_conf]))