Skip to content

Commit 19aef06

Browse files
committed
Add PYUSD support
1 parent 61a12e1 commit 19aef06

File tree

2 files changed

+11
-1
lines changed

2 files changed

+11
-1
lines changed

src/coin_gecko.rs

+4
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ fn token_to_coin(token: &MaybeToken) -> Result<&'static str, Box<dyn std::error:
5050
Token::PYTH => "pyth-network",
5151
Token::WEN => "wen-4",
5252
Token::WIF => "dogwifcoin",
53+
Token::PYUSD => "paypal-usd",
5354
unsupported_token => {
5455
return Err(format!(
5556
"Coin Gecko price data not available for {}",
@@ -122,6 +123,8 @@ pub async fn get_current_price(token: &MaybeToken) -> Result<Decimal, Box<dyn st
122123
wen: Option<CurrencyList>,
123124
#[serde(rename = "dogwifcoin")]
124125
wif: Option<CurrencyList>,
126+
#[serde(rename = "paypal-usd")]
127+
pyusd: Option<CurrencyList>,
125128
}
126129

127130
let coins = reqwest::get(url).await?.json::<Coins>().await?;
@@ -144,6 +147,7 @@ pub async fn get_current_price(token: &MaybeToken) -> Result<Decimal, Box<dyn st
144147
.or(coins.pyth)
145148
.or(coins.wen)
146149
.or(coins.wif)
150+
.or(coins.pyusd)
147151
.ok_or_else(|| format!("Simple price data not available for {coin}").into())
148152
.map(|price| {
149153
let price = Decimal::from_f64(price.usd).unwrap();

src/token.rs

+7-1
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ pub enum Token {
5353
PYTH,
5454
WEN,
5555
WIF,
56+
PYUSD,
5657
}
5758

5859
impl Token {
@@ -80,6 +81,7 @@ impl Token {
8081
Token::PYTH => pubkey!("HZ1JovNiVvGrGNiiYvEozEVgZ58xaU3RKwX8eACQBCt3"),
8182
Token::WEN => pubkey!("WENWENvqqNya429ubCdR81ZmD69brwQaaBYY6p3LCpk"),
8283
Token::WIF => pubkey!("EKpQGSJtjMFqKZ9KQanSqYXRcF8fBopzLHYxdM65zcjm"),
84+
Token::PYUSD => pubkey!("2b1kV6DkPAnxd5ixfnxCpjxmKwqjjaYmCZfHsFu24GXo"),
8385
}
8486
}
8587

@@ -107,6 +109,7 @@ impl Token {
107109
| Token::PYTH
108110
| Token::WEN
109111
| Token::WIF => spl_token::id(),
112+
Token::PYUSD => spl_token_2022::id(),
110113
}
111114
}
112115
pub fn ata(&self, wallet_address: &Pubkey) -> Pubkey {
@@ -141,6 +144,7 @@ impl Token {
141144
Token::PYTH => "PYTH/",
142145
Token::WEN => "WEN/",
143146
Token::WIF => "WIF/",
147+
Token::PYUSD => "PY($)/",
144148
}
145149
}
146150

@@ -157,6 +161,7 @@ impl Token {
157161
| Token::KMNO
158162
| Token::PYTH
159163
| Token::WIF => 6,
164+
| Token::PYUSD => 6,
160165
Token::stSOL
161166
| Token::tuSOL
162167
| Token::bSOL
@@ -282,7 +287,8 @@ impl Token {
282287
| Token::KMNO
283288
| Token::PYTH
284289
| Token::WEN
285-
| Token::WIF => coin_gecko::get_current_price(&MaybeToken(Some(*self))).await,
290+
| Token::WIF
291+
| Token::PYUSD => coin_gecko::get_current_price(&MaybeToken(Some(*self))).await,
286292
Token::tuUSDC | Token::tuSOL | Token::tumSOL | Token::tustSOL => {
287293
Err("tulip support disabled".into())
288294
//crate::tulip::get_current_price(rpc_client, self).await

0 commit comments

Comments
 (0)