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

     1  package types
     2  
     3  import (
     4  	"fmt"
     5  	"strings"
     6  	"time"
     7  
     8  	sdk "github.com/fibonacci-chain/fbc/libs/cosmos-sdk/types"
     9  	"github.com/fibonacci-chain/fbc/x/common"
    10  	"github.com/fibonacci-chain/fbc/x/params"
    11  )
    12  
    13  const (
    14  	DefaultFeeIssue  = "2500"
    15  	DefaultFeeMint   = "10"
    16  	DefaultFeeBurn   = "10"
    17  	DefaultFeeModify = "0"
    18  	DefaultFeeChown  = "10"
    19  )
    20  
    21  var (
    22  	KeyFeeIssue               = []byte("FeeIssue")
    23  	KeyFeeMint                = []byte("FeeMint")
    24  	KeyFeeBurn                = []byte("FeeBurn")
    25  	KeyFeeModify              = []byte("FeeModify")
    26  	KeyFeeChown               = []byte("FeeChown")
    27  	KeyOwnershipConfirmWindow = []byte("OwnershipConfirmWindow")
    28  )
    29  
    30  var _ params.ParamSet = &Params{}
    31  
    32  // mint parameters
    33  type Params struct {
    34  	FeeIssue               sdk.SysCoin   `json:"issue_fee"`
    35  	FeeMint                sdk.SysCoin   `json:"mint_fee"`
    36  	FeeBurn                sdk.SysCoin   `json:"burn_fee"`
    37  	FeeModify              sdk.SysCoin   `json:"modify_fee"`
    38  	FeeChown               sdk.SysCoin   `json:"transfer_ownership_fee"`
    39  	OwnershipConfirmWindow time.Duration `json:"ownership_confirm_window"`
    40  }
    41  
    42  // ParamKeyTable for auth module
    43  func ParamKeyTable() params.KeyTable {
    44  	return params.NewKeyTable().RegisterParamSet(&Params{})
    45  }
    46  
    47  func validateParams(value interface{}) error {
    48  	return nil
    49  }
    50  
    51  // ParamSetPairs implements the ParamSet interface and returns all the key/value pairs
    52  // pairs of auth module's parameters.
    53  // nolint
    54  func (p *Params) ParamSetPairs() params.ParamSetPairs {
    55  	return params.ParamSetPairs{
    56  		{KeyFeeIssue, &p.FeeIssue, common.ValidateSysCoin("issue fee")},
    57  		{KeyFeeMint, &p.FeeMint, common.ValidateSysCoin("mint fee")},
    58  		{KeyFeeBurn, &p.FeeBurn, common.ValidateSysCoin("burn fee")},
    59  		{KeyFeeModify, &p.FeeModify, common.ValidateSysCoin("modify fee")},
    60  		{KeyFeeChown, &p.FeeChown, common.ValidateSysCoin("change ownership fee")},
    61  		{KeyOwnershipConfirmWindow, &p.OwnershipConfirmWindow, common.ValidateDurationPositive("confirm ownership window")},
    62  	}
    63  }
    64  
    65  // DefaultParams returns a default set of parameters.
    66  func DefaultParams() Params {
    67  	return Params{
    68  		FeeIssue:               sdk.NewDecCoinFromDec(common.NativeToken, sdk.MustNewDecFromStr(DefaultFeeIssue)),
    69  		FeeMint:                sdk.NewDecCoinFromDec(common.NativeToken, sdk.MustNewDecFromStr(DefaultFeeMint)),
    70  		FeeBurn:                sdk.NewDecCoinFromDec(common.NativeToken, sdk.MustNewDecFromStr(DefaultFeeBurn)),
    71  		FeeModify:              sdk.NewDecCoinFromDec(common.NativeToken, sdk.MustNewDecFromStr(DefaultFeeModify)),
    72  		FeeChown:               sdk.NewDecCoinFromDec(common.NativeToken, sdk.MustNewDecFromStr(DefaultFeeChown)),
    73  		OwnershipConfirmWindow: DefaultOwnershipConfirmWindow,
    74  	}
    75  }
    76  
    77  // String implements the stringer interface.
    78  func (p Params) String() string {
    79  	var sb strings.Builder
    80  	sb.WriteString("Params: \n")
    81  	sb.WriteString(fmt.Sprintf("FeeIssue: %s\n", p.FeeIssue))
    82  	sb.WriteString(fmt.Sprintf("FeeMint: %s\n", p.FeeMint))
    83  	sb.WriteString(fmt.Sprintf("FeeBurn: %s\n", p.FeeBurn))
    84  	sb.WriteString(fmt.Sprintf("FeeModify: %s\n", p.FeeModify))
    85  	sb.WriteString(fmt.Sprintf("FeeChown: %s\n", p.FeeChown))
    86  	sb.WriteString(fmt.Sprintf("OwnershipConfirmWindow: %s\n", p.OwnershipConfirmWindow))
    87  	return sb.String()
    88  }