hyperfuel_net_types/
lib.rs

1use std::collections::BTreeSet;
2
3use hyperfuel_format::{FixedSizeData, Hash};
4use serde::{Deserialize, Serialize};
5
6pub type Sighash = FixedSizeData<4>;
7
8pub mod hyperfuel_net_types_capnp {
9    include!(concat!(env!("OUT_DIR"), "/hyperfuel_net_types_capnp.rs"));
10}
11
12#[derive(Default, Serialize, Deserialize, Clone, Debug, PartialEq)]
13pub struct ReceiptSelection {
14    #[serde(default)]
15    pub root_contract_id: Vec<Hash>,
16    #[serde(default)]
17    pub to: Vec<Hash>,
18    #[serde(default)]
19    pub to_address: Vec<Hash>,
20    #[serde(default)]
21    pub asset_id: Vec<Hash>,
22    #[serde(default)]
23    pub receipt_type: Vec<u8>,
24    #[serde(default)]
25    pub sender: Vec<Hash>,
26    #[serde(default)]
27    pub recipient: Vec<Hash>,
28    #[serde(default)]
29    pub contract_id: Vec<Hash>,
30    #[serde(default)]
31    pub ra: Vec<u64>,
32    #[serde(default)]
33    pub rb: Vec<u64>,
34    #[serde(default)]
35    pub rc: Vec<u64>,
36    #[serde(default)]
37    pub rd: Vec<u64>,
38    #[serde(default)]
39    pub tx_status: Vec<u8>,
40    #[serde(default)]
41    pub tx_type: Vec<u8>,
42}
43
44#[derive(Default, Serialize, Deserialize, Clone, Debug, PartialEq)]
45pub struct InputSelection {
46    #[serde(default)]
47    pub owner: Vec<Hash>,
48    #[serde(default)]
49    pub asset_id: Vec<Hash>,
50    #[serde(default)]
51    pub contract: Vec<Hash>,
52    #[serde(default)]
53    pub sender: Vec<Hash>,
54    #[serde(default)]
55    pub recipient: Vec<Hash>,
56    #[serde(default)]
57    pub input_type: Vec<u8>,
58    #[serde(default)]
59    pub tx_status: Vec<u8>,
60    #[serde(default)]
61    pub tx_type: Vec<u8>,
62}
63
64#[derive(Default, Serialize, Deserialize, Clone, Debug, PartialEq)]
65pub struct OutputSelection {
66    #[serde(default)]
67    pub to: Vec<Hash>,
68    #[serde(default)]
69    pub asset_id: Vec<Hash>,
70    #[serde(default)]
71    pub contract: Vec<Hash>,
72    #[serde(default)]
73    pub output_type: Vec<u8>,
74    #[serde(default)]
75    pub tx_status: Vec<u8>,
76    #[serde(default)]
77    pub tx_type: Vec<u8>,
78}
79
80#[derive(Default, Serialize, Deserialize, Clone, Debug)]
81pub struct Query {
82    pub from_block: u64,
83    pub to_block: Option<u64>,
84    #[serde(default)]
85    pub receipts: Vec<ReceiptSelection>,
86    #[serde(default)]
87    pub inputs: Vec<InputSelection>,
88    #[serde(default)]
89    pub outputs: Vec<OutputSelection>,
90    #[serde(default)]
91    pub include_all_blocks: bool,
92    #[serde(default)]
93    pub field_selection: FieldSelection,
94    #[serde(default)]
95    pub max_num_blocks: Option<usize>,
96    #[serde(default)]
97    pub max_num_transactions: Option<usize>,
98    #[serde(default)]
99    // The below 4 fields were not in the original fuel-client
100    pub max_num_receipts: Option<usize>,
101    #[serde(default)]
102    pub max_num_inputs: Option<usize>,
103    #[serde(default)]
104    pub max_num_outputs: Option<usize>,
105    #[serde(default)]
106    pub join_mode: JoinMode,
107}
108
109#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq, Copy)]
110pub enum JoinMode {
111    Default,
112    JoinAll,
113    JoinNothing,
114}
115
116impl Default for JoinMode {
117    fn default() -> Self {
118        Self::Default
119    }
120}
121
122#[derive(Default, Serialize, Deserialize, Clone, Debug)]
123pub struct FieldSelection {
124    #[serde(default)]
125    pub block: BTreeSet<String>,
126    #[serde(default)]
127    pub transaction: BTreeSet<String>,
128    #[serde(default)]
129    pub receipt: BTreeSet<String>,
130    #[serde(default)]
131    pub input: BTreeSet<String>,
132    #[serde(default)]
133    pub output: BTreeSet<String>,
134}
135
136#[derive(Clone, Copy, Deserialize, Serialize, Debug)]
137pub struct ArchiveHeight {
138    pub height: Option<u64>,
139}
140
141#[derive(Clone, Copy, Deserialize, Serialize, Debug)]
142pub struct ChainId {
143    pub chain_id: u64,
144}