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,254 @@
1
+ from sybil_engine.contract.contract import Contract
2
+ from sybil_engine.contract.transaction_executor import evm_transaction
3
+
4
+ abi = [{'inputs': [{'internalType': 'address', 'name': '_zroToken', 'type': 'address'},
5
+ {'internalType': 'address', 'name': '_endpoint', 'type': 'address'},
6
+ {'internalType': 'bytes32', 'name': '_merkleRoot', 'type': 'bytes32'},
7
+ {'internalType': 'address', 'name': '_donateContract', 'type': 'address'},
8
+ {'internalType': 'address', 'name': '_stargateUsdc', 'type': 'address'},
9
+ {'internalType': 'address', 'name': '_stargateUsdt', 'type': 'address'},
10
+ {'internalType': 'address', 'name': '_stargateNative', 'type': 'address'},
11
+ {'internalType': 'uint256', 'name': '_nativePrice', 'type': 'uint256'},
12
+ {'internalType': 'address', 'name': '_owner', 'type': 'address'}], 'stateMutability': 'nonpayable',
13
+ 'type': 'constructor'},
14
+ {'inputs': [{'internalType': 'address', 'name': 'target', 'type': 'address'}], 'name': 'AddressEmptyCode',
15
+ 'type': 'error'}, {'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}],
16
+ 'name': 'AddressInsufficientBalance', 'type': 'error'},
17
+ {'inputs': [{'internalType': 'address', 'name': 'user', 'type': 'address'}], 'name': 'AlreadyClaimed',
18
+ 'type': 'error'}, {'inputs': [], 'name': 'DonateAndClaimAlreadySet', 'type': 'error'},
19
+ {'inputs': [], 'name': 'FailedInnerCall', 'type': 'error'}, {
20
+ 'inputs': [{'internalType': 'enum Currency', 'name': 'currency', 'type': 'uint8'},
21
+ {'internalType': 'uint256', 'name': 'expectedAmount', 'type': 'uint256'},
22
+ {'internalType': 'uint256', 'name': 'actualAmount', 'type': 'uint256'}],
23
+ 'name': 'InsufficientDonation', 'type': 'error'}, {'inputs': [], 'name': 'InvalidDelegate', 'type': 'error'},
24
+ {'inputs': [], 'name': 'InvalidEndpointCall', 'type': 'error'},
25
+ {'inputs': [], 'name': 'InvalidNativeStargate', 'type': 'error'},
26
+ {'inputs': [], 'name': 'InvalidProof', 'type': 'error'},
27
+ {'inputs': [{'internalType': 'uint32', 'name': 'eid', 'type': 'uint32'}], 'name': 'NoPeer', 'type': 'error'},
28
+ {'inputs': [], 'name': 'OnlyDonateAndClaim', 'type': 'error'},
29
+ {'inputs': [{'internalType': 'address', 'name': 'addr', 'type': 'address'}], 'name': 'OnlyEndpoint',
30
+ 'type': 'error'}, {'inputs': [{'internalType': 'uint32', 'name': 'eid', 'type': 'uint32'},
31
+ {'internalType': 'bytes32', 'name': 'sender', 'type': 'bytes32'}],
32
+ 'name': 'OnlyPeer', 'type': 'error'},
33
+ {'inputs': [{'internalType': 'address', 'name': 'owner', 'type': 'address'}], 'name': 'OwnableInvalidOwner',
34
+ 'type': 'error'}, {'inputs': [{'internalType': 'address', 'name': 'account', 'type': 'address'}],
35
+ 'name': 'OwnableUnauthorizedAccount', 'type': 'error'},
36
+ {'inputs': [{'internalType': 'address', 'name': 'token', 'type': 'address'}], 'name': 'SafeERC20FailedOperation',
37
+ 'type': 'error'}, {'inputs': [{'internalType': 'enum Currency', 'name': 'currency', 'type': 'uint8'}],
38
+ 'name': 'UnsupportedCurrency', 'type': 'error'},
39
+ {'inputs': [], 'name': 'DENOMINATOR', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
40
+ 'stateMutability': 'view', 'type': 'function'}, {'inputs': [{'components': [
41
+ {'internalType': 'uint32', 'name': 'srcEid', 'type': 'uint32'},
42
+ {'internalType': 'bytes32', 'name': 'sender', 'type': 'bytes32'},
43
+ {'internalType': 'uint64', 'name': 'nonce', 'type': 'uint64'}], 'internalType': 'struct Origin',
44
+ 'name': 'origin', 'type': 'tuple'}],
45
+ 'name': 'allowInitializePath', 'outputs': [
46
+ {'internalType': 'bool', 'name': '', 'type': 'bool'}], 'stateMutability': 'view', 'type': 'function'}, {
47
+ 'inputs': [{'internalType': 'enum Currency', 'name': '_currency', 'type': 'uint8'},
48
+ {'internalType': 'address', 'name': '_user', 'type': 'address'},
49
+ {'internalType': 'uint256', 'name': '_zroAmount', 'type': 'uint256'}], 'name': 'assertDonation',
50
+ 'outputs': [], 'stateMutability': 'view', 'type': 'function'}, {
51
+ 'inputs': [{'internalType': 'address', 'name': '_user', 'type': 'address'},
52
+ {'internalType': 'enum Currency', 'name': '_currency', 'type': 'uint8'},
53
+ {'internalType': 'uint256', 'name': '_zroAmount', 'type': 'uint256'},
54
+ {'internalType': 'bytes32[]', 'name': '_proof', 'type': 'bytes32[]'},
55
+ {'internalType': 'address', 'name': '_to', 'type': 'address'},
56
+ {'internalType': 'bytes', 'name': '', 'type': 'bytes'}], 'name': 'claim', 'outputs': [{
57
+ 'components': [
58
+ {
59
+ 'internalType': 'bytes32',
60
+ 'name': 'guid',
61
+ 'type': 'bytes32'},
62
+ {
63
+ 'internalType': 'uint64',
64
+ 'name': 'nonce',
65
+ 'type': 'uint64'},
66
+ {
67
+ 'components': [
68
+ {
69
+ 'internalType': 'uint256',
70
+ 'name': 'nativeFee',
71
+ 'type': 'uint256'},
72
+ {
73
+ 'internalType': 'uint256',
74
+ 'name': 'lzTokenFee',
75
+ 'type': 'uint256'}],
76
+ 'internalType': 'struct MessagingFee',
77
+ 'name': 'fee',
78
+ 'type': 'tuple'}],
79
+ 'internalType': 'struct MessagingReceipt',
80
+ 'name': 'receipt',
81
+ 'type': 'tuple'}],
82
+ 'stateMutability': 'payable', 'type': 'function'}, {
83
+ 'inputs': [{'internalType': 'enum Currency', 'name': '_currency', 'type': 'uint8'},
84
+ {'internalType': 'uint256', 'name': '_zroAmount', 'type': 'uint256'},
85
+ {'internalType': 'bytes32[]', 'name': '_proof', 'type': 'bytes32[]'},
86
+ {'internalType': 'address', 'name': '_to', 'type': 'address'},
87
+ {'internalType': 'bytes', 'name': '', 'type': 'bytes'}], 'name': 'claim', 'outputs': [{
88
+ 'components': [
89
+ {
90
+ 'internalType': 'bytes32',
91
+ 'name': 'guid',
92
+ 'type': 'bytes32'},
93
+ {
94
+ 'internalType': 'uint64',
95
+ 'name': 'nonce',
96
+ 'type': 'uint64'},
97
+ {
98
+ 'components': [
99
+ {
100
+ 'internalType': 'uint256',
101
+ 'name': 'nativeFee',
102
+ 'type': 'uint256'},
103
+ {
104
+ 'internalType': 'uint256',
105
+ 'name': 'lzTokenFee',
106
+ 'type': 'uint256'}],
107
+ 'internalType': 'struct MessagingFee',
108
+ 'name': 'fee',
109
+ 'type': 'tuple'}],
110
+ 'internalType': 'struct MessagingReceipt',
111
+ 'name': 'receipt',
112
+ 'type': 'tuple'}],
113
+ 'stateMutability': 'payable', 'type': 'function'}, {
114
+ 'inputs': [{'internalType': 'enum Currency', 'name': 'currency', 'type': 'uint8'},
115
+ {'internalType': 'uint256', 'name': 'amountToDonate', 'type': 'uint256'},
116
+ {'internalType': 'uint256', 'name': '_zroAmount', 'type': 'uint256'},
117
+ {'internalType': 'bytes32[]', 'name': '_proof', 'type': 'bytes32[]'},
118
+ {'internalType': 'address', 'name': '_to', 'type': 'address'},
119
+ {'internalType': 'bytes', 'name': '_extraBytes', 'type': 'bytes'}], 'name': 'donateAndClaim',
120
+ 'outputs': [{'components': [{'internalType': 'bytes32', 'name': 'guid', 'type': 'bytes32'},
121
+ {'internalType': 'uint64', 'name': 'nonce', 'type': 'uint64'}, {'components': [
122
+ {'internalType': 'uint256', 'name': 'nativeFee', 'type': 'uint256'},
123
+ {'internalType': 'uint256', 'name': 'lzTokenFee', 'type': 'uint256'}],
124
+ 'internalType': 'struct MessagingFee',
125
+ 'name': 'fee',
126
+ 'type': 'tuple'}],
127
+ 'internalType': 'struct MessagingReceipt', 'name': 'receipt', 'type': 'tuple'}],
128
+ 'stateMutability': 'payable', 'type': 'function'}, {'inputs': [], 'name': 'donateContract', 'outputs': [
129
+ {'internalType': 'contract IDonate', 'name': '', 'type': 'address'}], 'stateMutability': 'view',
130
+ 'type': 'function'}, {'inputs': [], 'name': 'endpoint',
131
+ 'outputs': [{
132
+ 'internalType': 'contract ILayerZeroEndpointV2',
133
+ 'name': '',
134
+ 'type': 'address'}],
135
+ 'stateMutability': 'view',
136
+ 'type': 'function'}, {'inputs': [{
137
+ 'components': [
138
+ {
139
+ 'internalType': 'uint32',
140
+ 'name': 'srcEid',
141
+ 'type': 'uint32'},
142
+ {
143
+ 'internalType': 'bytes32',
144
+ 'name': 'sender',
145
+ 'type': 'bytes32'},
146
+ {
147
+ 'internalType': 'uint64',
148
+ 'name': 'nonce',
149
+ 'type': 'uint64'}],
150
+ 'internalType': 'struct Origin',
151
+ 'name': '',
152
+ 'type': 'tuple'},
153
+ {
154
+ 'internalType': 'bytes',
155
+ 'name': '',
156
+ 'type': 'bytes'},
157
+ {
158
+ 'internalType': 'address',
159
+ 'name': '_sender',
160
+ 'type': 'address'}],
161
+ 'name': 'isComposeMsgSender',
162
+ 'outputs': [{
163
+ 'internalType': 'bool',
164
+ 'name': '',
165
+ 'type': 'bool'}],
166
+ 'stateMutability': 'view',
167
+ 'type': 'function'},
168
+ {'inputs': [{'components': [{'internalType': 'uint32', 'name': 'srcEid', 'type': 'uint32'},
169
+ {'internalType': 'bytes32', 'name': 'sender', 'type': 'bytes32'},
170
+ {'internalType': 'uint64', 'name': 'nonce', 'type': 'uint64'}],
171
+ 'internalType': 'struct Origin', 'name': '_origin', 'type': 'tuple'},
172
+ {'internalType': 'bytes32', 'name': '_guid', 'type': 'bytes32'},
173
+ {'internalType': 'bytes', 'name': '_message', 'type': 'bytes'},
174
+ {'internalType': 'address', 'name': '_executor', 'type': 'address'},
175
+ {'internalType': 'bytes', 'name': '_extraData', 'type': 'bytes'}], 'name': 'lzReceive',
176
+ 'outputs': [], 'stateMutability': 'payable', 'type': 'function'},
177
+ {'inputs': [], 'name': 'merkleRoot', 'outputs': [{'internalType': 'bytes32', 'name': '', 'type': 'bytes32'}],
178
+ 'stateMutability': 'view', 'type': 'function'}, {
179
+ 'inputs': [{'internalType': 'uint32', 'name': '', 'type': 'uint32'},
180
+ {'internalType': 'bytes32', 'name': '', 'type': 'bytes32'}], 'name': 'nextNonce',
181
+ 'outputs': [{'internalType': 'uint64', 'name': 'nonce', 'type': 'uint64'}], 'stateMutability': 'view',
182
+ 'type': 'function'}, {'inputs': [], 'name': 'numeratorNative',
183
+ 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
184
+ 'stateMutability': 'view', 'type': 'function'},
185
+ {'inputs': [], 'name': 'numeratorUsdc', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
186
+ 'stateMutability': 'view', 'type': 'function'},
187
+ {'inputs': [], 'name': 'numeratorUsdt', 'outputs': [{'internalType': 'uint256', 'name': '', 'type': 'uint256'}],
188
+ 'stateMutability': 'view', 'type': 'function'}, {'inputs': [], 'name': 'oAppVersion', 'outputs': [
189
+ {'internalType': 'uint64', 'name': 'senderVersion', 'type': 'uint64'},
190
+ {'internalType': 'uint64', 'name': 'receiverVersion', 'type': 'uint64'}], 'stateMutability': 'view',
191
+ 'type': 'function'},
192
+ {'inputs': [], 'name': 'owner', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}],
193
+ 'stateMutability': 'view', 'type': 'function'},
194
+ {'inputs': [{'internalType': 'uint32', 'name': 'eid', 'type': 'uint32'}], 'name': 'peers',
195
+ 'outputs': [{'internalType': 'bytes32', 'name': 'peer', 'type': 'bytes32'}], 'stateMutability': 'view',
196
+ 'type': 'function'}, {'inputs': [{'internalType': 'uint32', 'name': '_dstEid', 'type': 'uint32'},
197
+ {'internalType': 'uint256', 'name': '_zroAmount', 'type': 'uint256'}],
198
+ 'name': 'quoteClaimCallback', 'outputs': [{'components': [
199
+ {'internalType': 'uint256', 'name': 'nativeFee', 'type': 'uint256'},
200
+ {'internalType': 'uint256', 'name': 'lzTokenFee', 'type': 'uint256'}],
201
+ 'internalType': 'struct MessagingFee',
202
+ 'name': 'msgFee', 'type': 'tuple'}],
203
+ 'stateMutability': 'view', 'type': 'function'},
204
+ {'inputs': [], 'name': 'renounceOwnership', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'},
205
+ {'inputs': [{'internalType': 'uint256', 'name': '_zroAmount', 'type': 'uint256'}], 'name': 'requiredDonation',
206
+ 'outputs': [{'components': [{'internalType': 'uint256', 'name': 'usdc', 'type': 'uint256'},
207
+ {'internalType': 'uint256', 'name': 'usdt', 'type': 'uint256'},
208
+ {'internalType': 'uint256', 'name': 'native', 'type': 'uint256'}],
209
+ 'internalType': 'struct Donation', 'name': '', 'type': 'tuple'}], 'stateMutability': 'view',
210
+ 'type': 'function'},
211
+ {'inputs': [{'internalType': 'address', 'name': '_delegate', 'type': 'address'}], 'name': 'setDelegate',
212
+ 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'},
213
+ {'inputs': [{'internalType': 'address', 'name': '_donateAndClaim', 'type': 'address'}],
214
+ 'name': 'setDonateAndClaim', 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'},
215
+ {'inputs': [{'internalType': 'bytes32', 'name': '_merkleRoot', 'type': 'bytes32'}], 'name': 'setMerkleRoot',
216
+ 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {
217
+ 'inputs': [{'internalType': 'uint32', 'name': '_eid', 'type': 'uint32'},
218
+ {'internalType': 'bytes32', 'name': '_peer', 'type': 'bytes32'}], 'name': 'setPeer',
219
+ 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'},
220
+ {'inputs': [{'internalType': 'address', 'name': 'newOwner', 'type': 'address'}], 'name': 'transferOwnership',
221
+ 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'}, {
222
+ 'inputs': [{'internalType': 'address', 'name': '_to', 'type': 'address'},
223
+ {'internalType': 'uint256', 'name': '_amount', 'type': 'uint256'}], 'name': 'withdrawZro',
224
+ 'outputs': [], 'stateMutability': 'nonpayable', 'type': 'function'},
225
+ {'inputs': [{'internalType': 'address', 'name': 'user', 'type': 'address'}], 'name': 'zroClaimed',
226
+ 'outputs': [{'internalType': 'uint256', 'name': 'amount', 'type': 'uint256'}], 'stateMutability': 'view',
227
+ 'type': 'function'},
228
+ {'inputs': [], 'name': 'zroToken', 'outputs': [{'internalType': 'address', 'name': '', 'type': 'address'}],
229
+ 'stateMutability': 'view', 'type': 'function'}]
230
+
231
+
232
+ class L0Claim(Contract):
233
+ def __init__(self, contract_address, web3):
234
+ super().__init__(contract_address, web3, abi)
235
+
236
+ @evm_transaction
237
+ def donateAndClaim(self, account, donate_amount, amount_to_claim, merkle_proof):
238
+ txn_params = self.build_generic_data(account.address, False)
239
+ txn_params['value'] = donate_amount
240
+
241
+ return self.contract.functions.donateAndClaim(
242
+ 2,
243
+ donate_amount,
244
+ #5520000000000000
245
+ #5520000000000000
246
+ amount_to_claim,
247
+ #183461138113000003000
248
+ #183461138113000003000
249
+ merkle_proof,
250
+ #['0x1fce26056b7cc81752ae974a8baa89d78123fd539f5fb47f0e5cb1f2c603b3c8', '0x63e5fe91dbafe187829bc84f8e6ddb6c6f4d62e5ef1ff4796913101fc0ea916e', '0x9a734b2f26f5334741ee26eda57cef6c4f84430e1d91be1b65cb4e7be577d0e9', '0xcc8bc1df42652bfd0aa8032a1cf50a31e31ecbe78d52411491076bfc59b70e7d', '0x8edc7e63ae09f38a3e00b6ee33fb102eee1771ce73b8a6b089cfcc3c2b4b7b8f', '0x8870668769d7dfa64e8695bf51741c73358923b7ad7e07dd6055c088760063cc', '0x75321dbf87f550059a302d401fd3aae9b13204316e202b3d0bd459447d611739', '0x5d48d0538089ccbfade4265ff10efae09691a0204dcef8db5b20064d3c6103bb', '0xa6d7408758dc62d68fc1d768714f4f9422bb1ad8f222a687c0e1c4d88e7ddfcf', '0xfa0a2c7465fccd5838f147abad0b3f928b716eabfbbae622de7cfdb0c0fcbce1', '0x30369b62a912a4555e898133ad536bbc8b58af456cdb1001e38a8e0e4d01c034', '0xea79cef9445e78b7c5695d0bb5e5d676bfa5b7ced66df915ec13fb6fd6b3e131', '0xc4abfec16adca47f0c0d5d22dcb87586b66cba0048a684e440be04175dbc5c58', '0xecffcc8af84ed13272ad00aeee065c02e4778b6cfd0d124222f23264b0679076', '0x767c848c0da4bee189851e644bb437e9ef426d6e418f14fd3e9337e5ffe3596f', '0x55ab35e3f06e43b8af688169490819fdcb4180258210acb11db1976379754b1c', '0x950b026464be9f6fd40516d45236a70f07ff78b3dc1b9d258c9ddbf7fd0a003f', '0x6b71fb967b62b9e1f399a856517a1da9c22a0993fdb84b1b998b14849c2d7e9e', '0x9ae69f117d127a35e00c470d6bff380bfabbca78d86668984e867861853ee8fc', '0xa042d488b6a933c88ec4b41ba407ff13521c2e67e842697017bc19ed9f9a8e5d', '0x65b28f8ec7c9c9fc471c6a5000a1906b04e8da896a739ffddf6d3b71e47fd60d']
251
+ #['0x1fce26056b7cc81752ae974a8baa89d78123fd539f5fb47f0e5cb1f2c603b3c8', '0x63e5fe91dbafe187829bc84f8e6ddb6c6f4d62e5ef1ff4796913101fc0ea916e', '0x9a734b2f26f5334741ee26eda57cef6c4f84430e1d91be1b65cb4e7be577d0e9', '0xcc8bc1df42652bfd0aa8032a1cf50a31e31ecbe78d52411491076bfc59b70e7d', '0x8edc7e63ae09f38a3e00b6ee33fb102eee1771ce73b8a6b089cfcc3c2b4b7b8f', '0x8870668769d7dfa64e8695bf51741c73358923b7ad7e07dd6055c088760063cc', '0x75321dbf87f550059a302d401fd3aae9b13204316e202b3d0bd459447d611739', '0x5d48d0538089ccbfade4265ff10efae09691a0204dcef8db5b20064d3c6103bb', '0xa6d7408758dc62d68fc1d768714f4f9422bb1ad8f222a687c0e1c4d88e7ddfcf', '0xfa0a2c7465fccd5838f147abad0b3f928b716eabfbbae622de7cfdb0c0fcbce1', '0x30369b62a912a4555e898133ad536bbc8b58af456cdb1001e38a8e0e4d01c034', '0xea79cef9445e78b7c5695d0bb5e5d676bfa5b7ced66df915ec13fb6fd6b3e131', '0xc4abfec16adca47f0c0d5d22dcb87586b66cba0048a684e440be04175dbc5c58', '0xecffcc8af84ed13272ad00aeee065c02e4778b6cfd0d124222f23264b0679076', '0x767c848c0da4bee189851e644bb437e9ef426d6e418f14fd3e9337e5ffe3596f', '0x55ab35e3f06e43b8af688169490819fdcb4180258210acb11db1976379754b1c', '0x950b026464be9f6fd40516d45236a70f07ff78b3dc1b9d258c9ddbf7fd0a003f', '0x6b71fb967b62b9e1f399a856517a1da9c22a0993fdb84b1b998b14849c2d7e9e', '0x9ae69f117d127a35e00c470d6bff380bfabbca78d86668984e867861853ee8fc', '0xa042d488b6a933c88ec4b41ba407ff13521c2e67e842697017bc19ed9f9a8e5d', '0x65b28f8ec7c9c9fc471c6a5000a1906b04e8da896a739ffddf6d3b71e47fd60d']
252
+ account.address,
253
+ '0x'
254
+ ).build_transaction(txn_params)
@@ -0,0 +1,21 @@
1
+ from sybil_engine.contract.contract import Contract
2
+ from sybil_engine.data.networks import get_ids_chain
3
+ from sybil_engine.data.tokens import get_tokens_for_chain
4
+ from sybil_engine.utils.file_loader import load_abi
5
+ from web3 import Web3
6
+
7
+ abi = load_abi("resources/abi/merkly.json")
8
+
9
+
10
+ class L2TelegraphMinter(Contract):
11
+ def __init__(self, contract_address, web3):
12
+ self.weth_token = get_tokens_for_chain(get_ids_chain()[web3.eth.chain_id])['WETH']
13
+ super().__init__(contract_address, web3, abi)
14
+
15
+ def mint(self, account):
16
+ txn_params = self.build_generic_data(account.address, False)
17
+
18
+ txn_params['value'] = Web3.to_wei(0.0005, "ether")
19
+ contract_txn = self.contract.functions.mint().build_transaction(txn_params)
20
+
21
+ return contract_txn
@@ -0,0 +1,18 @@
1
+ from sybil_engine.contract.contract import Contract
2
+ from sybil_engine.data.networks import get_ids_chain
3
+ from sybil_engine.data.tokens import get_tokens_for_chain
4
+ from sybil_engine.utils.file_loader import load_abi
5
+
6
+ abi = load_abi("resources/abi/layerbank_price.json")
7
+
8
+
9
+ class LayerBankPrice(Contract):
10
+ def __init__(self, contract_address, web3):
11
+ self.weth_token = get_tokens_for_chain(get_ids_chain()[web3.eth.chain_id])['WETH']
12
+ super().__init__(contract_address, web3, abi)
13
+
14
+ def get_underlying_price(self, token):
15
+ return self.contract.functions.getUnderlyingPrice(token).call()
16
+
17
+ def price_of_eth(self):
18
+ return self.contract.functions.priceOfETH().call()
@@ -0,0 +1,29 @@
1
+ from sybil_engine.contract.contract import Contract
2
+ from sybil_engine.utils.file_loader import load_abi
3
+
4
+ abi = load_abi("resources/abi/layerbank_token.json")
5
+
6
+ MAX_ALLOWANCE = 115792089237316195423570985008687907853269984665640564039457584007913129639935
7
+
8
+
9
+ class LayerBankToken(Contract):
10
+ def __init__(self, contract_address, web3):
11
+ super().__init__(contract_address, web3, abi)
12
+
13
+ def balance_of(self, account):
14
+ return self.contract.functions.balanceOf(account.address).call()
15
+
16
+ def underlying_balance_of(self, account):
17
+ return self.contract.functions.balanceOf(account.address).call()
18
+
19
+ def exchange_rate(self):
20
+ return self.contract.functions.exchangeRate().call()
21
+
22
+ def decimals(self):
23
+ return self.contract.functions.decimals().call()
24
+
25
+ def one_decimal(self):
26
+ return 10 ** self.contract.functions.decimals().call()
27
+
28
+ def symbol(self):
29
+ return self.contract.functions.symbol().call()
@@ -0,0 +1,59 @@
1
+ from sybil_engine.contract.contract import Contract
2
+ from sybil_engine.contract.transaction_executor import evm_transaction
3
+ from sybil_engine.data.networks import get_ids_chain
4
+ from sybil_engine.data.tokens import get_tokens_for_chain
5
+ from sybil_engine.utils.file_loader import load_abi
6
+
7
+ abi = load_abi("resources/abi/layerbank.json")
8
+
9
+
10
+ class LayerBankContract(Contract):
11
+ def __init__(self, contract_address, web3):
12
+ self.weth_token = get_tokens_for_chain(get_ids_chain()[web3.eth.chain_id])['WETH']
13
+ super().__init__(contract_address, web3, abi)
14
+
15
+ @evm_transaction
16
+ def supply(self, account, token, amount):
17
+ txn_params = self.build_generic_data(account.address, False)
18
+
19
+ contract_txn = self.contract.functions.supply(token, amount).build_transaction(txn_params)
20
+
21
+ return contract_txn
22
+
23
+ @evm_transaction
24
+ def enter_markets(self, account, token):
25
+ txn_params = self.build_generic_data(account.address, False)
26
+
27
+ return self.contract.functions.enterMarkets([token]).build_transaction(txn_params)
28
+
29
+ @evm_transaction
30
+ def borrow(self, account, token, amount):
31
+ txn_params = self.build_generic_data(account.address, False)
32
+
33
+ contract_txn = self.contract.functions.borrow(token, amount).build_transaction(txn_params)
34
+
35
+ return contract_txn
36
+
37
+ @evm_transaction
38
+ def repay_borrow(self, account, token, amount):
39
+ txn_params = self.build_generic_data(account.address, False)
40
+
41
+ txn_params['value'] = amount
42
+
43
+ contract_txn = self.contract.functions.repayBorrow(token, amount).build_transaction(txn_params)
44
+
45
+ return contract_txn
46
+
47
+ @evm_transaction
48
+ def redeem_token(self, account, token, amount):
49
+ txn_params = self.build_generic_data(account.address, False)
50
+
51
+ contract_txn = self.contract.functions.redeemUnderlying(token, amount).build_transaction(txn_params)
52
+
53
+ return contract_txn
54
+
55
+ def market_list_of(self, account):
56
+ return self.contract.functions.marketListOf(account.address).call()
57
+
58
+ def account_liquidity_of(self, account):
59
+ return self.contract.functions.accountLiquidityOf(account.address).call()
@@ -0,0 +1,19 @@
1
+ from sybil_engine.contract.contract import Contract
2
+ from sybil_engine.contract.transaction_executor import evm_transaction
3
+ from sybil_engine.utils.file_loader import load_abi
4
+
5
+ abi = load_abi("resources/abi/linea_day_2.json")
6
+
7
+
8
+ class LineaDay2(Contract):
9
+ def __init__(self, contract_address, web3):
10
+ super().__init__(contract_address, web3, abi)
11
+
12
+ @evm_transaction
13
+ def approve(self, account):
14
+ txn_params = self.build_generic_data(account.address, False)
15
+
16
+ contract_txn = self.contract.functions.setApprovalForAll(account.address, False).build_transaction(txn_params)
17
+
18
+ return contract_txn
19
+
@@ -0,0 +1,55 @@
1
+ from sybil_engine.contract.contract import Contract
2
+ from sybil_engine.contract.transaction_executor import evm_transaction
3
+ from sybil_engine.domain.balance.balance_utils import from_eth_to_wei
4
+ from sybil_engine.utils.file_loader import load_abi
5
+
6
+ abi = load_abi("resources/abi/linea_day_3.json")
7
+
8
+
9
+ class LineaDay3(Contract):
10
+ def __init__(self, contract_address, web3):
11
+ super().__init__(contract_address, web3, abi)
12
+
13
+ # @evm_transaction
14
+ # def mintWithVoucher(self, account):
15
+ # txn_params = self.build_generic_data(account.address, False)
16
+ #
17
+ # contract_txn = self.contract.functions.mintWithVoucher(
18
+ # (
19
+ # '0x0000000000000000000000000000000000000000'
20
+ # '0x0000000000000000000000000000000000000000',
21
+ # 0,
22
+ # 1,
23
+ # 1,
24
+ # int(datetime.now().timestamp() + 60 * 10),
25
+ # 0,
26
+ # 1,
27
+ # '0x0000000000000000000000000000000000000000'
28
+ # ),
29
+ # '0xbb6fef09ef7f8958207a489df32fa334879b963aa975b8a62a3839e3c887d5540f05bdeba16649c507c8350a987a2556425707b6f01f4592b744d9767c0b47ca1c'
30
+ # ).build_transaction(txn_params)
31
+ #
32
+ # return contract_txn
33
+
34
+ @evm_transaction
35
+ def claim(self, account):
36
+ txn_params = self.build_generic_data(account.address, False)
37
+
38
+ txn_params['value'] = from_eth_to_wei(0.0000029)
39
+
40
+ contract_txn = self.contract.functions.claim(
41
+ account.address, # address
42
+ 0, # uint256
43
+ 1, # uint256
44
+ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE', # address
45
+ 0, # uint256
46
+ (
47
+ [], # bytes32[] - This needs to be populated with actual data or kept as empty if applicable
48
+ 2, # uint256
49
+ 0, # uint256
50
+ '0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE' # address
51
+ ),
52
+ '0x' # bytes - This typically represents an empty byte string or could be filled if needed
53
+ ).build_transaction(txn_params)
54
+
55
+ return contract_txn
@@ -0,0 +1,55 @@
1
+ from sybil_engine.contract.contract import Contract
2
+ from sybil_engine.contract.transaction_executor import evm_transaction
3
+ from sybil_engine.utils.file_loader import load_abi
4
+
5
+ abi = load_abi("resources/abi/linea_ens_names.json")
6
+
7
+
8
+ class LineaEnsNamesContract(Contract):
9
+ def __init__(self, contract_address, web3):
10
+ super().__init__(contract_address, web3, abi)
11
+ self.addr_contract = web3.eth.contract(
12
+ abi='[{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"uint256","name":"coinType","type":"uint256"},{"internalType":"bytes","name":"a","type":"bytes"}],"name":"setAddr","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"node","type":"bytes32"},{"internalType":"address","name":"a","type":"address"}],"name":"setAddr","outputs":[],"stateMutability":"nonpayable","type":"function"}]'
13
+ )
14
+
15
+ def available(self, linea_name):
16
+ return self.contract.functions.available(linea_name).call()
17
+
18
+ def make_commitment(self, account, linea_name, duration, secret, data):
19
+ return self.contract.functions.makeCommitment(
20
+ linea_name,
21
+ account.address,
22
+ duration,
23
+ secret,
24
+ "0x86c5AED9F27837074612288610fB98ccC1733126",
25
+ [data],
26
+ True,
27
+ 0,
28
+ ).call().hex()
29
+
30
+ def redeemed(self, account):
31
+ return self.contract.functions.redeemed(account.address).call()
32
+
33
+ @evm_transaction
34
+ def register_poh(self, account, linea_name, duration, secret, data, poh_signature):
35
+ txn_params = self.build_generic_data(account.address, set_contract_address=False)
36
+
37
+ return self.contract.functions.registerPoh(
38
+ linea_name,
39
+ account.address,
40
+ duration,
41
+ secret,
42
+ "0x86c5AED9F27837074612288610fB98ccC1733126",
43
+ [data],
44
+ True,
45
+ 0,
46
+ poh_signature["sign"]
47
+ ).build_transaction(txn_params)
48
+
49
+ @evm_transaction
50
+ def commit(self, account, commitment):
51
+ txn_params = self.build_generic_data(account.address, set_contract_address=False)
52
+
53
+ return self.contract.functions.commit(
54
+ "0x" + commitment
55
+ ).build_transaction(txn_params)
@@ -0,0 +1,52 @@
1
+ from datetime import datetime
2
+
3
+ from sybil_engine.contract.contract import Contract
4
+ from sybil_engine.contract.transaction_executor import evm_transaction
5
+ from sybil_engine.utils.file_loader import load_abi
6
+
7
+ abi = load_abi("resources/abi/lineaswap_router.json")
8
+
9
+
10
+ class LineaSwapRouter(Contract):
11
+ def __init__(self, contract_address, web3):
12
+ super().__init__(contract_address, web3, abi)
13
+
14
+ @evm_transaction
15
+ def swap_exact_eth_for_tokens(self, account, amount_to_swap, token_in_address, token_out_address, amount_out_min):
16
+ sender = account.address
17
+
18
+ txn_params = self.build_generic_data(sender, False)
19
+ txn_params['value'] = amount_to_swap.wei if amount_to_swap.token == 'ETH' else 10000000000000
20
+
21
+ paths = [token_in_address, token_out_address]
22
+ deadline = int(datetime.now().timestamp() + 60 * 60 * 3)
23
+
24
+ return self.contract.functions.swapExactETHForTokens(
25
+ amount_out_min,
26
+ paths,
27
+ sender,
28
+ deadline
29
+ ).build_transaction(txn_params)
30
+
31
+ @evm_transaction
32
+ def swap_exact_tokens_for_eth(self, account, amount_to_swap, token_in_address, token_out_address, amount_out_min):
33
+ sender = account.address
34
+
35
+ txn_params = self.build_generic_data(sender, False)
36
+
37
+ paths = [token_in_address, token_out_address]
38
+ deadline = int(datetime.now().timestamp() + 60 * 60 * 3)
39
+
40
+ return self.contract.functions.swapExactTokensForETH(
41
+ amount_to_swap.wei,
42
+ amount_out_min,
43
+ paths,
44
+ sender,
45
+ deadline
46
+ ).build_transaction(txn_params)
47
+
48
+ def get_amount_out(self, amount_to_swap, token_in_address, token_out_address):
49
+ return self.contract.functions.getAmountsOut(
50
+ amount_to_swap.wei,
51
+ [token_in_address, token_out_address]
52
+ ).call()[1]
@@ -0,0 +1,52 @@
1
+ from datetime import datetime
2
+
3
+ from sybil_engine.contract.contract import Contract
4
+ from sybil_engine.contract.transaction_executor import evm_transaction
5
+ from sybil_engine.data.networks import get_ids_chain
6
+ from sybil_engine.data.tokens import get_tokens_for_chain
7
+ from sybil_engine.utils.file_loader import load_abi
8
+
9
+ swap_method_id = 'c04b8d59'
10
+
11
+ length_3c = '000000000000000000000000000000000000000000000000000000000000003c'
12
+ universal_value = '000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0'
13
+
14
+ abi = load_abi("resources/abi/maverick_multicall.json")
15
+
16
+
17
+ class MaverickMulticall(Contract):
18
+ def __init__(self, contract_address, web3):
19
+ self.weth_token = get_tokens_for_chain(get_ids_chain()[web3.eth.chain_id])['WETH']
20
+ super().__init__(contract_address, web3, abi)
21
+
22
+ @evm_transaction
23
+ def multicall(self, account, amount_to_swap, amount_out_min_in, token_in_address, pool_address, token_out_address):
24
+ txn_params = self.build_generic_data(account.address, False)
25
+
26
+ if amount_to_swap.token == 'ETH':
27
+ txn_params['value'] = amount_to_swap.wei # amount in for ETH
28
+
29
+ deadline_hex = decimal_to_padded_hexadecimal(int(datetime.now().timestamp() + 60 * 60 * 3), 64)
30
+ amount_in = decimal_to_padded_hexadecimal(amount_to_swap.wei, 64)
31
+ amount_out_min = decimal_to_padded_hexadecimal(amount_out_min_in, 64)
32
+ recipient = pad_hex(account.address, 64) if token_out_address != self.weth_token else pad_hex('', 64)
33
+
34
+ eth_to_usdc = '0x' + swap_method_id + universal_value + recipient + deadline_hex + amount_in + amount_out_min + length_3c + pad_hex(
35
+ token_in_address, 40) + pad_hex(pool_address, 40) + pad_hex(token_out_address, 40) + '00000000'
36
+
37
+ if token_out_address == self.weth_token:
38
+ encoded_action = self.contract.encode_abi("unwrapWETH9", args=(amount_out_min_in, account.address))
39
+ else:
40
+ encoded_action = self.contract.encode_abi("refundETH") + pad_hex(account.address, 128)
41
+
42
+ return self.contract.functions.multicall([eth_to_usdc, encoded_action]).build_transaction(txn_params)
43
+
44
+
45
+ def decimal_to_padded_hexadecimal(decimal_number, desired_length):
46
+ hex_value = hex(decimal_number)[2:]
47
+
48
+ return hex_value.zfill(desired_length)
49
+
50
+
51
+ def pad_hex(un_padded_hex, desired_length):
52
+ return un_padded_hex[2:].zfill(desired_length)