use alloy_primitives::{Address, B256, U256};
pub use wp_evm_v3_core::data::{
CollectFeesParams, ExactInParams, ExactOutParams, PlanFragment, PoolState, Quote,
RemoveAndCollectParams, RemoveLiquidityParams, TickInfo,
};
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct RamsesAddLiquidityParams {
pub token0: Address,
pub token1: Address,
pub tick_spacing: i32,
pub tick_lower: i32,
pub tick_upper: i32,
pub amount0_desired: U256,
pub amount1_desired: U256,
pub recipient: Address,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct PositionState {
pub token_id: U256,
pub owner: Address,
pub token0: Address,
pub token1: Address,
pub tick_spacing: i32,
pub tick_lower: i32,
pub tick_upper: i32,
pub liquidity: u128,
pub fees_owed_0: U256,
pub fees_owed_1: U256,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GaugeClaim {
pub gauge: Address,
pub reward_tokens: Vec<Address>,
pub token_ids: Vec<U256>,
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub struct GaugeEarnedGrid {
pub gauge: Address,
pub reward_tokens: Vec<Address>,
pub token_ids: Vec<U256>,
pub earned: Vec<Vec<U256>>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct RamsesProtocolConfig {
pub factory: Address,
pub pool_deployer: Address,
pub router: Address,
pub position_mgr: Address,
pub init_code_hash: B256,
pub tick_spacings: &'static [i32],
pub multicall: Address,
pub quoter: Option<Address>,
pub voter: Address,
}
#[cfg(test)]
mod tests {
use super::*;
use alloy_primitives::address;
#[test]
fn gauge_claim_holds_independent_token_and_position_arrays() {
let c = GaugeClaim {
gauge: address!("4444444444444444444444444444444444444444"),
reward_tokens: vec![
address!("1111111111111111111111111111111111111111"),
address!("2222222222222222222222222222222222222222"),
],
token_ids: vec![U256::from(7u64)],
};
assert_eq!(c.reward_tokens.len(), 2);
assert_eq!(c.token_ids.len(), 1);
}
#[test]
fn gauge_earned_grid_is_rectangular_token_by_position() {
let g = GaugeEarnedGrid {
gauge: address!("4444444444444444444444444444444444444444"),
reward_tokens: vec![Address::ZERO, Address::ZERO],
token_ids: vec![U256::from(1u64), U256::from(2u64), U256::from(3u64)],
earned: vec![vec![U256::ZERO; 3], vec![U256::ZERO; 3]],
};
assert_eq!(g.earned.len(), g.reward_tokens.len());
assert_eq!(g.earned[0].len(), g.token_ids.len());
}
}