gmsol_model/params/
position.rs1use typed_builder::TypedBuilder;
2
3#[derive(Debug, Clone, Copy, TypedBuilder)]
5pub struct PositionParams<T> {
6 min_position_size_usd: T,
7 min_collateral_value: T,
8 min_collateral_factor: T,
9 max_positive_position_impact_factor: T,
10 max_negative_position_impact_factor: T,
11 max_position_impact_factor_for_liquidations: T,
12}
13
14impl<T> PositionParams<T> {
15 pub fn new(
17 min_position_size_usd: T,
18 min_collateral_value: T,
19 min_collateral_factor: T,
20 max_positive_position_impact_factor: T,
21 max_negative_position_impact_factor: T,
22 max_position_impact_factor_for_liquidations: T,
23 ) -> Self {
24 Self {
25 min_position_size_usd,
26 min_collateral_value,
27 min_collateral_factor,
28 max_positive_position_impact_factor,
29 max_negative_position_impact_factor,
30 max_position_impact_factor_for_liquidations,
31 }
32 }
33
34 pub fn min_position_size_usd(&self) -> &T {
36 &self.min_position_size_usd
37 }
38
39 pub fn min_collateral_value(&self) -> &T {
41 &self.min_collateral_value
42 }
43
44 pub fn min_collateral_factor(&self) -> &T {
46 &self.min_collateral_factor
47 }
48
49 pub fn max_positive_position_impact_factor(&self) -> &T {
51 &self.max_positive_position_impact_factor
52 }
53
54 pub fn max_negative_position_impact_factor(&self) -> &T {
56 &self.max_negative_position_impact_factor
57 }
58
59 pub fn max_position_impact_factor_for_liquidations(&self) -> &T {
61 &self.max_position_impact_factor_for_liquidations
62 }
63}
64
65#[derive(Debug, Clone, Copy, TypedBuilder)]
67pub struct PositionImpactDistributionParams<T> {
68 distribute_factor: T,
69 min_position_impact_pool_amount: T,
70}
71
72impl<T> PositionImpactDistributionParams<T> {
73 pub fn distribute_factor(&self) -> &T {
75 &self.distribute_factor
76 }
77
78 pub fn min_position_impact_pool_amount(&self) -> &T {
80 &self.min_position_impact_pool_amount
81 }
82}