use derive_more::From;
use derive_setters::Setters;
use serde_derive::Serialize;
#[derive(Clone, From)]
#[non_exhaustive]
pub enum V4Request {
#[from(skip)]
AllClassicPools,
#[from(skip)]
AllStablePools,
#[from(skip)]
AllCpmmPools,
#[from(skip)]
AllUranusPools,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Setters)]
#[setters(prefix = "with_", strip_option)]
#[non_exhaustive]
pub struct PoolsParams {
pub offset: u32,
pub limit: u32,
pub sort_by: String,
pub sort_direction: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub wallet_address: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub include_assets: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub pool_addresses: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_by_assets: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub filter_by_type: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tags: Option<Vec<String>>,
}
impl PoolsParams {
#[must_use]
pub fn new() -> Self { Self::default() }
}
impl Default for PoolsParams {
fn default() -> Self {
Self {
offset: 0,
limit: 100,
sort_by: "volume_24h".to_owned(),
sort_direction: "desc".to_owned(),
wallet_address: None,
include_assets: None,
pool_addresses: None,
filter_by_assets: None,
filter_by_type: None,
tags: None,
}
}
}
impl From<&V4Request> for V4Request {
fn from(request: &V4Request) -> Self { request.clone() }
}