"""
@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.timestamp_pb2
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 _QwakUserStatus:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _QwakUserStatusEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_QwakUserStatus.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    USER_STATUS_INVALID: _QwakUserStatus.ValueType  # 0
    """Default invalid State"""
    USER_STATUS_ACTIVE: _QwakUserStatus.ValueType  # 1
    """Marks the tenant is currently active in Qwak"""
    USER_STATUS_DISABLED: _QwakUserStatus.ValueType  # 2
    """Marks that the tenant is no longer valid"""

class QwakUserStatus(_QwakUserStatus, metaclass=_QwakUserStatusEnumTypeWrapper): ...

USER_STATUS_INVALID: QwakUserStatus.ValueType  # 0
"""Default invalid State"""
USER_STATUS_ACTIVE: QwakUserStatus.ValueType  # 1
"""Marks the tenant is currently active in Qwak"""
USER_STATUS_DISABLED: QwakUserStatus.ValueType  # 2
"""Marks that the tenant is no longer valid"""
global___QwakUserStatus = QwakUserStatus

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

class _QwakUserJobFunctionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_QwakUserJobFunction.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    JOB_FUNCTION_INVALID: _QwakUserJobFunction.ValueType  # 0
    """Default invalid job function"""
    JOB_FUNCTION_DATA_ENGINEER: _QwakUserJobFunction.ValueType  # 1
    """Data engineer"""
    JOB_FUNCTION_DATA_SCIENTIST: _QwakUserJobFunction.ValueType  # 2
    """Data scientist"""
    JOB_FUNCTION_ML_ENGINEER: _QwakUserJobFunction.ValueType  # 3
    """ML engineer"""
    JOB_FUNCTION_DEVOPS: _QwakUserJobFunction.ValueType  # 4
    """Devops"""
    JOB_FUNCTION_SOFTWARE_ENGINEER: _QwakUserJobFunction.ValueType  # 5
    """Software engineer"""

class QwakUserJobFunction(_QwakUserJobFunction, metaclass=_QwakUserJobFunctionEnumTypeWrapper): ...

JOB_FUNCTION_INVALID: QwakUserJobFunction.ValueType  # 0
"""Default invalid job function"""
JOB_FUNCTION_DATA_ENGINEER: QwakUserJobFunction.ValueType  # 1
"""Data engineer"""
JOB_FUNCTION_DATA_SCIENTIST: QwakUserJobFunction.ValueType  # 2
"""Data scientist"""
JOB_FUNCTION_ML_ENGINEER: QwakUserJobFunction.ValueType  # 3
"""ML engineer"""
JOB_FUNCTION_DEVOPS: QwakUserJobFunction.ValueType  # 4
"""Devops"""
JOB_FUNCTION_SOFTWARE_ENGINEER: QwakUserJobFunction.ValueType  # 5
"""Software engineer"""
global___QwakUserJobFunction = QwakUserJobFunction

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

class _QwakUserJobLevelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_QwakUserJobLevel.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    JOB_LEVEL_INVALID: _QwakUserJobLevel.ValueType  # 0
    """Default invalid job level"""
    JOB_LEVEL_INDIVIDUAL_CONTRIBUTOR: _QwakUserJobLevel.ValueType  # 1
    """Individual Contributor"""
    JOB_LEVEL_ARCHITECT: _QwakUserJobLevel.ValueType  # 2
    """Architect"""
    JOB_LEVEL_MANAGER: _QwakUserJobLevel.ValueType  # 3
    """Manager"""
    JOB_LEVEL_DIRECTOR: _QwakUserJobLevel.ValueType  # 4
    """Director"""
    JOB_LEVEL_P_OR_VP: _QwakUserJobLevel.ValueType  # 5
    """P/VP"""
    JOB_LEVEL_C_LEVEL: _QwakUserJobLevel.ValueType  # 6
    """C LEVEL"""

class QwakUserJobLevel(_QwakUserJobLevel, metaclass=_QwakUserJobLevelEnumTypeWrapper): ...

JOB_LEVEL_INVALID: QwakUserJobLevel.ValueType  # 0
"""Default invalid job level"""
JOB_LEVEL_INDIVIDUAL_CONTRIBUTOR: QwakUserJobLevel.ValueType  # 1
"""Individual Contributor"""
JOB_LEVEL_ARCHITECT: QwakUserJobLevel.ValueType  # 2
"""Architect"""
JOB_LEVEL_MANAGER: QwakUserJobLevel.ValueType  # 3
"""Manager"""
JOB_LEVEL_DIRECTOR: QwakUserJobLevel.ValueType  # 4
"""Director"""
JOB_LEVEL_P_OR_VP: QwakUserJobLevel.ValueType  # 5
"""P/VP"""
JOB_LEVEL_C_LEVEL: QwakUserJobLevel.ValueType  # 6
"""C LEVEL"""
global___QwakUserJobLevel = QwakUserJobLevel

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

class _QwakUserKindEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_QwakUserKind.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    USER_KIND_INVALID: _QwakUserKind.ValueType  # 0
    """Invalid user kind"""
    USER_KIND_QWAK_SIMPLE_USER: _QwakUserKind.ValueType  # 1
    """A regular qwak user"""
    USER_KIND_QWAK_ADMIN: _QwakUserKind.ValueType  # 2
    """Qwak administrator"""
    USER_KIND_QWAK_SERVICE_ACCOUNT_CORE: _QwakUserKind.ValueType  # 3
    """A service account core of qwak infrastructure"""
    USER_KIND_QWAK_SERVICE_ACCOUNT_EDGE: _QwakUserKind.ValueType  # 4
    """A service account edge of qwak infrastructure"""
    USER_KIND_QWAK_SUPPORT: _QwakUserKind.ValueType  # 5
    """Qwak support"""

class QwakUserKind(_QwakUserKind, metaclass=_QwakUserKindEnumTypeWrapper): ...

USER_KIND_INVALID: QwakUserKind.ValueType  # 0
"""Invalid user kind"""
USER_KIND_QWAK_SIMPLE_USER: QwakUserKind.ValueType  # 1
"""A regular qwak user"""
USER_KIND_QWAK_ADMIN: QwakUserKind.ValueType  # 2
"""Qwak administrator"""
USER_KIND_QWAK_SERVICE_ACCOUNT_CORE: QwakUserKind.ValueType  # 3
"""A service account core of qwak infrastructure"""
USER_KIND_QWAK_SERVICE_ACCOUNT_EDGE: QwakUserKind.ValueType  # 4
"""A service account edge of qwak infrastructure"""
USER_KIND_QWAK_SUPPORT: QwakUserKind.ValueType  # 5
"""Qwak support"""
global___QwakUserKind = QwakUserKind

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

class _QwakAccountRoleEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_QwakAccountRole.ValueType], builtins.type):  # noqa: F821
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    ACCOUNT_ROLE_INVALID: _QwakAccountRole.ValueType  # 0
    ACCOUNT_ROLE_ADMIN: _QwakAccountRole.ValueType  # 1
    ACCOUNT_ROLE_MAINTAINER: _QwakAccountRole.ValueType  # 3
    ACCOUNT_ROLE_MEMBER: _QwakAccountRole.ValueType  # 2

class QwakAccountRole(_QwakAccountRole, metaclass=_QwakAccountRoleEnumTypeWrapper): ...

ACCOUNT_ROLE_INVALID: QwakAccountRole.ValueType  # 0
ACCOUNT_ROLE_ADMIN: QwakAccountRole.ValueType  # 1
ACCOUNT_ROLE_MAINTAINER: QwakAccountRole.ValueType  # 3
ACCOUNT_ROLE_MEMBER: QwakAccountRole.ValueType  # 2
global___QwakAccountRole = QwakAccountRole

class QwakUserSpec(google.protobuf.message.Message):
    """A qwak user specification
    User is assigned to some tenant, and have access to a closed list of environments. A user has two main access points:
      1. UI Console
      2. SDK / CLI - for which an API Key is generated
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    ID_FIELD_NUMBER: builtins.int
    DISPLAY_NAME_FIELD_NUMBER: builtins.int
    USER_KIND_FIELD_NUMBER: builtins.int
    STATUS_FIELD_NUMBER: builtins.int
    JOB_FUNCTION_FIELD_NUMBER: builtins.int
    JOB_LEVEL_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    LAST_MODIFIED_AT_FIELD_NUMBER: builtins.int
    TIME_ZONE_FIELD_NUMBER: builtins.int
    id: builtins.str
    """Assigned user ID"""
    display_name: builtins.str
    """Display user name"""
    user_kind: global___QwakUserKind.ValueType
    """The kind of the user"""
    status: global___QwakUserStatus.ValueType
    """User status"""
    job_function: global___QwakUserJobFunction.ValueType
    """Job function"""
    job_level: global___QwakUserJobLevel.ValueType
    """Job level"""
    @property
    def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Creation date"""
    @property
    def last_modified_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Last modification date"""
    time_zone: builtins.str
    """Time zone"""
    def __init__(
        self,
        *,
        id: builtins.str = ...,
        display_name: builtins.str = ...,
        user_kind: global___QwakUserKind.ValueType = ...,
        status: global___QwakUserStatus.ValueType = ...,
        job_function: global___QwakUserJobFunction.ValueType = ...,
        job_level: global___QwakUserJobLevel.ValueType = ...,
        created_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_modified_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        time_zone: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "last_modified_at", b"last_modified_at"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["created_at", b"created_at", "display_name", b"display_name", "id", b"id", "job_function", b"job_function", "job_level", b"job_level", "last_modified_at", b"last_modified_at", "status", b"status", "time_zone", b"time_zone", "user_kind", b"user_kind"]) -> None: ...

global___QwakUserSpec = QwakUserSpec

class QwakUser(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPEC_FIELD_NUMBER: builtins.int
    ENVIRONMENT_IDS_FIELD_NUMBER: builtins.int
    @property
    def spec(self) -> global___QwakUserSpec:
        """User specification"""
    @property
    def environment_ids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """Environment ID's the user has access to"""
    def __init__(
        self,
        *,
        spec: global___QwakUserSpec | None = ...,
        environment_ids: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["spec", b"spec"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["environment_ids", b"environment_ids", "spec", b"spec"]) -> None: ...

global___QwakUser = QwakUser
