tempo_node/rpc/amm/
pools.rs

1use alloy_primitives::{Address, B256, U256};
2use serde::{Deserialize, Serialize};
3use tempo_alloy::rpc::pagination::FilterRange;
4
5#[derive(Clone, Debug, Default, PartialEq, Eq, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct PoolsResponse {
8    /// Cursor for next page, null if no more results
9    pub next_cursor: Option<String>,
10    /// Array of items matching the input query
11    pub pools: Vec<Pool>,
12}
13
14#[derive(Clone, Debug, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct PoolsFilters {
17    /// Effective validator reserve in range
18    pub effective_validator_reserve: Option<FilterRange<U256>>,
19    /// Pending fee swap input in range
20    pub pending_fee_swap_in: Option<FilterRange<U256>>,
21    /// Reserve user token in range
22    pub reserve_user_token: Option<FilterRange<U256>>,
23    /// Reserve validator token in range
24    pub reserve_validator_token: Option<FilterRange<U256>>,
25    /// Total supply (LP tokens) in range
26    pub total_supply: Option<FilterRange<U256>>,
27    /// Filter by user token address
28    pub user_token: Option<Address>,
29    /// Filter by validator token address
30    pub validator_token: Option<Address>,
31}
32
33#[derive(Clone, Debug, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
34#[serde(rename_all = "camelCase")]
35pub struct Pool {
36    /// Effective reserve of validator token after pending swaps
37    pub effective_reserve_validator_token: U256,
38    /// Pool ID (keccak256 of userToken and validatorToken)
39    pub pool_id: B256,
40    /// User token reserve
41    pub reserve_user_token: U256,
42    /// Validator token reserve
43    pub reserve_validator_token: U256,
44    /// Total LP token supply for this pool
45    pub total_supply: U256,
46    /// User token address
47    pub user_token: Address,
48    /// Validator token address
49    pub validator_token: Address,
50}