github.com/Finschia/finschia-sdk@v0.49.1/x/fswap/types/fswap.go (about)

     1  package types
     2  
     3  import (
     4  	sdk "github.com/Finschia/finschia-sdk/types"
     5  	sdkerrors "github.com/Finschia/finschia-sdk/types/errors"
     6  )
     7  
     8  // ValidateBasic validates the set of Swap
     9  func (s *Swap) ValidateBasic() error {
    10  	if err := sdk.ValidateDenom(s.FromDenom); err != nil {
    11  		return sdkerrors.ErrInvalidRequest.Wrap(err.Error())
    12  	}
    13  
    14  	if err := sdk.ValidateDenom(s.ToDenom); err != nil {
    15  		return sdkerrors.ErrInvalidRequest.Wrap(err.Error())
    16  	}
    17  
    18  	if s.FromDenom == s.ToDenom {
    19  		return sdkerrors.ErrInvalidRequest.Wrap("from denomination cannot be equal to to denomination")
    20  	}
    21  
    22  	if s.AmountCapForToDenom.LT(sdk.OneInt()) {
    23  		return sdkerrors.ErrInvalidRequest.Wrap("amount cannot be less than one")
    24  	}
    25  
    26  	if s.SwapRate.IsZero() {
    27  		return sdkerrors.ErrInvalidRequest.Wrap("swap rate cannot be zero")
    28  	}
    29  
    30  	return nil
    31  }
    32  
    33  // ValidateBasic validates the set of SwapStats
    34  func (s *SwapStats) ValidateBasic() error {
    35  	if s.SwapCount < 0 {
    36  		return ErrInvalidState.Wrap("swap count cannot be negative")
    37  	}
    38  	return nil
    39  }
    40  
    41  // ValidateBasic validates the set of Swapped
    42  func (s *Swapped) ValidateBasic() error {
    43  	if err := validateCoinAmount(s.FromCoinAmount); err != nil {
    44  		return err
    45  	}
    46  	if err := validateCoinAmount(s.ToCoinAmount); err != nil {
    47  		return err
    48  	}
    49  	return nil
    50  }
    51  
    52  func validateCoinAmount(i interface{}) error {
    53  	v, ok := i.(sdk.Coin)
    54  	if !ok {
    55  		return sdkerrors.ErrInvalidCoins.Wrapf("invalid coin amount: %T", i)
    56  	}
    57  	if v.IsNil() {
    58  		return sdkerrors.ErrInvalidCoins.Wrap("coin amount must be not nil")
    59  	}
    60  	if err := v.Validate(); err != nil {
    61  		return sdkerrors.ErrInvalidCoins.Wrap(err.Error())
    62  	}
    63  	return nil
    64  }