github.com/fibonacci-chain/fbc@v0.0.0-20231124064014-c7636198c1e9/x/farm/types/params.go (about)

     1  package types
     2  
     3  import (
     4  	"fmt"
     5  	"github.com/fibonacci-chain/fbc/x/common"
     6  
     7  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     8  	"github.com/fibonacci-chain/fbc/x/params"
     9  )
    10  
    11  // Default parameter namespace
    12  const (
    13  	DefaultParamspace        = ModuleName
    14  	defaultQuoteSymbol       = "usdf"
    15  	defaultCreatePoolFee     = "0"
    16  	defaultCreatePoolDeposit = "10"
    17  )
    18  
    19  // Parameter store keys
    20  var (
    21  	KeyQuoteSymbol       = []byte("QuoteSymbol")
    22  	KeyCreatePoolFee     = []byte("CreatePoolFee")
    23  	KeyCreatePoolDeposit = []byte("CreatePoolDeposit")
    24  	keyYieldNativeToken  = []byte("YieldNativeToken")
    25  )
    26  
    27  // ParamKeyTable for farm module
    28  func ParamKeyTable() params.KeyTable {
    29  	return params.NewKeyTable().RegisterParamSet(&Params{})
    30  }
    31  
    32  // Params - used for initializing default parameter for farm at genesis
    33  type Params struct {
    34  	QuoteSymbol       string      `json:"quote_symbol"`
    35  	CreatePoolFee     sdk.SysCoin `json:"create_pool_fee"`
    36  	CreatePoolDeposit sdk.SysCoin `json:"create_pool_deposit"`
    37  	// proposal params
    38  	YieldNativeToken bool `json:"yield_native_token"`
    39  }
    40  
    41  // String implements the stringer interface for Params
    42  func (p Params) String() string {
    43  	return fmt.Sprintf(`Params:
    44    Quote Symbol:								%s
    45    Create Pool Fee:							%s
    46    Create Pool Deposit:						%s
    47    Yield Native Token Enabled:               %v`,
    48  		p.QuoteSymbol, p.CreatePoolFee, p.CreatePoolDeposit, p.YieldNativeToken)
    49  }
    50  
    51  // ParamSetPairs - Implements params.ParamSet
    52  func (p *Params) ParamSetPairs() params.ParamSetPairs {
    53  	return params.ParamSetPairs{
    54  		{Key: KeyQuoteSymbol, Value: &p.QuoteSymbol, ValidatorFn: common.ValidateDenom("quote symbol")},
    55  		{Key: KeyCreatePoolFee, Value: &p.CreatePoolFee, ValidatorFn: common.ValidateSysCoin("create pool fee")},
    56  		{Key: KeyCreatePoolDeposit, Value: &p.CreatePoolDeposit, ValidatorFn: common.ValidateSysCoin("create pool deposit")},
    57  		{Key: keyYieldNativeToken, Value: &p.YieldNativeToken, ValidatorFn: common.ValidateBool("yield native token")},
    58  	}
    59  }
    60  
    61  // DefaultParams defines the parameters for this module
    62  func DefaultParams() Params {
    63  	return Params{
    64  		QuoteSymbol:       defaultQuoteSymbol,
    65  		CreatePoolFee:     sdk.NewDecCoinFromDec(common.NativeToken, sdk.MustNewDecFromStr(defaultCreatePoolFee)),
    66  		CreatePoolDeposit: sdk.NewDecCoinFromDec(common.NativeToken, sdk.MustNewDecFromStr(defaultCreatePoolDeposit)),
    67  		YieldNativeToken:  false,
    68  	}
    69  }