1use cyfs_base::*;
2use serde::{Serialize, Deserialize};
3
4pub enum JsonProtocol {
5 CreatePushTask,
6 CreatePushTaskResp,
7 CreatePullTask,
8 CreatePullTaskResp,
9 GetPushTaskState,
10 GetPushTaskStateResp,
11 GetDMCAccount,
12 GetDMCAccountResp,
13 SetDMCAccount,
14 SetDMCAccountResp,
15 ReportCyfsInfo,
16 ReportCyfsInfoResp,
17 AddMerkle,
18 AddMerkleResp,
19 ChallengeResp,
20 ChallengeRespResp,
21 Arbitration,
22 ArbitrationResp,
23 GetTaskList,
24 GetTaskListResp,
25 GetTaskChunkList,
26 GetTaskChunkListResp,
27 SetMinerDecId,
28 SetMinerDecIdResp,
29 Stack,
30 StackResp,
31 Bill,
32 BillResp,
33 Mint,
34 MintResp,
35 GetPullTaskState,
36 GetPullTaskStateResp,
37 Recovery,
38 RecoveryResp,
39 GetRecoveryState,
40 GetRecoveryStateResp,
41}
42
43#[derive(Serialize, Deserialize, Copy, Clone, RawEncode, RawDecode, Eq, PartialEq)]
44pub enum StoreType {
45 Backup,
46 Cache
47}
48
49impl ToString for StoreType {
50 fn to_string(&self) -> String {
51 match self {
52 StoreType::Backup => {"Backup".to_string()}
53 StoreType::Cache => {"Cache".to_string()}
54 }
55 }
56}
57
58#[derive(Serialize, Deserialize)]
59pub struct CreatePushTask {
60 pub chunk_list: Vec<String>,
61 pub http_url: Option<String>,
62 pub store_type: StoreType,
63 pub dmc_account: Option<String>,
64}
65
66#[derive(Serialize, Deserialize)]
67pub struct CreatePullTask {
68 pub task_id: String,
69}
70
71#[derive(Serialize, Deserialize, RawEncode, RawDecode)]
72pub enum DsgPushTaskState {
73 WaitingSpace,
74 Syncing(Vec<(String, String, String)>),
75 Finished(Vec<(String, String, String, String)>),
76 Error(String),
77}
78
79#[derive(Serialize, Deserialize, RawEncode, RawDecode)]
80pub enum DsgPullTaskState {
81 Init,
82 Downloading,
83 Finished,
84 Err(String)
85}
86
87#[derive(Serialize, Deserialize)]
88pub struct AddMerkleReq {
89 pub order_id: String,
90 pub merkle_root: String,
91 pub data_block_count: u64,
92}
93
94#[derive(Serialize, Deserialize)]
95pub struct ChallengeRespReq {
96 pub order_id: String,
97 pub reply_hash: String,
98}
99
100#[derive(Serialize, Deserialize)]
101pub struct ArbitrationReq {
102 pub order_id: String,
103 pub data: Vec<u8>,
104 pub cut_merkle: Vec<String>
105}
106
107#[derive(Serialize, Deserialize)]
108pub struct GetTaskList {
109 pub offset: u64,
110 pub length: u64,
111}
112
113#[derive(Serialize, Deserialize)]
114pub struct ResultList<T: Serialize + for<'a> Deserialize<'a>> {
115 pub sum: u64,
116 #[serde(bound(deserialize = "Vec<T>: for<'a> Deserialize<'a>"))]
117 pub list: Vec<T>
118}
119
120#[derive(Serialize, Deserialize)]
121pub struct GetTaskChunkList {
122 pub task_id: String,
123}
124
125#[derive(Serialize, Deserialize)]
126pub struct SetDMCAccount {
127 pub dmc_account: String,
128 pub dmc_key: String,
129}
130
131#[derive(Serialize, Deserialize)]
132pub struct BillReq {
133 pub asset: String,
134 pub price: f64,
135 pub memo: String,
136}
137
138#[derive(RawDecode, RawEncode, Clone, Serialize, Deserialize)]
139pub enum DsgRecoveryTaskState {
140 Init,
141 Recovering,
142 Finished(Vec<(String, String)>),
143 Err(String)
144}