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

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.duration_pb2
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 _MappingType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _MappingTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_MappingType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    MAPPING_TYPE_UNSPECIFIED: _MappingType.ValueType  # 0
    """The mapping type is not specified."""
    DIRECT: _MappingType.ValueType  # 1
    """Direct mapping from source to target."""
    EMPTY: _MappingType.ValueType  # 2
    """Empty mapping (no source attribute)."""

class MappingType(_MappingType, metaclass=_MappingTypeEnumTypeWrapper):
    """Type of attribute mapping."""

MAPPING_TYPE_UNSPECIFIED: MappingType.ValueType  # 0
"""The mapping type is not specified."""
DIRECT: MappingType.ValueType  # 1
"""Direct mapping from source to target."""
EMPTY: MappingType.ValueType  # 2
"""Empty mapping (no source attribute)."""
global___MappingType = MappingType

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

class _UserTargetAttributeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_UserTargetAttribute.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    USER_TARGET_ATTRIBUTE_UNSPECIFIED: _UserTargetAttribute.ValueType  # 0
    """The target attribute is not specified."""
    FULL_NAME: _UserTargetAttribute.ValueType  # 1
    """Full name attribute."""
    GIVEN_NAME: _UserTargetAttribute.ValueType  # 2
    """Given name attribute."""
    FAMILY_NAME: _UserTargetAttribute.ValueType  # 3
    """Family name attribute."""
    EMAIL: _UserTargetAttribute.ValueType  # 4
    """Email attribute."""
    PHONE_NUMBER: _UserTargetAttribute.ValueType  # 5
    """Phone number attribute."""
    USERNAME: _UserTargetAttribute.ValueType  # 6
    """Username attribute."""
    COMPANY_NAME: _UserTargetAttribute.ValueType  # 7
    """Company name attribute."""
    JOB_TITLE: _UserTargetAttribute.ValueType  # 8
    """Job title attribute."""
    DEPARTMENT: _UserTargetAttribute.ValueType  # 9
    """Department attribute."""
    EMPLOYEE_ID: _UserTargetAttribute.ValueType  # 10
    """Employee ID attribute."""

class UserTargetAttribute(_UserTargetAttribute, metaclass=_UserTargetAttributeEnumTypeWrapper):
    """Target attributes for user mapping."""

USER_TARGET_ATTRIBUTE_UNSPECIFIED: UserTargetAttribute.ValueType  # 0
"""The target attribute is not specified."""
FULL_NAME: UserTargetAttribute.ValueType  # 1
"""Full name attribute."""
GIVEN_NAME: UserTargetAttribute.ValueType  # 2
"""Given name attribute."""
FAMILY_NAME: UserTargetAttribute.ValueType  # 3
"""Family name attribute."""
EMAIL: UserTargetAttribute.ValueType  # 4
"""Email attribute."""
PHONE_NUMBER: UserTargetAttribute.ValueType  # 5
"""Phone number attribute."""
USERNAME: UserTargetAttribute.ValueType  # 6
"""Username attribute."""
COMPANY_NAME: UserTargetAttribute.ValueType  # 7
"""Company name attribute."""
JOB_TITLE: UserTargetAttribute.ValueType  # 8
"""Job title attribute."""
DEPARTMENT: UserTargetAttribute.ValueType  # 9
"""Department attribute."""
EMPLOYEE_ID: UserTargetAttribute.ValueType  # 10
"""Employee ID attribute."""
global___UserTargetAttribute = UserTargetAttribute

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

class _GroupTargetAttributeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_GroupTargetAttribute.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    GROUP_TARGET_ATTRIBUTE_UNSPECIFIED: _GroupTargetAttribute.ValueType  # 0
    """The target attribute is not specified."""
    NAME: _GroupTargetAttribute.ValueType  # 1
    """Name attribute."""
    DESCRIPTION: _GroupTargetAttribute.ValueType  # 2
    """Description attribute."""

