kabu_execution_multicaller/pool_opcodes_encoder/
mod.rs

1use 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}