package nativenames

// Names of all native contracts.
const (
	Management  = "ContractManagement"
	Ledger      = "LedgerContract"
	Tutus       = "Tutus"
	Lub         = "Lub"
	Policy      = "PolicyContract"
	Oracle      = "OracleContract"
	Designation = "RoleManagement"
	Notary      = "Notary"
	CryptoLib   = "CryptoLib"
	StdLib      = "StdLib"
	Treasury     = "Treasury"
	Vita         = "Vita"
	RoleRegistry = "RoleRegistry"
	VTS          = "VTS"
	Federation   = "Federation"
	Lex          = "Lex"
	Eligere      = "Eligere"
	Scire        = "Scire"
	Salus        = "Salus"
	Sese         = "Sese"
	Tribute = "Tribute"
	Opus    = "Opus"
	Palam      = "Palam"
	Pons       = "Pons"
	Collocatio   = "Collocatio"
	Annos        = "Annos"
	Ancora = "Ancora"
)

// All contains the list of all native contract names ordered by the contract ID.
var All = []string{
	Management,
	StdLib,
	CryptoLib,
	Ledger,
	Tutus,
	Lub,
	Policy,
	Designation,
	Oracle,
	Notary,
	Treasury,
	Vita,
	RoleRegistry,
	VTS,
	Federation,
	Lex,
	Eligere,
	Scire,
	Salus,
	Sese,
	Tribute,
	Opus,
	Palam,
	Pons,
	Collocatio,
	Annos,
	Ancora,
}

// IsValid checks if the name is a valid native contract's name.
func IsValid(name string) bool {
	return name == Management ||
		name == Ledger ||
		name == Tutus ||
		name == Lub ||
		name == Policy ||
		name == Oracle ||
		name == Designation ||
		name == Notary ||
		name == CryptoLib ||
		name == StdLib ||
		name == Treasury ||
		name == Vita ||
		name == RoleRegistry ||
		name == VTS ||
		name == Federation ||
		name == Lex ||
		name == Eligere ||
		name == Scire ||
		name == Salus ||
		name == Sese ||
		name == Tribute ||
		name == Opus ||
		name == Palam ||
		name == Pons ||
		name == Collocatio ||
		name == Annos ||
		name == Ancora
}
