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

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.wrappers_pb2
import sys
import typing
import yandex.cloud.cic.v1.common.lag_allocation_settings_pb2
import yandex.cloud.cic.v1.common.transceiver_type_pb2

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class TrunkConnection(google.protobuf.message.Message):
    """A TrunkConnection resource."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _CapacityEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[TrunkConnection._Capacity.ValueType], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        CAPACITY_UNSPECIFIED: TrunkConnection._Capacity.ValueType  # 0
        CAPACITY_50_MBPS: TrunkConnection._Capacity.ValueType  # 1
        CAPACITY_100_MBPS: TrunkConnection._Capacity.ValueType  # 2
        CAPACITY_200_MBPS: TrunkConnection._Capacity.ValueType  # 3
        CAPACITY_300_MBPS: TrunkConnection._Capacity.ValueType  # 4
        CAPACITY_400_MBPS: TrunkConnection._Capacity.ValueType  # 5
        CAPACITY_500_MBPS: TrunkConnection._Capacity.ValueType  # 6
        CAPACITY_1_GBPS: TrunkConnection._Capacity.ValueType  # 7
        CAPACITY_2_GBPS: TrunkConnection._Capacity.ValueType  # 8
        CAPACITY_3_GBPS: TrunkConnection._Capacity.ValueType  # 9
        CAPACITY_4_GBPS: TrunkConnection._Capacity.ValueType  # 10
        CAPACITY_5_GBPS: TrunkConnection._Capacity.ValueType  # 11
        CAPACITY_10_GBPS: TrunkConnection._Capacity.ValueType  # 12
        CAPACITY_20_GBPS: TrunkConnection._Capacity.ValueType  # 13
        CAPACITY_30_GBPS: TrunkConnection._Capacity.ValueType  # 14
        CAPACITY_40_GBPS: TrunkConnection._Capacity.ValueType  # 15
        CAPACITY_50_GBPS: TrunkConnection._Capacity.ValueType  # 16
        CAPACITY_100_GBPS: TrunkConnection._Capacity.ValueType  # 17

    class Capacity(_Capacity, metaclass=_CapacityEnumTypeWrapper): ...
    CAPACITY_UNSPECIFIED: TrunkConnection.Capacity.ValueType  # 0
    CAPACITY_50_MBPS: TrunkConnection.Capacity.ValueType  # 1
    CAPACITY_100_MBPS: TrunkConnection.Capacity.ValueType  # 2
    CAPACITY_200_MBPS: TrunkConnection.Capacity.ValueType  # 3
    CAPACITY_300_MBPS: TrunkConnection.Capacity.ValueType  # 4
    CAPACITY_400_MBPS: TrunkConnection.Capacity.ValueType  # 5
    CAPACITY_500_MBPS: TrunkConnection.Capacity.ValueType  # 6
    CAPACITY_1_GBPS: TrunkConnection.Capacity.ValueType  # 7
    CAPACITY_2_GBPS: TrunkConnection.Capacity.ValueType  # 8
    CAPACITY_3_GBPS: TrunkConnection.Capacity.ValueType  # 9
    CAPACITY_4_GBPS: TrunkConnection.Capacity.ValueType  # 10
    CAPACITY_5_GBPS: TrunkConnection.Capacity.ValueType  # 11
    CAPACITY_10_GBPS: TrunkConnection.Capacity.ValueType  # 12
    CAPACITY_20_GBPS: TrunkConnection.Capacity.ValueType  # 13
    CAPACITY_30_GBPS: TrunkConnection.Capacity.ValueType  # 14
    CAPACITY_40_GBPS: TrunkConnection.Capacity.ValueType  # 15
    CAPACITY_50_GBPS: TrunkConnection.Capacity.ValueType  # 16
    CAPACITY_100_GBPS: TrunkConnection.Capacity.ValueType  # 17

    @typing.final
    class LabelsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing.Literal["key", b"key", "value", b"value"]) -> None: ...

    @typing.final
    class PartnerJointInfo(google.protobuf.message.Message):
        """Config of trunkConnection that is deployed on partner joint."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        SERVICE_KEY_FIELD_NUMBER: builtins.int
        PARTNER_ID_FIELD_NUMBER: builtins.int
        service_key: builtins.str
        """Reserved for future using;"""
        @property
        def partner_id(self) -> google.protobuf.wrappers_pb2.StringValue:
            """ID of partner that the trunkConnection is deployed on.
            Optional.
            If is not set scheduler selects it by himself.
            """

        def __init__(
            self,
            *,
            service_key: builtins.str = ...,
            partner_id: google.protobuf.wrappers_pb2.StringValue | None = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["partner_id", b"partner_id"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["partner_id", b"partner_id", "service_key", b"service_key"]) -> None: ...

    @typing.final
    class SinglePortDirectJoint(google.protobuf.message.Message):
        """Config of trunkConnection that is deployed on single port."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TRANSCEIVER_TYPE_FIELD_NUMBER: builtins.int
        PORT_NAME_FIELD_NUMBER: builtins.int
        ACCESS_DEVICE_NAME_FIELD_NUMBER: builtins.int
        transceiver_type: yandex.cloud.cic.v1.common.transceiver_type_pb2.TransceiverType.ValueType
        """Type of transceiver that the trunkConnection is deployed on."""
        access_device_name: builtins.str
        """Device name which is set in LLDP message."""
        @property
        def port_name(self) -> google.protobuf.wrappers_pb2.StringValue:
            """Name of port that the trunkConnection is deployed on."""

        def __init__(
            self,
            *,
            transceiver_type: yandex.cloud.cic.v1.common.transceiver_type_pb2.TransceiverType.ValueType = ...,
            port_name: google.protobuf.wrappers_pb2.StringValue | None = ...,
            access_device_name: builtins.str = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["port_name", b"port_name"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["access_device_name", b"access_device_name", "port_name", b"port_name", "transceiver_type", b"transceiver_type"]) -> None: ...

    @typing.final
    class LagDirectJoint(google.protobuf.message.Message):
        """Config of trunkConnection that is deployed on lag."""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TRANSCEIVER_TYPE_FIELD_NUMBER: builtins.int
        LAG_ALLOCATION_SETTINGS_FIELD_NUMBER: builtins.int
        ACCESS_DEVICE_NAME_FIELD_NUMBER: builtins.int
        transceiver_type: yandex.cloud.cic.v1.common.transceiver_type_pb2.TransceiverType.ValueType
        """Type of transceiver that the trunkConnection is deployed on."""
        access_device_name: builtins.str
        """Device name which is set in LLDP message."""
        @property
        def lag_allocation_settings(self) -> yandex.cloud.cic.v1.common.lag_allocation_settings_pb2.LagAllocationSettings:
            """LAG allocation settings that the trunkConnection is deployed on."""

        def __init__(
            self,
            *,
            transceiver_type: yandex.cloud.cic.v1.common.transceiver_type_pb2.TransceiverType.ValueType = ...,
            lag_allocation_settings: yandex.cloud.cic.v1.common.lag_allocation_settings_pb2.LagAllocationSettings | None = ...,
            access_device_name: builtins.str = ...,
        ) -> None: ...
        def HasField(self, field_name: typing.Literal["lag_allocation_settings", b"lag_allocation_settings"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing.Literal["access_device_name", b"access_device_name", "lag_allocation_settings", b"lag_allocation_settings", "transceiver_type", b"transceiver_type"]) -> None: ...

    ID_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    FOLDER_ID_FIELD_NUMBER: builtins.int
    REGION_ID_FIELD_NUMBER: builtins.int
    SINGLE_PORT_DIRECT_JOINT_FIELD_NUMBER: builtins.int
    LAG_DIRECT_JOINT_FIELD_NUMBER: builtins.int
    PARTNER_JOINT_INFO_FIELD_NUMBER: builtins.int
    POINT_OF_PRESENCE_ID_FIELD_NUMBER: builtins.int
    CAPACITY_FIELD_NUMBER: builtins.int
    LABELS_FIELD_NUMBER: builtins.int
    id: builtins.str
    """ID of the trunkConnection."""
    name: builtins.str
    """Name of the trunkConnection.
    The name must be unique within the folder.
    Value must match the regular expression ``\\|[a-zA-Z]([-_a-zA-Z0-9]{0,61}[a-zA-Z0-9])?``.
    """
    description: builtins.str
    """Optional description of the trunkConnection. 0-256 characters long."""
    folder_id: builtins.str
    """ID of the folder that the trunkConnection belongs to."""
    region_id: builtins.str
    """ID of the region that the trunkConnection belongs to."""
    capacity: global___TrunkConnection.Capacity.ValueType
    """Capacity of the trunkConnection"""
    @property
    def single_port_direct_joint(self) -> global___TrunkConnection.SinglePortDirectJoint: ...
    @property
    def lag_direct_joint(self) -> global___TrunkConnection.LagDirectJoint: ...
    @property
    def partner_joint_info(self) -> global___TrunkConnection.PartnerJointInfo: ...
    @property
    def point_of_presence_id(self) -> google.protobuf.wrappers_pb2.StringValue:
        """ID of pointOfPresence that the trunkConnection is deployed on.
        Optional.
        If is not set scheduler selects it by himself.
        """

    @property
    def labels(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """Resource labels, `key:value` pairs.
        No more than 64 per resource.
        The maximum string length in characters for each value is 63.
        Each value must match the regular expression `[-_0-9a-z]*`.
        The string length in characters for each key must be 1-63.
        Each key must match the regular expression `[a-z][-_0-9a-z]*`.
        """

    def __init__(
        self,
        *,
        id: builtins.str = ...,
        name: builtins.str = ...,
        description: builtins.str = ...,
        folder_id: builtins.str = ...,
        region_id: builtins.str = ...,
        single_port_direct_joint: global___TrunkConnection.SinglePortDirectJoint | None = ...,
        lag_direct_joint: global___TrunkConnection.LagDirectJoint | None = ...,
        partner_joint_info: global___TrunkConnection.PartnerJointInfo | None = ...,
        point_of_presence_id: google.protobuf.wrappers_pb2.StringValue | None = ...,
        capacity: global___TrunkConnection.Capacity.ValueType = ...,
        labels: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["joint", b"joint", "lag_direct_joint", b"lag_direct_joint", "partner_joint_info", b"partner_joint_info", "point_of_presence_id", b"point_of_presence_id", "single_port_direct_joint", b"single_port_direct_joint"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["capacity", b"capacity", "description", b"description", "folder_id", b"folder_id", "id", b"id", "joint", b"joint", "labels", b"labels", "lag_direct_joint", b"lag_direct_joint", "name", b"name", "partner_joint_info", b"partner_joint_info", "point_of_presence_id", b"point_of_presence_id", "region_id", b"region_id", "single_port_direct_joint", b"single_port_direct_joint"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["joint", b"joint"]) -> typing.Literal["single_port_direct_joint", "lag_direct_joint", "partner_joint_info"] | None: ...

global___TrunkConnection = TrunkConnection
