# Path: grafeas/grafeas_v1/types/common.py
# class NoteKind(proto.Enum):
# class RelatedUrl(proto.Message):
# class Signature(proto.Message):
# class Envelope(proto.Message):
# class EnvelopeSignature(proto.Message):
#     NOTE_KIND_UNSPECIFIED = 0
#     VULNERABILITY = 1
#     BUILD = 2
#     IMAGE = 3
#     PACKAGE = 4
#     DEPLOYMENT = 5
#     DISCOVERY = 6
#     ATTESTATION = 7
#     UPGRADE = 8
#     COMPLIANCE = 9
#     DSSE_ATTESTATION = 10
# 
# Path: grafeas/grafeas_v1/types/cvss.py
# class CVSSv3(proto.Message):
#     class AttackVector(proto.Enum):
#     class AttackComplexity(proto.Enum):
#     class PrivilegesRequired(proto.Enum):
#     class UserInteraction(proto.Enum):
#     class Scope(proto.Enum):
#     class Impact(proto.Enum):
# class CVSS(proto.Message):
#     class AttackVector(proto.Enum):
#     class AttackComplexity(proto.Enum):
#     class Authentication(proto.Enum):
#     class PrivilegesRequired(proto.Enum):
#     class UserInteraction(proto.Enum):
#     class Scope(proto.Enum):
#     class Impact(proto.Enum):
#         ATTACK_VECTOR_UNSPECIFIED = 0
#         ATTACK_VECTOR_NETWORK = 1
#         ATTACK_VECTOR_ADJACENT = 2
#         ATTACK_VECTOR_LOCAL = 3
#         ATTACK_VECTOR_PHYSICAL = 4
#         ATTACK_COMPLEXITY_UNSPECIFIED = 0
#         ATTACK_COMPLEXITY_LOW = 1
#         ATTACK_COMPLEXITY_HIGH = 2
#         PRIVILEGES_REQUIRED_UNSPECIFIED = 0
#         PRIVILEGES_REQUIRED_NONE = 1
#         PRIVILEGES_REQUIRED_LOW = 2
#         PRIVILEGES_REQUIRED_HIGH = 3
#         USER_INTERACTION_UNSPECIFIED = 0
#         USER_INTERACTION_NONE = 1
#         USER_INTERACTION_REQUIRED = 2
#         SCOPE_UNSPECIFIED = 0
#         SCOPE_UNCHANGED = 1
#         SCOPE_CHANGED = 2
#         IMPACT_UNSPECIFIED = 0
#         IMPACT_HIGH = 1
#         IMPACT_LOW = 2
#         IMPACT_NONE = 3
#         ATTACK_VECTOR_UNSPECIFIED = 0
#         ATTACK_VECTOR_NETWORK = 1
#         ATTACK_VECTOR_ADJACENT = 2
#         ATTACK_VECTOR_LOCAL = 3
#         ATTACK_VECTOR_PHYSICAL = 4
#         ATTACK_COMPLEXITY_UNSPECIFIED = 0
#         ATTACK_COMPLEXITY_LOW = 1
#         ATTACK_COMPLEXITY_HIGH = 2
#         AUTHENTICATION_UNSPECIFIED = 0
#         AUTHENTICATION_MULTIPLE = 1
#         AUTHENTICATION_SINGLE = 2
#         AUTHENTICATION_NONE = 3
#         PRIVILEGES_REQUIRED_UNSPECIFIED = 0
#         PRIVILEGES_REQUIRED_NONE = 1
#         PRIVILEGES_REQUIRED_LOW = 2
#         PRIVILEGES_REQUIRED_HIGH = 3
#         USER_INTERACTION_UNSPECIFIED = 0
#         USER_INTERACTION_NONE = 1
#         USER_INTERACTION_REQUIRED = 2
#         SCOPE_UNSPECIFIED = 0
#         SCOPE_UNCHANGED = 1
#         SCOPE_CHANGED = 2
#         IMPACT_UNSPECIFIED = 0
#         IMPACT_HIGH = 1
#         IMPACT_LOW = 2
#         IMPACT_NONE = 3
# 
# Path: grafeas/grafeas_v1/types/package.py
# class Architecture(proto.Enum):
# class Distribution(proto.Message):
# class Location(proto.Message):
# class PackageNote(proto.Message):
# class PackageOccurrence(proto.Message):
# class Version(proto.Message):
#     class VersionKind(proto.Enum):
#     ARCHITECTURE_UNSPECIFIED = 0
#     X86 = 1
#     X64 = 2
#         VERSION_KIND_UNSPECIFIED = 0
#         NORMAL = 1
#         MINIMUM = 2
#         MAXIMUM = 3
# 
# Path: grafeas/grafeas_v1/types/severity.py
# class Severity(proto.Enum):
#     SEVERITY_UNSPECIFIED = 0
#     MINIMAL = 1
#     LOW = 2
#     MEDIUM = 3
#     HIGH = 4
#     CRITICAL = 5


