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 }