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

from collections import abc as _abc
from google.protobuf import descriptor as _descriptor
from google.protobuf import descriptor_pb2 as _descriptor_pb2
from google.protobuf import message as _message
from google.protobuf import timestamp_pb2 as _timestamp_pb2
from google.protobuf import wrappers_pb2 as _wrappers_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
from google.protobuf.internal import extension_dict as _extension_dict
import builtins as _builtins
import sys
import typing as _typing

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

DESCRIPTOR: _descriptor.FileDescriptor

class _FilterCategory:
    ValueType = _typing.NewType("ValueType", _builtins.int)
    V: _TypeAlias = ValueType  # noqa: Y015

class _FilterCategoryEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[_FilterCategory.ValueType], _builtins.type):
    DESCRIPTOR: _descriptor.EnumDescriptor
    FILTER_CATEGORY_UNSPECIFIED: _FilterCategory.ValueType  # 0
    FILTER_CATEGORY_CLIENT: _FilterCategory.ValueType  # 1
    FILTER_CATEGORY_GUILD: _FilterCategory.ValueType  # 2
    FILTER_CATEGORY_USER: _FilterCategory.ValueType  # 3
    FILTER_CATEGORY_UTILITY: _FilterCategory.ValueType  # 4

class FilterCategory(_FilterCategory, metaclass=_FilterCategoryEnumTypeWrapper): ...

FILTER_CATEGORY_UNSPECIFIED: FilterCategory.ValueType  # 0
FILTER_CATEGORY_CLIENT: FilterCategory.ValueType  # 1
FILTER_CATEGORY_GUILD: FilterCategory.ValueType  # 2
FILTER_CATEGORY_USER: FilterCategory.ValueType  # 3
FILTER_CATEGORY_UTILITY: FilterCategory.ValueType  # 4
Global___FilterCategory: _TypeAlias = FilterCategory  # noqa: Y015

