tycho_simulation/evm/protocol/vm/
constants.rs1use 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}