func (msg IDATransferMsg) GetConsumeAmount() types.Coin {
	return types.NewCoinFromInt64(0)
}
GetConsumeAmount - implements types.Msg
package types
import (
	"fmt"
	"unicode/utf8"
	sdk "github.com/cosmos/cosmos-sdk/types"
	"github.com/lino-network/lino/types"
)
type DeveloperRegisterMsg struct {
	Username    types.AccountKey `json:"username"`
	Website     string           `json:"website"`
	Description string           `json:"description"`
	AppMetaData string           `json:"app_meta_data"`
}
var _ types.Msg = DeveloperRegisterMsg{}
func NewDeveloperRegisterMsg(developer string, website string, description string, appMetaData string) DeveloperRegisterMsg {
	return DeveloperRegisterMsg{
		Username:    types.AccountKey(developer),
		Website:     website,
		Description: description,
		AppMetaData: appMetaData,
	}
}
func (msg DeveloperRegisterMsg) Route() string { return RouterKey }
func (msg DeveloperRegisterMsg) Type() string { return "DeveloperRegisterMsg" }
func (msg DeveloperRegisterMsg) ValidateBasic() sdk.Error {
	if !msg.Username.IsValid() {
		return ErrInvalidUsername()
	}
	if len(msg.Website) > types.MaximumLengthOfDeveloperWebsite {
		return ErrInvalidWebsite()
	}
	if utf8.RuneCountInString(msg.Description) > types.MaximumLengthOfDeveloperDesctiption {
		return ErrInvalidDescription()
	}
	if utf8.RuneCountInString(msg.AppMetaData) > types.MaximumLengthOfAppMetadata {
		return ErrInvalidAppMetadata()
	}
	return nil
}
func (msg DeveloperRegisterMsg) String() string {
	return fmt.Sprintf("DeveloperRegisterMsg{%s}", msg.Username)
}
func (msg DeveloperRegisterMsg) GetPermission() types.Permission {
	return types.TransactionPermission
}
func (msg DeveloperRegisterMsg) GetSignBytes() []byte {
	return getSignBytes(msg)
}
func (msg DeveloperRegisterMsg) GetSigners() []sdk.AccAddress {
	return []sdk.AccAddress{sdk.AccAddress(msg.Username)}
}
func (msg DeveloperRegisterMsg) GetConsumeAmount() types.Coin {
	return types.NewCoinFromInt64(0)
}
type DeveloperUpdateMsg struct {
	Username    types.AccountKey `json:"username"`
	Website     string           `json:"website"`
	Description string           `json:"description"`
	AppMetaData string           `json:"app_meta_data"`
}
var _ types.Msg = DeveloperUpdateMsg{}
func NewDeveloperUpdateMsg(developer string, website string, description string, appMetaData string) DeveloperUpdateMsg {
	return DeveloperUpdateMsg{
		Username:    types.AccountKey(developer),
		Website:     website,
		Description: description,
		AppMetaData: appMetaData,
	}
}
func (msg DeveloperUpdateMsg) Route() string { return RouterKey }
func (msg DeveloperUpdateMsg) Type() string { return "DeveloperUpdateMsg" }
func (msg DeveloperUpdateMsg) ValidateBasic() sdk.Error {
	if !msg.Username.IsValid() {
		return ErrInvalidUsername()
	}
	if len(msg.Website) > types.MaximumLengthOfDeveloperWebsite {
		return ErrInvalidWebsite()
	}
	if utf8.RuneCountInString(msg.Description) > types.MaximumLengthOfDeveloperDesctiption {
		return ErrInvalidDescription()
	}
	if utf8.RuneCountInString(msg.AppMetaData) > types.MaximumLengthOfAppMetadata {
		return ErrInvalidAppMetadata()
	}
	return nil
}
func (msg DeveloperUpdateMsg) String() string {
	return fmt.Sprintf(
		"DeveloperUpdateMsg{Username:%v, Website:%v, Description:%v, Metadata:%v}",
		msg.Username, msg.Website, msg.Description, msg.AppMetaData)
}
func (msg DeveloperUpdateMsg) GetPermission() types.Permission {
	return types.TransactionPermission
}
func (msg DeveloperUpdateMsg) GetSignBytes() []byte {
	return getSignBytes(msg)
}
func (msg DeveloperUpdateMsg) GetSigners() []sdk.AccAddress {
	return []sdk.AccAddress{sdk.AccAddress(msg.Username)}
}
func (msg DeveloperUpdateMsg) GetConsumeAmount() types.Coin {
	return types.NewCoinFromInt64(0)
}
type DeveloperRevokeMsg struct {
	Username types.AccountKey `json:"username"`
}
var _ types.Msg = DeveloperRevokeMsg{}
func NewDeveloperRevokeMsg(developer string) DeveloperRevokeMsg {
	return DeveloperRevokeMsg{
		Username: types.AccountKey(developer),
	}
}
func (msg DeveloperRevokeMsg) Route() string { return RouterKey }
func (msg DeveloperRevokeMsg) Type() string { return "DeveloperRevokeMsg" }
func (msg DeveloperRevokeMsg) ValidateBasic() sdk.Error {
	if !msg.Username.IsValid() {
		return ErrInvalidUsername()
	}
	return nil
}
func (msg DeveloperRevokeMsg) String() string {
	return fmt.Sprintf("DeveloperRevokeMsg{Username:%v}", msg.Username)
}
func (msg DeveloperRevokeMsg) GetPermission() types.Permission {
	return types.TransactionPermission
}
func (msg DeveloperRevokeMsg) GetSignBytes() []byte {
	return getSignBytes(msg)
}
func (msg DeveloperRevokeMsg) GetSigners() []sdk.AccAddress {
	return []sdk.AccAddress{sdk.AccAddress(msg.Username)}
}
func (msg DeveloperRevokeMsg) GetConsumeAmount() types.Coin {
	return types.NewCoinFromInt64(0)
}
const (
	IDAPriceMin = 1
	IDAPriceMax = 1000
)
type IDAIssueMsg struct {
	Username types.AccountKey `json:"username"`
	IDAPrice int64 `json:"ida_price"`
}
var _ types.Msg = IDAIssueMsg{}
func (msg IDAIssueMsg) Route() string { return RouterKey }
func (msg IDAIssueMsg) Type() string { return "IDAIssueMsg" }
func (msg IDAIssueMsg) ValidateBasic() sdk.Error {
	if !msg.Username.IsValid() {
		return ErrInvalidUsername()
	}
	if !(msg.IDAPrice >= IDAPriceMin && msg.IDAPrice <= IDAPriceMax) {
		return ErrInvalidIDAPrice()
	}
	return nil
}
func (msg IDAIssueMsg) String() string {
	return fmt.Sprintf("IDAIssueMsg{%s, %d}", msg.Username, msg.IDAPrice)
}
func (msg IDAIssueMsg) GetPermission() types.Permission {
	return types.TransactionPermission
}
func (msg IDAIssueMsg) GetSignBytes() []byte {
	return getSignBytes(msg)
}
func (msg IDAIssueMsg) GetSigners() []sdk.AccAddress {
	return []sdk.AccAddress{sdk.AccAddress(msg.Username)}
}
func (msg IDAIssueMsg) GetConsumeAmount() types.Coin {
	return types.NewCoinFromInt64(0)
}
type IDAMintMsg struct {
	Username types.AccountKey `json:"username"`
	Amount   types.LNO        `json:"amount"`
}
var _ types.Msg = IDAMintMsg{}
func (msg IDAMintMsg) Route() string { return RouterKey }
func (msg IDAMintMsg) Type() string { return "IDAMintMsg" }
func (msg IDAMintMsg) ValidateBasic() sdk.Error {
	if !msg.Username.IsValid() {
		return ErrInvalidUsername()
	}
	_, err := types.LinoToCoin(msg.Amount)
	if err != nil {
		return err
	}
	return nil
}
func (msg IDAMintMsg) String() string {
	return fmt.Sprintf("IDAMintMsg{username:%v, amount:%v}", msg.Username, msg.Amount)
}
func (msg IDAMintMsg) GetPermission() types.Permission {
	return types.TransactionPermission
}
func (msg IDAMintMsg) GetSignBytes() []byte {
	return getSignBytes(msg)
}
func (msg IDAMintMsg) GetSigners() []sdk.AccAddress {
	return []sdk.AccAddress{sdk.AccAddress(msg.Username)}
}
func (msg IDAMintMsg) GetConsumeAmount() types.Coin {
	return types.NewCoinFromInt64(0)
}
type IDATransferMsg struct {
	App    types.AccountKey `json:"app"`
	Amount types.IDAStr     `json:"amount"`
	From   types.AccountKey `json:"from"`
	To     types.AccountKey `json:"to"`
	Signer types.AccountKey `json:"singer"`
	Memo   string           `json:"memo"`
}
var _ types.Msg = IDATransferMsg{}
func (msg IDATransferMsg) Route() string { return RouterKey }
func (msg IDATransferMsg) Type() string { return "IDATransferMsg" }
func (msg IDATransferMsg) ValidateBasic() sdk.Error {
	if len(msg.Memo) > types.MaximumMemoLength {
		return ErrInvalidMemo()
	}
	if !msg.App.IsValid() ||
		!msg.From.IsValid() ||
		!msg.To.IsValid() ||
		!msg.Signer.IsValid() {
		return ErrInvalidUsername()
	}
	if msg.From == msg.To {
		return ErrIDATransferSelf()
	}
	if !(msg.From == msg.App || msg.To == msg.App) {
		return ErrInvalidTransferTarget()
	}
	_, err := msg.Amount.ToMiniIDA()
	if err != nil {
		return err
	}
	return nil
}
func (msg IDATransferMsg) String() string {
	return fmt.Sprintf("IDATransferMsg{%v, %v, %v, %v}", msg.App, msg.Amount, msg.From, msg.To)
}
func (msg IDATransferMsg) GetPermission() types.Permission {
	return types.AppOrAffiliatedPermission
}
func (msg IDATransferMsg) GetSignBytes() []byte {
	return getSignBytes(msg)
}
func (msg IDATransferMsg) GetSigners() []sdk.AccAddress {
	return []sdk.AccAddress{sdk.AccAddress(msg.Signer)}
}