"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""

import builtins
import google.protobuf.descriptor
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _PCITopology:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _PCITopologyEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_PCITopology.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    PCI_TOPOLOGY_UNSPECIFIED: _PCITopology.ValueType  # 0
    PCI_TOPOLOGY_V1: _PCITopology.ValueType  # 1
    PCI_TOPOLOGY_V2: _PCITopology.ValueType  # 2

class PCITopology(_PCITopology, metaclass=_PCITopologyEnumTypeWrapper): ...

PCI_TOPOLOGY_UNSPECIFIED: PCITopology.ValueType  # 0
PCI_TOPOLOGY_V1: PCITopology.ValueType  # 1
PCI_TOPOLOGY_V2: PCITopology.ValueType  # 2
global___PCITopology = PCITopology

@typing.final
class HardwareGeneration(google.protobuf.message.Message):
    """A set of features, specific to a particular Compute hardware generation.
    They are not necessary supported by every host OS or distro, thus they are fixed to an image
    and are applied to all instances created with it as their boot disk image.
    These features significantly determine how the instance is created, thus cannot be changed after the fact.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    LEGACY_FEATURES_FIELD_NUMBER: builtins.int
    GENERATION2_FEATURES_FIELD_NUMBER: builtins.int
    @property
    def legacy_features(self) -> global___LegacyHardwareFeatures: ...
    @property
    def generation2_features(self) -> global___Generation2HardwareFeatures: ...
    def __init__(
        self,
        *,
        legacy_features: global___LegacyHardwareFeatures | None = ...,
        generation2_features: global___Generation2HardwareFeatures | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["features", b"features", "generation2_features", b"generation2_features", "legacy_features", b"legacy_features"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["features", b"features", "generation2_features", b"generation2_features", "legacy_features", b"legacy_features"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["features", b"features"]) -> typing.Literal["legacy_features", "generation2_features"] | None: ...

global___HardwareGeneration = HardwareGeneration

@typing.final
class LegacyHardwareFeatures(google.protobuf.message.Message):
    """A first hardware generation, by default compatible with all legacy images.
    Allows switching to PCI_TOPOLOGY_V2 and back.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    PCI_TOPOLOGY_FIELD_NUMBER: builtins.int
    pci_topology: global___PCITopology.ValueType
    def __init__(
        self,
        *,
        pci_topology: global___PCITopology.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["pci_topology", b"pci_topology"]) -> None: ...

global___LegacyHardwareFeatures = LegacyHardwareFeatures

@typing.final
class Generation2HardwareFeatures(google.protobuf.message.Message):
    """A second hardware generation, which by default assumes PCI_TOPOLOGY_V2
    and UEFI boot (with UEFI related features).
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___Generation2HardwareFeatures = Generation2HardwareFeatures
