balancer_maths_rust/pools/reclamm/
reclamm_data.rs

1use crate::common::types::BasePoolState;
2use alloy_primitives::U256;
3use serde::{Deserialize, Serialize};
4
5/// ReClamm mutable state
6#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
7pub struct ReClammMutable {
8    #[serde(rename = "lastVirtualBalances")]
9    pub last_virtual_balances: Vec<U256>,
10    #[serde(rename = "dailyPriceShiftBase")]
11    pub daily_price_shift_base: U256,
12    #[serde(rename = "lastTimestamp")]
13    pub last_timestamp: U256,
14    #[serde(rename = "currentTimestamp")]
15    pub current_timestamp: U256,
16    #[serde(rename = "centerednessMargin")]
17    pub centeredness_margin: U256,
18    #[serde(rename = "startFourthRootPriceRatio")]
19    pub start_fourth_root_price_ratio: U256,
20    #[serde(rename = "endFourthRootPriceRatio")]
21    pub end_fourth_root_price_ratio: U256,
22    #[serde(rename = "priceRatioUpdateStartTime")]
23    pub price_ratio_update_start_time: U256,
24    #[serde(rename = "priceRatioUpdateEndTime")]
25    pub price_ratio_update_end_time: U256,
26}
27
28/// ReClamm immutable state
29#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
30pub struct ReClammImmutable {
31    pub pool_address: String,
32    pub tokens: Vec<String>,
33}
34
35/// ReClamm pool state
36#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
37pub struct ReClammState {
38    pub base: BasePoolState,
39    pub mutable: ReClammMutable,
40    pub immutable: ReClammImmutable,
41}
42
43impl From<ReClammState> for crate::common::types::PoolState {
44    fn from(state: ReClammState) -> Self {
45        crate::common::types::PoolState::ReClamm(state)
46    }
47}