package cvss30

// note: this was autogenerated with some manual tweaking

type Cvss30 struct {
	// AttackComplexity              *AttackComplexityType         `json:"attackComplexity,omitempty"`
	// AttackVector                  *AttackVectorType             `json:"attackVector,omitempty"`
	// AvailabilityImpact            *Type                         `json:"availabilityImpact,omitempty"`
	// AvailabilityRequirement       *CiaRequirementType           `json:"availabilityRequirement,omitempty"`
	BaseScore    float64      `json:"baseScore"`
	BaseSeverity SeverityType `json:"baseSeverity"`
	// ConfidentialityImpact         *Type                         `json:"confidentialityImpact,omitempty"`
	// ConfidentialityRequirement    *CiaRequirementType           `json:"confidentialityRequirement,omitempty"`
	// EnvironmentalScore            *float64                      `json:"environmentalScore,omitempty"`
	// EnvironmentalSeverity         *SeverityType                 `json:"environmentalSeverity,omitempty"`
	// ExploitCodeMaturity           *ExploitCodeMaturityType      `json:"exploitCodeMaturity,omitempty"`
	// IntegrityImpact               *Type                         `json:"integrityImpact,omitempty"`
	// IntegrityRequirement          *CiaRequirementType           `json:"integrityRequirement,omitempty"`
	// ModifiedAttackComplexity      *ModifiedAttackComplexityType `json:"modifiedAttackComplexity,omitempty"`
	// ModifiedAttackVector          *ModifiedAttackVectorType     `json:"modifiedAttackVector,omitempty"`
	// ModifiedAvailabilityImpact    *ModifiedType                 `json:"modifiedAvailabilityImpact,omitempty"`
	// ModifiedConfidentialityImpact *ModifiedType                 `json:"modifiedConfidentialityImpact,omitempty"`
	// ModifiedIntegrityImpact       *ModifiedType                 `json:"modifiedIntegrityImpact,omitempty"`
	// ModifiedPrivilegesRequired    *ModifiedType                 `json:"modifiedPrivilegesRequired,omitempty"`
	// ModifiedScope                 *ModifiedScopeType            `json:"modifiedScope,omitempty"`
	// ModifiedUserInteraction       *ModifiedUserInteractionType  `json:"modifiedUserInteraction,omitempty"`
	// PrivilegesRequired            *Type                         `json:"privilegesRequired,omitempty"`
	// RemediationLevel              *RemediationLevelType         `json:"remediationLevel,omitempty"`
	// ReportConfidence              *ConfidenceType               `json:"reportConfidence,omitempty"`
	// Scope                         *ScopeType                    `json:"scope,omitempty"`
	// TemporalScore                 *float64                      `json:"temporalScore,omitempty"`
	// TemporalSeverity              *SeverityType                 `json:"temporalSeverity,omitempty"`
	// UserInteraction               *UserInteractionType          `json:"userInteraction,omitempty"`
	VectorString string `json:"vectorString"`
	Version      string `json:"version"` // CVSS Version
}

// type AttackComplexityType string
//
// const (
//	AttackComplexityTypeHIGH AttackComplexityType = "HIGH"
//	AttackComplexityTypeLOW  AttackComplexityType = "LOW"
//)
//
// type AttackVectorType string
//
// const (
//	AttackVectorTypeADJACENTNETWORK AttackVectorType = "ADJACENT_NETWORK"
//	AttackVectorTypeLOCAL           AttackVectorType = "LOCAL"
//	AttackVectorTypeNETWORK         AttackVectorType = "NETWORK"
//	AttackVectorTypePHYSICAL        AttackVectorType = "PHYSICAL"
//)
//
// type Type string
//
// const (
//	TypeHIGH Type = "HIGH"
//	TypeLOW  Type = "LOW"
//	TypeNONE Type = "NONE"
//)
//
// type CiaRequirementType string
//
// const (
//	CiaRequirementTypeHIGH       CiaRequirementType = "HIGH"
//	CiaRequirementTypeLOW        CiaRequirementType = "LOW"
//	CiaRequirementTypeMEDIUM     CiaRequirementType = "MEDIUM"
//	CiaRequirementTypeNOTDEFINED CiaRequirementType = "NOT_DEFINED"
//)

type SeverityType string

