koios_sdk/models/
block.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
use super::{
    transaction::{Certificate, NativeScript, PlutusContract, ProposalProcedure, VotingProcedure},
    AssetItem, PaymentAddress, TransactionOutput, Withdrawal,
};
use serde::{Deserialize, Serialize};

// Fix missing fields in Block struct
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Block {
    pub hash: String,
    pub epoch_no: u64,
    pub abs_slot: u64,
    pub epoch_slot: u64,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub block_height: Option<u64>,
    pub block_size: u64,
    pub block_time: u64,
    pub tx_count: u64,
    pub vrf_key: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub pool: Option<String>,
    pub op_cert_counter: u64,
    pub proto_major: u64,
    pub proto_minor: u64,
    pub parent_hash: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockInfo {
    pub hash: String,
    pub epoch_no: u64,
    pub abs_slot: u64,
    pub epoch_slot: u64,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub block_height: Option<u64>,
    pub block_size: u64,
    pub block_time: u64,
    pub tx_count: u64,
    pub vrf_key: String,
    pub op_cert: String,
    pub op_cert_counter: u64,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub pool: Option<String>,
    pub proto_major: u64,
    pub proto_minor: u64,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub total_output: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub total_fees: Option<String>,
    pub num_confirmations: u64,
    pub parent_hash: String,
    pub child_hash: String,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockTransaction {
    pub block_hash: String,
    pub tx_hash: String,
    pub epoch_no: u64,
    pub block_height: u64,
    pub block_time: u64,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockTransactionCbor {
    pub tx_hash: String,
    pub block_hash: String,
    pub block_height: u64,
    pub epoch_no: u64,
    pub absolute_slot: u64,
    pub tx_timestamp: u64,
    pub cbor: String,
}

impl Block {
    pub fn new(
        hash: String,
        epoch_no: u64,
        abs_slot: u64,
        epoch_slot: u64,
        block_height: Option<u64>,
        block_size: u64,
        block_time: u64,
        tx_count: u64,
        vrf_key: String,
        pool: Option<String>,
        op_cert_counter: u64,
        proto_major: u64,
        proto_minor: u64,
        parent_hash: String,
    ) -> Self {
        Self {
            hash,
            epoch_no,
            abs_slot,
            epoch_slot,
            block_height,
            block_size,
            block_time,
            tx_count,
            vrf_key,
            pool,
            op_cert_counter,
            proto_major,
            proto_minor,
            parent_hash,
        }
    }
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BlockTxInfo {
    pub tx_hash: String,
    pub block_hash: String,
    pub block_height: u64,
    pub epoch_no: u64,
    pub epoch_slot: u64,
    pub absolute_slot: u64,
    pub tx_timestamp: u64,
    pub tx_block_index: u64,
    pub tx_size: u64,
    pub total_output: String,
    pub fee: String,
    pub treasury_donation: String,
    pub deposit: String,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub invalid_before: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub invalid_after: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub collateral_inputs: Option<Vec<TransactionOutput>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub collateral_output: Option<Vec<TransactionOutput>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub reference_inputs: Option<Vec<TransactionOutput>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub inputs: Option<Vec<TransactionOutput>>,
    pub outputs: Vec<TransactionOutput>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub withdrawals: Option<Vec<Withdrawal>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub assets_minted: Option<Vec<AssetItem>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub metadata: Option<serde_json::Value>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub certificates: Option<Vec<Certificate>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub native_scripts: Option<Vec<NativeScript>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub plutus_contracts: Option<Vec<PlutusContract>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub voting_procedures: Option<Vec<VotingProcedure>>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub proposal_procedures: Option<Vec<ProposalProcedure>>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TxOutput {
    pub payment_addr: PaymentAddress,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub stake_addr: Option<String>,
    pub tx_hash: String,
    pub tx_index: u64,
    pub value: String,
}