import proto  # type: ignore
from google.protobuf import timestamp_pb2  # type: ignore
from grafeas.grafeas_v1.types import common
from grafeas.grafeas_v1.types import cvss
from grafeas.grafeas_v1.types import package
from grafeas.grafeas_v1.types import severity as g_severity
                available.
            fix_available (bool):
                Output only. Whether a fix is available for
                this package.
            package_type (str):
                The type of package (e.g. OS, MAVEN, GO).
            effective_severity (grafeas.grafeas_v1.types.Severity):
                The distro or language system assigned
                severity for this vulnerability when that is
                available and note provider assigned severity
                when it is not available.
        """

        affected_cpe_uri = proto.Field(proto.STRING, number=1,)
        affected_package = proto.Field(proto.STRING, number=2,)
        affected_version = proto.Field(
            proto.MESSAGE, number=3, message=package.Version,
        )
        fixed_cpe_uri = proto.Field(proto.STRING, number=4,)
        fixed_package = proto.Field(proto.STRING, number=5,)
        fixed_version = proto.Field(proto.MESSAGE, number=6, message=package.Version,)
        fix_available = proto.Field(proto.BOOL, number=7,)
        package_type = proto.Field(proto.STRING, number=8,)
        effective_severity = proto.Field(
            proto.ENUM, number=9, enum=g_severity.Severity,
        )

    type_ = proto.Field(proto.STRING, number=1,)
    severity = proto.Field(proto.ENUM, number=2, enum=g_severity.Severity,)
    cvss_score = proto.Field(proto.FLOAT, number=3,)

# Path: grafeas/grafeas_v1/types/common.py
# class NoteKind(proto.Enum):
# class RelatedUrl(proto.Message):
# class Signature(proto.Message):
# class Envelope(proto.Message):
# class EnvelopeSignature(proto.Message):
#     NOTE_KIND_UNSPECIFIED = 0
#     VULNERABILITY = 1
#     BUILD = 2
#     IMAGE = 3
#     PACKAGE = 4
#     DEPLOYMENT = 5
#     DISCOVERY = 6
#     ATTESTATION = 7
#     UPGRADE = 8
#     COMPLIANCE = 9
#     DSSE_ATTESTATION = 10
# 
# Path: grafeas/grafeas_v1/types/cvss.py
# class CVSSv3(proto.Message):
#     class AttackVector(proto.Enum):
#     class AttackComplexity(proto.Enum):
#     class PrivilegesRequired(proto.Enum):
#     class UserInteraction(proto.Enum):
#     class Scope(proto.Enum):
#     class Impact(proto.Enum):
# class CVSS(proto.Message):
#     class AttackVector(proto.Enum):
#     class AttackComplexity(proto.Enum):
#     class Authentication(proto.Enum):
#     class PrivilegesRequired(proto.Enum):
#     class UserInteraction(proto.Enum):
#     class Scope(proto.Enum):
#     class Impact(proto.Enum):
#         ATTACK_VECTOR_UNSPECIFIED = 0
#         ATTACK_VECTOR_NETWORK = 1
#         ATTACK_VECTOR_ADJACENT = 2
#         ATTACK_VECTOR_LOCAL = 3
#         ATTACK_VECTOR_PHYSICAL = 4
#         ATTACK_COMPLEXITY_UNSPECIFIED = 0
#         ATTACK_COMPLEXITY_LOW = 1
#         ATTACK_COMPLEXITY_HIGH = 2
#         PRIVILEGES_REQUIRED_UNSPECIFIED = 0
#         PRIVILEGES_REQUIRED_NONE = 1
#         PRIVILEGES_REQUIRED_LOW = 2
#         PRIVILEGES_REQUIRED_HIGH = 3
#         USER_INTERACTION_UNSPECIFIED = 0
#         USER_INTERACTION_NONE = 1
#         USER_INTERACTION_REQUIRED = 2
#         SCOPE_UNSPECIFIED = 0
#         SCOPE_UNCHANGED = 1
#         SCOPE_CHANGED = 2
#         IMPACT_UNSPECIFIED = 0
#         IMPACT_HIGH = 1
#         IMPACT_LOW = 2
#         IMPACT_NONE = 3
#         ATTACK_VECTOR_UNSPECIFIED = 0
#         ATTACK_VECTOR_NETWORK = 1
#         ATTACK_VECTOR_ADJACENT = 2
#         ATTACK_VECTOR_LOCAL = 3
#         ATTACK_VECTOR_PHYSICAL = 4
#         ATTACK_COMPLEXITY_UNSPECIFIED = 0
#         ATTACK_COMPLEXITY_LOW = 1
#         ATTACK_COMPLEXITY_HIGH = 2
#         AUTHENTICATION_UNSPECIFIED = 0
#         AUTHENTICATION_MULTIPLE = 1
#         AUTHENTICATION_SINGLE = 2
#         AUTHENTICATION_NONE = 3
#         PRIVILEGES_REQUIRED_UNSPECIFIED = 0
#         PRIVILEGES_REQUIRED_NONE = 1
#         PRIVILEGES_REQUIRED_LOW = 2
#         PRIVILEGES_REQUIRED_HIGH = 3
#         USER_INTERACTION_UNSPECIFIED = 0
#         USER_INTERACTION_NONE = 1
#         USER_INTERACTION_REQUIRED = 2
#         SCOPE_UNSPECIFIED = 0
#         SCOPE_UNCHANGED = 1
#         SCOPE_CHANGED = 2
#         IMPACT_UNSPECIFIED = 0
#         IMPACT_HIGH = 1
#         IMPACT_LOW = 2
#         IMPACT_NONE = 3
# 
# Path: grafeas/grafeas_v1/types/package.py
# class Architecture(proto.Enum):
# class Distribution(proto.Message):
# class Location(proto.Message):
# class PackageNote(proto.Message):
# class PackageOccurrence(proto.Message):
# class Version(proto.Message):
#     class VersionKind(proto.Enum):
#     ARCHITECTURE_UNSPECIFIED = 0
#     X86 = 1
#     X64 = 2
#         VERSION_KIND_UNSPECIFIED = 0
#         NORMAL = 1
#         MINIMUM = 2
#         MAXIMUM = 3
# 
# Path: grafeas/grafeas_v1/types/severity.py
# class Severity(proto.Enum):
#     SEVERITY_UNSPECIFIED = 0
#     MINIMAL = 1
#     LOW = 2
#     MEDIUM = 3
#     HIGH = 4
#     CRITICAL = 5


# Path: grafeas/grafeas_v1/types/vulnerability.py
import proto  # type: ignore
from google.protobuf import timestamp_pb2  # type: ignore
from grafeas.grafeas_v1.types import common
from grafeas.grafeas_v1.types import cvss
from grafeas.grafeas_v1.types import package
from grafeas.grafeas_v1.types import severity as g_severity

                available.
            fix_available (bool):
                Output only. Whether a fix is available for
                this package.
            package_type (str):
                The type of package (e.g. OS, MAVEN, GO).
            effective_severity (grafeas.grafeas_v1.types.Severity):
                The distro or language system assigned
                severity for this vulnerability when that is
                available and note provider assigned severity
                when it is not available.
        """

        affected_cpe_uri = proto.Field(proto.STRING, number=1,)
        affected_package = proto.Field(proto.STRING, number=2,)
        affected_version = proto.Field(
            proto.MESSAGE, number=3, message=package.Version,
        )
        fixed_cpe_uri = proto.Field(proto.STRING, number=4,)
        fixed_package = proto.Field(proto.STRING, number=5,)
        fixed_version = proto.Field(proto.MESSAGE, number=6, message=package.Version,)
        fix_available = proto.Field(proto.BOOL, number=7,)
        package_type = proto.Field(proto.STRING, number=8,)
        effective_severity = proto.Field(
            proto.ENUM, number=9, enum=g_severity.Severity,
        )

    type_ = proto.Field(proto.STRING, number=1,)
    severity = proto.Field(proto.ENUM, number=2, enum=g_severity.Severity,)
    cvss_score = proto.Field(proto.FLOAT, number=3,)

    cvssv3 = proto.Field(proto.MESSAGE, number=10, message=cvss.CVSS,)