1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
use chrono::prelude::*;

// pub enum LaunchCheck {
//     Claims(LaunchTrademarkCheck),
//     Availability(LaunchAvailabilityCheck),
//     Trademark(LaunchTrademarkCheck)
// }
//
// impl From<&LaunchCheck> for proto::launch::EPPLaunchCheck {
//     fn from(from: &LaunchCheck) -> Self {
//         from.into()
//     }
// }

#[derive(Debug)]
pub struct LaunchClaimsCheck {
    pub phase: LaunchPhase,
}

#[derive(Debug)]
pub struct LaunchAvailabilityCheck {
    pub phase: LaunchPhase,
}

#[derive(Debug)]
pub struct LaunchTrademarkCheck {}

#[derive(Debug)]
pub struct LaunchClaimKey {
    pub validator_id: Option<String>,
    pub key: String,
}

#[derive(Debug)]
pub struct LaunchInfo {
    pub include_mark: bool,
    pub phase: LaunchPhase,
    pub application_id: Option<String>,
}

#[derive(Debug)]
pub struct LaunchInfoData {
    pub phase: LaunchPhase,
    pub application_id: Option<String>,
    pub status: Option<LaunchStatus>,
    pub mark: Option<String>,
}

#[derive(Debug)]
pub struct CoreNICApplicationInfo {
    pub info_type: Option<String>,
    pub info: String,
}

#[derive(Debug)]
pub struct LaunchCreate {
    pub phase: LaunchPhase,
    pub code_mark: Vec<CodeMark>,
    pub signed_mark: Option<String>,
    pub create_type: LaunchCreateType,
    pub notices: Vec<Notice>,
    pub core_nic: Vec<CoreNICApplicationInfo>,
}

#[derive(Debug)]
pub enum LaunchCreateType {
    Application,
    Registration,
}

#[derive(Debug)]
pub struct LaunchUpdate {
    pub phase: LaunchPhase,
    pub application_id: Option<String>,
}

#[derive(Debug)]
pub struct LaunchCreateData {
    pub phase: LaunchPhase,
    pub application_id: Option<String>,
}

#[derive(Debug)]
pub struct CodeMark {
    pub code: Option<String>,
    pub validator: Option<String>,
    pub mark: Option<String>,
}

#[derive(Debug)]
pub struct Notice {
    pub notice_id: String,
    pub validator: Option<String>,
    pub not_after: DateTime<Utc>,
    pub accepted_date: DateTime<Utc>,
}

#[derive(Debug)]
pub struct LaunchPhase {
    pub phase_type: PhaseType,
    pub phase_name: Option<String>,
}

#[derive(Debug, PartialEq)]
pub enum PhaseType {
    Sunrise,
    Landrush,
    Claims,
    Open,
    Custom,
}

#[derive(Debug)]
pub struct LaunchStatus {
    pub status_type: LaunchStatusType,
    pub status_name: Option<String>,
    pub message: Option<String>,
}

#[derive(Debug, PartialEq)]
pub enum LaunchStatusType {
    PendingValidation,
    Validated,
    Invalid,
    PendingAllocation,
    Allocated,
    Rejected,
    Custom,
}