pangea_client/core/requests/
pyth.rs

1use std::collections::HashSet;
2
3use serde::{Deserialize, Serialize};
4
5use ethers_core::types::H256;
6
7use crate::{core::types::ChainId, query::Bound, utils::serialize_comma_separated};
8
9#[allow(non_snake_case)]
10#[derive(Clone, Debug, Deserialize, Serialize)]
11#[serde(deny_unknown_fields)]
12pub struct GetPricesRequest {
13    #[serde(
14        default = "default_chains",
15        serialize_with = "serialize_comma_separated"
16    )]
17    pub chains: HashSet<ChainId>,
18
19    // Inclusive lower bound if is Some for block number
20    #[serde(default)]
21    pub from_block: Bound,
22    // Inclusive upper bound if is Some for block number
23    #[serde(default)]
24    pub to_block: Bound,
25
26    #[serde(default)]
27    #[serde(
28        alias = "price_id__in",
29        serialize_with = "serialize_comma_separated",
30        skip_serializing_if = "HashSet::is_empty"
31    )]
32    pub identifier__in: HashSet<H256>,
33}
34
35impl Default for GetPricesRequest {
36    fn default() -> Self {
37        Self {
38            chains: default_chains(),
39            from_block: Bound::default(),
40            to_block: Bound::default(),
41            identifier__in: HashSet::new(),
42        }
43    }
44}
45
46pub fn default_chains() -> HashSet<ChainId> {
47    HashSet::from([ChainId::MOVEMENT])
48}