use alloy::primitives::{Address, U256};
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug)]
pub struct TokensByWalletEntry {
pub address: Address,
pub network: String,
#[serde(rename = "tokenAddress")]
pub token_address: Option<Address>,
#[serde(rename = "tokenBalance")]
pub token_balance: U256,
#[serde(rename = "tokenMetadata")]
pub token_metadata: TokenMetadata,
#[serde(rename = "tokenPrices")]
pub token_prices: Vec<TokenPricesEntry>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct TokenMetadata {
pub symbol: Option<String>,
#[serde(default)]
pub decimals: Option<u8>,
pub name: Option<String>,
pub logo: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct TokenPricesEntry {
pub currency: String,
pub value: String,
#[serde(rename = "lastUpdatedAt")]
pub last_updated_at: String,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct TokenBalancesByWalletEntry {
pub address: Address,
pub network: String,
#[serde(rename = "tokenAddress")]
pub token_address: Option<Address>,
#[serde(rename = "tokenBalance")]
pub token_balance: U256,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AlchemyData<T> {
pub data: T,
}
#[derive(Serialize, Deserialize, Debug)]
pub struct AlchemyTokens<T> {
pub tokens: Vec<T>,
}