/
new_market_resolver.go
98 lines (82 loc) · 3.28 KB
/
new_market_resolver.go
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
// Copyright (c) 2022 Gobalsky Labs Limited
//
// Use of this software is governed by the Business Source License included
// in the LICENSE.DATANODE file and at https://www.mariadb.com/bsl11.
//
// Change Date: 18 months from the later of the date of the first publicly
// available Distribution of this version of the repository, and 25 June 2022.
//
// On the date above, in accordance with the Business Source License, use
// of this software will be governed by version 3 or later of the GNU General
// Public License.
package gql
import (
"context"
"errors"
"strconv"
types "zuluprotocol/zeta/protos/zeta"
)
type newMarketResolver ZetaResolverRoot
func (r *newMarketResolver) Instrument(_ context.Context, obj *types.NewMarket) (*types.InstrumentConfiguration, error) {
return obj.Changes.Instrument, nil
}
func (r *newMarketResolver) DecimalPlaces(_ context.Context, obj *types.NewMarket) (int, error) {
return int(obj.Changes.DecimalPlaces), nil
}
func (r *newMarketResolver) PriceMonitoringParameters(_ context.Context, obj *types.NewMarket) (*PriceMonitoringParameters, error) {
triggers := make([]*PriceMonitoringTrigger, len(obj.Changes.PriceMonitoringParameters.Triggers))
for i, t := range obj.Changes.PriceMonitoringParameters.Triggers {
probability, err := strconv.ParseFloat(t.Probability, 64)
if err != nil {
return nil, err
}
triggers[i] = &PriceMonitoringTrigger{
HorizonSecs: int(t.Horizon),
Probability: probability,
AuctionExtensionSecs: int(t.AuctionExtension),
}
}
return &PriceMonitoringParameters{Triggers: triggers}, nil
}
func (r *newMarketResolver) LiquidityMonitoringParameters(_ context.Context, obj *types.NewMarket) (*LiquidityMonitoringParameters, error) {
params := obj.Changes.LiquidityMonitoringParameters
if params == nil {
return nil, nil
}
lmp := &LiquidityMonitoringParameters{
TriggeringRatio: params.TriggeringRatio,
AuctionExtensionSecs: int(params.AuctionExtension),
}
if params.TargetStakeParameters != nil {
lmp.TargetStakeParameters = &TargetStakeParameters{
TimeWindow: int(params.TargetStakeParameters.TimeWindow),
ScalingFactor: params.TargetStakeParameters.ScalingFactor,
}
}
return lmp, nil
}
func (r *newMarketResolver) PositionDecimalPlaces(_ context.Context, obj *types.NewMarket) (int, error) {
return int(obj.Changes.PositionDecimalPlaces), nil
}
func (r *newMarketResolver) LpPriceRange(_ context.Context, obj *types.NewMarket) (string, error) {
return obj.Changes.LpPriceRange, nil
}
func (r *newMarketResolver) LinearSlippageFactor(_ context.Context, obj *types.NewMarket) (string, error) {
return obj.Changes.LinearSlippageFactor, nil
}
func (r *newMarketResolver) QuadraticSlippageFactor(_ context.Context, obj *types.NewMarket) (string, error) {
return obj.Changes.QuadraticSlippageFactor, nil
}
func (r *newMarketResolver) RiskParameters(_ context.Context, obj *types.NewMarket) (RiskModel, error) {
switch rm := obj.Changes.RiskParameters.(type) {
case *types.NewMarketConfiguration_LogNormal:
return rm.LogNormal, nil
case *types.NewMarketConfiguration_Simple:
return rm.Simple, nil
default:
return nil, errors.New("invalid risk model")
}
}
func (r *newMarketResolver) Metadata(_ context.Context, obj *types.NewMarket) ([]string, error) {
return obj.Changes.Metadata, nil
}