func (csp CommunityPoolSpendProposal) ValidateBasic() error {
	err := govtypes.ValidateAbstract(csp)
	if err != nil {
		return err
	}
	if !csp.Amount.IsValid() {
		return ErrInvalidProposalAmount
	}
	if csp.Recipient.Empty() {
		return ErrEmptyProposalRecipient
	}
	return nil
}
ValidateBasic runs basic stateless validity checks
package types
import (
	"fmt"
	"strings"
	govtypes "github.com/Dipper-Labs/Dipper-Protocol/app/v0/gov/types"
	sdk "github.com/Dipper-Labs/Dipper-Protocol/types"
)
const (
	ProposalTypeCommunityPoolSpend = "CommunityPoolSpend"
)
var _ govtypes.Content = CommunityPoolSpendProposal{}
func init() {
	govtypes.RegisterProposalType(ProposalTypeCommunityPoolSpend)
	govtypes.RegisterProposalTypeCodec(CommunityPoolSpendProposal{}, "dip/CommunityPoolSpendProposal")
}
type CommunityPoolSpendProposal struct {
	Title       string         `json:"title" yaml:"title"`
	Description string         `json:"description" yaml:"description"`
	Recipient   sdk.AccAddress `json:"recipient" yaml:"recipient"`
	Amount      sdk.Coins      `json:"amount" yaml:"amount"`
}
func NewCommunityPoolSpendProposal(title, description string, recipient sdk.AccAddress, amount sdk.Coins) CommunityPoolSpendProposal {
	return CommunityPoolSpendProposal{title, description, recipient, amount}
}
func (csp CommunityPoolSpendProposal) GetTitle() string { return csp.Title }
func (csp CommunityPoolSpendProposal) GetDescription() string { return csp.Description }
func (csp CommunityPoolSpendProposal) ProposalRoute() string { return RouterKey }
func (csp CommunityPoolSpendProposal) ProposalType() string { return ProposalTypeCommunityPoolSpend }