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,116 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.tokens import get_tokens_for_chain
4
+ from sybil_engine.domain.balance.tokens import Erc20Token
5
+
6
+ from web3_wizzard_lib.core.contract.layerbank_price import LayerBankPrice
7
+ from web3_wizzard_lib.core.contract.layerbank_token import LayerBankToken
8
+ from web3_wizzard_lib.core.contract.layerbankcontract import LayerBankContract
9
+ from web3_wizzard_lib.core.modules.bank.bank import Bank
10
+
11
+
12
+ class LayerBank(Bank):
13
+ app_name = 'LAYERBANK'
14
+ supported_chains = ['LINEA']
15
+
16
+ def __init__(self, chain, web3):
17
+ self.chain = chain
18
+ self.web3 = web3
19
+ self.layerbank = LayerBankContract(get_contracts_for_chain(chain)["LAYERBANK"], web3)
20
+
21
+ lbwstETH = get_tokens_for_chain(chain)['lbwstETH']
22
+ self.lbWstETHToken = LayerBankToken(lbwstETH, web3)
23
+
24
+ lbETH = get_tokens_for_chain(chain)['lbETH']
25
+ self.lbETHToken = LayerBankToken(lbETH, web3)
26
+
27
+ def supply(self, account, token):
28
+ token = LayerBankToken(get_tokens_for_chain(self.chain)[token], self.web3)
29
+
30
+ erc20_token = Erc20Token(self.chain, token, self.web3)
31
+ amount = erc20_token.balance(account)
32
+
33
+ if 25 * token.one_decimal() <= self.layerbank.account_liquidity_of(account)[0]:
34
+ logger.info("Already supplied over 25$ worth, skip this step")
35
+ return
36
+
37
+ if erc20_token.allowance(account, token.contract_address) < amount.wei:
38
+ erc20_token.approve(account, token.contract_address)
39
+
40
+ if amount.wei > 0:
41
+ if token.contract_address not in self.layerbank.market_list_of(account):
42
+ logger.info("Add support wstETH to LayerBank")
43
+ self.layerbank.enter_markets(account, token.contract_address)
44
+
45
+ logger.info(f"Supply {amount.log_line()}")
46
+
47
+ self.layerbank.supply(account, token.contract_address, amount.wei)
48
+
49
+ if 25 * token.one_decimal() > self.layerbank.account_liquidity_of(account)[0]:
50
+ raise Exception(
51
+ f"Not enough supply for 25$ borrow {self.layerbank.account_liquidity_of(account)[0] / token.one_decimal()}"
52
+ )
53
+
54
+ def borrow(self, account, token):
55
+ token = LayerBankToken(get_tokens_for_chain(self.chain)[token], self.web3)
56
+
57
+ layerbank_price = LayerBankPrice(get_contracts_for_chain(self.chain)["LAYERBANK_PRICE"], self.web3)
58
+
59
+ usd_collateral = self.layerbank.account_liquidity_of(account)[0]
60
+ eth_amount = (usd_collateral / layerbank_price.get_underlying_price(token.contract_address))
61
+
62
+ logger.info(f"Borrow {eth_amount} {token.symbol()}")
63
+
64
+ borrow_amount = int(
65
+ eth_amount * token.one_decimal() * token.one_decimal() / token.exchange_rate())
66
+
67
+ self.layerbank.borrow(
68
+ account,
69
+ token.contract_address,
70
+ borrow_amount
71
+ )
72
+
73
+ def repay_borrow(self, account, token):
74
+ token = LayerBankToken(get_tokens_for_chain(self.chain)[token], self.web3)
75
+
76
+ layerbank_price = LayerBankPrice(get_contracts_for_chain(self.chain)["LAYERBANK_PRICE"], self.web3)
77
+
78
+ borrowed_usdc = self.layerbank.account_liquidity_of(account)[2]
79
+ lbETHPrice = layerbank_price.get_underlying_price(token.contract_address)
80
+ ethAmount = int(
81
+ (
82
+ borrowed_usdc / lbETHPrice) * token.one_decimal() * token.one_decimal() / token.exchange_rate()
83
+ )
84
+
85
+ if 2 * token.one_decimal() > borrowed_usdc:
86
+ logger.info("Less than 2$ borrowed, skip")
87
+ return
88
+
89
+ logger.info(f"Repay Borrow {ethAmount / token.one_decimal()}")
90
+ self.layerbank.repay_borrow(account, token.contract_address, ethAmount)
91
+
92
+ def redeem(self, account, amount, token):
93
+ if token == 'ETH':
94
+ token = self.lbETHToken
95
+ elif token == 'wstETH':
96
+ token = self.lbWstETHToken
97
+
98
+ underlying_balance = self.get_deposit_amount(account, token)
99
+
100
+ if underlying_balance < 10000:
101
+ logger.info("Less than 0.001$ supplied, skip")
102
+ return
103
+
104
+ self.layerbank.redeem_token(
105
+ account,
106
+ token.contract_address,
107
+ int(underlying_balance * token.one_decimal() * 0.999 / token.exchange_rate())
108
+ )
109
+
110
+ def get_deposit_amount(self, account, token):
111
+ if token == 'ETH':
112
+ token = self.lbETHToken
113
+ elif token == 'wstETH':
114
+ token = self.lbWstETHToken
115
+
116
+ return token.underlying_balance_of(account)
@@ -0,0 +1,57 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.tokens import get_tokens_for_chain
3
+ from sybil_engine.domain.balance.tokens import Erc20Token
4
+
5
+ from web3_wizzard_lib.core.contract.mendi_token import MendiTokenContract
6
+ from web3_wizzard_lib.core.modules.bank.bank import Bank
7
+
8
+
9
+ class MendiFinance(Bank):
10
+ app_name = 'MENDI_FINANCE'
11
+ supported_chains = ['LINEA']
12
+
13
+ def __init__(self, chain, web3):
14
+ self.chain = chain
15
+ self.web3 = web3
16
+
17
+ def supply(self, account, amount):
18
+ erc20 = Erc20Token(self.chain, amount.token, self.web3)
19
+ amount = erc20.balance(account)
20
+
21
+ me_token = f'me{amount.token}'
22
+ mendi_token_address = get_tokens_for_chain(self.chain)[me_token]
23
+
24
+ logger.info(f"Mendi supply {amount} {amount.token}")
25
+
26
+ if erc20.allowance(account, mendi_token_address) < erc20.balance(account).wei:
27
+ erc20.approve(account, mendi_token_address)
28
+
29
+ mendi = MendiTokenContract(mendi_token_address, self.web3)
30
+ mendi.mint(account, amount.wei)
31
+
32
+ def borrow(self, account, amount):
33
+ logger.info(f"Mendi borrow {amount.token}")
34
+
35
+ def repay_borrow(self, account, amount):
36
+ logger.info(f"Mendi repay {amount.token}")
37
+
38
+ def redeem(self, account, amount):
39
+ me_token = f'me{amount.token}'
40
+ mendi_token_address = get_tokens_for_chain(self.chain)[me_token]
41
+ mendi = MendiTokenContract(mendi_token_address, self.web3)
42
+
43
+ redeem_balance = mendi.balance_of(account)
44
+
45
+ if redeem_balance > 1000000000:
46
+ logger.info(f"Mendi reedem {amount. token}")
47
+ mendi.redeem(account, redeem_balance)
48
+ else:
49
+ logger.info(f"Mendi balance is 0")
50
+
51
+ def get_deposit_amount(self, account, token):
52
+ #me_token = f'meweETH'
53
+ mendi_token_address = get_tokens_for_chain(self.chain)[token]
54
+ mendi = MendiTokenContract(mendi_token_address, self.web3)
55
+
56
+ return mendi.balance_of(account)
57
+
@@ -0,0 +1,25 @@
1
+ from sybil_engine.contract.weth import WETH
2
+ from sybil_engine.data.networks import get_ids_chain
3
+ from sybil_engine.data.tokens import get_tokens_for_chain
4
+
5
+ from web3_wizzard_lib.core.contract.reactor_fusion_contract import ReactorFusionContract
6
+ from web3_wizzard_lib.core.modules.bank.bank import Bank
7
+
8
+
9
+ class ReactorFusion(Bank):
10
+ app_name = 'REACTORFUSION_LANDING'
11
+ supported_chains = ['ZKSYNC']
12
+
13
+ def __init__(self, contract, web3):
14
+ self.contract = ReactorFusionContract(contract, web3)
15
+
16
+ def supply(self, account, amount):
17
+ self.contract.mint(account, amount.wei)
18
+
19
+ def redeem(self, account, withdraw):
20
+ self.contract.redeem_underlying(account, withdraw.wei)
21
+
22
+ def get_deposit_amount(self, account, token):
23
+ weth_token = get_tokens_for_chain(get_ids_chain()[self.contract.web3.eth.chain_id])['REACTORFUSION_LANDING']
24
+
25
+ return WETH(weth_token, self.contract.web3).balance_of(account)
@@ -0,0 +1,36 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.tokens import get_tokens_for_chain
4
+ from sybil_engine.domain.balance.tokens import Erc20Token
5
+
6
+ from web3_wizzard_lib.core.contract.zerolend_contract import ZeroLendContract
7
+ from web3_wizzard_lib.core.modules.bank.bank import Bank
8
+
9
+
10
+ class ZeroLend(Bank):
11
+ app_name = 'ZEROLEND'
12
+ supported_chains = ['LINEA']
13
+
14
+ def __init__(self, chain, web3):
15
+ self.chain = chain
16
+ self.web3 = web3
17
+ self.contract = ZeroLendContract(get_contracts_for_chain(self.chain)['ZEROLEND_LEND'], self.web3)
18
+
19
+ def supply(self, account, amount):
20
+ logger.info(f"Deposit {amount} to ZEROLEND")
21
+
22
+ self.contract.deposit_eth(account, amount.wei)
23
+
24
+ def redeem(self, account, amount):
25
+ erc20_token = Erc20Token('LINEA', get_tokens_for_chain(self.chain)['ZEROLEND_WETH'], self.web3)
26
+
27
+ if erc20_token.allowance(account, self.contract.contract_address) < 100:
28
+ erc20_token.approve(account, self.contract.contract_address)
29
+
30
+ self.contract.withdraw_eth(account, amount.wei)
31
+
32
+ def get_deposit_amount(self, account, token):
33
+ erc20_token = Erc20Token('LINEA', get_tokens_for_chain(self.chain)['ZEROLEND_WETH'], self.web3)
34
+
35
+ return erc20_token.balance(account)
36
+
File without changes
@@ -0,0 +1,8 @@
1
+ class Bridge:
2
+ module_name = None
3
+
4
+ def execute(self, *args):
5
+ pass
6
+
7
+ def log(self):
8
+ pass
@@ -0,0 +1,47 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.domain.balance.balance import NotEnoughERC20Balance
5
+ from sybil_engine.domain.balance.balance_utils import interval_to_erc20_balance, get_native_balance
6
+ from sybil_engine.domain.balance.tokens import Erc20Token
7
+ from sybil_engine.utils.retry import retry
8
+ from sybil_engine.utils.web3_utils import init_web3
9
+
10
+ from web3_wizzard_lib.core.contract.coredao_contract import CoreDaoContract
11
+ from web3_wizzard_lib.core.contract.coredao_from_contract import CoreDaoFromContract
12
+ from web3_wizzard_lib.core.modules.bridge.bridge import Bridge
13
+
14
+
15
+ class CoreDaoBridgeSubModule(Bridge):
16
+ supported_chains = ['POLYGON', 'COREDAO']
17
+
18
+ @retry(max_attempts=5, retry_interval={'from': 60 * 15, 'to': 60 * 25})
19
+ def execute(self, bridge_amount_interval, from_chain, to_chain, token, min_native_balance, account):
20
+ chain_instance = get_chain_instance(from_chain)
21
+ web3 = init_web3(chain_instance, account.proxy)
22
+
23
+ erc20_token = Erc20Token(from_chain, token, web3)
24
+
25
+ amount = interval_to_erc20_balance(bridge_amount_interval, account, token, from_chain, web3)
26
+
27
+ logger.info(f"Native balance: {get_native_balance(account, web3, chain_instance)}")
28
+ logger.info(f"Balance: {erc20_token.balance(account)}")
29
+
30
+ logger.info(f"Bridge {from_chain + ' -> ' + to_chain} {amount}")
31
+
32
+ if amount.wei == 0:
33
+ raise NotEnoughERC20Balance(f"Can't swap zero balance")
34
+
35
+ coredao_contract = get_contracts_for_chain(from_chain)['COREDAO_BRIDGE']
36
+
37
+ if erc20_token.allowance(account, coredao_contract) < amount.wei:
38
+ erc20_token.approve(account, coredao_contract)
39
+
40
+ if from_chain == 'COREDAO':
41
+ coredao = CoreDaoFromContract(coredao_contract, web3)
42
+ fee = coredao.estimate_bridge_fee(to_chain)
43
+ else:
44
+ coredao = CoreDaoContract(coredao_contract, web3)
45
+ fee = coredao.estimate_bridge_fee()
46
+
47
+ coredao.bridge(account, amount, erc20_token.erc20_contract.contract_address, fee, to_chain)
@@ -0,0 +1,112 @@
1
+ import random
2
+
3
+ from loguru import logger
4
+ from sybil_engine.contract.erc20contract import Erc20Contract
5
+ from sybil_engine.contract.send import Send
6
+ from sybil_engine.data.contracts import get_contracts_for_chain
7
+ from sybil_engine.data.networks import get_chain_instance
8
+ from sybil_engine.data.tokens import get_tokens_for_chain
9
+ from sybil_engine.domain.balance.balance import NotEnoughNativeBalance
10
+ from sybil_engine.domain.balance.balance_utils import interval_to_erc20_balance, \
11
+ interval_to_native_balance, verify_balance
12
+ from sybil_engine.utils.utils import ConfigurationException
13
+ from sybil_engine.utils.web3_utils import init_web3
14
+
15
+ from web3_wizzard_lib.core.contract.orbiter_starknet import OrbiterStarknet
16
+ from web3_wizzard_lib.core.modules.bridge.bridge import Bridge
17
+
18
+ bridge_codes = {
19
+ "ETH": 9001,
20
+ "ARBITRUM": 9002,
21
+ "POLYGON": 9006,
22
+ "OPTIMISM": 9007,
23
+ "BSC": 9015,
24
+ "ARBITRUM_NOVA": 9016,
25
+ "ZKSYNC": 9014,
26
+ "POLYGON_ZK": 9017,
27
+ "BASE": 9021,
28
+ "LINEA": 9023,
29
+ "SCROLL": 9019,
30
+ #"X_LAYER": 9027, DONT USE
31
+ "ZORA": 9030,
32
+ "MANTA": 9031,
33
+ "ZKFAIR": 9038
34
+ }
35
+
36
+
37
+ class OrbiterSubModule(Bridge):
38
+ supported_tokens = ['NATIVE', 'USDC', 'USDT', 'WETH']
39
+
40
+ def execute(self, bridge_amount_interval, from_chain, to_chain, token, min_native_balance, account):
41
+ from_chain_instance = get_chain_instance(from_chain)
42
+ web3 = init_web3(from_chain_instance, account.proxy)
43
+
44
+ if isinstance(to_chain, list):
45
+ to_chain = random.choice(to_chain)
46
+ if to_chain not in bridge_codes:
47
+ raise ConfigurationException(f"{to_chain} not supported in orbiter")
48
+
49
+ amount = self.__calculate_bridge_amount(account, bridge_amount_interval, from_chain_instance, to_chain, token,
50
+ min_native_balance, web3)
51
+
52
+ logger.info(f"Bridge {from_chain} –> {to_chain} | {amount}")
53
+ self.__perform_bridge(account, amount, from_chain, to_chain, token, web3)
54
+
55
+ def __perform_bridge(self, account, amount, from_chain, to_chain, token, web3):
56
+ if token == 'NATIVE':
57
+ self.__bridge_native(account, amount, from_chain, to_chain, web3)
58
+ else:
59
+ self.__bridge_token(account, amount, from_chain, web3)
60
+
61
+ def __calculate_bridge_amount(self, account, bridge_amount_interval, from_chain_instance, to_chain, token,
62
+ min_native_balance, web3):
63
+ if token == 'NATIVE':
64
+ native_without_min = verify_balance(min_native_balance, from_chain_instance, account, web3)
65
+
66
+ amount = interval_to_native_balance(bridge_amount_interval, account, from_chain_instance['chain'], web3)
67
+ if amount.wei > native_without_min.wei:
68
+ if bridge_amount_interval == 'all_balance':
69
+ amount = native_without_min
70
+ else:
71
+ raise NotEnoughNativeBalance(
72
+ f"The account balance ({native_without_min}) < bridging amount ({amount}).")
73
+ else:
74
+ amount = interval_to_erc20_balance(bridge_amount_interval, account, token, from_chain_instance['chain'],
75
+ web3)
76
+ if bridge_amount_interval == 'all_balance':
77
+ amount.wei = amount.wei - 10 ** 5
78
+
79
+ amount.wei = self.__adjust_amount_by_bridge_code(amount.wei, to_chain)
80
+
81
+ return amount
82
+
83
+ def __adjust_amount_by_bridge_code(self, wei_amount, to_chain):
84
+ bridge_code = bridge_codes.get(to_chain)
85
+ if not bridge_code:
86
+ raise ConfigurationException(f"No bridge code found for {to_chain}")
87
+ return int(f"{wei_amount // 10 ** 4}{bridge_code}")
88
+
89
+ def __bridge_native(self, account, amount, from_chain, to_chain, web3):
90
+ if to_chain == 'STARKNET':
91
+ if amount.readable() <= 0.0065 or amount.readable() >= 5:
92
+ raise NotEnoughNativeBalance(f"Limit range amount for starknet 0.0065 – 5 ETH | {amount}")
93
+
94
+ if from_chain != 'ZKSYNC':
95
+ raise ConfigurationException("only ZKSYNC can bridge to STARKNET")
96
+
97
+ orbiter_wallet = get_contracts_for_chain(from_chain)['ORBITER_STARKNET']
98
+ orbiter_starknet = OrbiterStarknet(orbiter_wallet, web3)
99
+ orbiter_starknet.bridge(account, amount)
100
+ else:
101
+ orbiter_wallet = get_contracts_for_chain(from_chain)['ORBITER']
102
+ send = Send(orbiter_wallet, web3)
103
+ send.send_to_wallet(account, orbiter_wallet, amount)
104
+
105
+ def __bridge_token(self, account, amount, from_chain, web3):
106
+ contracts = get_contracts_for_chain(from_chain)
107
+
108
+ if 'ORBITER_ERC20' not in contracts:
109
+ raise ConfigurationException(f"ERC20 is not supported for {from_chain}")
110
+
111
+ erc20 = Erc20Contract(get_tokens_for_chain(from_chain)[amount.token], web3)
112
+ erc20.transfer(account, amount, contracts['ORBITER_ERC20'])
@@ -0,0 +1,42 @@
1
+ from sybil_engine.utils.utils import ConfigurationException
2
+
3
+ from web3_wizzard_lib.core.modules.bridge.bridge import Bridge
4
+ from sybil_engine.data.contracts import get_contracts_for_chain
5
+ from sybil_engine.data.networks import get_chain_instance
6
+ from sybil_engine.domain.balance.balance import NotEnoughNativeBalance
7
+ from sybil_engine.domain.balance.balance_utils import interval_to_native_balance, verify_balance
8
+
9
+ from sybil_engine.utils.web3_utils import init_web3
10
+
11
+ from web3_wizzard_lib.core.contract.eth_scroll_bridge_contract import EthScrollBridgeContract
12
+ from web3_wizzard_lib.core.contract.scroll_bridge_contract import ScrollBridgeContract
13
+ from web3_wizzard_lib.core.contract.scroll_oracle import ScrollOracle
14
+
15
+ class ScrollBridgeSubModule(Bridge):
16
+
17
+ def execute(self, bridge_amount_interval, from_chain, to_chain, token, min_native_balance, account):
18
+ from_chain_instance = get_chain_instance(from_chain)
19
+ web3 = init_web3(from_chain_instance, account.proxy)
20
+ native_without_min = verify_balance(min_native_balance, from_chain_instance, account, web3)
21
+ amount = interval_to_native_balance(bridge_amount_interval, account, from_chain_instance['chain'], web3)
22
+ if amount.wei > native_without_min.wei:
23
+ if bridge_amount_interval == 'all_balance':
24
+ amount = native_without_min
25
+ else:
26
+ raise NotEnoughNativeBalance(
27
+ f"The account balance ({native_without_min}) < bridging amount ({amount}).")
28
+ if from_chain == 'ETH_MAINNET':
29
+ contract_oracle = get_contracts_for_chain(from_chain)["SCROLL_ORACLE"]
30
+ fee = ScrollOracle(contract_oracle, web3).estimateCrossDomainMessageFee()
31
+
32
+ scroll_bridge_contract_address = get_contracts_for_chain(from_chain)["SCROLL_BRIDGE"]
33
+ scroll_bridge = EthScrollBridgeContract(scroll_bridge_contract_address, web3)
34
+
35
+ scroll_bridge.sendMessage(account, amount.wei, fee)
36
+ elif from_chain == 'SCROLL':
37
+ scroll_bridge_contract_address = get_contracts_for_chain(from_chain)["SCROLL_BRIDGE"]
38
+ scroll_bridge = ScrollBridgeContract(scroll_bridge_contract_address, web3)
39
+
40
+ scroll_bridge.withdraw(account, amount.wei)
41
+ else:
42
+ raise ConfigurationException(f"{from_chain} chain is unsupported, only ETH_MAINNET and SCROLL allowed")
@@ -0,0 +1,74 @@
1
+ from loguru import logger
2
+ from sybil_engine.data.contracts import get_contracts_for_chain
3
+ from sybil_engine.data.networks import get_chain_instance
4
+ from sybil_engine.domain.balance.balance import NotEnoughNativeBalance
5
+ from sybil_engine.domain.balance.balance_utils import interval_to_native_balance, verify_balance
6
+ from sybil_engine.utils.utils import ConfigurationException
7
+ from sybil_engine.utils.web3_utils import init_web3
8
+
9
+ from web3_wizzard_lib.core.contract.stargate_v2_contract import StargateV2Contract
10
+ from web3_wizzard_lib.core.modules.bridge.bridge import Bridge
11
+
12
+ chain_ids = {
13
+ 'LINEA': 30183,
14
+ 'SCROLL': 30214,
15
+ 'OPTIMISM': 30111,
16
+ 'ARBITRUM': 30110,
17
+ 'BASE': 30184
18
+ }
19
+
20
+
21
+ class StargateV2SubModule(Bridge):
22
+ supported_tokens = ['NATIVE']
23
+
24
+ def execute(self, bridge_amount_interval, from_chain, to_chain, token, min_native_balance, account):
25
+ if token != 'NATIVE':
26
+ raise ConfigurationException('Currently only native token bridge is supported by Stargate V2')
27
+
28
+ from_chain_instance = get_chain_instance(from_chain)
29
+ web3 = init_web3(from_chain_instance, account.proxy)
30
+ stargate_v2_contract = get_contracts_for_chain(from_chain)['STARGATE_V2']
31
+
32
+ amount = self.__calculate_bridge_amount(
33
+ account,
34
+ bridge_amount_interval,
35
+ from_chain_instance,
36
+ min_native_balance,
37
+ web3
38
+ )
39
+
40
+ logger.info(f"Bridge {from_chain} –> {to_chain} | {amount}")
41
+
42
+ send_params = (
43
+ chain_ids[to_chain],
44
+ f'0x000000000000000000000000{account.address[2:]}',
45
+ amount.wei, # amountLD,
46
+ int(amount.wei * 0.995), # minAmountLd,
47
+ b'',
48
+ b'',
49
+ b'\x01',
50
+ )
51
+
52
+ stargate_v2 = StargateV2Contract(stargate_v2_contract, web3)
53
+
54
+ stargate_fee = stargate_v2.quote_send(send_params)
55
+
56
+ stargate_v2.send(
57
+ account,
58
+ amount.wei + stargate_fee[0],
59
+ send_params,
60
+ stargate_fee,
61
+ account.address
62
+ )
63
+
64
+ def __calculate_bridge_amount(self, account, bridge_amount_interval, from_chain_instance, min_native_balance, web3):
65
+ native_without_min = verify_balance(min_native_balance, from_chain_instance, account, web3)
66
+
67
+ amount = interval_to_native_balance(bridge_amount_interval, account, from_chain_instance['chain'], web3)
68
+ if amount.wei > native_without_min.wei:
69
+ if bridge_amount_interval == 'all_balance':
70
+ amount = native_without_min
71
+ else:
72
+ raise NotEnoughNativeBalance(
73
+ f"The account balance ({native_without_min}) < bridging amount ({amount}).")
74
+ return amount
@@ -0,0 +1,47 @@
1
+ from sybil_engine.module.module import Module
2
+ from sybil_engine.utils.utils import ConfigurationException
3
+ from sybil_engine.utils.validation_utils import validate_amount_interval, validate_chain
4
+
5
+ from web3_wizzard_lib.core.modules.bridge.coredao_bridge_sub import CoreDaoBridgeSubModule
6
+ from web3_wizzard_lib.core.modules.bridge.orbiter_sub import OrbiterSubModule
7
+ from web3_wizzard_lib.core.modules.bridge.scroll_bridge_sub import ScrollBridgeSubModule
8
+ from web3_wizzard_lib.core.modules.bridge.stargate_v2_sub import StargateV2SubModule
9
+
10
+
11
+ class BridgeModule(Module):
12
+ module_name = 'BRIDGE'
13
+ module_config = 'bridge_module'
14
+
15
+ supported_tokens = ['NATIVE', 'USDC', 'USDT', 'WETH']
16
+
17
+ def execute(self, bridge, bridge_amount_interval, from_chain, to_chain, token, account):
18
+ if bridge == 'ORBITER':
19
+ module = OrbiterSubModule()
20
+ elif bridge == 'STARGATE_V2':
21
+ module = StargateV2SubModule()
22
+ elif bridge == 'COREDAO':
23
+ module = CoreDaoBridgeSubModule()
24
+ elif bridge == 'SCROLL':
25
+ module = ScrollBridgeSubModule()
26
+ else:
27
+ raise ConfigurationException(f'Bridge {bridge} is not supported')
28
+
29
+ module.execute(bridge_amount_interval, from_chain, to_chain, token, self.min_native_balance, account)
30
+
31
+ def log(self):
32
+ return "BRIDGE"
33
+
34
+ def parse_params(self, module_params):
35
+ validate_amount_interval(module_params['bridge_amount_interval'])
36
+ validate_chain(module_params['from_chain'])
37
+
38
+ if 'token' not in module_params:
39
+ module_params['token'] = 'NATIVE'
40
+
41
+ if module_params['token'] not in self.supported_tokens:
42
+ raise ConfigurationException(
43
+ f"{module_params['token']} not supported in orbiter. Supported options: {self.supported_tokens}")
44
+
45
+ return module_params['bridge'], module_params['bridge_amount_interval'], module_params['from_chain'], \
46
+ module_params['to_chain'], \
47
+ module_params['token']