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

     1  package types
     2  
     3  import (
     4  	"fmt"
     5  
     6  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     7  
     8  	"github.com/fibonacci-chain/fbc/x/params"
     9  )
    10  
    11  // FeeRate defines swap fee rate
    12  var (
    13  	defaultFeeRate = sdk.NewDecWithPrec(3, 3)
    14  )
    15  
    16  // Default parameter namespace
    17  const (
    18  	DefaultParamspace = ModuleName
    19  
    20  	GenerateTokenType = 2
    21  )
    22  
    23  // Parameter store keys
    24  var (
    25  	KeyFeeRate = []byte("FeeRate")
    26  )
    27  
    28  // ParamKeyTable for swap module
    29  func ParamKeyTable() params.KeyTable {
    30  	return params.NewKeyTable().RegisterParamSet(&Params{})
    31  }
    32  
    33  // Params - used for initializing default parameter for swap at genesis
    34  type Params struct {
    35  	FeeRate sdk.Dec `json:"fee_rate"`
    36  }
    37  
    38  // NewParams creates a new Params object
    39  func NewParams(feeRate sdk.Dec) Params {
    40  	return Params{
    41  		FeeRate: feeRate,
    42  	}
    43  }
    44  
    45  // String implements the stringer interface for Params
    46  func (p Params) String() string {
    47  	return fmt.Sprintf(`Poolswap Params:
    48    TradeFeeRate: %s`, p.FeeRate)
    49  }
    50  
    51  func validateParams(value interface{}) error {
    52  	v, ok := value.(sdk.Dec)
    53  	if !ok {
    54  		return fmt.Errorf("invalid parameter type: %T", value)
    55  	}
    56  
    57  	if v.IsNegative() {
    58  		return fmt.Errorf("fee rate cannot be negative: %s", v)
    59  	}
    60  	if v.GT(sdk.OneDec()) {
    61  		return fmt.Errorf("fee rate too large: %s", v)
    62  	}
    63  	return nil
    64  }
    65  
    66  // ParamSetPairs implements params.ParamSet
    67  func (p *Params) ParamSetPairs() params.ParamSetPairs {
    68  	return params.ParamSetPairs{
    69  		{Key: KeyFeeRate, Value: &p.FeeRate, ValidatorFn: validateParams},
    70  	}
    71  }
    72  
    73  // DefaultParams defines the parameters for this module
    74  func DefaultParams() Params {
    75  	return NewParams(defaultFeeRate)
    76  }