class GroupTargetAttribute(_GroupTargetAttribute, metaclass=_GroupTargetAttributeEnumTypeWrapper):
    """Target attributes for group mapping."""

GROUP_TARGET_ATTRIBUTE_UNSPECIFIED: GroupTargetAttribute.ValueType  # 0
"""The target attribute is not specified."""
NAME: GroupTargetAttribute.ValueType  # 1
"""Name attribute."""
DESCRIPTION: GroupTargetAttribute.ValueType  # 2
"""Description attribute."""
global___GroupTargetAttribute = GroupTargetAttribute

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

class _RemoveUserBehaviorEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_RemoveUserBehavior.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    REMOVE_USER_BEHAVIOR_UNSPECIFIED: _RemoveUserBehavior.ValueType  # 0
    """The behavior is not specified."""
    REMOVE: _RemoveUserBehavior.ValueType  # 1
    """Remove the user."""
    BLOCK: _RemoveUserBehavior.ValueType  # 2
    """Block the user."""

class RemoveUserBehavior(_RemoveUserBehavior, metaclass=_RemoveUserBehaviorEnumTypeWrapper):
    """Behavior when removing users during synchronization."""

REMOVE_USER_BEHAVIOR_UNSPECIFIED: RemoveUserBehavior.ValueType  # 0
"""The behavior is not specified."""
REMOVE: RemoveUserBehavior.ValueType  # 1
"""Remove the user."""
BLOCK: RemoveUserBehavior.ValueType  # 2
"""Block the user."""
global___RemoveUserBehavior = RemoveUserBehavior

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

class _SessionTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_SessionType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SESSION_TYPE_UNSPECIFIED: _SessionType.ValueType  # 0
    """The session type is not specified."""
    AD_SYNC: _SessionType.ValueType  # 1
    """Active Directory synchronization session."""
    AD_PASSWORD_HASH: _SessionType.ValueType  # 2
    """Active Directory password hash session."""
    AD_USER_CONTROL: _SessionType.ValueType  # 3
    """Active Directory user control session."""

class SessionType(_SessionType, metaclass=_SessionTypeEnumTypeWrapper):
    """Type of synchronization session."""

SESSION_TYPE_UNSPECIFIED: SessionType.ValueType  # 0
"""The session type is not specified."""
AD_SYNC: SessionType.ValueType  # 1
"""Active Directory synchronization session."""
AD_PASSWORD_HASH: SessionType.ValueType  # 2
"""Active Directory password hash session."""
AD_USER_CONTROL: SessionType.ValueType  # 3
"""Active Directory user control session."""
global___SessionType = SessionType