@_typing.final
class Experiment(_message.Message):
    DESCRIPTOR: _descriptor.Descriptor

    class _UnitType:
        ValueType = _typing.NewType("ValueType", _builtins.int)
        V: _TypeAlias = ValueType  # noqa: Y015

    class _UnitTypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Experiment._UnitType.ValueType], _builtins.type):
        DESCRIPTOR: _descriptor.EnumDescriptor
        UNIT_TYPE_UNSPECIFIED: Experiment._UnitType.ValueType  # 0
        UNIT_TYPE_USER: Experiment._UnitType.ValueType  # 1
        UNIT_TYPE_INSTALLATION: Experiment._UnitType.ValueType  # 2
        UNIT_TYPE_GUILD: Experiment._UnitType.ValueType  # 3
        UNIT_TYPE_CUSTOM: Experiment._UnitType.ValueType  # 4

    class UnitType(_UnitType, metaclass=_UnitTypeEnumTypeWrapper): ...
    UNIT_TYPE_UNSPECIFIED: Experiment.UnitType.ValueType  # 0
    UNIT_TYPE_USER: Experiment.UnitType.ValueType  # 1
    UNIT_TYPE_INSTALLATION: Experiment.UnitType.ValueType  # 2
    UNIT_TYPE_GUILD: Experiment.UnitType.ValueType  # 3
    UNIT_TYPE_CUSTOM: Experiment.UnitType.ValueType  # 4

    class _Type:
        ValueType = _typing.NewType("ValueType", _builtins.int)
        V: _TypeAlias = ValueType  # noqa: Y015

    class _TypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Experiment._Type.ValueType], _builtins.type):
        DESCRIPTOR: _descriptor.EnumDescriptor
        TYPE_UNSPECIFIED: Experiment._Type.ValueType  # 0
        TYPE_ACTIVE: Experiment._Type.ValueType  # 1
        TYPE_UNUSED: Experiment._Type.ValueType  # 2
        TYPE_BURNED: Experiment._Type.ValueType  # 3
        TYPE_PRESERVED: Experiment._Type.ValueType  # 4

    class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...
    TYPE_UNSPECIFIED: Experiment.Type.ValueType  # 0
    TYPE_ACTIVE: Experiment.Type.ValueType  # 1
    TYPE_UNUSED: Experiment.Type.ValueType  # 2
    TYPE_BURNED: Experiment.Type.ValueType  # 3
    TYPE_PRESERVED: Experiment.Type.ValueType  # 4

    class _Subtype:
        ValueType = _typing.NewType("ValueType", _builtins.int)
        V: _TypeAlias = ValueType  # noqa: Y015

    class _SubtypeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Experiment._Subtype.ValueType], _builtins.type):
        DESCRIPTOR: _descriptor.EnumDescriptor
        SUBTYPE_REGULAR: Experiment._Subtype.ValueType  # 0
        SUBTYPE_HOLDOUT: Experiment._Subtype.ValueType  # 1

    class Subtype(_Subtype, metaclass=_SubtypeEnumTypeWrapper): ...
    SUBTYPE_REGULAR: Experiment.Subtype.ValueType  # 0
    SUBTYPE_HOLDOUT: Experiment.Subtype.ValueType  # 1

    class _Phase:
        ValueType = _typing.NewType("ValueType", _builtins.int)
        V: _TypeAlias = ValueType  # noqa: Y015

    class _PhaseEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Experiment._Phase.ValueType], _builtins.type):
        DESCRIPTOR: _descriptor.EnumDescriptor
        PHASE_UNSPECIFIED: Experiment._Phase.ValueType  # 0
        PHASE_DRAFT: Experiment._Phase.ValueType  # 1
        PHASE_MEASUREMENT: Experiment._Phase.ValueType  # 2
        PHASE_ROLLING_OUT: Experiment._Phase.ValueType  # 4
        PHASE_ARCHIVED: Experiment._Phase.ValueType  # 6
        PHASE_AA_MODE: Experiment._Phase.ValueType  # 7

    class Phase(_Phase, metaclass=_PhaseEnumTypeWrapper): ...
    PHASE_UNSPECIFIED: Experiment.Phase.ValueType  # 0
    PHASE_DRAFT: Experiment.Phase.ValueType  # 1
    PHASE_MEASUREMENT: Experiment.Phase.ValueType  # 2
    PHASE_ROLLING_OUT: Experiment.Phase.ValueType  # 4
    PHASE_ARCHIVED: Experiment.Phase.ValueType  # 6
    PHASE_AA_MODE: Experiment.Phase.ValueType  # 7

    class _Surface:
        ValueType = _typing.NewType("ValueType", _builtins.int)
        V: _TypeAlias = ValueType  # noqa: Y015

    class _SurfaceEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Experiment._Surface.ValueType], _builtins.type):
        DESCRIPTOR: _descriptor.EnumDescriptor
        SURFACE_UNSPECIFIED: Experiment._Surface.ValueType  # 0
        SURFACE_API: Experiment._Surface.ValueType  # 1
        SURFACE_APP: Experiment._Surface.ValueType  # 2
        SURFACE_DEVELOPER_PORTAL: Experiment._Surface.ValueType  # 3
        SURFACE_ADMIN_PANEL: Experiment._Surface.ValueType  # 4
        SURFACE_ADS_BUDGET_AB: Experiment._Surface.ValueType  # 5
        SURFACE_AV_WORKER: Experiment._Surface.ValueType  # 6
        SURFACE_SEO: Experiment._Surface.ValueType  # 7

    class Surface(_Surface, metaclass=_SurfaceEnumTypeWrapper): ...
    SURFACE_UNSPECIFIED: Experiment.Surface.ValueType  # 0
    SURFACE_API: Experiment.Surface.ValueType  # 1
    SURFACE_APP: Experiment.Surface.ValueType  # 2
    SURFACE_DEVELOPER_PORTAL: Experiment.Surface.ValueType  # 3
    SURFACE_ADMIN_PANEL: Experiment.Surface.ValueType  # 4
    SURFACE_ADS_BUDGET_AB: Experiment.Surface.ValueType  # 5
    SURFACE_AV_WORKER: Experiment.Surface.ValueType  # 6
    SURFACE_SEO: Experiment.Surface.ValueType  # 7

    class _ExposureTracking:
        ValueType = _typing.NewType("ValueType", _builtins.int)
        V: _TypeAlias = ValueType  # noqa: Y015

    class _ExposureTrackingEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Experiment._ExposureTracking.ValueType], _builtins.type):
        DESCRIPTOR: _descriptor.EnumDescriptor
        EXPOSURE_TRACKING_ENABLED: Experiment._ExposureTracking.ValueType  # 0
        EXPOSURE_TRACKING_DISABLED: Experiment._ExposureTracking.ValueType  # 1

    class ExposureTracking(_ExposureTracking, metaclass=_ExposureTrackingEnumTypeWrapper): ...
    EXPOSURE_TRACKING_ENABLED: Experiment.ExposureTracking.ValueType  # 0
    EXPOSURE_TRACKING_DISABLED: Experiment.ExposureTracking.ValueType  # 1

    class _AssignmentMode:
        ValueType = _typing.NewType("ValueType", _builtins.int)
        V: _TypeAlias = ValueType  # noqa: Y015

    class _AssignmentModeEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Experiment._AssignmentMode.ValueType], _builtins.type):
        DESCRIPTOR: _descriptor.EnumDescriptor
        ASSIGNMENT_MODE_FULL: Experiment._AssignmentMode.ValueType  # 0
        ASSIGNMENT_MODE_FORCE_CONTROL: Experiment._AssignmentMode.ValueType  # 3
        ASSIGNMENT_MODE_OVERRIDES_ONLY: Experiment._AssignmentMode.ValueType  # 4
        ASSIGNMENT_MODE_OFF: Experiment._AssignmentMode.ValueType  # 5

    class AssignmentMode(_AssignmentMode, metaclass=_AssignmentModeEnumTypeWrapper): ...
    ASSIGNMENT_MODE_FULL: Experiment.AssignmentMode.ValueType  # 0
    ASSIGNMENT_MODE_FORCE_CONTROL: Experiment.AssignmentMode.ValueType  # 3
    ASSIGNMENT_MODE_OVERRIDES_ONLY: Experiment.AssignmentMode.ValueType  # 4
    ASSIGNMENT_MODE_OFF: Experiment.AssignmentMode.ValueType  # 5

    class _CustomUnitPrefix:
        ValueType = _typing.NewType("ValueType", _builtins.int)
        V: _TypeAlias = ValueType  # noqa: Y015

    class _CustomUnitPrefixEnumTypeWrapper(_enum_type_wrapper._EnumTypeWrapper[Experiment._CustomUnitPrefix.ValueType], _builtins.type):
        DESCRIPTOR: _descriptor.EnumDescriptor
        CUSTOM_UNIT_PREFIX_UNSPECIFIED: Experiment._CustomUnitPrefix.ValueType  # 0
        CUSTOM_UNIT_PREFIX_SEO_URL_SLUG: Experiment._CustomUnitPrefix.ValueType  # 1

    class CustomUnitPrefix(_CustomUnitPrefix, metaclass=_CustomUnitPrefixEnumTypeWrapper): ...
    CUSTOM_UNIT_PREFIX_UNSPECIFIED: Experiment.CustomUnitPrefix.ValueType  # 0
    CUSTOM_UNIT_PREFIX_SEO_URL_SLUG: Experiment.CustomUnitPrefix.ValueType  # 1

    @_typing.final
    class Bucket(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        START_FIELD_NUMBER: _builtins.int
        STOP_FIELD_NUMBER: _builtins.int
        TYPE_FIELD_NUMBER: _builtins.int
        start: _builtins.int
        stop: _builtins.int
        type: Global___Experiment.Type.ValueType
        def __init__(
            self,
            *,
            start: _builtins.int = ...,
            stop: _builtins.int = ...,
            type: Global___Experiment.Type.ValueType = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["start", b"start", "stop", b"stop", "type", b"type"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class Variation(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        ID_FIELD_NUMBER: _builtins.int
        LABEL_FIELD_NUMBER: _builtins.int
        TARGET_ALLOCATION_FIELD_NUMBER: _builtins.int
        BUCKETS_FIELD_NUMBER: _builtins.int
        TYPE_FIELD_NUMBER: _builtins.int
        CONFIGURATION_FIELD_NUMBER: _builtins.int
        id: _builtins.int
        label: _builtins.str
        target_allocation: _builtins.int
        type: Global___Experiment.Type.ValueType
        @_builtins.property
        def buckets(self) -> _containers.RepeatedCompositeFieldContainer[Global___Experiment.Bucket]: ...
        @_builtins.property
        def configuration(self) -> _wrappers_pb2.StringValue: ...
        def __init__(
            self,
            *,
            id: _builtins.int = ...,
            label: _builtins.str = ...,
            target_allocation: _builtins.int = ...,
            buckets: _abc.Iterable[Global___Experiment.Bucket] | None = ...,
            type: Global___Experiment.Type.ValueType = ...,
            configuration: _wrappers_pb2.StringValue | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_configuration", b"_configuration", "configuration", b"configuration"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_configuration", b"_configuration", "buckets", b"buckets", "configuration", b"configuration", "id", b"id", "label", b"label", "target_allocation", b"target_allocation", "type", b"type"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__configuration: _TypeAlias = _typing.Literal["configuration"]  # noqa: Y015
        _WhichOneofArgType__configuration: _TypeAlias = _typing.Literal["_configuration", b"_configuration"]  # noqa: Y015
        def WhichOneof(self, oneof_group: _WhichOneofArgType__configuration) -> _WhichOneofReturnType__configuration | None: ...

    @_typing.final
    class PlatformVersionSpecifier(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        MAJOR_FIELD_NUMBER: _builtins.int
        MINOR_FIELD_NUMBER: _builtins.int
        BUILD_FIELD_NUMBER: _builtins.int
        major: _builtins.int
        @_builtins.property
        def minor(self) -> _wrappers_pb2.UInt32Value: ...
        @_builtins.property
        def build(self) -> _wrappers_pb2.UInt64Value: ...
        def __init__(
            self,
            *,
            major: _builtins.int = ...,
            minor: _wrappers_pb2.UInt32Value | None = ...,
            build: _wrappers_pb2.UInt64Value | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_build", b"_build", "_minor", b"_minor", "build", b"build", "minor", b"minor"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_build", b"_build", "_minor", b"_minor", "build", b"build", "major", b"major", "minor", b"minor"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__build: _TypeAlias = _typing.Literal["build"]  # noqa: Y015
        _WhichOneofArgType__build: _TypeAlias = _typing.Literal["_build", b"_build"]  # noqa: Y015
        _WhichOneofReturnType__minor: _TypeAlias = _typing.Literal["minor"]  # noqa: Y015
        _WhichOneofArgType__minor: _TypeAlias = _typing.Literal["_minor", b"_minor"]  # noqa: Y015
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__build) -> _WhichOneofReturnType__build | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__minor) -> _WhichOneofReturnType__minor | None: ...

    @_typing.final
    class PlatformVersionRangeBound(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        VERSION_FIELD_NUMBER: _builtins.int
        INCLUSIVE_FIELD_NUMBER: _builtins.int
        inclusive: _builtins.bool
        @_builtins.property
        def version(self) -> Global___Experiment.PlatformVersionSpecifier: ...
        def __init__(
            self,
            *,
            version: Global___Experiment.PlatformVersionSpecifier | None = ...,
            inclusive: _builtins.bool = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_version", b"_version", "version", b"version"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_version", b"_version", "inclusive", b"inclusive", "version", b"version"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__version: _TypeAlias = _typing.Literal["version"]  # noqa: Y015
        _WhichOneofArgType__version: _TypeAlias = _typing.Literal["_version", b"_version"]  # noqa: Y015
        def WhichOneof(self, oneof_group: _WhichOneofArgType__version) -> _WhichOneofReturnType__version | None: ...

    @_typing.final
    class PlatformVersionRange(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        LOWER_BOUND_FIELD_NUMBER: _builtins.int
        UPPER_BOUND_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def lower_bound(self) -> Global___Experiment.PlatformVersionRangeBound: ...
        @_builtins.property
        def upper_bound(self) -> Global___Experiment.PlatformVersionRangeBound: ...
        def __init__(
            self,
            *,
            lower_bound: Global___Experiment.PlatformVersionRangeBound | None = ...,
            upper_bound: Global___Experiment.PlatformVersionRangeBound | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_lower_bound", b"_lower_bound", "_upper_bound", b"_upper_bound", "lower_bound", b"lower_bound", "upper_bound", b"upper_bound"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_lower_bound", b"_lower_bound", "_upper_bound", b"_upper_bound", "lower_bound", b"lower_bound", "upper_bound", b"upper_bound"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__lower_bound: _TypeAlias = _typing.Literal["lower_bound"]  # noqa: Y015
        _WhichOneofArgType__lower_bound: _TypeAlias = _typing.Literal["_lower_bound", b"_lower_bound"]  # noqa: Y015
        _WhichOneofReturnType__upper_bound: _TypeAlias = _typing.Literal["upper_bound"]  # noqa: Y015
        _WhichOneofArgType__upper_bound: _TypeAlias = _typing.Literal["_upper_bound", b"_upper_bound"]  # noqa: Y015
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__lower_bound) -> _WhichOneofReturnType__lower_bound | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__upper_bound) -> _WhichOneofReturnType__upper_bound | None: ...

    @_typing.final
    class PlatformVersion(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        RANGES_FIELD_NUMBER: _builtins.int
        WORK_AROUND_PYOTO_BUG_FIELD_NUMBER: _builtins.int
        work_around_pyoto_bug: _builtins.bool
        @_builtins.property
        def ranges(self) -> _containers.RepeatedCompositeFieldContainer[Global___Experiment.PlatformVersionRange]: ...
        def __init__(
            self,
            *,
            ranges: _abc.Iterable[Global___Experiment.PlatformVersionRange] | None = ...,
            work_around_pyoto_bug: _builtins.bool = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["ranges", b"ranges", "work_around_pyoto_bug", b"work_around_pyoto_bug"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class ClientRequiredChanges(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        COMMIT_HASHES_FIELD_NUMBER: _builtins.int
        PR_NUMBERS_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def commit_hashes(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
        @_builtins.property
        def pr_numbers(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ...
        def __init__(
            self,
            *,
            commit_hashes: _abc.Iterable[_builtins.str] | None = ...,
            pr_numbers: _abc.Iterable[_builtins.int] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["commit_hashes", b"commit_hashes", "pr_numbers", b"pr_numbers"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class ClientPlatform(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        IOS_VERSION_FIELD_NUMBER: _builtins.int
        ANDROID_VERSION_FIELD_NUMBER: _builtins.int
        WEB_VERSION_FIELD_NUMBER: _builtins.int
        NATIVE_VERSION_FIELD_NUMBER: _builtins.int
        ALLOW_NON_NATIVE_WEB_FIELD_NUMBER: _builtins.int
        CLIENT_REQUIRED_CHANGES_FIELD_NUMBER: _builtins.int
        allow_non_native_web: _builtins.bool
        @_builtins.property
        def ios_version(self) -> Global___Experiment.PlatformVersion: ...
        @_builtins.property
        def android_version(self) -> Global___Experiment.PlatformVersion: ...
        @_builtins.property
        def web_version(self) -> Global___Experiment.PlatformVersion: ...
        @_builtins.property
        def native_version(self) -> Global___Experiment.PlatformVersion: ...
        @_builtins.property
        def client_required_changes(self) -> Global___Experiment.ClientRequiredChanges: ...
        def __init__(
            self,
            *,
            ios_version: Global___Experiment.PlatformVersion | None = ...,
            android_version: Global___Experiment.PlatformVersion | None = ...,
            web_version: Global___Experiment.PlatformVersion | None = ...,
            native_version: Global___Experiment.PlatformVersion | None = ...,
            allow_non_native_web: _builtins.bool = ...,
            client_required_changes: Global___Experiment.ClientRequiredChanges | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_android_version", b"_android_version", "_client_required_changes", b"_client_required_changes", "_ios_version", b"_ios_version", "_native_version", b"_native_version", "_web_version", b"_web_version", "android_version", b"android_version", "client_required_changes", b"client_required_changes", "ios_version", b"ios_version", "native_version", b"native_version", "web_version", b"web_version"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_android_version", b"_android_version", "_client_required_changes", b"_client_required_changes", "_ios_version", b"_ios_version", "_native_version", b"_native_version", "_web_version", b"_web_version", "allow_non_native_web", b"allow_non_native_web", "android_version", b"android_version", "client_required_changes", b"client_required_changes", "ios_version", b"ios_version", "native_version", b"native_version", "web_version", b"web_version"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__android_version: _TypeAlias = _typing.Literal["android_version"]  # noqa: Y015
        _WhichOneofArgType__android_version: _TypeAlias = _typing.Literal["_android_version", b"_android_version"]  # noqa: Y015
        _WhichOneofReturnType__client_required_changes: _TypeAlias = _typing.Literal["client_required_changes"]  # noqa: Y015
        _WhichOneofArgType__client_required_changes: _TypeAlias = _typing.Literal["_client_required_changes", b"_client_required_changes"]  # noqa: Y015
        _WhichOneofReturnType__ios_version: _TypeAlias = _typing.Literal["ios_version"]  # noqa: Y015
        _WhichOneofArgType__ios_version: _TypeAlias = _typing.Literal["_ios_version", b"_ios_version"]  # noqa: Y015
        _WhichOneofReturnType__native_version: _TypeAlias = _typing.Literal["native_version"]  # noqa: Y015
        _WhichOneofArgType__native_version: _TypeAlias = _typing.Literal["_native_version", b"_native_version"]  # noqa: Y015
        _WhichOneofReturnType__web_version: _TypeAlias = _typing.Literal["web_version"]  # noqa: Y015
        _WhichOneofArgType__web_version: _TypeAlias = _typing.Literal["_web_version", b"_web_version"]  # noqa: Y015
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__android_version) -> _WhichOneofReturnType__android_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__client_required_changes) -> _WhichOneofReturnType__client_required_changes | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__ios_version) -> _WhichOneofReturnType__ios_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__native_version) -> _WhichOneofReturnType__native_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__web_version) -> _WhichOneofReturnType__web_version | None: ...

    @_typing.final
    class SDKVersionSpecifier(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        VERSION_FIELD_NUMBER: _builtins.int
        version: _builtins.int
        def __init__(
            self,
            *,
            version: _builtins.int = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["version", b"version"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class SDKVersionRangeBound(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        VERSION_FIELD_NUMBER: _builtins.int
        INCLUSIVE_FIELD_NUMBER: _builtins.int
        inclusive: _builtins.bool
        @_builtins.property
        def version(self) -> Global___Experiment.SDKVersionSpecifier: ...
        def __init__(
            self,
            *,
            version: Global___Experiment.SDKVersionSpecifier | None = ...,
            inclusive: _builtins.bool = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_version", b"_version", "version", b"version"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_version", b"_version", "inclusive", b"inclusive", "version", b"version"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__version: _TypeAlias = _typing.Literal["version"]  # noqa: Y015
        _WhichOneofArgType__version: _TypeAlias = _typing.Literal["_version", b"_version"]  # noqa: Y015
        def WhichOneof(self, oneof_group: _WhichOneofArgType__version) -> _WhichOneofReturnType__version | None: ...

    @_typing.final
    class SDKVersionRange(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        LOWER_BOUND_FIELD_NUMBER: _builtins.int
        UPPER_BOUND_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def lower_bound(self) -> Global___Experiment.SDKVersionRangeBound: ...
        @_builtins.property
        def upper_bound(self) -> Global___Experiment.SDKVersionRangeBound: ...
        def __init__(
            self,
            *,
            lower_bound: Global___Experiment.SDKVersionRangeBound | None = ...,
            upper_bound: Global___Experiment.SDKVersionRangeBound | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_lower_bound", b"_lower_bound", "_upper_bound", b"_upper_bound", "lower_bound", b"lower_bound", "upper_bound", b"upper_bound"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_lower_bound", b"_lower_bound", "_upper_bound", b"_upper_bound", "lower_bound", b"lower_bound", "upper_bound", b"upper_bound"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__lower_bound: _TypeAlias = _typing.Literal["lower_bound"]  # noqa: Y015
        _WhichOneofArgType__lower_bound: _TypeAlias = _typing.Literal["_lower_bound", b"_lower_bound"]  # noqa: Y015
        _WhichOneofReturnType__upper_bound: _TypeAlias = _typing.Literal["upper_bound"]  # noqa: Y015
        _WhichOneofArgType__upper_bound: _TypeAlias = _typing.Literal["_upper_bound", b"_upper_bound"]  # noqa: Y015
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__lower_bound) -> _WhichOneofReturnType__lower_bound | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__upper_bound) -> _WhichOneofReturnType__upper_bound | None: ...

    @_typing.final
    class SDKVersion(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        RANGES_FIELD_NUMBER: _builtins.int
        WORK_AROUND_PYOTO_BUG_FIELD_NUMBER: _builtins.int
        work_around_pyoto_bug: _builtins.bool
        @_builtins.property
        def ranges(self) -> _containers.RepeatedCompositeFieldContainer[Global___Experiment.SDKVersionRange]: ...
        def __init__(
            self,
            *,
            ranges: _abc.Iterable[Global___Experiment.SDKVersionRange] | None = ...,
            work_around_pyoto_bug: _builtins.bool = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["ranges", b"ranges", "work_around_pyoto_bug", b"work_around_pyoto_bug"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class ClientOperatingSystem(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        IOS_VERSION_FIELD_NUMBER: _builtins.int
        ANDROID_VERSION_FIELD_NUMBER: _builtins.int
        MACOS_VERSION_FIELD_NUMBER: _builtins.int
        WINDOWS_VERSION_FIELD_NUMBER: _builtins.int
        PLAYSTATION_VERSION_FIELD_NUMBER: _builtins.int
        XBOX_VERSION_FIELD_NUMBER: _builtins.int
        LINUX_VERSION_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def ios_version(self) -> Global___Experiment.SDKVersion: ...
        @_builtins.property
        def android_version(self) -> Global___Experiment.SDKVersion: ...
        @_builtins.property
        def macos_version(self) -> Global___Experiment.SDKVersion: ...
        @_builtins.property
        def windows_version(self) -> Global___Experiment.SDKVersion: ...
        @_builtins.property
        def playstation_version(self) -> Global___Experiment.SDKVersion: ...
        @_builtins.property
        def xbox_version(self) -> Global___Experiment.SDKVersion: ...
        @_builtins.property
        def linux_version(self) -> Global___Experiment.SDKVersion: ...
        def __init__(
            self,
            *,
            ios_version: Global___Experiment.SDKVersion | None = ...,
            android_version: Global___Experiment.SDKVersion | None = ...,
            macos_version: Global___Experiment.SDKVersion | None = ...,
            windows_version: Global___Experiment.SDKVersion | None = ...,
            playstation_version: Global___Experiment.SDKVersion | None = ...,
            xbox_version: Global___Experiment.SDKVersion | None = ...,
            linux_version: Global___Experiment.SDKVersion | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_android_version", b"_android_version", "_ios_version", b"_ios_version", "_linux_version", b"_linux_version", "_macos_version", b"_macos_version", "_playstation_version", b"_playstation_version", "_windows_version", b"_windows_version", "_xbox_version", b"_xbox_version", "android_version", b"android_version", "ios_version", b"ios_version", "linux_version", b"linux_version", "macos_version", b"macos_version", "playstation_version", b"playstation_version", "windows_version", b"windows_version", "xbox_version", b"xbox_version"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_android_version", b"_android_version", "_ios_version", b"_ios_version", "_linux_version", b"_linux_version", "_macos_version", b"_macos_version", "_playstation_version", b"_playstation_version", "_windows_version", b"_windows_version", "_xbox_version", b"_xbox_version", "android_version", b"android_version", "ios_version", b"ios_version", "linux_version", b"linux_version", "macos_version", b"macos_version", "playstation_version", b"playstation_version", "windows_version", b"windows_version", "xbox_version", b"xbox_version"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__android_version: _TypeAlias = _typing.Literal["android_version"]  # noqa: Y015
        _WhichOneofArgType__android_version: _TypeAlias = _typing.Literal["_android_version", b"_android_version"]  # noqa: Y015
        _WhichOneofReturnType__ios_version: _TypeAlias = _typing.Literal["ios_version"]  # noqa: Y015
        _WhichOneofArgType__ios_version: _TypeAlias = _typing.Literal["_ios_version", b"_ios_version"]  # noqa: Y015
        _WhichOneofReturnType__linux_version: _TypeAlias = _typing.Literal["linux_version"]  # noqa: Y015
        _WhichOneofArgType__linux_version: _TypeAlias = _typing.Literal["_linux_version", b"_linux_version"]  # noqa: Y015
        _WhichOneofReturnType__macos_version: _TypeAlias = _typing.Literal["macos_version"]  # noqa: Y015
        _WhichOneofArgType__macos_version: _TypeAlias = _typing.Literal["_macos_version", b"_macos_version"]  # noqa: Y015
        _WhichOneofReturnType__playstation_version: _TypeAlias = _typing.Literal["playstation_version"]  # noqa: Y015
        _WhichOneofArgType__playstation_version: _TypeAlias = _typing.Literal["_playstation_version", b"_playstation_version"]  # noqa: Y015
        _WhichOneofReturnType__windows_version: _TypeAlias = _typing.Literal["windows_version"]  # noqa: Y015
        _WhichOneofArgType__windows_version: _TypeAlias = _typing.Literal["_windows_version", b"_windows_version"]  # noqa: Y015
        _WhichOneofReturnType__xbox_version: _TypeAlias = _typing.Literal["xbox_version"]  # noqa: Y015
        _WhichOneofArgType__xbox_version: _TypeAlias = _typing.Literal["_xbox_version", b"_xbox_version"]  # noqa: Y015
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__android_version) -> _WhichOneofReturnType__android_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__ios_version) -> _WhichOneofReturnType__ios_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__linux_version) -> _WhichOneofReturnType__linux_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__macos_version) -> _WhichOneofReturnType__macos_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__playstation_version) -> _WhichOneofReturnType__playstation_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__windows_version) -> _WhichOneofReturnType__windows_version | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__xbox_version) -> _WhichOneofReturnType__xbox_version | None: ...

    @_typing.final
    class StaffUsers(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        WORK_ACCOUNTS_FIELD_NUMBER: _builtins.int
        PERSONAL_ACCOUNTS_FIELD_NUMBER: _builtins.int
        work_accounts: _builtins.bool
        personal_accounts: _builtins.bool
        def __init__(
            self,
            *,
            work_accounts: _builtins.bool = ...,
            personal_accounts: _builtins.bool = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["personal_accounts", b"personal_accounts", "work_accounts", b"work_accounts"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserInGuild(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        GUILD_IDS_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def guild_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ...
        def __init__(
            self,
            *,
            guild_ids: _abc.Iterable[_builtins.int] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["guild_ids", b"guild_ids"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserIds(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        USER_IDS_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def user_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ...
        def __init__(
            self,
            *,
            user_ids: _abc.Iterable[_builtins.int] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["user_ids", b"user_ids"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class ClientLocale(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        LOCALES_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def locales(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
        def __init__(
            self,
            *,
            locales: _abc.Iterable[_builtins.str] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["locales", b"locales"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class ISORegion(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        ISO_COUNTRY_FIELD_NUMBER: _builtins.int
        ISO_SUBDIVISION_FIELD_NUMBER: _builtins.int
        iso_country: _builtins.str
        iso_subdivision: _builtins.str
        def __init__(
            self,
            *,
            iso_country: _builtins.str = ...,
            iso_subdivision: _builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["iso_country", b"iso_country", "iso_subdivision", b"iso_subdivision"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class Place(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        CITY_FIELD_NUMBER: _builtins.int
        SUBDIVISION_FIELD_NUMBER: _builtins.int
        COUNTRY_FIELD_NUMBER: _builtins.int
        city: _builtins.str
        subdivision: _builtins.str
        country: _builtins.str
        def __init__(
            self,
            *,
            city: _builtins.str = ...,
            subdivision: _builtins.str = ...,
            country: _builtins.str = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["city", b"city", "country", b"country", "subdivision", b"subdivision"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class Location(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        ISO_REGION_FIELD_NUMBER: _builtins.int
        IS_EU_FIELD_NUMBER: _builtins.int
        PLACE_FIELD_NUMBER: _builtins.int
        is_eu: _builtins.bool
        @_builtins.property
        def iso_region(self) -> Global___Experiment.ISORegion: ...
        @_builtins.property
        def place(self) -> Global___Experiment.Place: ...
        def __init__(
            self,
            *,
            iso_region: Global___Experiment.ISORegion | None = ...,
            is_eu: _builtins.bool = ...,
            place: Global___Experiment.Place | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["is_eu", b"is_eu", "iso_region", b"iso_region", "location", b"location", "place", b"place"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["is_eu", b"is_eu", "iso_region", b"iso_region", "location", b"location", "place", b"place"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType_location: _TypeAlias = _typing.Literal["iso_region", "is_eu", "place"]  # noqa: Y015
        _WhichOneofArgType_location: _TypeAlias = _typing.Literal["location", b"location"]  # noqa: Y015
        def WhichOneof(self, oneof_group: _WhichOneofArgType_location) -> _WhichOneofReturnType_location | None: ...

    @_typing.final
    class ClientLocation(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        LOCATIONS_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def locations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Experiment.Location]: ...
        def __init__(
            self,
            *,
            locations: _abc.Iterable[Global___Experiment.Location] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["locations", b"locations"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class ClientIP(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        BLOCKS_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def blocks(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
        def __init__(
            self,
            *,
            blocks: _abc.Iterable[_builtins.str] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["blocks", b"blocks"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserLocale(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        LOCALES_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def locales(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
        def __init__(
            self,
            *,
            locales: _abc.Iterable[_builtins.str] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["locales", b"locales"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserIsBot(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        IS_BOT_FIELD_NUMBER: _builtins.int
        is_bot: _builtins.bool
        def __init__(
            self,
            *,
            is_bot: _builtins.bool = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["is_bot", b"is_bot"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserAgeRange(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        MIN_AGE_YEARS_FIELD_NUMBER: _builtins.int
        MAX_AGE_YEARS_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def min_age_years(self) -> _wrappers_pb2.UInt32Value: ...
        @_builtins.property
        def max_age_years(self) -> _wrappers_pb2.UInt32Value: ...
        def __init__(
            self,
            *,
            min_age_years: _wrappers_pb2.UInt32Value | None = ...,
            max_age_years: _wrappers_pb2.UInt32Value | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_max_age_years", b"_max_age_years", "_min_age_years", b"_min_age_years", "max_age_years", b"max_age_years", "min_age_years", b"min_age_years"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_max_age_years", b"_max_age_years", "_min_age_years", b"_min_age_years", "max_age_years", b"max_age_years", "min_age_years", b"min_age_years"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__max_age_years: _TypeAlias = _typing.Literal["max_age_years"]  # noqa: Y015
        _WhichOneofArgType__max_age_years: _TypeAlias = _typing.Literal["_max_age_years", b"_max_age_years"]  # noqa: Y015
        _WhichOneofReturnType__min_age_years: _TypeAlias = _typing.Literal["min_age_years"]  # noqa: Y015
        _WhichOneofArgType__min_age_years: _TypeAlias = _typing.Literal["_min_age_years", b"_min_age_years"]  # noqa: Y015
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__max_age_years) -> _WhichOneofReturnType__max_age_years | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__min_age_years) -> _WhichOneofReturnType__min_age_years | None: ...

    @_typing.final
    class Fixed64Value(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        VALUE_FIELD_NUMBER: _builtins.int
        value: _builtins.int
        def __init__(
            self,
            *,
            value: _builtins.int = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["value", b"value"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserIDRange(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        MIN_ID_FIELD_NUMBER: _builtins.int
        MAX_ID_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def min_id(self) -> Global___Experiment.Fixed64Value: ...
        @_builtins.property
        def max_id(self) -> Global___Experiment.Fixed64Value: ...
        def __init__(
            self,
            *,
            min_id: Global___Experiment.Fixed64Value | None = ...,
            max_id: Global___Experiment.Fixed64Value | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_max_id", b"_max_id", "_min_id", b"_min_id", "max_id", b"max_id", "min_id", b"min_id"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_max_id", b"_max_id", "_min_id", b"_min_id", "max_id", b"max_id", "min_id", b"min_id"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__max_id: _TypeAlias = _typing.Literal["max_id"]  # noqa: Y015
        _WhichOneofArgType__max_id: _TypeAlias = _typing.Literal["_max_id", b"_max_id"]  # noqa: Y015
        _WhichOneofReturnType__min_id: _TypeAlias = _typing.Literal["min_id"]  # noqa: Y015
        _WhichOneofArgType__min_id: _TypeAlias = _typing.Literal["_min_id", b"_min_id"]  # noqa: Y015
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__max_id) -> _WhichOneofReturnType__max_id | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__min_id) -> _WhichOneofReturnType__min_id | None: ...

    @_typing.final
    class UserHasFlag(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        MASK_FIELD_NUMBER: _builtins.int
        mask: _builtins.int
        def __init__(
            self,
            *,
            mask: _builtins.int = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["mask", b"mask"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UnitIdInRangeByHash(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        HASH_KEY_FIELD_NUMBER: _builtins.int
        STOP_RING_POSITION_FIELD_NUMBER: _builtins.int
        START_RING_POSITION_FIELD_NUMBER: _builtins.int
        hash_key: _builtins.str
        stop_ring_position: _builtins.int
        start_ring_position: _builtins.int
        def __init__(
            self,
            *,
            hash_key: _builtins.str = ...,
            stop_ring_position: _builtins.int = ...,
            start_ring_position: _builtins.int = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["hash_key", b"hash_key", "start_ring_position", b"start_ring_position", "stop_ring_position", b"stop_ring_position"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class ClientReleaseChannel(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        RELEASE_CHANNELS_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def release_channels(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
        def __init__(
            self,
            *,
            release_channels: _abc.Iterable[_builtins.str] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["release_channels", b"release_channels"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class Always(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        VALUE_FIELD_NUMBER: _builtins.int
        value: _builtins.bool
        def __init__(
            self,
            *,
            value: _builtins.bool = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["value", b"value"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class ClientSystemLocale(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        LOCALES_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def locales(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
        def __init__(
            self,
            *,
            locales: _abc.Iterable[_builtins.str] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["locales", b"locales"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UnitIdInExperiment(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        EXPERIMENT_ID_FIELD_NUMBER: _builtins.int
        VARIATION_IDS_FIELD_NUMBER: _builtins.int
        experiment_id: _builtins.int
        @_builtins.property
        def variation_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ...
        def __init__(
            self,
            *,
            experiment_id: _builtins.int = ...,
            variation_ids: _abc.Iterable[_builtins.int] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["experiment_id", b"experiment_id", "variation_ids", b"variation_ids"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserPremiumType(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        PREMIUM_TYPES_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def premium_types(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ...
        def __init__(
            self,
            *,
            premium_types: _abc.Iterable[_builtins.int] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["premium_types", b"premium_types"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UnitIdMatchesFilterSnapshot(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        FILTER_SNAPSHOT_NAME_FIELD_NUMBER: _builtins.int
        TARGET_FILTER_VALUES_FIELD_NUMBER: _builtins.int
        filter_snapshot_name: _builtins.str
        @_builtins.property
        def target_filter_values(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ...
        def __init__(
            self,
            *,
            filter_snapshot_name: _builtins.str = ...,
            target_filter_values: _abc.Iterable[_builtins.int] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["filter_snapshot_name", b"filter_snapshot_name", "target_filter_values", b"target_filter_values"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class GuildIds(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        GUILD_IDS_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def guild_ids(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ...
        def __init__(
            self,
            *,
            guild_ids: _abc.Iterable[_builtins.int] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["guild_ids", b"guild_ids"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class GuildMemberCountRange(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        MIN_COUNT_FIELD_NUMBER: _builtins.int
        MAX_COUNT_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def min_count(self) -> _wrappers_pb2.UInt32Value: ...
        @_builtins.property
        def max_count(self) -> _wrappers_pb2.UInt32Value: ...
        def __init__(
            self,
            *,
            min_count: _wrappers_pb2.UInt32Value | None = ...,
            max_count: _wrappers_pb2.UInt32Value | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_max_count", b"_max_count", "_min_count", b"_min_count", "max_count", b"max_count", "min_count", b"min_count"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_max_count", b"_max_count", "_min_count", b"_min_count", "max_count", b"max_count", "min_count", b"min_count"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__max_count: _TypeAlias = _typing.Literal["max_count"]  # noqa: Y015
        _WhichOneofArgType__max_count: _TypeAlias = _typing.Literal["_max_count", b"_max_count"]  # noqa: Y015
        _WhichOneofReturnType__min_count: _TypeAlias = _typing.Literal["min_count"]  # noqa: Y015
        _WhichOneofArgType__min_count: _TypeAlias = _typing.Literal["_min_count", b"_min_count"]  # noqa: Y015
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__max_count) -> _WhichOneofReturnType__max_count | None: ...
        @_typing.overload
        def WhichOneof(self, oneof_group: _WhichOneofArgType__min_count) -> _WhichOneofReturnType__min_count | None: ...

    @_typing.final
    class GuildHasFeature(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        FEATURES_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def features(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
        def __init__(
            self,
            *,
            features: _abc.Iterable[_builtins.str] | None = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["features", b"features"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserLocation(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        LOCATIONS_FIELD_NUMBER: _builtins.int
        PREFER_CLIENT_IP_FIELD_NUMBER: _builtins.int
        prefer_client_ip: _builtins.bool
        @_builtins.property
        def locations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Experiment.Location]: ...
        def __init__(
            self,
            *,
            locations: _abc.Iterable[Global___Experiment.Location] | None = ...,
            prefer_client_ip: _builtins.bool = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["locations", b"locations", "prefer_client_ip", b"prefer_client_ip"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class UserIP(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        BLOCKS_FIELD_NUMBER: _builtins.int
        PREFER_CLIENT_IP_FIELD_NUMBER: _builtins.int
        prefer_client_ip: _builtins.bool
        @_builtins.property
        def blocks(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
        def __init__(
            self,
            *,
            blocks: _abc.Iterable[_builtins.str] | None = ...,
            prefer_client_ip: _builtins.bool = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["blocks", b"blocks", "prefer_client_ip", b"prefer_client_ip"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class Filter(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        CLIENT_VERSION_FIELD_NUMBER: _builtins.int
        CLIENT_OS_FIELD_NUMBER: _builtins.int
        STAFF_FIELD_NUMBER: _builtins.int
        USER_IN_GUILD_FIELD_NUMBER: _builtins.int
        USER_IDS_FIELD_NUMBER: _builtins.int
        CLIENT_LOCALE_FIELD_NUMBER: _builtins.int
        CLIENT_LOCATION_FIELD_NUMBER: _builtins.int
        CLIENT_IP_FIELD_NUMBER: _builtins.int
        USER_LOCALE_FIELD_NUMBER: _builtins.int
        BOT_FIELD_NUMBER: _builtins.int
        USER_AGE_RANGE_FIELD_NUMBER: _builtins.int
        USER_ID_RANGE_FIELD_NUMBER: _builtins.int
        USER_HAS_FLAG_FIELD_NUMBER: _builtins.int
        UNIT_ID_IN_RANGE_BY_HASH_FIELD_NUMBER: _builtins.int
        CLIENT_RELEASE_CHANNEL_FIELD_NUMBER: _builtins.int
        ALWAYS_FIELD_NUMBER: _builtins.int
        CLIENT_SYSTEM_LOCALE_FIELD_NUMBER: _builtins.int
        UNIT_ID_IN_EXPERIMENT_FIELD_NUMBER: _builtins.int
        USER_PREMIUM_TYPE_FIELD_NUMBER: _builtins.int
        UNIT_ID_MATCHES_FILTER_SNAPSHOT_FIELD_NUMBER: _builtins.int
        GUILD_IDS_FIELD_NUMBER: _builtins.int
        GUILD_MEMBER_COUNT_RANGE_FIELD_NUMBER: _builtins.int
        GUILD_HAS_FEATURE_FIELD_NUMBER: _builtins.int
        USER_LOCATION_FIELD_NUMBER: _builtins.int
        USER_IP_FIELD_NUMBER: _builtins.int
        @_builtins.property
        def client_version(self) -> Global___Experiment.ClientPlatform: ...
        @_builtins.property
        def client_os(self) -> Global___Experiment.ClientOperatingSystem: ...
        @_builtins.property
        def staff(self) -> Global___Experiment.StaffUsers: ...
        @_builtins.property
        def user_in_guild(self) -> Global___Experiment.UserInGuild: ...
        @_builtins.property
        def user_ids(self) -> Global___Experiment.UserIds: ...
        @_builtins.property
        def client_locale(self) -> Global___Experiment.ClientLocale: ...
        @_builtins.property
        def client_location(self) -> Global___Experiment.ClientLocation: ...
        @_builtins.property
        def client_ip(self) -> Global___Experiment.ClientIP: ...
        @_builtins.property
        def user_locale(self) -> Global___Experiment.UserLocale: ...
        @_builtins.property
        def bot(self) -> Global___Experiment.UserIsBot: ...
        @_builtins.property
        def user_age_range(self) -> Global___Experiment.UserAgeRange: ...
        @_builtins.property
        def user_id_range(self) -> Global___Experiment.UserIDRange: ...
        @_builtins.property
        def user_has_flag(self) -> Global___Experiment.UserHasFlag: ...
        @_builtins.property
        def unit_id_in_range_by_hash(self) -> Global___Experiment.UnitIdInRangeByHash: ...
        @_builtins.property
        def client_release_channel(self) -> Global___Experiment.ClientReleaseChannel: ...
        @_builtins.property
        def always(self) -> Global___Experiment.Always: ...
        @_builtins.property
        def client_system_locale(self) -> Global___Experiment.ClientSystemLocale: ...
        @_builtins.property
        def unit_id_in_experiment(self) -> Global___Experiment.UnitIdInExperiment: ...
        @_builtins.property
        def user_premium_type(self) -> Global___Experiment.UserPremiumType: ...
        @_builtins.property
        def unit_id_matches_filter_snapshot(self) -> Global___Experiment.UnitIdMatchesFilterSnapshot: ...
        @_builtins.property
        def guild_ids(self) -> Global___Experiment.GuildIds: ...
        @_builtins.property
        def guild_member_count_range(self) -> Global___Experiment.GuildMemberCountRange: ...
        @_builtins.property
        def guild_has_feature(self) -> Global___Experiment.GuildHasFeature: ...
        @_builtins.property
        def user_location(self) -> Global___Experiment.UserLocation: ...
        @_builtins.property
        def user_ip(self) -> Global___Experiment.UserIP: ...
        def __init__(
            self,
            *,
            client_version: Global___Experiment.ClientPlatform | None = ...,
            client_os: Global___Experiment.ClientOperatingSystem | None = ...,
            staff: Global___Experiment.StaffUsers | None = ...,
            user_in_guild: Global___Experiment.UserInGuild | None = ...,
            user_ids: Global___Experiment.UserIds | None = ...,
            client_locale: Global___Experiment.ClientLocale | None = ...,
            client_location: Global___Experiment.ClientLocation | None = ...,
            client_ip: Global___Experiment.ClientIP | None = ...,
            user_locale: Global___Experiment.UserLocale | None = ...,
            bot: Global___Experiment.UserIsBot | None = ...,
            user_age_range: Global___Experiment.UserAgeRange | None = ...,
            user_id_range: Global___Experiment.UserIDRange | None = ...,
            user_has_flag: Global___Experiment.UserHasFlag | None = ...,
            unit_id_in_range_by_hash: Global___Experiment.UnitIdInRangeByHash | None = ...,
            client_release_channel: Global___Experiment.ClientReleaseChannel | None = ...,
            always: Global___Experiment.Always | None = ...,
            client_system_locale: Global___Experiment.ClientSystemLocale | None = ...,
            unit_id_in_experiment: Global___Experiment.UnitIdInExperiment | None = ...,
            user_premium_type: Global___Experiment.UserPremiumType | None = ...,
            unit_id_matches_filter_snapshot: Global___Experiment.UnitIdMatchesFilterSnapshot | None = ...,
            guild_ids: Global___Experiment.GuildIds | None = ...,
            guild_member_count_range: Global___Experiment.GuildMemberCountRange | None = ...,
            guild_has_feature: Global___Experiment.GuildHasFeature | None = ...,
            user_location: Global___Experiment.UserLocation | None = ...,
            user_ip: Global___Experiment.UserIP | None = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["always", b"always", "bot", b"bot", "client_ip", b"client_ip", "client_locale", b"client_locale", "client_location", b"client_location", "client_os", b"client_os", "client_release_channel", b"client_release_channel", "client_system_locale", b"client_system_locale", "client_version", b"client_version", "filter", b"filter", "guild_has_feature", b"guild_has_feature", "guild_ids", b"guild_ids", "guild_member_count_range", b"guild_member_count_range", "staff", b"staff", "unit_id_in_experiment", b"unit_id_in_experiment", "unit_id_in_range_by_hash", b"unit_id_in_range_by_hash", "unit_id_matches_filter_snapshot", b"unit_id_matches_filter_snapshot", "user_age_range", b"user_age_range", "user_has_flag", b"user_has_flag", "user_id_range", b"user_id_range", "user_ids", b"user_ids", "user_in_guild", b"user_in_guild", "user_ip", b"user_ip", "user_locale", b"user_locale", "user_location", b"user_location", "user_premium_type", b"user_premium_type"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["always", b"always", "bot", b"bot", "client_ip", b"client_ip", "client_locale", b"client_locale", "client_location", b"client_location", "client_os", b"client_os", "client_release_channel", b"client_release_channel", "client_system_locale", b"client_system_locale", "client_version", b"client_version", "filter", b"filter", "guild_has_feature", b"guild_has_feature", "guild_ids", b"guild_ids", "guild_member_count_range", b"guild_member_count_range", "staff", b"staff", "unit_id_in_experiment", b"unit_id_in_experiment", "unit_id_in_range_by_hash", b"unit_id_in_range_by_hash", "unit_id_matches_filter_snapshot", b"unit_id_matches_filter_snapshot", "user_age_range", b"user_age_range", "user_has_flag", b"user_has_flag", "user_id_range", b"user_id_range", "user_ids", b"user_ids", "user_in_guild", b"user_in_guild", "user_ip", b"user_ip", "user_locale", b"user_locale", "user_location", b"user_location", "user_premium_type", b"user_premium_type"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType_filter: _TypeAlias = _typing.Literal["client_version", "client_os", "staff", "user_in_guild", "user_ids", "client_locale", "client_location", "client_ip", "user_locale", "bot", "user_age_range", "user_id_range", "user_has_flag", "unit_id_in_range_by_hash", "client_release_channel", "always", "client_system_locale", "unit_id_in_experiment", "user_premium_type", "unit_id_matches_filter_snapshot", "guild_ids", "guild_member_count_range", "guild_has_feature", "user_location", "user_ip"]  # noqa: Y015
        _WhichOneofArgType_filter: _TypeAlias = _typing.Literal["filter", b"filter"]  # noqa: Y015
        def WhichOneof(self, oneof_group: _WhichOneofArgType_filter) -> _WhichOneofReturnType_filter | None: ...

    @_typing.final
    class Override(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        VARIATION_ID_FIELD_NUMBER: _builtins.int
        variation_id: _builtins.int
        def __init__(
            self,
            *,
            variation_id: _builtins.int = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["variation_id", b"variation_id"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    @_typing.final
    class Rule(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        TYPE_FIELD_NUMBER: _builtins.int
        FILTERS_FIELD_NUMBER: _builtins.int
        OVERRIDE_FIELD_NUMBER: _builtins.int
        IS_SUNSET_RULE_FIELD_NUMBER: _builtins.int
        SUBTYPE_FIELD_NUMBER: _builtins.int
        type: Global___Experiment.Type.ValueType
        is_sunset_rule: _builtins.bool
        subtype: Global___Experiment.Subtype.ValueType
        @_builtins.property
        def filters(self) -> _containers.RepeatedCompositeFieldContainer[Global___Experiment.Filter]: ...
        @_builtins.property
        def override(self) -> Global___Experiment.Override: ...
        def __init__(
            self,
            *,
            type: Global___Experiment.Type.ValueType = ...,
            filters: _abc.Iterable[Global___Experiment.Filter] | None = ...,
            override: Global___Experiment.Override | None = ...,
            is_sunset_rule: _builtins.bool = ...,
            subtype: Global___Experiment.Subtype.ValueType = ...,
        ) -> None: ...
        _HasFieldArgType: _TypeAlias = _typing.Literal["_override", b"_override", "override", b"override"]  # noqa: Y015
        def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["_override", b"_override", "filters", b"filters", "is_sunset_rule", b"is_sunset_rule", "override", b"override", "subtype", b"subtype", "type", b"type"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
        _WhichOneofReturnType__override: _TypeAlias = _typing.Literal["override"]  # noqa: Y015
        _WhichOneofArgType__override: _TypeAlias = _typing.Literal["_override", b"_override"]  # noqa: Y015
        def WhichOneof(self, oneof_group: _WhichOneofArgType__override) -> _WhichOneofReturnType__override | None: ...

    @_typing.final
    class DebugConfig(_message.Message):
        DESCRIPTOR: _descriptor.Descriptor

        ENABLE_DECISION_LOGGING_FIELD_NUMBER: _builtins.int
        METRICS_SAMPLE_RATE_FIELD_NUMBER: _builtins.int
        LOG_CONTEXT_ON_FAILURE_FIELD_NUMBER: _builtins.int
        LOG_RAW_HEADERS_FIELD_NUMBER: _builtins.int
        TAG_FILTER_METRICS_FIELD_NUMBER: _builtins.int
        DECISION_LOG_SAMPLE_RATE_FIELD_NUMBER: _builtins.int
        enable_decision_logging: _builtins.bool
        metrics_sample_rate: _builtins.float
        log_context_on_failure: _builtins.bool
        log_raw_headers: _builtins.bool
        tag_filter_metrics: _builtins.bool
        decision_log_sample_rate: _builtins.float
        def __init__(
            self,
            *,
            enable_decision_logging: _builtins.bool = ...,
            metrics_sample_rate: _builtins.float = ...,
            log_context_on_failure: _builtins.bool = ...,
            log_raw_headers: _builtins.bool = ...,
            tag_filter_metrics: _builtins.bool = ...,
            decision_log_sample_rate: _builtins.float = ...,
        ) -> None: ...
        _ClearFieldArgType: _TypeAlias = _typing.Literal["decision_log_sample_rate", b"decision_log_sample_rate", "enable_decision_logging", b"enable_decision_logging", "log_context_on_failure", b"log_context_on_failure", "log_raw_headers", b"log_raw_headers", "metrics_sample_rate", b"metrics_sample_rate", "tag_filter_metrics", b"tag_filter_metrics"]  # noqa: Y015
        def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

    ID_FIELD_NUMBER: _builtins.int
    NAME_FIELD_NUMBER: _builtins.int
    CREATED_AT_FIELD_NUMBER: _builtins.int
    CREATOR_ID_FIELD_NUMBER: _builtins.int
    VERSION_FIELD_NUMBER: _builtins.int
    EDITED_AT_FIELD_NUMBER: _builtins.int
    EDITOR_ID_FIELD_NUMBER: _builtins.int
    TITLE_FIELD_NUMBER: _builtins.int
    DESCRIPTION_FIELD_NUMBER: _builtins.int
    HYPOTHESIS_FIELD_NUMBER: _builtins.int
    TECH_SPEC_LINK_FIELD_NUMBER: _builtins.int
    REVISION_FIELD_NUMBER: _builtins.int
    HASH_KEY_FIELD_NUMBER: _builtins.int
    UNIT_TYPE_FIELD_NUMBER: _builtins.int
    VARIATIONS_FIELD_NUMBER: _builtins.int
    RULES_FIELD_NUMBER: _builtins.int
    PHASE_FIELD_NUMBER: _builtins.int
    SURFACES_FIELD_NUMBER: _builtins.int
    OWNING_TEAM_ID_FIELD_NUMBER: _builtins.int
    CACHED_NOTIFICATION_CHANNEL_ID_FIELD_NUMBER: _builtins.int
    EXPOSURE_TRACKING_FIELD_NUMBER: _builtins.int
    ASSIGNMENT_MODE_FIELD_NUMBER: _builtins.int
    ENABLE_EDIT_RAW_JSON_UI_FIELD_NUMBER: _builtins.int
    WINNING_VARIATION_ID_FIELD_NUMBER: _builtins.int
    EXTRA_OUTCOME_CONTEXT_FIELD_NUMBER: _builtins.int
    TYPE_FIELD_NUMBER: _builtins.int
    IS_TEMPLATE_FIELD_NUMBER: _builtins.int
    FIELD_NUMBERS_TO_COPY_FIELD_NUMBER: _builtins.int
    ENGINE_FEATURE_FLAGS_FIELD_NUMBER: _builtins.int
    DEBUG_CONFIG_FIELD_NUMBER: _builtins.int
    EXPECTED_END_DATE_FIELD_NUMBER: _builtins.int
    IS_AUTOMATED_CHANGE_FIELD_NUMBER: _builtins.int
    ARCHIVE_AT_FIELD_NUMBER: _builtins.int
    GUILD_EXPERIMENT_VERSION_FIELD_NUMBER: _builtins.int
    CUSTOM_UNIT_PREFIX_FIELD_NUMBER: _builtins.int
    GROWTHBOOK_TAGS_FIELD_NUMBER: _builtins.int
    id: _builtins.int
    name: _builtins.str
    creator_id: _builtins.int
    version: _builtins.int
    editor_id: _builtins.int
    title: _builtins.str
    description: _builtins.str
    revision: _builtins.int
    hash_key: _builtins.str
    unit_type: Global___Experiment.UnitType.ValueType
    phase: Global___Experiment.Phase.ValueType
    owning_team_id: _builtins.str
    cached_notification_channel_id: _builtins.int
    exposure_tracking: Global___Experiment.ExposureTracking.ValueType
    assignment_mode: Global___Experiment.AssignmentMode.ValueType
    enable_edit_raw_json_ui: _builtins.bool
    winning_variation_id: _builtins.int
    extra_outcome_context: _builtins.str
    type: Global___Experiment.Type.ValueType
    is_template: _builtins.bool
    is_automated_change: _builtins.bool
    custom_unit_prefix: Global___Experiment.CustomUnitPrefix.ValueType
    @_builtins.property
    def created_at(self) -> _timestamp_pb2.Timestamp: ...
    @_builtins.property
    def edited_at(self) -> _timestamp_pb2.Timestamp: ...
    @_builtins.property
    def hypothesis(self) -> _wrappers_pb2.StringValue: ...
    @_builtins.property
    def tech_spec_link(self) -> _wrappers_pb2.StringValue: ...
    @_builtins.property
    def variations(self) -> _containers.RepeatedCompositeFieldContainer[Global___Experiment.Variation]: ...
    @_builtins.property
    def rules(self) -> _containers.RepeatedCompositeFieldContainer[Global___Experiment.Rule]: ...
    @_builtins.property
    def surfaces(self) -> _containers.RepeatedScalarFieldContainer[Global___Experiment.Surface.ValueType]: ...
    @_builtins.property
    def field_numbers_to_copy(self) -> _containers.RepeatedScalarFieldContainer[_builtins.int]: ...
    @_builtins.property
    def engine_feature_flags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
    @_builtins.property
    def debug_config(self) -> Global___Experiment.DebugConfig: ...
    @_builtins.property
    def expected_end_date(self) -> _timestamp_pb2.Timestamp: ...
    @_builtins.property
    def archive_at(self) -> _timestamp_pb2.Timestamp: ...
    @_builtins.property
    def guild_experiment_version(self) -> _wrappers_pb2.Int32Value: ...
    @_builtins.property
    def growthbook_tags(self) -> _containers.RepeatedScalarFieldContainer[_builtins.str]: ...
    def __init__(
        self,
        *,
        id: _builtins.int = ...,
        name: _builtins.str = ...,
        created_at: _timestamp_pb2.Timestamp | None = ...,
        creator_id: _builtins.int = ...,
        version: _builtins.int = ...,
        edited_at: _timestamp_pb2.Timestamp | None = ...,
        editor_id: _builtins.int = ...,
        title: _builtins.str = ...,
        description: _builtins.str = ...,
        hypothesis: _wrappers_pb2.StringValue | None = ...,
        tech_spec_link: _wrappers_pb2.StringValue | None = ...,
        revision: _builtins.int = ...,
        hash_key: _builtins.str = ...,
        unit_type: Global___Experiment.UnitType.ValueType = ...,
        variations: _abc.Iterable[Global___Experiment.Variation] | None = ...,
        rules: _abc.Iterable[Global___Experiment.Rule] | None = ...,
        phase: Global___Experiment.Phase.ValueType = ...,
        surfaces: _abc.Iterable[Global___Experiment.Surface.ValueType] | None = ...,
        owning_team_id: _builtins.str = ...,
        cached_notification_channel_id: _builtins.int = ...,
        exposure_tracking: Global___Experiment.ExposureTracking.ValueType = ...,
        assignment_mode: Global___Experiment.AssignmentMode.ValueType = ...,
        enable_edit_raw_json_ui: _builtins.bool = ...,
        winning_variation_id: _builtins.int = ...,
        extra_outcome_context: _builtins.str = ...,
        type: Global___Experiment.Type.ValueType = ...,
        is_template: _builtins.bool = ...,
        field_numbers_to_copy: _abc.Iterable[_builtins.int] | None = ...,
        engine_feature_flags: _abc.Iterable[_builtins.str] | None = ...,
        debug_config: Global___Experiment.DebugConfig | None = ...,
        expected_end_date: _timestamp_pb2.Timestamp | None = ...,
        is_automated_change: _builtins.bool = ...,
        archive_at: _timestamp_pb2.Timestamp | None = ...,
        guild_experiment_version: _wrappers_pb2.Int32Value | None = ...,
        custom_unit_prefix: Global___Experiment.CustomUnitPrefix.ValueType = ...,
        growthbook_tags: _abc.Iterable[_builtins.str] | None = ...,
    ) -> None: ...
    _HasFieldArgType: _TypeAlias = _typing.Literal["_archive_at", b"_archive_at", "_created_at", b"_created_at", "_debug_config", b"_debug_config", "_edited_at", b"_edited_at", "_expected_end_date", b"_expected_end_date", "_guild_experiment_version", b"_guild_experiment_version", "_hypothesis", b"_hypothesis", "_tech_spec_link", b"_tech_spec_link", "archive_at", b"archive_at", "created_at", b"created_at", "debug_config", b"debug_config", "edited_at", b"edited_at", "expected_end_date", b"expected_end_date", "guild_experiment_version", b"guild_experiment_version", "hypothesis", b"hypothesis", "tech_spec_link", b"tech_spec_link"]  # noqa: Y015
    def HasField(self, field_name: _HasFieldArgType) -> _builtins.bool: ...
    _ClearFieldArgType: _TypeAlias = _typing.Literal["_archive_at", b"_archive_at", "_created_at", b"_created_at", "_debug_config", b"_debug_config", "_edited_at", b"_edited_at", "_expected_end_date", b"_expected_end_date", "_guild_experiment_version", b"_guild_experiment_version", "_hypothesis", b"_hypothesis", "_tech_spec_link", b"_tech_spec_link", "archive_at", b"archive_at", "assignment_mode", b"assignment_mode", "cached_notification_channel_id", b"cached_notification_channel_id", "created_at", b"created_at", "creator_id", b"creator_id", "custom_unit_prefix", b"custom_unit_prefix", "debug_config", b"debug_config", "description", b"description", "edited_at", b"edited_at", "editor_id", b"editor_id", "enable_edit_raw_json_ui", b"enable_edit_raw_json_ui", "engine_feature_flags", b"engine_feature_flags", "expected_end_date", b"expected_end_date", "exposure_tracking", b"exposure_tracking", "extra_outcome_context", b"extra_outcome_context", "field_numbers_to_copy", b"field_numbers_to_copy", "growthbook_tags", b"growthbook_tags", "guild_experiment_version", b"guild_experiment_version", "hash_key", b"hash_key", "hypothesis", b"hypothesis", "id", b"id", "is_automated_change", b"is_automated_change", "is_template", b"is_template", "name", b"name", "owning_team_id", b"owning_team_id", "phase", b"phase", "revision", b"revision", "rules", b"rules", "surfaces", b"surfaces", "tech_spec_link", b"tech_spec_link", "title", b"title", "type", b"type", "unit_type", b"unit_type", "variations", b"variations", "version", b"version", "winning_variation_id", b"winning_variation_id"]  # noqa: Y015
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__archive_at: _TypeAlias = _typing.Literal["archive_at"]  # noqa: Y015
    _WhichOneofArgType__archive_at: _TypeAlias = _typing.Literal["_archive_at", b"_archive_at"]  # noqa: Y015
    _WhichOneofReturnType__created_at: _TypeAlias = _typing.Literal["created_at"]  # noqa: Y015
    _WhichOneofArgType__created_at: _TypeAlias = _typing.Literal["_created_at", b"_created_at"]  # noqa: Y015
    _WhichOneofReturnType__debug_config: _TypeAlias = _typing.Literal["debug_config"]  # noqa: Y015
    _WhichOneofArgType__debug_config: _TypeAlias = _typing.Literal["_debug_config", b"_debug_config"]  # noqa: Y015
    _WhichOneofReturnType__edited_at: _TypeAlias = _typing.Literal["edited_at"]  # noqa: Y015
    _WhichOneofArgType__edited_at: _TypeAlias = _typing.Literal["_edited_at", b"_edited_at"]  # noqa: Y015
    _WhichOneofReturnType__expected_end_date: _TypeAlias = _typing.Literal["expected_end_date"]  # noqa: Y015
    _WhichOneofArgType__expected_end_date: _TypeAlias = _typing.Literal["_expected_end_date", b"_expected_end_date"]  # noqa: Y015
    _WhichOneofReturnType__guild_experiment_version: _TypeAlias = _typing.Literal["guild_experiment_version"]  # noqa: Y015
    _WhichOneofArgType__guild_experiment_version: _TypeAlias = _typing.Literal["_guild_experiment_version", b"_guild_experiment_version"]  # noqa: Y015
    _WhichOneofReturnType__hypothesis: _TypeAlias = _typing.Literal["hypothesis"]  # noqa: Y015
    _WhichOneofArgType__hypothesis: _TypeAlias = _typing.Literal["_hypothesis", b"_hypothesis"]  # noqa: Y015
    _WhichOneofReturnType__tech_spec_link: _TypeAlias = _typing.Literal["tech_spec_link"]  # noqa: Y015
    _WhichOneofArgType__tech_spec_link: _TypeAlias = _typing.Literal["_tech_spec_link", b"_tech_spec_link"]  # noqa: Y015
    @_typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__archive_at) -> _WhichOneofReturnType__archive_at | None: ...
    @_typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__created_at) -> _WhichOneofReturnType__created_at | None: ...
    @_typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__debug_config) -> _WhichOneofReturnType__debug_config | None: ...
    @_typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__edited_at) -> _WhichOneofReturnType__edited_at | None: ...
    @_typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__expected_end_date) -> _WhichOneofReturnType__expected_end_date | None: ...
    @_typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__guild_experiment_version) -> _WhichOneofReturnType__guild_experiment_version | None: ...
    @_typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__hypothesis) -> _WhichOneofReturnType__hypothesis | None: ...
    @_typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__tech_spec_link) -> _WhichOneofReturnType__tech_spec_link | None: ...

Global___Experiment: _TypeAlias = Experiment  # noqa: Y015

FILTER_CATEGORY_FIELD_NUMBER: _builtins.int
filter_category: _extension_dict._ExtensionFieldDescriptor[_descriptor_pb2.MessageOptions, Global___FilterCategory.ValueType]
