func (c *CSpecs) Types() []ContractType {
	types := make([]ContractType, len(c.specs))
	index := 0
	for k := range c.specs {
		types[index] = k
		index++
	}
	return types
}
Types returns a list of available types in CSpecs specs
package contractspecs
import (
	"sync"
)
const (
	InvalidContractType ContractType = iota
	CivilTcrContractType
	NewsroomContractType
	CivilPLCRVotingContractType
	CVLTokenContractType
	CivilParameterizerContractType
	CivilGovernmentContractType
	MultiSigWalletContractType
	MultiSigWalletFactoryContractType
	NewsroomFactoryType
)
type ContractSpecs struct {
	name        string
	simpleName  string
	abiStr      string
	importPath  string
	typePackage string
}
func (c *ContractSpecs) Name() string {
	return c.name
}
func (c *ContractSpecs) SimpleName() string {
	return c.simpleName
}
func (c *ContractSpecs) AbiStr() string {
	return c.abiStr
}
func (c *ContractSpecs) ImportPath() string {
	return c.importPath
}
func (c *ContractSpecs) TypePackage() string {
	return c.typePackage
}
type CSpecs struct {
	specs map[ContractType]*ContractSpecs
}
func (c *CSpecs) Get(t ContractType) (*ContractSpecs, bool) {
	specs, ok := c.specs[t]
	return specs, ok
}