func (msg MsgEditFeed) ValidateBasic() error {
	if err := ValidateFeedName(msg.FeedName); err != nil {
		return err
	}
	if err := ValidateDescription(msg.Description); err != nil {
		return err
	}
	if msg.LatestHistory != 0 {
		if err := ValidateLatestHistory(msg.LatestHistory); err != nil {
			return err
		}
	}
	if err := ValidateServiceFeeCap(msg.ServiceFeeCap); err != nil {
		return err
	}
	if msg.Timeout != 0 && msg.RepeatedFrequency != 0 {
		if err := ValidateTimeout(msg.Timeout, msg.RepeatedFrequency); err != nil {
			return err
		}
	}
	if msg.ResponseThreshold != 0 {
		if err := ValidateResponseThreshold(msg.ResponseThreshold, len(msg.Providers)); err != nil {
			return err
		}
	}
	return ValidateCreator(msg.Creator)
}
ValidateBasic implements Msg.
package types
import (
	sdk "github.com/cosmos/cosmos-sdk/types"
	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
)
const (
	TypeMsgCreateFeed = "create_feed"  
	TypeMsgStartFeed  = "start_feed"   
	TypeMsgPauseFeed  = "pause_feed"   
	TypeMsgEditFeed   = "edit_feed"    
	DoNotModify = "do-not-modify"
)
var (
	_ sdk.Msg = &MsgCreateFeed{}
	_ sdk.Msg = &MsgStartFeed{}
	_ sdk.Msg = &MsgPauseFeed{}
	_ sdk.Msg = &MsgEditFeed{}
)
func (msg MsgCreateFeed) Route() string {
	return RouterKey
}
func (msg MsgCreateFeed) Type() string {
	return TypeMsgCreateFeed
}
func (msg MsgCreateFeed) ValidateBasic() error {
	if err := ValidateFeedName(msg.FeedName); err != nil {
		return err
	}
	if err := ValidateDescription(msg.Description); err != nil {
		return err
	}
	if err := ValidateServiceName(msg.ServiceName); err != nil {
		return err
	}
	if err := ValidateLatestHistory(msg.LatestHistory); err != nil {
		return err
	}
	if err := ValidateTimeout(msg.Timeout, msg.RepeatedFrequency); err != nil {
		return err
	}
	if len(msg.Providers) == 0 {
		return sdkerrors.Wrapf(sdkerrors.ErrInvalidAddress, "providers missing")
	}
	if err := ValidateAggregateFunc(msg.AggregateFunc); err != nil {
		return err
	}
	if !msg.ServiceFeeCap.IsValid() {
		return sdkerrors.Wrapf(ErrInvalidServiceFeeCap, msg.ServiceFeeCap.String())
	}
	if err := ValidateCreator(msg.Creator); err != nil {
		return err
	}
	return ValidateResponseThreshold(msg.ResponseThreshold, len(msg.Providers))
}
func (msg MsgCreateFeed) GetSignBytes() []byte {
	if len(msg.Providers) == 0 {
		msg.Providers = nil
	}
	if msg.ServiceFeeCap.Empty() {
		msg.ServiceFeeCap = nil
	}
	return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg))
}
func (msg MsgCreateFeed) GetSigners() []sdk.AccAddress {
	creator, err := sdk.AccAddressFromBech32(msg.Creator)
	if err != nil {
		panic(err)
	}
	return []sdk.AccAddress{creator}
}
func (msg MsgStartFeed) Route() string {
	return RouterKey
}
func (msg MsgStartFeed) Type() string {
	return TypeMsgStartFeed
}
func (msg MsgStartFeed) ValidateBasic() error {
	if err := ValidateCreator(msg.Creator); err != nil {
		return err
	}
	return ValidateFeedName(msg.FeedName)
}
func (msg MsgStartFeed) GetSignBytes() []byte {
	return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg))
}
func (msg MsgStartFeed) GetSigners() []sdk.AccAddress {
	creator, err := sdk.AccAddressFromBech32(msg.Creator)
	if err != nil {
		panic(err)
	}
	return []sdk.AccAddress{creator}
}
func (msg MsgPauseFeed) Route() string {
	return RouterKey
}
func (msg MsgPauseFeed) Type() string {
	return TypeMsgPauseFeed
}
func (msg MsgPauseFeed) ValidateBasic() error {
	if err := ValidateCreator(msg.Creator); err != nil {
		return err
	}
	return ValidateFeedName(msg.FeedName)
}
func (msg MsgPauseFeed) GetSignBytes() []byte {
	return sdk.MustSortJSON(ModuleCdc.MustMarshalJSON(&msg))
}
func (msg MsgPauseFeed) GetSigners() []sdk.AccAddress {
	creator, err := sdk.AccAddressFromBech32(msg.Creator)
	if err != nil {
		panic(err)
	}
	return []sdk.AccAddress{creator}
}
func (msg MsgEditFeed) Route() string {
	return RouterKey
}
func (msg MsgEditFeed) Type() string {
	return TypeMsgEditFeed
}