const (
	Critical           SeverityType = "CRITICAL"
	SeverityTypeHIGH   SeverityType = "HIGH"
	SeverityTypeLOW    SeverityType = "LOW"
	SeverityTypeMEDIUM SeverityType = "MEDIUM"
	SeverityTypeNONE   SeverityType = "NONE"
)

//
// type ExploitCodeMaturityType string
//
// const (
//	ExploitCodeMaturityTypeHIGH       ExploitCodeMaturityType = "HIGH"
//	ExploitCodeMaturityTypeNOTDEFINED ExploitCodeMaturityType = "NOT_DEFINED"
//	Functional                        ExploitCodeMaturityType = "FUNCTIONAL"
//	ProofOfConcept                    ExploitCodeMaturityType = "PROOF_OF_CONCEPT"
//	Unproven                          ExploitCodeMaturityType = "UNPROVEN"
//)
//
// type ModifiedAttackComplexityType string
//
// const (
//	ModifiedAttackComplexityTypeHIGH       ModifiedAttackComplexityType = "HIGH"
//	ModifiedAttackComplexityTypeLOW        ModifiedAttackComplexityType = "LOW"
//	ModifiedAttackComplexityTypeNOTDEFINED ModifiedAttackComplexityType = "NOT_DEFINED"
//)
//
// type ModifiedAttackVectorType string
//
// const (
//	ModifiedAttackVectorTypeADJACENTNETWORK ModifiedAttackVectorType = "ADJACENT_NETWORK"
//	ModifiedAttackVectorTypeLOCAL           ModifiedAttackVectorType = "LOCAL"
//	ModifiedAttackVectorTypeNETWORK         ModifiedAttackVectorType = "NETWORK"
//	ModifiedAttackVectorTypeNOTDEFINED      ModifiedAttackVectorType = "NOT_DEFINED"
//	ModifiedAttackVectorTypePHYSICAL        ModifiedAttackVectorType = "PHYSICAL"
//)
//
// type ModifiedType string
//
// const (
//	ModifiedTypeHIGH       ModifiedType = "HIGH"
//	ModifiedTypeLOW        ModifiedType = "LOW"
//	ModifiedTypeNONE       ModifiedType = "NONE"
//	ModifiedTypeNOTDEFINED ModifiedType = "NOT_DEFINED"
//)
//
// type ModifiedScopeType string
//
// const (
//	ModifiedScopeTypeCHANGED    ModifiedScopeType = "CHANGED"
//	ModifiedScopeTypeNOTDEFINED ModifiedScopeType = "NOT_DEFINED"
//	ModifiedScopeTypeUNCHANGED  ModifiedScopeType = "UNCHANGED"
//)
//
// type ModifiedUserInteractionType string
//
// const (
//	ModifiedUserInteractionTypeNONE       ModifiedUserInteractionType = "NONE"
//	ModifiedUserInteractionTypeNOTDEFINED ModifiedUserInteractionType = "NOT_DEFINED"
//	ModifiedUserInteractionTypeREQUIRED   ModifiedUserInteractionType = "REQUIRED"
//)
//
// type RemediationLevelType string
//
// const (
//	OfficialFix                    RemediationLevelType = "OFFICIAL_FIX"
//	RemediationLevelTypeNOTDEFINED RemediationLevelType = "NOT_DEFINED"
//	TemporaryFix                   RemediationLevelType = "TEMPORARY_FIX"
//	Unavailable                    RemediationLevelType = "UNAVAILABLE"
//	Workaround                     RemediationLevelType = "WORKAROUND"
//)
//
// type ConfidenceType string
//
// const (
//	ConfidenceTypeNOTDEFINED ConfidenceType = "NOT_DEFINED"
//	Confirmed                ConfidenceType = "CONFIRMED"
//	Reasonable               ConfidenceType = "REASONABLE"
//	Unknown                  ConfidenceType = "UNKNOWN"
//)
//
// type ScopeType string
//
// const (
//	ScopeTypeCHANGED   ScopeType = "CHANGED"
//	ScopeTypeUNCHANGED ScopeType = "UNCHANGED"
//)
//
// type UserInteractionType string
//
// const (
//	UserInteractionTypeNONE     UserInteractionType = "NONE"
//	UserInteractionTypeREQUIRED UserInteractionType = "REQUIRED"
//)
