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 }