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