tempo_node/rpc/token/
tokens.rs

1use alloy_primitives::Address;
2use serde::{Deserialize, Serialize};
3use tempo_alloy::rpc::pagination::FilterRange;
4
5#[derive(Clone, Debug, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
6#[serde(rename_all = "camelCase")]
7pub struct TokensResponse {
8    /// Cursor for next page, null if no more results
9    pub next_cursor: Option<String>,
10    /// Array of items matching the input query
11    pub tokens: Vec<Token>,
12}
13
14#[derive(Clone, Debug, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
15#[serde(rename_all = "camelCase")]
16pub struct TokensFilters {
17    /// Filter by currency code (e.g., "USD", "EUR", "JPY")
18    pub currency: Option<String>,
19    /// Filter by creator address
20    pub creator: Option<Address>,
21    /// Created timestamp (seconds) in range
22    pub created_at: Option<FilterRange<u64>>,
23    /// Filter by token name (case-insensitive)
24    pub name: Option<String>,
25    /// Filter by pause state
26    pub paused: Option<bool>,
27    /// Filter by quote token address
28    pub quote_token: Option<Address>,
29    /// Supply cap in range
30    pub supply_cap: Option<FilterRange<u128>>,
31    /// Filter by symbol
32    pub symbol: Option<String>,
33    /// Total supply in range
34    pub total_supply: Option<FilterRange<u128>>,
35}
36
37#[derive(Clone, Debug, Default, PartialEq, Eq, Hash, Serialize, Deserialize)]
38#[serde(rename_all = "camelCase")]
39pub struct Token {
40    /// Token contract address (deterministic vanity address based on tokenId)
41    pub address: Address,
42    /// Timestamp when token was created
43    #[serde(with = "alloy_serde::quantity")]
44    pub created_at: u64,
45    /// Address that created the token
46    pub creator: Address,
47    /// Currency code (e.g., "USD", "EUR")
48    pub currency: String,
49    /// Token decimals
50    #[serde(with = "alloy_serde::quantity")]
51    pub decimals: u32,
52    /// Token name
53    pub name: String,
54    /// Whether token transfers are paused
55    pub paused: bool,
56    /// Quote token address for trading pairs
57    pub quote_token: Address,
58    /// Maximum token supply
59    #[serde(with = "alloy_serde::quantity")]
60    pub supply_cap: u128,
61    /// Token symbol
62    pub symbol: String,
63    /// Unique token ID from factory
64    #[serde(with = "alloy_serde::quantity")]
65    pub token_id: u64,
66    /// Current total supply
67    #[serde(with = "alloy_serde::quantity")]
68    pub total_supply: u128,
69    /// Current transfer policy ID
70    #[serde(with = "alloy_serde::quantity")]
71    pub transfer_policy_id: u64,
72}