kabu_execution_multicaller/pool_abi_encoder/
mod.rs

1use alloy_primitives::{Address, Bytes, U256};
2use kabu_types_entities::Pool;
3
4pub use abi_encoder::*;
5mod abi_encoder;
6
7mod pools;
8
9pub trait ProtocolAbiSwapEncoderTrait: Send + Sync + 'static {
10    fn encode_swap_in_amount_provided(
11        &self,
12        pool: &dyn Pool,
13        token_from_address: Address,
14        token_to_address: Address,
15        amount: U256,
16        recipient: Address,
17        payload: Bytes,
18    ) -> eyre::Result<Bytes>;
19
20    fn encode_swap_out_amount_provided(
21        &self,
22        pool: &dyn Pool,
23        token_from_address: Address,
24        token_to_address: Address,
25        amount: U256,
26        recipient: Address,
27        payload: Bytes,
28    ) -> eyre::Result<Bytes>;
29
30    fn swap_in_amount_offset(&self, pool: &dyn Pool, token_from_address: Address, token_to_address: Address) -> Option<u32>;
31
32    fn swap_out_amount_offset(&self, pool: &dyn Pool, token_from_address: Address, token_to_address: Address) -> Option<u32>;
33
34    fn swap_out_amount_return_offset(&self, pool: &dyn Pool, token_from_address: Address, token_to_address: Address) -> Option<u32>;
35
36    fn swap_in_amount_return_offset(&self, pool: &dyn Pool, token_from_address: Address, token_to_address: Address) -> Option<u32>;
37
38    fn swap_out_amount_return_script(&self, pool: &dyn Pool, token_from_address: Address, token_to_address: Address) -> Option<Bytes>;
39
40    fn swap_in_amount_return_script(&self, pool: &dyn Pool, token_from_address: Address, token_to_address: Address) -> Option<Bytes>;
41}