1pub mod data;
2pub mod errors;
3pub mod guard_data;
4pub mod parser;
5
6use std::{fmt::Display, str::FromStr};
7
8use anchor_lang::prelude::Pubkey;
9pub use data::*;
10pub use errors::*;
11pub use guard_data::*;
12pub use parser::*;
13use serde::{Deserialize, Deserializer, Serializer};
14use solana_program::native_token::LAMPORTS_PER_SOL;
15
16pub fn price_as_lamports(price: f64) -> u64 {
17 (price * LAMPORTS_PER_SOL as f64) as u64
18}
19
20pub fn to_string<T, S>(value: &T, serializer: S) -> Result<S::Ok, S::Error>
21where
22 T: Display,
23 S: Serializer,
24{
25 serializer.collect_str(value)
26}
27
28pub fn to_pubkey<'de, D>(deserializer: D) -> Result<Pubkey, D::Error>
29where
30 D: Deserializer<'de>,
31{
32 let s: String = Deserialize::deserialize(deserializer)?;
33 Pubkey::from_str(&s).map_err(serde::de::Error::custom)
34}