Parsable pub key

This commit is contained in:
2026-08-06 06:17:51 +02:00
parent 0fdb684122
commit e561599688
+38 -4
View File
@@ -1,5 +1,8 @@
use std::str::FromStr;
use serde::{Deserialize, Deserializer}; use serde::{Deserialize, Deserializer};
use serde_json::Value; use serde_json::Value;
use solana_sdk::pubkey::Pubkey;
#[derive(Debug)] #[derive(Debug)]
pub enum PumpDevEvent { pub enum PumpDevEvent {
@@ -56,9 +59,12 @@ impl<'de> Deserialize<'de> for PumpDevEvent {
} }
} }
#[derive(Debug, Deserialize)] #[derive(Debug, Clone, Deserialize)]
pub struct NewToken { pub struct NewToken {
pub mint: String, pub mint: PublicKeyParseable,
#[serde(rename = "traderPublicKey")]
pub trader_public_key: PublicKeyParseable,
pub name: String, pub name: String,
pub symbol: String, pub symbol: String,
pub uri: String, pub uri: String,
@@ -66,6 +72,34 @@ pub struct NewToken {
pub market_cap_sol: f64, pub market_cap_sol: f64,
#[serde(rename = "solAmount")] #[serde(rename = "solAmount")]
pub sol_amount: f64, pub sol_amount: f64,
#[serde(rename = "traderPublicKey")] }
pub trader_public_key: String,
impl std::ops::Deref for PublicKeyParseable {
type Target = Pubkey;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl std::ops::DerefMut for PublicKeyParseable {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[derive(Debug, Clone)]
pub struct PublicKeyParseable(pub Pubkey);
impl<'de> Deserialize<'de> for PublicKeyParseable {
fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where
D: Deserializer<'de>,
{
let value = String::deserialize(deserializer)?;
Pubkey::from_str(&value)
.map(PublicKeyParseable)
.map_err(serde::de::Error::custom)
}
} }