@typing.final
class SynchronizationSettings(google.protobuf.message.Message):
    """Synchronization settings for a subject container."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SUBJECT_CONTAINER_ID_FIELD_NUMBER: builtins.int
    FILTER_FIELD_NUMBER: builtins.int
    REMOVE_USER_BEHAVIOR_FIELD_NUMBER: builtins.int
    SYNCHRONIZATION_INTERVAL_FIELD_NUMBER: builtins.int
    ALLOW_TO_CAPTURE_USERS_FIELD_NUMBER: builtins.int
    ALLOW_TO_CAPTURE_GROUPS_FIELD_NUMBER: builtins.int
    USER_ATTRIBUTE_MAPPINGS_FIELD_NUMBER: builtins.int
    GROUP_ATTRIBUTE_MAPPINGS_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    REPLACEMENT_DOMAIN_FIELD_NUMBER: builtins.int
    subject_container_id: builtins.str
    """ID of the subject container."""
    remove_user_behavior: global___RemoveUserBehavior.ValueType
    """Behavior when removing users."""
    allow_to_capture_users: builtins.bool
    """Whether users can be captured during synchronization."""
    allow_to_capture_groups: builtins.bool
    """Whether groups can be captured during synchronization."""
    replacement_domain: builtins.str
    """Domain replacement configuration."""
    @property
    def filter(self) -> global___SynchronizationFilter:
        """Filter configuration for synchronization."""

    @property
    def synchronization_interval(self) -> google.protobuf.duration_pb2.Duration:
        """Interval between synchronization runs."""

    @property
    def user_attribute_mappings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___UserAttributeMapping]:
        """User attribute mappings."""

    @property
    def group_attribute_mappings(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___GroupAttributeMapping]:
        """Group attribute mappings."""

    @property
    def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Timestamp when the settings were created."""

    def __init__(
        self,
        *,
        subject_container_id: builtins.str = ...,
        filter: global___SynchronizationFilter | None = ...,
        remove_user_behavior: global___RemoveUserBehavior.ValueType = ...,
        synchronization_interval: google.protobuf.duration_pb2.Duration | None = ...,
        allow_to_capture_users: builtins.bool = ...,
        allow_to_capture_groups: builtins.bool = ...,
        user_attribute_mappings: collections.abc.Iterable[global___UserAttributeMapping] | None = ...,
        group_attribute_mappings: collections.abc.Iterable[global___GroupAttributeMapping] | None = ...,
        created_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        replacement_domain: builtins.str = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["created_at", b"created_at", "filter", b"filter", "synchronization_interval", b"synchronization_interval"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["allow_to_capture_groups", b"allow_to_capture_groups", "allow_to_capture_users", b"allow_to_capture_users", "created_at", b"created_at", "filter", b"filter", "group_attribute_mappings", b"group_attribute_mappings", "remove_user_behavior", b"remove_user_behavior", "replacement_domain", b"replacement_domain", "subject_container_id", b"subject_container_id", "synchronization_interval", b"synchronization_interval", "user_attribute_mappings", b"user_attribute_mappings"]) -> None: ...

global___SynchronizationSettings = SynchronizationSettings

@typing.final
class SynchronizationFilter(google.protobuf.message.Message):
    """Filter configuration for synchronization."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    DOMAIN_FIELD_NUMBER: builtins.int
    GROUPS_FIELD_NUMBER: builtins.int
    ORGANIZATION_UNITS_FIELD_NUMBER: builtins.int
    domain: builtins.str
    """Domain to synchronize."""
    @property
    def groups(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of groups to synchronize."""

    @property
    def organization_units(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of organizational units to synchronize."""

    def __init__(
        self,
        *,
        domain: builtins.str = ...,
        groups: collections.abc.Iterable[builtins.str] | None = ...,
        organization_units: collections.abc.Iterable[builtins.str] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["domain", b"domain", "groups", b"groups", "organization_units", b"organization_units"]) -> None: ...

global___SynchronizationFilter = SynchronizationFilter

@typing.final
class UserAttributeMapping(google.protobuf.message.Message):
    """User attribute mapping configuration."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SOURCE_FIELD_NUMBER: builtins.int
    TARGET_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    source: builtins.str
    """Source attribute name."""
    target: global___UserTargetAttribute.ValueType
    """Target attribute to map to."""
    type: global___MappingType.ValueType
    """Type of mapping."""
    def __init__(
        self,
        *,
        source: builtins.str = ...,
        target: global___UserTargetAttribute.ValueType = ...,
        type: global___MappingType.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["source", b"source", "target", b"target", "type", b"type"]) -> None: ...

global___UserAttributeMapping = UserAttributeMapping

@typing.final
class GroupAttributeMapping(google.protobuf.message.Message):
    """Group attribute mapping configuration."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SOURCE_FIELD_NUMBER: builtins.int
    TARGET_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    source: builtins.str
    """Source attribute name."""
    target: global___GroupTargetAttribute.ValueType
    """Target attribute to map to."""
    type: global___MappingType.ValueType
    """Type of mapping."""
    def __init__(
        self,
        *,
        source: builtins.str = ...,
        target: global___GroupTargetAttribute.ValueType = ...,
        type: global___MappingType.ValueType = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["source", b"source", "target", b"target", "type", b"type"]) -> None: ...

global___GroupAttributeMapping = GroupAttributeMapping
