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,41 @@
1
+ from sybil_engine.domain.dex import Dex
2
+
3
+ from ...contract.izumi import IzumiRouter
4
+
5
+
6
+ class Izumi(Dex):
7
+ dex_name = 'izumi'
8
+ swap_contract = 'IZUMI'
9
+ supported_chains = ['LINEA']
10
+
11
+ def __init__(self, chain_instance, web3):
12
+ super().__init__(chain_instance, web3)
13
+ self.weth_address = self.tokens['WETH']
14
+ self.izumi = IzumiRouter(self.chain_contracts[self.swap_contract], self.web3)
15
+
16
+ def swap_token_for_native(self, account, amount_to_swap, from_token_address, slippage):
17
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, from_token_address, self.weth_address) * slippage)
18
+ args = [account, amount_to_swap, amount_out_min, from_token_address, self.weth_address]
19
+ func = self.izumi.multicall
20
+
21
+ return args, func
22
+
23
+ def swap_native_for_token(self, account, amount_to_swap, slippage, to_token_address):
24
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, self.weth_address, to_token_address) * slippage)
25
+ args = [account, amount_to_swap, amount_out_min, self.weth_address, to_token_address]
26
+ func = self.izumi.multicall
27
+
28
+ return args, func
29
+
30
+ def swap_token_for_token(self, account, amount_to_swap, slippage, from_token_address, to_token_address):
31
+ raise Exception("Not supported yet")
32
+
33
+ def get_amount_out_min(self, amount_to_swap, from_token_address, to_token_address):
34
+ izumi = self.chain_contracts["IZUMI"]
35
+ izumi_router = IzumiRouter(izumi, self.web3)
36
+
37
+ if amount_to_swap.token == 'ETH':
38
+ return int((izumi_router.quote_price('weETH') * amount_to_swap.wei) * 0.999)
39
+ else:
40
+ return int((izumi_router.quote_price('ETH') * amount_to_swap.wei) * 0.999)
41
+
@@ -0,0 +1,34 @@
1
+ from sybil_engine.domain.dex import Dex
2
+
3
+ from web3_wizzard_lib.core.contract.lineaswaprouter import LineaSwapRouter
4
+
5
+
6
+ class LineaSwap(Dex):
7
+ dex_name = 'lineaswap'
8
+ swap_contract = "LINEASWAP"
9
+ supported_chains = ['BASE', 'LINEA']
10
+
11
+ def __init__(self, chain_instance, web3):
12
+ super().__init__(chain_instance, web3)
13
+ self.linea_swap_router = LineaSwapRouter(self.chain_contracts[self.swap_contract], self.web3)
14
+ self.weth_address = self.tokens['WETH']
15
+
16
+ def swap_native_for_token(self, account, amount_to_swap, slippage, to_token_address):
17
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, self.weth_address, to_token_address) * slippage)
18
+ args = [account, amount_to_swap, self.weth_address, to_token_address, amount_out_min]
19
+ func = self.linea_swap_router.swap_exact_eth_for_tokens
20
+
21
+ return args, func
22
+
23
+ def swap_token_for_native(self, account, amount_to_swap, from_token_address, slippage):
24
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, from_token_address, self.weth_address) * slippage)
25
+ args = [account, amount_to_swap, from_token_address, self.weth_address, amount_out_min]
26
+ func = self.linea_swap_router.swap_exact_tokens_for_eth
27
+
28
+ return args, func
29
+
30
+ def swap_token_for_token(self, account, amount_to_swap, slippage, from_token_address, to_token_address):
31
+ raise Exception("Not supported")
32
+
33
+ def get_amount_out_min(self, amount_to_swap, from_token_address, to_token_address):
34
+ return self.linea_swap_router.get_amount_out(amount_to_swap, from_token_address, to_token_address)
@@ -0,0 +1,66 @@
1
+ from sybil_engine.domain.balance.tokens import Erc20Token
2
+ from sybil_engine.domain.dex import Dex
3
+
4
+ from web3_wizzard_lib.core.contract.maverick_multicall import MaverickMulticall
5
+ from ...contract.pancake_pool import PancakePool
6
+ from ...contract.pancake_quoter import PancakeQuoter
7
+
8
+ pool_addresses = {
9
+ 'ZKSYNC': {
10
+ "ETH>USDC": "0x41c8cf74c27554a8972d3bf3d2bd4a14d8b604ab"
11
+ },
12
+ 'BASE': {
13
+ "ETH>USDbC": "0x06e6736ca9e922766279a22b75a600fe8b8473b6",
14
+ "ETH>USDC": "0x06e6736ca9e922766279a22b75a600fe8b8473b6"
15
+ }
16
+ }
17
+
18
+
19
+ class Maverick(Dex):
20
+ dex_name = 'maverick'
21
+ swap_contract = 'MAV_ROUTER'
22
+ supported_chains = ['ZKSYNC', 'BASE']
23
+
24
+ def __init__(self, chain_instance, web3):
25
+ self.chain_instance = chain_instance
26
+ super().__init__(chain_instance, web3)
27
+ self.weth_contract = self.tokens['WETH']
28
+ self.pancake_pool = PancakePool(self.chain_contracts["PANCAKE_FACTORY"], self.web3)
29
+ self.maverick_router = MaverickMulticall(self.chain_contracts[self.swap_contract], self.web3)
30
+
31
+ def swap_native_for_token(self, account, amount_to_swap, slippage, to_token_address):
32
+ erc20_token = Erc20Token(self.chain_instance['chain'], to_token_address, self.web3)
33
+ pair_name = f"{self.chain_instance['gas_token']}>{erc20_token.symbol()}"
34
+ maverick_pool_address = pool_addresses[self.chain_instance['chain']][pair_name]
35
+
36
+ pool = self.pancake_pool.get_pool(self.weth_contract, to_token_address)
37
+
38
+ if pool == self.tokens['ZERO_ADDRESS']:
39
+ raise Exception(f"[{account.address}] Swap path {self.weth_contract} to {to_token_address} not found!")
40
+
41
+ amount_out = int(self.get_amount_out_min(amount_to_swap, self.weth_contract, to_token_address) * slippage)
42
+
43
+ args = [account, amount_to_swap, amount_out, self.weth_contract, maverick_pool_address, to_token_address]
44
+
45
+ return args, self.maverick_router.multicall
46
+
47
+ def swap_token_for_native(self, account, amount_to_swap, from_token_address, slippage):
48
+ pair_name = f'{self.chain_instance["gas_token"]}>{amount_to_swap.token}'
49
+ maverick_pool_address = pool_addresses[self.chain_instance['chain']][pair_name]
50
+
51
+ pool = self.pancake_pool.get_pool(from_token_address, self.weth_contract)
52
+
53
+ if pool == self.tokens['ZERO_ADDRESS']:
54
+ raise Exception(f"[{account.address}] Swap path {from_token_address} to {self.weth_contract} not found!")
55
+
56
+ amount_out = int(self.get_amount_out_min(amount_to_swap, from_token_address, self.weth_contract) * slippage)
57
+
58
+ args = [account, amount_to_swap, amount_out, from_token_address, maverick_pool_address, self.weth_contract]
59
+
60
+ return args, self.maverick_router.multicall
61
+
62
+ def get_amount_out_min(self, amount_to_swap, token_in_address, token_out_address):
63
+ pancake_quoter_contract = self.chain_contracts["PANCAKE_QUOTER"]
64
+ pancake_quoter = PancakeQuoter(pancake_quoter_contract, self.web3)
65
+
66
+ return pancake_quoter.quote_exact_input_single(token_in_address, token_out_address, amount_to_swap.wei)
@@ -0,0 +1,39 @@
1
+ from sybil_engine.domain.dex import Dex
2
+
3
+ from web3_wizzard_lib.core.contract.mute_router import MuteRouter
4
+
5
+
6
+ class Mute(Dex):
7
+ dex_name = 'mute'
8
+ swap_contract = "MUTE_ROUTER"
9
+ supported_chains = ['ZKSYNC']
10
+
11
+ def __init__(self, chain_instance, web3):
12
+ super().__init__(chain_instance, web3)
13
+ self.weth_address = self.tokens['WETH']
14
+ mute_contract = self.chain_contracts[self.swap_contract]
15
+ self.mute_router = MuteRouter(mute_contract, self.web3)
16
+
17
+ def swap_native_for_token(self, account, amount_to_swap, slippage, to_token_address):
18
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, self.weth_address, to_token_address) * slippage)
19
+
20
+ args = [account, amount_to_swap, self.weth_address, to_token_address, amount_out_min]
21
+ func = self.mute_router.swap_exact_eth_for_tokens_supporting_fee_on_transfer_tokens
22
+ return args, func
23
+
24
+ def swap_token_for_native(self, account, amount_to_swap, from_token_address, slippage):
25
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, from_token_address, self.weth_address) * slippage)
26
+
27
+ args = [account, amount_to_swap, from_token_address, self.weth_address, amount_out_min]
28
+ func = self.mute_router.swap_exact_tokens_for_eth_supporting_fee_on_transfer_tokens
29
+ return args, func
30
+
31
+ def swap_token_for_token(self, account, amount_to_swap, slippage, from_token_address, to_token_address):
32
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, from_token_address, to_token_address) * slippage)
33
+
34
+ args = [account, amount_to_swap, from_token_address, to_token_address, amount_out_min]
35
+ func = self.mute_router.swap_exact_tokens_for_tokens_supporting_fee_on_transfer_tokens
36
+ return args, func
37
+
38
+ def get_amount_out_min(self, amount_to_swap, from_token_address, to_token_address):
39
+ return self.mute_router.get_amount_out(amount_to_swap, from_token_address, to_token_address)
@@ -0,0 +1,58 @@
1
+ from loguru import logger
2
+ from sybil_engine.domain.dex import Dex
3
+ from sybil_engine.utils.retry import retry
4
+ from sybil_engine.utils.utils import AccountException
5
+
6
+ from web3_wizzard_lib.core.contract.odos import Odos
7
+
8
+
9
+ class OdosSwap(Dex):
10
+ dex_name = 'odos'
11
+ swap_contract = 'ODOS'
12
+ supported_chains = ['ZKSYNC', 'BASE', 'LINEA']
13
+
14
+ def __init__(self, chain_instance, web3):
15
+ super().__init__(chain_instance, web3)
16
+ self.odos_router_contract = self.chain_contracts[self.swap_contract]
17
+ self.odos_router = Odos(self.odos_router_contract, self.web3)
18
+
19
+ @retry(max_attempts=10, retry_interval={'from': 10, 'to': 20})
20
+ def swap(self, amount_to_swap, from_token, to_token, slippage, account):
21
+ logger.info(
22
+ f"Swap {amount_to_swap.log_line()}->{to_token.symbol()} in {self.dex_name} ({self.chain_instance['chain']})")
23
+
24
+ if amount_to_swap.token == 'ETH':
25
+ from_token_address = '0x0000000000000000000000000000000000000000'
26
+ else:
27
+ from_token_address = from_token.erc20_contract.contract_address
28
+
29
+ if to_token.token == 'ETH':
30
+ to_token_address = '0x0000000000000000000000000000000000000000'
31
+ else:
32
+ to_token_address = to_token.erc20_contract.contract_address
33
+
34
+ quote_data = self.odos_router.quote(
35
+ account, from_token_address, to_token_address, amount_to_swap.wei, slippage, self.chain_instance['chain']
36
+ )
37
+
38
+ if amount_to_swap.token == 'ETH':
39
+ transaction_data = self.odos_router.assemble(account, quote_data["pathId"])
40
+
41
+ func = self.odos_router.swap
42
+ else:
43
+ balance = from_token.balance(account)
44
+
45
+ if balance.wei < amount_to_swap.wei:
46
+ raise AccountException(f"Balance {balance} < {amount_to_swap}")
47
+
48
+ if from_token.allowance(account, self.odos_router_contract) < amount_to_swap.wei:
49
+ from_token.approve(account, self.odos_router_contract)
50
+
51
+ transaction_data = self.odos_router.assemble(account, quote_data["pathId"])
52
+
53
+ if to_token.token == 'ETH':
54
+ func = self.odos_router.swap
55
+ else:
56
+ raise Exception('Not supported')
57
+
58
+ func(account, transaction_data)
@@ -0,0 +1,58 @@
1
+ import requests
2
+ from sybil_engine.contract.transaction_executor import evm_transaction
3
+ from sybil_engine.domain.dex import Dex
4
+ from sybil_engine.utils.gas_utils import l1_gas_price
5
+ from sybil_engine.utils.utils import randomized_sleeping, SwapException
6
+ from web3 import Web3
7
+
8
+
9
+ class OneInch(Dex):
10
+ dex_name = '1inch'
11
+ swap_contract = '1INCH'
12
+ supported_chains = ['BASE', 'ZKSYNC', 'OPTIMISM', 'ARBITRUM']
13
+
14
+ def __init__(self, chain_instance, web3):
15
+ super().__init__(chain_instance, web3)
16
+ self.weth_address = self.tokens['WETH']
17
+ self.base_url = 'https://api.1inch.dev/swap'
18
+ self.inch_version = 5.2
19
+
20
+ @l1_gas_price
21
+ def swap(self, amount_to_swap, from_token, to_token, slippage, account):
22
+ if amount_to_swap.wei == 0:
23
+ raise SwapException(f"Can't swap 0 of {amount_to_swap.token}")
24
+
25
+ self.get_txn(account, amount_to_swap, from_token, to_token)
26
+
27
+ def get_api_call_data(self, url):
28
+ response = requests.get(url, headers={'Authorization': "DuagMR3vHpYc9JBNqM0Wx9mSWA7VzwuH"})
29
+
30
+ return response.json()
31
+
32
+ @evm_transaction
33
+ def get_txn(self, account, amount_to_swap, from_token, to_token):
34
+ spender_json = self.get_api_call_data(
35
+ f'{self.base_url}/v{self.inch_version}/{self.web3.eth.chain_id}/approve/spender')
36
+ spender = Web3.to_checksum_address(spender_json['address'])
37
+
38
+ if from_token.symbol() != 'ETH' and from_token.allowance(account, spender) < amount_to_swap.wei:
39
+ from_token.approve(account, spender)
40
+
41
+ randomized_sleeping({'from': 1, 'to': 5})
42
+
43
+ _1inchurl = f"{self.base_url}/v{self.inch_version}/{self.web3.eth.chain_id}/swap?fromTokenAddress={from_token.address()}&toTokenAddress={to_token.address()}&amount={amount_to_swap.wei}&fromAddress={account.address}&slippage=5"
44
+ json_data = self.get_api_call_data(_1inchurl)
45
+
46
+ if json_data is False:
47
+ raise Exception(json_data['description'])
48
+
49
+ contract_txn = json_data['tx']
50
+ contract_txn['from'] = Web3.to_checksum_address(contract_txn['from'])
51
+ contract_txn['chainId'] = self.web3.eth.chain_id
52
+ contract_txn['nonce'] = self.web3.eth.get_transaction_count(account.address)
53
+ contract_txn['to'] = Web3.to_checksum_address(contract_txn['to'])
54
+ contract_txn['gasPrice'] = int(contract_txn['gasPrice'])
55
+ contract_txn['gas'] = int(contract_txn['gas'])
56
+ contract_txn['value'] = int(contract_txn['value'])
57
+
58
+ return contract_txn
@@ -0,0 +1,41 @@
1
+ from sybil_engine.domain.dex import Dex
2
+
3
+ from web3_wizzard_lib.core.contract.pancake_quoter import PancakeQuoter
4
+ from web3_wizzard_lib.core.contract.pancake_router import PancakeRouter
5
+
6
+
7
+ class Pancake(Dex):
8
+ dex_name = 'pancake'
9
+ swap_contract = "PANCAKE_ROUTER"
10
+ supported_chains = ['ZKSYNC', 'BASE', 'LINEA', 'ARBITRUM']
11
+
12
+ def __init__(self, chain_instance, web3):
13
+ super().__init__(chain_instance, web3)
14
+ self.weth_address = self.tokens['WETH']
15
+ self.pancake_router_contract = self.chain_contracts[self.swap_contract]
16
+ self.pancake_router = PancakeRouter(self.pancake_router_contract, self.web3)
17
+
18
+ def swap_native_for_token(self, account, amount_to_swap, slippage, to_token_address):
19
+
20
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, self.weth_address, to_token_address) * slippage)
21
+ args = [account, amount_to_swap, self.weth_address, to_token_address, amount_out_min]
22
+ func = self.pancake_router.swap_to_token
23
+
24
+ return args, func
25
+
26
+ def swap_token_for_native(self, account, amount_to_swap, from_token_address, slippage):
27
+ amount_out_min = int(
28
+ self.get_amount_out_min(amount_to_swap, from_token_address, self.weth_address) * slippage)
29
+
30
+ args = [account, amount_to_swap, from_token_address, self.weth_address, amount_out_min]
31
+ func = self.pancake_router.swap_to_eth
32
+ return args, func
33
+
34
+ def swap_token_for_token(self, account, amount_to_swap, slippage, from_token_address, to_token_address):
35
+ raise Exception('Not supported')
36
+
37
+ def get_amount_out_min(self, amount_to_swap, from_token_address, to_token_address):
38
+ pancake_quoter_contract = self.chain_contracts["PANCAKE_QUOTER"]
39
+ pancake_quoter = PancakeQuoter(pancake_quoter_contract, self.web3)
40
+
41
+ return pancake_quoter.quote_exact_input_single(from_token_address, to_token_address, amount_to_swap.wei)
@@ -0,0 +1,10 @@
1
+ from sybil_engine.domain.dex import Dex
2
+ from sybil_engine.domain.swap_facade import SwapFacade
3
+ from sybil_engine.utils.package_import_utils import get_all_subclasses, import_all_modules_in_directory
4
+
5
+
6
+ def get_swap_classes():
7
+ import_all_modules_in_directory("web3_wizzard_lib.core.modules.swap")
8
+ return get_all_subclasses(Dex)
9
+
10
+ swap_facade = SwapFacade(get_swap_classes())
@@ -0,0 +1,10 @@
1
+ from sybil_engine.domain.dex import Dex
2
+ from sybil_engine.domain.swap_facade import SwapFacade
3
+ from sybil_engine.utils.package_import_utils import get_all_subclasses, import_all_modules_in_directory
4
+
5
+
6
+ def get_swap_classes():
7
+ import_all_modules_in_directory("web3_wizzard_lib.core.modules.swap")
8
+ return get_all_subclasses(Dex)
9
+
10
+ swap_facade = SwapFacade(get_swap_classes())
@@ -0,0 +1,62 @@
1
+ from sybil_engine.domain.dex import Dex
2
+
3
+ from web3_wizzard_lib.core.contract.syncswap_classic_pool_factory import SyncSwapClassicPoolFactory
4
+ from web3_wizzard_lib.core.contract.syncswap_pool import SyncSwapPoolContract
5
+ from web3_wizzard_lib.core.contract.syncswap_router import SyncSwapRouter
6
+
7
+
8
+ class Syncswap(Dex):
9
+ dex_name = 'syncswap'
10
+ swap_contract = 'SYNCSWAP'
11
+ supported_chains = ['ZKSYNC', 'LINEA', 'SCROLL']
12
+
13
+ def __init__(self, chain_instance, web3):
14
+ super().__init__(chain_instance, web3)
15
+ self.weth_address = self.tokens['WETH']
16
+ self.pool_classic_pool_factory_address = self.chain_contracts['SYNCSWAP_CLASSIC_POOL_FACTORY']
17
+ self.syncswap_contract_address = self.chain_contracts[self.swap_contract]
18
+ self.syncswap_router = SyncSwapRouter(self.syncswap_contract_address, self.web3)
19
+
20
+ def swap_native_for_token(self, account, amount_to_swap, slippage, to_token_address):
21
+ token_in_data_address = self.weth_address
22
+ token_in_address = self.tokens['ZERO_ADDRESS']
23
+
24
+ amount_out_min = int(
25
+ self.get_amount_out_min(account, amount_to_swap, token_in_data_address, to_token_address) * slippage
26
+ )
27
+
28
+ args = [
29
+ account,
30
+ amount_to_swap,
31
+ self.weth_address,
32
+ token_in_address,
33
+ self.get_pool_address(token_in_data_address, to_token_address),
34
+ amount_out_min
35
+ ]
36
+
37
+ return args, self.syncswap_router.swap
38
+
39
+ def swap_token_for_native(self, account, amount_to_swap, from_token_address, slippage):
40
+ token_in_data_address = self.tokens[amount_to_swap.token]
41
+ token_in_address = self.tokens[amount_to_swap.token]
42
+
43
+ amount_out_min = int(
44
+ self.get_amount_out_min(account, amount_to_swap, token_in_data_address, self.weth_address) * slippage)
45
+
46
+ args = [account, amount_to_swap, token_in_address, token_in_data_address, self.get_pool_address(token_in_data_address, self.weth_address), amount_out_min]
47
+
48
+ return args, self.syncswap_router.swap
49
+
50
+ def get_amount_out_min(self, account, amount_to_swap, token_in_data_address, to_token_address):
51
+ pool_address = self.get_pool_address(token_in_data_address, to_token_address)
52
+
53
+ if isinstance(pool_address, str):
54
+ syncswap_pool = SyncSwapPoolContract(pool_address, self.web3)
55
+ else:
56
+ syncswap_pool = SyncSwapPoolContract(list(pool_address.items())[0][1], self.web3)
57
+
58
+ return syncswap_pool.get_amount_out(account, amount_to_swap, token_in_data_address)
59
+
60
+ def get_pool_address(self, token_in_data_address, to_token_address):
61
+ pool_factory = SyncSwapClassicPoolFactory(self.pool_classic_pool_factory_address, self.web3)
62
+ return pool_factory.get_pool(token_in_data_address, to_token_address)
@@ -0,0 +1,40 @@
1
+ from sybil_engine.domain.dex import Dex
2
+
3
+ from web3_wizzard_lib.core.contract.velocore_router import VelocoreRouter
4
+
5
+
6
+ class Velocore(Dex):
7
+ dex_name = 'velocore'
8
+ swap_contract = "VELOCORE_ROUTER"
9
+ supported_chains = ['ZKSYNC']
10
+
11
+ def __init__(self, chain_instance, web3):
12
+ super().__init__(chain_instance, web3)
13
+ self.weth_address = self.tokens['WETH']
14
+ self.velocore_router = VelocoreRouter(self.chain_contracts[self.swap_contract], self.web3)
15
+
16
+ def swap_native_for_token(self, account, amount_to_swap, slippage, to_token_address):
17
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, self.weth_address, to_token_address) * slippage)
18
+
19
+ args = [account, amount_to_swap, self.weth_address, to_token_address, amount_out_min]
20
+ func = self.velocore_router.swap_exact_eth_for_tokens
21
+
22
+ return args, func
23
+
24
+ def get_amount_out_min(self, amount_to_swap, from_token_address, to_token_address):
25
+ return self.velocore_router.get_amount_out(amount_to_swap, from_token_address, to_token_address)
26
+
27
+ def swap_token_for_native(self, account, amount_to_swap, from_token_address, slippage):
28
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, from_token_address, self.weth_address) * slippage)
29
+
30
+ args = [account, amount_to_swap, from_token_address, self.weth_address, amount_out_min]
31
+ func = self.velocore_router.swap_exact_tokens_for_eth
32
+ return args, func
33
+
34
+ def swap_token_for_token(self, account, amount_to_swap, slippage, from_token_address, to_token_address):
35
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, from_token_address, to_token_address) * slippage)
36
+
37
+ args = [account, amount_to_swap, from_token_address, to_token_address, amount_out_min]
38
+ func = self.velocore_router.swap_exact_tokens_for_tokens
39
+
40
+ return args, func
@@ -0,0 +1,38 @@
1
+ from sybil_engine.domain.balance.tokens import Erc20Token
2
+ from sybil_engine.domain.dex import Dex
3
+ from sybil_engine.utils.gas_utils import l1_gas_price
4
+ from sybil_engine.utils.utils import AccountException
5
+
6
+ from web3_wizzard_lib.core.contract.woofi_swap import WoofiSwap
7
+
8
+
9
+ class Woofi(Dex):
10
+ dex_name = 'woofi'
11
+ swap_contract = 'WOOFI'
12
+ supported_chains = ['ZKSYNC', 'BASE', 'LINEA']
13
+
14
+ def __init__(self, chain_instance, web3):
15
+ super().__init__(chain_instance, web3)
16
+ self.contract_address = self.chain_contracts[self.swap_contract]
17
+ self.woofi_swap = WoofiSwap(self.contract_address, self.web3)
18
+
19
+ @l1_gas_price
20
+ def swap(self, amount_to_swap, from_token, to_token, slippage, account):
21
+ if amount_to_swap.wei == 0:
22
+ raise AccountException(f"{amount_to_swap.token} balance is 0")
23
+
24
+ token_in_address = self.tokens[amount_to_swap.token]
25
+ token_out_address = self.tokens[to_token.token]
26
+
27
+ erc20_from_token = Erc20Token(self.chain_instance['chain'], amount_to_swap.token, self.web3)
28
+
29
+ if amount_to_swap.token != 'ETH':
30
+ if erc20_from_token.allowance(account, self.contract_address) < amount_to_swap.wei:
31
+ erc20_from_token.approve(account, self.contract_address)
32
+
33
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, token_in_address, token_out_address) * slippage)
34
+
35
+ self.woofi_swap.swap(account, amount_to_swap, token_in_address, token_out_address, amount_out_min)
36
+
37
+ def get_amount_out_min(self, amount_to_swap, token_in_address, token_out_address):
38
+ return self.woofi_swap.query_swap(token_in_address, token_out_address, amount_to_swap)
@@ -0,0 +1,43 @@
1
+ from loguru import logger
2
+ from sybil_engine.domain.balance.tokens import Erc20Token
3
+ from sybil_engine.domain.dex import Dex
4
+ from sybil_engine.utils.gas_utils import l1_gas_price
5
+ from sybil_engine.utils.utils import AccountException
6
+
7
+ from web3_wizzard_lib.core.contract.xy_finance_contract import XYSwapContract
8
+
9
+
10
+ class XyFinance(Dex):
11
+ dex_name = 'xy.finance'
12
+ swap_contract = 'XY_FINANCE'
13
+ supported_chains = ['SCROLL']
14
+
15
+ def __init__(self, chain_instance, web3):
16
+ super().__init__(chain_instance, web3)
17
+ self.contract_address = self.chain_contracts[self.swap_contract]
18
+ self.xy_swap_contract = XYSwapContract(self.contract_address, self.web3)
19
+
20
+ @l1_gas_price
21
+ def swap(self, amount_to_swap, from_token, to_token, slippage, account):
22
+ if amount_to_swap.wei == 0:
23
+ raise AccountException(f"{amount_to_swap.token} balance is 0")
24
+
25
+ token_in_address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" if from_token == "ETH" else self.tokens[from_token]
26
+ token_out_address = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" if to_token == "ETH" else self.tokens[to_token]
27
+
28
+ logger.info(f"Swap {amount_to_swap.log_line()}->{to_token} in {self.dex_name} ({self.chain_instance['chain']})")
29
+
30
+ erc20_from_token = Erc20Token(self.chain_instance['chain'], amount_to_swap.token, self.web3)
31
+
32
+ if amount_to_swap.token != 'ETH':
33
+ if erc20_from_token.allowance(account, self.contract_address) < amount_to_swap.wei:
34
+ erc20_from_token.approve(account, self.contract_address)
35
+
36
+ slippage = int((1 - slippage) * 100)
37
+
38
+ amount_out_min = self.get_amount_out_min(amount_to_swap, token_in_address, token_out_address, slippage)
39
+
40
+ self.xy_swap_contract.swap(account, amount_to_swap, token_in_address, token_out_address, amount_out_min, slippage)
41
+
42
+ def get_amount_out_min(self, amount_to_swap, token_in_address, token_out_address, slippage):
43
+ return self.xy_swap_contract.get_quote(token_in_address, token_out_address, amount_to_swap, slippage)
@@ -0,0 +1,32 @@
1
+ from sybil_engine.domain.dex import Dex
2
+
3
+ from web3_wizzard_lib.core.contract.zebra_contract import ZebraContract
4
+
5
+
6
+ class Zebra(Dex):
7
+ dex_name = 'zebra'
8
+ swap_contract = "ZEBRA"
9
+ supported_chains = ['SCROLL']
10
+
11
+ def __init__(self, chain_instance, web3):
12
+ super().__init__(chain_instance, web3)
13
+ self.weth_address = self.tokens['WETH']
14
+ zebra_contract = self.chain_contracts[self.swap_contract]
15
+ self.zebra = ZebraContract(zebra_contract, self.web3)
16
+
17
+ def swap_native_for_token(self, account, amount_to_swap, slippage, to_token_address):
18
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, self.tokens['ETH'], to_token_address) * slippage)
19
+
20
+ args = [account, amount_to_swap, self.tokens['ETH'], to_token_address, amount_out_min]
21
+ func = self.zebra.swap_to_token
22
+ return args, func
23
+
24
+ def swap_token_for_native(self, account, amount_to_swap, from_token_address, slippage):
25
+ amount_out_min = int(self.get_amount_out_min(amount_to_swap, from_token_address, self.weth_address) * slippage)
26
+
27
+ args = [account, amount_to_swap, from_token_address, self.tokens['ETH'], amount_out_min]
28
+ func = self.zebra.swap_to_eth
29
+ return args, func
30
+
31
+ def get_amount_out_min(self, amount_to_swap, from_token_address, to_token_address):
32
+ return self.zebra.get_min_amount_out(amount_to_swap, from_token_address, to_token_address)