1use serde::Serialize;
8use serde_json::Value as JsonValue;
9
10#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
17pub struct IcrcTokenReport {
18 pub schema_version: u32,
19 pub ledger_canister_id: String,
20 pub fetched_at: String,
21 pub source_endpoint: String,
22 pub fetched_by: String,
23 pub token_name: String,
24 pub token_symbol: String,
25 pub decimals: u8,
26 pub transfer_fee: String,
27 pub total_supply: String,
28 pub minting_account_owner: Option<String>,
29 pub minting_account_subaccount_hex: Option<String>,
30 pub supported_standards: Vec<IcrcTokenStandardRow>,
31 pub metadata: Vec<IcrcTokenMetadataRow>,
32}
33
34#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
41pub struct IcrcIndexReport {
42 pub schema_version: u32,
43 pub ledger_canister_id: String,
44 pub fetched_at: String,
45 pub source_endpoint: String,
46 pub fetched_by: String,
47 pub index_canister_id: Option<String>,
48 pub index_error: Option<String>,
49}
50
51#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
58pub struct IcrcTransactionsReport {
59 pub schema_version: u32,
60 pub ledger_canister_id: String,
61 pub fetched_at: String,
62 pub source_endpoint: String,
63 pub fetched_by: String,
64 pub requested_start: String,
65 pub requested_limit: u32,
66 pub follow_archives: bool,
67 pub log_length: Option<String>,
68 pub blocks: Vec<IcrcTransactionBlockRow>,
69 pub archived_blocks: Vec<IcrcArchivedBlocksRow>,
70 pub followed_archive_blocks: Vec<IcrcFollowedArchiveBlockRow>,
71 pub archive_follow_errors: Vec<IcrcArchiveFollowErrorRow>,
72}
73
74#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
81pub struct IcrcBlockTypesReport {
82 pub schema_version: u32,
83 pub ledger_canister_id: String,
84 pub fetched_at: String,
85 pub source_endpoint: String,
86 pub fetched_by: String,
87 pub block_types: Vec<IcrcBlockTypeRow>,
88}
89
90#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
97pub struct IcrcArchivesReport {
98 pub schema_version: u32,
99 pub ledger_canister_id: String,
100 pub from_canister_id: Option<String>,
101 pub fetched_at: String,
102 pub source_endpoint: String,
103 pub fetched_by: String,
104 pub archives: Vec<IcrcArchiveRow>,
105}
106
107#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
114pub struct IcrcTipCertificateReport {
115 pub schema_version: u32,
116 pub ledger_canister_id: String,
117 pub fetched_at: String,
118 pub source_endpoint: String,
119 pub fetched_by: String,
120 pub certificate_present: bool,
121 pub certificate_hex: Option<String>,
122 pub certificate_bytes: Option<usize>,
123 pub hash_tree_hex: Option<String>,
124 pub hash_tree_bytes: Option<usize>,
125}
126
127#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
134pub struct IcrcCapabilitiesReport {
135 pub schema_version: u32,
136 pub ledger_canister_id: String,
137 pub fetched_at: String,
138 pub source_endpoint: String,
139 pub fetched_by: String,
140 pub supported_standards: Vec<IcrcTokenStandardRow>,
141 pub capabilities: Vec<IcrcCapabilityRow>,
142}
143
144#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
151pub struct IcrcCapabilityRow {
152 pub capability: String,
153 pub method: String,
154 pub status: String,
155 pub details: Option<String>,
156 pub error: Option<String>,
157}
158
159#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
166pub struct IcrcTokenStandardRow {
167 pub name: String,
168 pub url: String,
169}
170
171#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
178pub struct IcrcTokenMetadataRow {
179 pub key: String,
180 pub value_type: String,
181 pub value: JsonValue,
182}
183
184#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
191pub struct IcrcTransactionBlockRow {
192 pub index: String,
193 pub block_type: Option<String>,
194 pub transaction_kind: Option<String>,
195 pub timestamp_unix_nanos: Option<String>,
196 pub amount_base_units: Option<String>,
197 pub raw_block: JsonValue,
198}
199
200#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
207pub struct IcrcArchivedBlocksRow {
208 pub callback_canister_id: String,
209 pub callback_method: String,
210 pub ranges: Vec<IcrcArchivedRangeRow>,
211}
212
213#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
220pub struct IcrcArchivedRangeRow {
221 pub start: String,
222 pub length: String,
223}
224
225#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
232pub struct IcrcFollowedArchiveBlockRow {
233 pub archive_canister_id: String,
234 pub callback_method: String,
235 pub index: String,
236 pub block_type: Option<String>,
237 pub transaction_kind: Option<String>,
238 pub timestamp_unix_nanos: Option<String>,
239 pub amount_base_units: Option<String>,
240 pub raw_block: JsonValue,
241}
242
243#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
250pub struct IcrcArchiveFollowErrorRow {
251 pub callback_canister_id: String,
252 pub callback_method: String,
253 pub ranges: Vec<IcrcArchivedRangeRow>,
254 pub error: String,
255}
256
257#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
264pub struct IcrcBlockTypeRow {
265 pub block_type: String,
266 pub url: String,
267}
268
269#[derive(Clone, Debug, Eq, PartialEq, Serialize)]
276pub struct IcrcArchiveRow {
277 pub canister_id: String,
278 pub start: String,
279 pub end: String,
280}