1use serde::{Serialize, Deserialize};
2use cyfs_base::BuckyError;
3use cyfs_base::*;
4
5#[derive(Serialize, Deserialize)]
6pub struct RequestResult<T>
7{
8 pub err: u16,
9 pub msg: String,
10 pub result: Option<T>
11}
12
13impl <T> RequestResult<T>
14{
15 pub fn from_err(err: BuckyError) -> Self {
16 RequestResult {
17 err: err.code().into(),
18 msg: format!("{}", err),
19 result: None
20 }
21 }
22}
23
24#[derive(Serialize, Deserialize, Clone, Debug, RawEncode, RawDecode, Eq, PartialEq)]
25pub struct SPVTx {
26 pub hash: String,
27 pub number: i64,
28 pub from: String,
29 pub to: String,
30 pub coin_id: u8,
31 pub value: i64,
32 pub desc: String,
33 pub create_time: i64,
34 pub result: u32,
35 pub use_fee: u32,
36 pub nonce: i64,
37 pub gas_coin_id : u8,pub gas_price : u16, pub max_fee : u32,
40}
41
42impl <T> From<T> for RequestResult<T>
43{
44 fn from(result: T) -> Self {
45 RequestResult {
46 err: 0,
47 msg: "".to_string(),
48 result: Some(result)
49 }
50 }
51}
52
53#[derive(Serialize, Deserialize)]
54pub struct GetTxListRequest {
55 pub address_list: Vec<String>,
56 pub block_section: Option<(i64, i64)>,
57 pub offset: i64,
58 pub length: i64,
59 pub coin_id_list: Vec<String>,
60}
61
62#[derive(Serialize, Deserialize)]
63pub struct GetBlocksRequest {
64 pub start_block: i64,
65 pub end_block: i64,
66}
67
68pub const TX_STATUS_PENDING: u8 = 1;
69pub const TX_STATUS_BLOCKED: u8 = 2;
70
71#[derive(Serialize, Deserialize)]
72pub struct TxMetaData {
73 pub tx_hash: String,
74 pub create_time: String,
75 pub nonce : String,
76 pub caller: String,
77 pub gas_coin_id : u8,pub gas_price : u16, pub max_fee : u32,
80 pub result: u32,
81 pub use_fee: u32,
82 pub to: Vec<(String, u8, String)>
83}
84
85#[derive(Serialize, Deserialize)]
86pub struct TxInfo {
87 pub status: u8,
88 pub tx: TxMetaData,
89 pub block_number: Option<String>,
90 pub block_hash: Option<String>,
91 pub block_create_time: Option<String>,
92}
93
94#[derive(Serialize, Deserialize)]
95pub struct BlockInfo {
96 pub height: i64,
97 pub block_hash: String,
98 pub create_time: u64,
99 pub tx_list: Vec<TxInfo>
100}
101
102#[derive(Serialize, Deserialize)]
103pub struct ERC20ContractTx {
104 pub address: String,
105 pub tx_hash: String,
106 pub start_number: u64,
107 pub end_number: u64,
108 pub from: String,
109 pub to: String,
110}
111
112#[derive(Serialize, Deserialize, RawDecode, RawEncode, Clone)]
113pub struct ERC20ContractTxResponse {
114 pub address: String,
115 pub tx_hash: String,
116 pub from: String,
117 pub to: String,
118 pub value: u64,
119 pub height: u64,
120 pub gas_price : u64,
121 pub create_time: u64,
122 pub result: i32,
123}