Skip to main content

ic_query/sns/report/model/reports/
token.rs

1//! Module: sns::report::model::reports::token
2//!
3//! Responsibility: SNS token metadata report DTOs.
4//! Does not own: ledger calls, token amount formatting, or rendering.
5//! Boundary: preserves raw token metadata fields for text and JSON output.
6
7use serde::Serialize;
8use serde_json::Value as JsonValue;
9
10///
11/// SnsTokenReport
12///
13/// Serializable report for SNS ledger token metadata.
14///
15
16#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
17pub struct SnsTokenReport {
18    pub schema_version: u32,
19    pub network: String,
20    pub sns_wasm_canister_id: String,
21    pub fetched_at: String,
22    pub source_endpoint: String,
23    pub fetched_by: String,
24    pub id: usize,
25    pub name: String,
26    pub root_canister_id: String,
27    pub ledger_canister_id: String,
28    pub sns_index_canister_id: String,
29    pub token_name: String,
30    pub token_symbol: String,
31    pub decimals: u8,
32    pub transfer_fee: String,
33    pub total_supply: String,
34    pub minting_account_owner: Option<String>,
35    pub minting_account_subaccount_hex: Option<String>,
36    pub ledger_index_canister_id: Option<String>,
37    pub ledger_index_error: Option<String>,
38    pub supported_standards: Vec<SnsTokenStandardRow>,
39    pub metadata: Vec<SnsTokenMetadataRow>,
40}
41
42///
43/// SnsTokenStandardRow
44///
45/// Serializable row for one token standard supported by an SNS ledger.
46///
47
48#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
49pub struct SnsTokenStandardRow {
50    pub name: String,
51    pub url: String,
52}
53
54///
55/// SnsTokenMetadataRow
56///
57/// Serializable row for one raw SNS ledger metadata entry.
58///
59
60#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
61pub struct SnsTokenMetadataRow {
62    pub key: String,
63    pub value_type: String,
64    pub value: JsonValue,
65}