stratum_types/params/mod.rs
1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use serde_tuple::{Deserialize_tuple, Serialize_tuple};
4
5//@todo need some renaming on this bad boy.
6use crate::traits::{PoolParams, StratumParams};
7
8// #[derive(Debug, Clone, Deserialize, Serialize)]
9// #[serde(untagged)]
10// pub enum PoolParam<PP, SP>
11// where
12// PP: PoolParams,
13// SP: StratumParams,
14// {
15// Notify(SP::Notify),
16// SetDifficulty(SetDiff),
17
18// // ===== Responding Values ===== //
19// AuthorizeResult(PP::AuthorizeResult),
20// SubscribeResult(PP::SubscribeResult),
21// SubmitResult(bool),
22
23// Unknown(Value),
24// }
25
26// #[derive(Debug, Clone, Deserialize, Serialize)]
27// #[serde(untagged)]
28// pub enum ClientParam<PP, SP>
29// where
30// PP: PoolParams,
31// SP: StratumParams,
32// {
33// Authorize(PP::Authorize),
34// Submit(SP::Submit),
35// Subscribe(PP::Subscribe),
36// Unknown(Value),
37// }
38
39#[derive(Debug, Clone, Deserialize, Serialize)]
40#[serde(untagged)]
41pub enum Params<PP, SP>
42where
43 PP: PoolParams,
44 SP: StratumParams,
45{
46 Authorize(PP::Authorize),
47 Submit(SP::Submit),
48 Subscribe(PP::Subscribe),
49 Notify(SP::Notify),
50 SetDifficulty(SetDiff),
51 Unknown(Value),
52}
53
54#[derive(Debug, Clone, Deserialize, Serialize)]
55#[serde(untagged)]
56pub enum Results<PP>
57where
58 PP: PoolParams,
59{
60 AuthorizeResult(PP::AuthorizeResult),
61 SubscribeResult(PP::SubscribeResult),
62 SubmitResult(bool),
63
64 Unknown(Value),
65}
66
67//@todo make this a trait so we can use it in the above lib..
68#[derive(Serialize_tuple, Deserialize_tuple, Clone, Debug)]
69pub struct SetDiff {
70 pub difficulty: f64,
71}
72
73// pub struct ClassicSetDiff {
74// difficulty: u64,
75// }