kabu_execution_multicaller/pool_abi_encoder/pools/
curve.rs1use crate::pool_abi_encoder::ProtocolAbiSwapEncoderTrait;
2use alloy_primitives::{Address, Bytes, U256};
3use eyre::OptionExt;
4use kabu_types_entities::Pool;
5
6pub struct CurveProtocolAbiEncoder;
7
8impl ProtocolAbiSwapEncoderTrait for CurveProtocolAbiEncoder {
9 fn encode_swap_in_amount_provided(
10 &self,
11 pool: &dyn Pool,
12 token_from_address: Address,
13 token_to_address: Address,
14 amount: U256,
15 recipient: Address,
16 payload: Bytes,
17 ) -> eyre::Result<Bytes> {
18 pool.get_abi_encoder().ok_or_eyre("NO_POOL_ENCODER")?.encode_swap_in_amount_provided(
19 token_from_address,
20 token_to_address,
21 amount,
22 recipient,
23 payload,
24 )
25 }
26
27 fn encode_swap_out_amount_provided(
28 &self,
29 pool: &dyn Pool,
30 token_from_address: Address,
31 token_to_address: Address,
32 amount: U256,
33 recipient: Address,
34 payload: Bytes,
35 ) -> eyre::Result<Bytes> {
36 pool.get_abi_encoder().ok_or_eyre("NO_POOL_ENCODER")?.encode_swap_out_amount_provided(
37 token_from_address,
38 token_to_address,
39 amount,
40 recipient,
41 payload,
42 )
43 }
44
45 fn swap_in_amount_offset(&self, _pool: &dyn Pool, _token_from_address: Address, _token_to_address: Address) -> Option<u32> {
46 Some(0x44)
47 }
48
49 fn swap_out_amount_offset(&self, _pool: &dyn Pool, _token_from_address: Address, _token_to_address: Address) -> Option<u32> {
50 None
51 }
52
53 fn swap_out_amount_return_offset(&self, _pool: &dyn Pool, _token_from_address: Address, _token_to_address: Address) -> Option<u32> {
54 None
55 }
56
57 fn swap_in_amount_return_offset(&self, _pool: &dyn Pool, _token_from_address: Address, _token_to_address: Address) -> Option<u32> {
58 None
59 }
60
61 fn swap_out_amount_return_script(&self, _pool: &dyn Pool, _token_from_address: Address, _token_to_address: Address) -> Option<Bytes> {
62 None
63 }
64
65 fn swap_in_amount_return_script(&self, _pool: &dyn Pool, _token_from_address: Address, _token_to_address: Address) -> Option<Bytes> {
66 None
67 }
68}