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
130
131
use alloc::boxed::Box;
use crate::{
system::auction::{
DelegationRate, ValidatorWeights, ARG_AMOUNT, ARG_DELEGATION_RATE, ARG_DELEGATOR,
ARG_ERA_END_TIMESTAMP_MILLIS, ARG_PUBLIC_KEY, ARG_REWARD_FACTORS, ARG_VALIDATOR,
ARG_VALIDATOR_PUBLIC_KEY, METHOD_ACTIVATE_BID, METHOD_ADD_BID, METHOD_DELEGATE,
METHOD_DISTRIBUTE, METHOD_GET_ERA_VALIDATORS, METHOD_READ_ERA_ID, METHOD_RUN_AUCTION,
METHOD_SLASH, METHOD_UNDELEGATE, METHOD_WITHDRAW_BID,
},
CLType, CLTyped, EntryPoint, EntryPointAccess, EntryPointType, EntryPoints, Parameter,
PublicKey, U512,
};
pub fn auction_entry_points() -> EntryPoints {
let mut entry_points = EntryPoints::new();
let entry_point = EntryPoint::new(
METHOD_GET_ERA_VALIDATORS,
vec![],
Option::<ValidatorWeights>::cl_type(),
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_ADD_BID,
vec![
Parameter::new(ARG_PUBLIC_KEY, PublicKey::cl_type()),
Parameter::new(ARG_DELEGATION_RATE, DelegationRate::cl_type()),
Parameter::new(ARG_AMOUNT, U512::cl_type()),
],
U512::cl_type(),
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_WITHDRAW_BID,
vec![
Parameter::new(ARG_PUBLIC_KEY, PublicKey::cl_type()),
Parameter::new(ARG_AMOUNT, U512::cl_type()),
],
U512::cl_type(),
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_DELEGATE,
vec![
Parameter::new(ARG_DELEGATOR, PublicKey::cl_type()),
Parameter::new(ARG_VALIDATOR, PublicKey::cl_type()),
Parameter::new(ARG_AMOUNT, U512::cl_type()),
],
U512::cl_type(),
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_UNDELEGATE,
vec![
Parameter::new(ARG_DELEGATOR, PublicKey::cl_type()),
Parameter::new(ARG_VALIDATOR, PublicKey::cl_type()),
Parameter::new(ARG_AMOUNT, U512::cl_type()),
],
U512::cl_type(),
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_RUN_AUCTION,
vec![Parameter::new(ARG_ERA_END_TIMESTAMP_MILLIS, u64::cl_type())],
CLType::Unit,
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_SLASH,
vec![],
CLType::Unit,
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_DISTRIBUTE,
vec![Parameter::new(
ARG_REWARD_FACTORS,
CLType::Map {
key: Box::new(CLType::PublicKey),
value: Box::new(CLType::U64),
},
)],
CLType::Unit,
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_READ_ERA_ID,
vec![],
CLType::U64,
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
let entry_point = EntryPoint::new(
METHOD_ACTIVATE_BID,
vec![Parameter::new(ARG_VALIDATOR_PUBLIC_KEY, CLType::PublicKey)],
CLType::Unit,
EntryPointAccess::Public,
EntryPointType::Contract,
);
entry_points.add_entry_point(entry_point);
entry_points
}