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 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}