code.vegaprotocol.io/vega@v0.79.0/datanode/gateway/graphql/spot_resolver.go (about)

     1  // Copyright (C) 2023 Gobalsky Labs Limited
     2  //
     3  // This program is free software: you can redistribute it and/or modify
     4  // it under the terms of the GNU Affero General Public License as
     5  // published by the Free Software Foundation, either version 3 of the
     6  // License, or (at your option) any later version.
     7  //
     8  // This program is distributed in the hope that it will be useful,
     9  // but WITHOUT ANY WARRANTY; without even the implied warranty of
    10  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    11  // GNU Affero General Public License for more details.
    12  //
    13  // You should have received a copy of the GNU Affero General Public License
    14  // along with this program.  If not, see <http://www.gnu.org/licenses/>.
    15  
    16  package gql
    17  
    18  import (
    19  	"context"
    20  	"errors"
    21  
    22  	"code.vegaprotocol.io/vega/protos/vega"
    23  	types "code.vegaprotocol.io/vega/protos/vega"
    24  )
    25  
    26  type spotResolver VegaResolverRoot
    27  
    28  func (r *spotResolver) BaseAsset(ctx context.Context, obj *vega.Spot) (*vega.Asset, error) {
    29  	return r.r.getAssetByID(ctx, obj.BaseAsset)
    30  }
    31  
    32  func (r *spotResolver) QuoteAsset(ctx context.Context, obj *vega.Spot) (*vega.Asset, error) {
    33  	return r.r.getAssetByID(ctx, obj.QuoteAsset)
    34  }
    35  
    36  type spotProductResolver VegaResolverRoot
    37  
    38  func (r spotProductResolver) BaseAsset(ctx context.Context, obj *vega.SpotProduct) (*vega.Asset, error) {
    39  	return r.r.getAssetByID(ctx, obj.BaseAsset)
    40  }
    41  
    42  func (r spotProductResolver) QuoteAsset(ctx context.Context, obj *vega.SpotProduct) (*vega.Asset, error) {
    43  	return r.r.getAssetByID(ctx, obj.QuoteAsset)
    44  }
    45  
    46  type updateSpotMarketResolver VegaResolverRoot
    47  
    48  func (r updateSpotMarketResolver) UpdateSpotMarketConfiguration(ctx context.Context, obj *vega.UpdateSpotMarket) (*vega.UpdateSpotMarketConfiguration, error) {
    49  	return obj.Changes, nil
    50  }
    51  
    52  type updateSpotMarketConfigurationResolver VegaResolverRoot
    53  
    54  func (r *updateSpotMarketConfigurationResolver) EnableTxReordering(ctx context.Context, obj *types.UpdateSpotMarketConfiguration) (bool, error) {
    55  	return obj.EnableTransactionReordering, nil
    56  }
    57  
    58  // Instrument implements UpdateSpotMarketConfigurationResolver.
    59  func (r *updateSpotMarketConfigurationResolver) Instrument(ctx context.Context, obj *types.UpdateSpotMarketConfiguration) (*UpdateSpotInstrumentConfiguration, error) {
    60  	return &UpdateSpotInstrumentConfiguration{
    61  		Name: obj.Instrument.Name,
    62  		Code: obj.Instrument.Code,
    63  	}, nil
    64  }
    65  
    66  func (r updateSpotMarketConfigurationResolver) PriceMonitoringParameters(ctx context.Context, obj *vega.UpdateSpotMarketConfiguration) (*PriceMonitoringParameters, error) {
    67  	return PriceMonitoringParametersFromProto(obj.PriceMonitoringParameters)
    68  }
    69  
    70  func (r updateSpotMarketConfigurationResolver) TargetStakeParameters(ctx context.Context, obj *vega.UpdateSpotMarketConfiguration) (*TargetStakeParameters, error) {
    71  	return &TargetStakeParameters{
    72  		TimeWindow:    int(obj.TargetStakeParameters.TimeWindow),
    73  		ScalingFactor: obj.TargetStakeParameters.ScalingFactor,
    74  	}, nil
    75  }
    76  
    77  func (r updateSpotMarketConfigurationResolver) RiskParameters(ctx context.Context, obj *vega.UpdateSpotMarketConfiguration) (RiskModel, error) {
    78  	switch model := obj.RiskParameters.(type) {
    79  	case *vega.UpdateSpotMarketConfiguration_Simple:
    80  		return model.Simple, nil
    81  	case *vega.UpdateSpotMarketConfiguration_LogNormal:
    82  		return model.LogNormal, nil
    83  	default:
    84  		return nil, errors.New("unknown risk model")
    85  	}
    86  }
    87  
    88  func (r updateSpotMarketConfigurationResolver) LiquiditySLAParams(ctx context.Context, obj *vega.UpdateSpotMarketConfiguration) (*vega.LiquiditySLAParameters, error) {
    89  	return obj.SlaParams, nil
    90  }
    91  
    92  type newSpotMarketResolver VegaResolverRoot
    93  
    94  func (r *newSpotMarketResolver) EnableTxReordering(ctx context.Context, obj *types.NewSpotMarket) (bool, error) {
    95  	return obj.Changes.EnableTransactionReordering, nil
    96  }
    97  
    98  func (r *newSpotMarketResolver) AllowedSellers(ctx context.Context, obj *types.NewSpotMarket) ([]string, error) {
    99  	return obj.Changes.AllowedSellers, nil
   100  }
   101  
   102  func (r *newSpotMarketResolver) TickSize(_ context.Context, obj *types.NewSpotMarket) (string, error) {
   103  	return obj.Changes.TickSize, nil
   104  }
   105  
   106  func (r newSpotMarketResolver) Instrument(ctx context.Context, obj *vega.NewSpotMarket) (*vega.InstrumentConfiguration, error) {
   107  	return obj.Changes.Instrument, nil
   108  }
   109  
   110  func (r newSpotMarketResolver) PriceDecimalPlaces(ctx context.Context, obj *vega.NewSpotMarket) (int, error) {
   111  	return int(obj.Changes.PriceDecimalPlaces), nil
   112  }
   113  
   114  func (r newSpotMarketResolver) Metadata(ctx context.Context, obj *vega.NewSpotMarket) ([]string, error) {
   115  	return obj.Changes.Metadata, nil
   116  }
   117  
   118  func (r newSpotMarketResolver) PriceMonitoringParameters(ctx context.Context, obj *vega.NewSpotMarket) (*PriceMonitoringParameters, error) {
   119  	return PriceMonitoringParametersFromProto(obj.Changes.PriceMonitoringParameters)
   120  }
   121  
   122  func (r newSpotMarketResolver) TargetStakeParameters(ctx context.Context, obj *vega.NewSpotMarket) (*TargetStakeParameters, error) {
   123  	return &TargetStakeParameters{
   124  		TimeWindow:    int(obj.Changes.TargetStakeParameters.TimeWindow),
   125  		ScalingFactor: obj.Changes.TargetStakeParameters.ScalingFactor,
   126  	}, nil
   127  }
   128  
   129  func (r newSpotMarketResolver) RiskParameters(ctx context.Context, obj *vega.NewSpotMarket) (RiskModel, error) {
   130  	switch model := obj.Changes.RiskParameters.(type) {
   131  	case *vega.NewSpotMarketConfiguration_Simple:
   132  		return model.Simple, nil
   133  	case *vega.NewSpotMarketConfiguration_LogNormal:
   134  		return model.LogNormal, nil
   135  	default:
   136  		return nil, errors.New("unknown risk model")
   137  	}
   138  }
   139  
   140  func (r newSpotMarketResolver) SizeDecimalPlaces(ctx context.Context, obj *vega.NewSpotMarket) (int, error) {
   141  	return int(obj.Changes.SizeDecimalPlaces), nil
   142  }
   143  
   144  func (r newSpotMarketResolver) LiquiditySLAParams(ctx context.Context, obj *vega.NewSpotMarket) (*vega.LiquiditySLAParameters, error) {
   145  	return obj.Changes.SlaParams, nil
   146  }
   147  
   148  func (r newSpotMarketResolver) LiquidityFeeSettings(ctx context.Context, obj *vega.NewSpotMarket) (*vega.LiquidityFeeSettings, error) {
   149  	return obj.Changes.LiquidityFeeSettings, nil
   150  }