tycho_simulation/evm/protocol/vm/
constants.rs

1use alloy::primitives::{Address, U256};
2use lazy_static::lazy_static;
3use tycho_common::simulation::errors::SimulationError;
4
5lazy_static! {
6    pub static ref EXTERNAL_ACCOUNT: Address = Address::from_slice(
7        &hex::decode("f847a638E44186F3287ee9F8cAF73FF4d4B80784")
8            .expect("Invalid string for external account address"),
9    );
10    pub static ref MAX_BALANCE: U256 = U256::MAX / U256::from(2);
11}
12
13pub const ERC20_BYTECODE: &[u8] = include_bytes!("assets/ERC20.bin");
14pub const ERC20_PROXY_BYTECODE: &[u8] = include_bytes!("assets/TokenProxy.bin");
15pub const BALANCER_V2: &[u8] = include_bytes!("assets/BalancerV2SwapAdapter.evm.runtime");
16pub const BALANCER_V3: &[u8] = include_bytes!("assets/BalancerV3SwapAdapter.evm.runtime");
17pub const CURVE: &[u8] = include_bytes!("assets/CurveSwapAdapter.evm.runtime");
18pub const MAVERICK_V2: &[u8] = include_bytes!("assets/MaverickV2SwapAdapter.evm.runtime");
19pub fn get_adapter_file(protocol: &str) -> Result<&'static [u8], SimulationError> {
20    match protocol {
21        "balancer_v2" => Ok(BALANCER_V2),
22        "balancer_v3" => Ok(BALANCER_V3),
23        "curve" => Ok(CURVE),
24        "maverick_v2" => Ok(MAVERICK_V2),
25        _ => Err(SimulationError::FatalError(format!("Adapter for protocol {protocol} not found"))),
26    }
27}