kabu_execution_multicaller/pool_opcodes_encoder/
mod.rs1use crate::pool_abi_encoder::ProtocolAbiSwapEncoderTrait;
2pub use crate::pool_opcodes_encoder::swap_opcodes_encoders::MulticallerOpcodesPayload;
3use alloy_primitives::Address;
4pub use curve::CurveSwapOpcodesEncoder;
5use eyre::{Result, eyre};
6use kabu_types_blockchain::MulticallerCalls;
7use kabu_types_market::Pool;
8use kabu_types_swap::SwapAmountType;
9pub use steth::StEthSwapEncoder;
10pub use swap_opcodes_encoders::ProtocolSwapOpcodesEncoderV2;
11pub use uniswap2::UniswapV2SwapOpcodesEncoder;
12pub use uniswap3::UniswapV3SwapOpcodesEncoder;
13pub use wsteth::WstEthSwapEncoder;
14
15mod curve;
16mod steth;
17mod uniswap2;
18mod uniswap3;
19mod wsteth;
20
21mod swap_opcodes_encoders;
22
23pub trait SwapOpcodesEncoderTrait: Send + Sync + 'static {
24 #[allow(clippy::too_many_arguments)]
25 fn encode_swap_in_amount_provided(
26 &self,
27 swap_opcodes: &mut MulticallerCalls,
28 abi_encoder: &dyn ProtocolAbiSwapEncoderTrait,
29 token_from_address: Address,
30 token_to_address: Address,
31 amount_in: SwapAmountType,
32 cur_pool: &dyn Pool,
33 next_pool: Option<&dyn Pool>,
34 payload: MulticallerOpcodesPayload,
35 multicaller_address: Address,
36 ) -> Result<()>;
37
38 #[allow(clippy::too_many_arguments)]
39 fn encode_swap_out_amount_provided(
40 &self,
41 swap_opcodes: &mut MulticallerCalls,
42 abi_encoder: &dyn ProtocolAbiSwapEncoderTrait,
43 token_from_address: Address,
44 token_to_address: Address,
45 amount_out: SwapAmountType,
46 cur_pool: &dyn Pool,
47 next_pool: Option<&dyn Pool>,
48 payload: MulticallerOpcodesPayload,
49 multicaller_address: Address,
50 ) -> Result<()>;
51
52 #[allow(clippy::too_many_arguments)]
53 fn encode_flash_swap_in_amount_provided(
54 &self,
55 _swap_opcodes: &mut MulticallerCalls,
56 _abi_encoder: &dyn ProtocolAbiSwapEncoderTrait,
57 _token_from_address: Address,
58 _token_to_address: Address,
59 _amount_in: SwapAmountType,
60 _flash_pool: &dyn Pool,
61 _prev_pool: Option<&dyn Pool>,
62 _payload: MulticallerOpcodesPayload,
63 _multicaller_address: Address,
64 ) -> Result<()> {
65 Err(eyre!("NOT_IMPLEMENTED"))
66 }
67
68 #[allow(clippy::too_many_arguments)]
69 fn encode_flash_swap_out_amount_provided(
70 &self,
71 _swap_opcodes: &mut MulticallerCalls,
72 _abi_encoder: &dyn ProtocolAbiSwapEncoderTrait,
73 _token_from_address: Address,
74 _token_to_address: Address,
75 _amount_out: SwapAmountType,
76 _flash_pool: &dyn Pool,
77 _next_pool: Option<&dyn Pool>,
78 _payload: MulticallerOpcodesPayload,
79 _multicaller_address: Address,
80 ) -> Result<()> {
81 Err(eyre!("NOT_IMPLEMENTED"))
82 }
83}