xrpl/models/ledger/
mod.rs1use alloc::{borrow::Cow, vec::Vec};
2use objects::LedgerEntry;
3use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6pub mod objects;
7
8#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
9#[serde(untagged)]
10pub enum LedgerVersionMap<'a> {
11 Default(Ledger<'a>),
12 V1(LedgerV1<'a>),
13}
14
15#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
16pub struct Ledger<'a> {
17 #[serde(flatten)]
18 pub base: BaseLedger<'a>,
19 pub ledger_index: u32,
20}
21
22#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
23pub struct LedgerV1<'a> {
24 #[serde(flatten)]
25 pub base: BaseLedger<'a>,
26 pub ledger_index: Cow<'a, str>,
27}
28
29#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
30pub struct BaseLedger<'a> {
31 pub account_hash: Cow<'a, str>,
32 pub account_state: Option<Vec<LedgerEntry<'a>>>,
33 pub close_flags: u32,
34 pub close_time: u64,
35 pub close_time_human: Cow<'a, str>,
36 pub close_time_resolution: u32,
37 pub close_time_iso: Cow<'a, str>,
38 pub closed: bool,
39 pub ledger_hash: Cow<'a, str>,
40 pub parent_close_time: u64,
41 pub parent_hash: Cow<'a, str>,
42 pub total_coins: Cow<'a, str>,
43 pub transaction_hash: Cow<'a, str>,
44 pub transactions: Option<Vec<TransactionWithMetadata<'a>>>,
45}
46
47#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
48pub struct TransactionWithMetadata<'a> {
49 pub hash: Cow<'a, str>,
50 pub metadata: Option<Value>, }