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

class _NativeUpdateActionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NativeUpdateAction.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    NATIVE_UPDATE_ACTION_UNSPECIFIED: _NativeUpdateAction.ValueType  # 0
    NATIVE_UPDATE_ACTION_NONE: _NativeUpdateAction.ValueType  # 1
    """No update needed."""
    NATIVE_UPDATE_ACTION_OTA: _NativeUpdateAction.ValueType  # 2
    """Fetch and reload an OTA bundle; the client can apply this itself."""
    NATIVE_UPDATE_ACTION_STORE: _NativeUpdateAction.ValueType  # 3
    """Update via the App Store / Play Store."""
    NATIVE_UPDATE_ACTION_REINSTALL: _NativeUpdateAction.ValueType  # 4
    """Delete and reinstall the app (worst case)."""

class NativeUpdateAction(_NativeUpdateAction, metaclass=_NativeUpdateActionEnumTypeWrapper): ...

NATIVE_UPDATE_ACTION_UNSPECIFIED: NativeUpdateAction.ValueType  # 0
NATIVE_UPDATE_ACTION_NONE: NativeUpdateAction.ValueType  # 1
"""No update needed."""
NATIVE_UPDATE_ACTION_OTA: NativeUpdateAction.ValueType  # 2
"""Fetch and reload an OTA bundle; the client can apply this itself."""
NATIVE_UPDATE_ACTION_STORE: NativeUpdateAction.ValueType  # 3
"""Update via the App Store / Play Store."""
NATIVE_UPDATE_ACTION_REINSTALL: NativeUpdateAction.ValueType  # 4
"""Delete and reinstall the app (worst case)."""
Global___NativeUpdateAction: typing_extensions.TypeAlias = NativeUpdateAction

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

class _NativeUpdateCauseEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_NativeUpdateCause.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    NATIVE_UPDATE_CAUSE_UNSPECIFIED: _NativeUpdateCause.ValueType  # 0
    NATIVE_UPDATE_CAUSE_AGE: _NativeUpdateCause.ValueType  # 1
    """Bundle or binary is past its support window. The user is running an old version."""
    NATIVE_UPDATE_CAUSE_BANNED: _NativeUpdateCause.ValueType  # 2
    """The currently-running bundle has been banned (we shipped a buggy version). The framing on the
    device shifts so we take responsibility rather than implying the user is the one out of date.
    """

class NativeUpdateCause(_NativeUpdateCause, metaclass=_NativeUpdateCauseEnumTypeWrapper): ...

NATIVE_UPDATE_CAUSE_UNSPECIFIED: NativeUpdateCause.ValueType  # 0
NATIVE_UPDATE_CAUSE_AGE: NativeUpdateCause.ValueType  # 1
"""Bundle or binary is past its support window. The user is running an old version."""
NATIVE_UPDATE_CAUSE_BANNED: NativeUpdateCause.ValueType  # 2
"""The currently-running bundle has been banned (we shipped a buggy version). The framing on the
device shifts so we take responsibility rather than implying the user is the one out of date.
"""
Global___NativeUpdateCause: typing_extensions.TypeAlias = NativeUpdateCause

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

    VERSION_FIELD_NUMBER: builtins.int
    version: builtins.str
    def __init__(
        self,
        *,
        version: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["version", b"version"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___VersionInfo: typing_extensions.TypeAlias = VersionInfo

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

    WIDTH_FIELD_NUMBER: builtins.int
    HEIGHT_FIELD_NUMBER: builtins.int
    width: builtins.int
    height: builtins.int
    def __init__(
        self,
        *,
        width: builtins.int | None = ...,
        height: builtins.int | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["height", b"height", "width", b"width"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ScreenResolution: typing_extensions.TypeAlias = ScreenResolution

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

    SUBJECT_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    RESULTS_FIELD_NUMBER: builtins.int
    FRONTEND_VERSION_FIELD_NUMBER: builtins.int
    USER_AGENT_FIELD_NUMBER: builtins.int
    PAGE_FIELD_NUMBER: builtins.int
    SCREEN_RESOLUTION_FIELD_NUMBER: builtins.int
    subject: builtins.str
    description: builtins.str
    results: builtins.str
    frontend_version: builtins.str
    user_agent: builtins.str
    page: builtins.str
    @property
    def screen_resolution(self) -> Global___ScreenResolution: ...
    def __init__(
        self,
        *,
        subject: builtins.str | None = ...,
        description: builtins.str | None = ...,
        results: builtins.str | None = ...,
        frontend_version: builtins.str | None = ...,
        user_agent: builtins.str | None = ...,
        page: builtins.str | None = ...,
        screen_resolution: Global___ScreenResolution | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["screen_resolution", b"screen_resolution"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["description", b"description", "frontend_version", b"frontend_version", "page", b"page", "results", b"results", "screen_resolution", b"screen_resolution", "subject", b"subject", "user_agent", b"user_agent"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ReportBugReq: typing_extensions.TypeAlias = ReportBugReq

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

    BUG_ID_FIELD_NUMBER: builtins.int
    BUG_URL_FIELD_NUMBER: builtins.int
    bug_id: builtins.str
    bug_url: builtins.str
    def __init__(
        self,
        *,
        bug_id: builtins.str | None = ...,
        bug_url: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["bug_id", b"bug_id", "bug_url", b"bug_url"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ReportBugRes: typing_extensions.TypeAlias = ReportBugRes

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

    NONCE_FIELD_NUMBER: builtins.int
    nonce: builtins.str
    def __init__(
        self,
        *,
        nonce: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["nonce", b"nonce"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___StatusReq: typing_extensions.TypeAlias = StatusReq

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

    NONCE_FIELD_NUMBER: builtins.int
    VERSION_FIELD_NUMBER: builtins.int
    COUCHER_COUNT_FIELD_NUMBER: builtins.int
    STABLE_FIELD_NUMBER: builtins.int
    nonce: builtins.str
    version: builtins.str
    coucher_count: builtins.int
    stable: builtins.bool
    def __init__(
        self,
        *,
        nonce: builtins.str | None = ...,
        version: builtins.str | None = ...,
        coucher_count: builtins.int | None = ...,
        stable: builtins.bool | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["coucher_count", b"coucher_count", "nonce", b"nonce", "stable", b"stable", "version", b"version"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___StatusRes: typing_extensions.TypeAlias = StatusRes

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

    SEARCH_STRING_FIELD_NUMBER: builtins.int
    NOMINATIM_RESULT_JSON_FIELD_NUMBER: builtins.int
    FORMATTED_RESULT_JSON_FIELD_NUMBER: builtins.int
    DURATION_MS_FIELD_NUMBER: builtins.int
    search_string: builtins.str
    nominatim_result_json: builtins.str
    formatted_result_json: builtins.str
    duration_ms: builtins.int
    def __init__(
        self,
        *,
        search_string: builtins.str | None = ...,
        nominatim_result_json: builtins.str | None = ...,
        formatted_result_json: builtins.str | None = ...,
        duration_ms: builtins.int | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["duration_ms", b"duration_ms", "formatted_result_json", b"formatted_result_json", "nominatim_result_json", b"nominatim_result_json", "search_string", b"search_string"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GeolocationSearchInfoReq: typing_extensions.TypeAlias = GeolocationSearchInfoReq

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

    CONTEXT_FIELD_NUMBER: builtins.int
    FORMATTED_RESULT_JSON_FIELD_NUMBER: builtins.int
    SEARCH_CHOICE_JSON_FIELD_NUMBER: builtins.int
    context: builtins.str
    formatted_result_json: builtins.str
    search_choice_json: builtins.str
    def __init__(
        self,
        *,
        context: builtins.str | None = ...,
        formatted_result_json: builtins.str | None = ...,
        search_choice_json: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["context", b"context", "formatted_result_json", b"formatted_result_json", "search_choice_json", b"search_choice_json"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___GeolocationClickInfoReq: typing_extensions.TypeAlias = GeolocationClickInfoReq

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

    TAG_FIELD_NUMBER: builtins.int
    PROPERTIES_JSON_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    OCCURRED_FIELD_NUMBER: builtins.int
    tag: builtins.str
    properties_json: builtins.str
    value: builtins.float
    @property
    def occurred(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        tag: builtins.str | None = ...,
        properties_json: builtins.str | None = ...,
        value: builtins.float | None = ...,
        occurred: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["occurred", b"occurred"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["occurred", b"occurred", "properties_json", b"properties_json", "tag", b"tag", "value", b"value"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___DiagnosticInfo: typing_extensions.TypeAlias = DiagnosticInfo

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

    FRONTEND_VERSION_FIELD_NUMBER: builtins.int
    INFOS_FIELD_NUMBER: builtins.int
    frontend_version: builtins.str
    @property
    def infos(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[Global___DiagnosticInfo]: ...
    def __init__(
        self,
        *,
        frontend_version: builtins.str | None = ...,
        infos: collections.abc.Iterable[Global___DiagnosticInfo] | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["frontend_version", b"frontend_version", "infos", b"infos"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___ReportDiagnosticsReq: typing_extensions.TypeAlias = ReportDiagnosticsReq

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

    DEBUG_JSON_FIELD_NUMBER: builtins.int
    EAS_CLIENT_ID_FIELD_NUMBER: builtins.int
    INSTALL_ID_FIELD_NUMBER: builtins.int
    STICKY_ID_FIELD_NUMBER: builtins.int
    IDFV_FIELD_NUMBER: builtins.int
    ANDROID_ID_FIELD_NUMBER: builtins.int
    DEVICE_NAME_FIELD_NUMBER: builtins.int
    PLATFORM_FIELD_NUMBER: builtins.int
    OS_VERSION_FIELD_NUMBER: builtins.int
    LOCALE_FIELD_NUMBER: builtins.int
    USER_STATE_FIELD_NUMBER: builtins.int
    APP_VARIANT_FIELD_NUMBER: builtins.int
    APP_VERSION_FIELD_NUMBER: builtins.int
    NATIVE_BUILD_FIELD_NUMBER: builtins.int
    EMBEDDED_DISPLAY_VERSION_FIELD_NUMBER: builtins.int
    EMBEDDED_DEBUG_VERSION_FIELD_NUMBER: builtins.int
    RUNNING_DISPLAY_VERSION_FIELD_NUMBER: builtins.int
    RUNNING_DEBUG_VERSION_FIELD_NUMBER: builtins.int
    RUNNING_DEBUG_VERSION_OTA_FIELD_NUMBER: builtins.int
    RUNTIME_VERSION_FIELD_NUMBER: builtins.int
    UPDATE_ID_FIELD_NUMBER: builtins.int
    IS_EMBEDDED_LAUNCH_FIELD_NUMBER: builtins.int
    LAUNCH_SOURCE_FIELD_NUMBER: builtins.int
    EMBEDDED_CREATED_AT_FIELD_NUMBER: builtins.int
    CREATED_AT_FIELD_NUMBER: builtins.int
    PUSH_PERMISSION_FIELD_NUMBER: builtins.int
    PUSH_TOKEN_FIELD_NUMBER: builtins.int
    TIME_SINCE_LAST_OPEN_FIELD_NUMBER: builtins.int
    OCCURRED_FIELD_NUMBER: builtins.int
    debug_json: builtins.str
    eas_client_id: builtins.str
    """Device / install identity"""
    install_id: builtins.str
    sticky_id: builtins.str
    idfv: builtins.str
    android_id: builtins.str
    device_name: builtins.str
    platform: builtins.str
    os_version: builtins.str
    locale: builtins.str
    user_state: builtins.str
    app_variant: builtins.str
    """Build identity — the embedded store build, the running (possibly OTA) bundle,
    and the runtimeVersion/channel that decide which OTAs apply.
    """
    app_version: builtins.str
    native_build: builtins.str
    embedded_display_version: builtins.str
    embedded_debug_version: builtins.str
    running_display_version: builtins.str
    running_debug_version: builtins.str
    running_debug_version_ota: builtins.str
    runtime_version: builtins.str
    update_id: builtins.str
    is_embedded_launch: builtins.bool
    launch_source: builtins.str
    push_permission: builtins.str
    """Push + timing"""
    push_token: builtins.str
    @property
    def embedded_created_at(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def created_at(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def time_since_last_open(self) -> google.protobuf.duration_pb2.Duration: ...
    @property
    def occurred(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        debug_json: builtins.str | None = ...,
        eas_client_id: builtins.str | None = ...,
        install_id: builtins.str | None = ...,
        sticky_id: builtins.str | None = ...,
        idfv: builtins.str | None = ...,
        android_id: builtins.str | None = ...,
        device_name: builtins.str | None = ...,
        platform: builtins.str | None = ...,
        os_version: builtins.str | None = ...,
        locale: builtins.str | None = ...,
        user_state: builtins.str | None = ...,
        app_variant: builtins.str | None = ...,
        app_version: builtins.str | None = ...,
        native_build: builtins.str | None = ...,
        embedded_display_version: builtins.str | None = ...,
        embedded_debug_version: builtins.str | None = ...,
        running_display_version: builtins.str | None = ...,
        running_debug_version: builtins.str | None = ...,
        running_debug_version_ota: builtins.str | None = ...,
        runtime_version: builtins.str | None = ...,
        update_id: builtins.str | None = ...,
        is_embedded_launch: builtins.bool | None = ...,
        launch_source: builtins.str | None = ...,
        embedded_created_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        created_at: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        push_permission: builtins.str | None = ...,
        push_token: builtins.str | None = ...,
        time_since_last_open: google.protobuf.duration_pb2.Duration | None = ...,
        occurred: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["created_at", b"created_at", "embedded_created_at", b"embedded_created_at", "occurred", b"occurred", "time_since_last_open", b"time_since_last_open"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["android_id", b"android_id", "app_variant", b"app_variant", "app_version", b"app_version", "created_at", b"created_at", "debug_json", b"debug_json", "device_name", b"device_name", "eas_client_id", b"eas_client_id", "embedded_created_at", b"embedded_created_at", "embedded_debug_version", b"embedded_debug_version", "embedded_display_version", b"embedded_display_version", "idfv", b"idfv", "install_id", b"install_id", "is_embedded_launch", b"is_embedded_launch", "launch_source", b"launch_source", "locale", b"locale", "native_build", b"native_build", "occurred", b"occurred", "os_version", b"os_version", "platform", b"platform", "push_permission", b"push_permission", "push_token", b"push_token", "running_debug_version", b"running_debug_version", "running_debug_version_ota", b"running_debug_version_ota", "running_display_version", b"running_display_version", "runtime_version", b"runtime_version", "sticky_id", b"sticky_id", "time_since_last_open", b"time_since_last_open", "update_id", b"update_id", "user_state", b"user_state"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CheckNativeStatusReq: typing_extensions.TypeAlias = CheckNativeStatusReq

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

    ACTION_FIELD_NUMBER: builtins.int
    REQUIRED_FIELD_NUMBER: builtins.int
    ACT_BY_FIELD_NUMBER: builtins.int
    NAG_INTERVAL_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    LINK_URL_FIELD_NUMBER: builtins.int
    LINK_TEXT_FIELD_NUMBER: builtins.int
    CAUSE_FIELD_NUMBER: builtins.int
    action: Global___NativeUpdateAction.ValueType
    required: builtins.bool
    """Advisory when false; when true the client must act by act_by (in the past = block now)."""
    message: builtins.str
    """Shown on the nag/block screen."""
    link_url: builtins.str
    """Where to send the user to update (store listing, or a different app for reinstall)."""
    link_text: builtins.str
    """Label for the link_url button (e.g. "Update now", "Get the new app")."""
    cause: Global___NativeUpdateCause.ValueType
    """Why the update is being asked for. The client uses this to pick the on-screen wording."""
    @property
    def act_by(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def nag_interval(self) -> google.protobuf.duration_pb2.Duration:
        """For advisory updates (required == false): after showing the nag, the client waits at least this
        long before showing it again. Ignored when required. Unset/zero = show once per app session.
        """

    def __init__(
        self,
        *,
        action: Global___NativeUpdateAction.ValueType | None = ...,
        required: builtins.bool | None = ...,
        act_by: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        nag_interval: google.protobuf.duration_pb2.Duration | None = ...,
        message: builtins.str | None = ...,
        link_url: builtins.str | None = ...,
        link_text: builtins.str | None = ...,
        cause: Global___NativeUpdateCause.ValueType | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["act_by", b"act_by", "nag_interval", b"nag_interval"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["act_by", b"act_by", "action", b"action", "cause", b"cause", "link_text", b"link_text", "link_url", b"link_url", "message", b"message", "nag_interval", b"nag_interval", "required", b"required"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___NativeUpdateInfo: typing_extensions.TypeAlias = NativeUpdateInfo

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

    UPDATE_INFO_FIELD_NUMBER: builtins.int
    @property
    def update_info(self) -> Global___NativeUpdateInfo: ...
    def __init__(
        self,
        *,
        update_info: Global___NativeUpdateInfo | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["update_info", b"update_info"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["update_info", b"update_info"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___CheckNativeStatusRes: typing_extensions.TypeAlias = CheckNativeStatusRes

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

    FLAG_KEY_FIELD_NUMBER: builtins.int
    flag_key: builtins.str
    def __init__(
        self,
        *,
        flag_key: builtins.str | None = ...,
    ) -> None: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["flag_key", b"flag_key"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___EvaluateFeatureFlagReq: typing_extensions.TypeAlias = EvaluateFeatureFlagReq

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

    VALUE_FIELD_NUMBER: builtins.int
    @property
    def value(self) -> google.protobuf.struct_pb2.Value:
        """The flag's resolved value (bool, string, number, or JSON object/array). Unset when the flag
        isn't configured server-side, so the frontend's in-code default applies.
        """

    def __init__(
        self,
        *,
        value: google.protobuf.struct_pb2.Value | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["value", b"value"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["value", b"value"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___EvaluateFeatureFlagRes: typing_extensions.TypeAlias = EvaluateFeatureFlagRes

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

    EXPERIMENT_KEY_FIELD_NUMBER: builtins.int
    EXPERIMENT_NAME_FIELD_NUMBER: builtins.int
    VARIATION_ID_FIELD_NUMBER: builtins.int
    VARIATION_KEY_FIELD_NUMBER: builtins.int
    VARIATION_NAME_FIELD_NUMBER: builtins.int
    HASH_ATTRIBUTE_FIELD_NUMBER: builtins.int
    HASH_VALUE_FIELD_NUMBER: builtins.int
    FEATURE_ID_FIELD_NUMBER: builtins.int
    IN_EXPERIMENT_FIELD_NUMBER: builtins.int
    BUCKET_FIELD_NUMBER: builtins.int
    HASH_USED_FIELD_NUMBER: builtins.int
    STICKY_BUCKET_USED_FIELD_NUMBER: builtins.int
    experiment_key: builtins.str
    experiment_name: builtins.str
    variation_id: builtins.int
    variation_key: builtins.str
    variation_name: builtins.str
    hash_attribute: builtins.str
    hash_value: builtins.str
    feature_id: builtins.str
    in_experiment: builtins.bool
    bucket: builtins.float
    hash_used: builtins.bool
    sticky_bucket_used: builtins.bool
    def __init__(
        self,
        *,
        experiment_key: builtins.str | None = ...,
        experiment_name: builtins.str | None = ...,
        variation_id: builtins.int | None = ...,
        variation_key: builtins.str | None = ...,
        variation_name: builtins.str | None = ...,
        hash_attribute: builtins.str | None = ...,
        hash_value: builtins.str | None = ...,
        feature_id: builtins.str | None = ...,
        in_experiment: builtins.bool | None = ...,
        bucket: builtins.float | None = ...,
        hash_used: builtins.bool | None = ...,
        sticky_bucket_used: builtins.bool | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["_bucket", b"_bucket", "_hash_used", b"_hash_used", "_sticky_bucket_used", b"_sticky_bucket_used", "bucket", b"bucket", "hash_used", b"hash_used", "sticky_bucket_used", b"sticky_bucket_used"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["_bucket", b"_bucket", "_hash_used", b"_hash_used", "_sticky_bucket_used", b"_sticky_bucket_used", "bucket", b"bucket", "experiment_key", b"experiment_key", "experiment_name", b"experiment_name", "feature_id", b"feature_id", "hash_attribute", b"hash_attribute", "hash_used", b"hash_used", "hash_value", b"hash_value", "in_experiment", b"in_experiment", "sticky_bucket_used", b"sticky_bucket_used", "variation_id", b"variation_id", "variation_key", b"variation_key", "variation_name", b"variation_name"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...
    _WhichOneofReturnType__bucket: typing_extensions.TypeAlias = typing.Literal["bucket"]
    _WhichOneofArgType__bucket: typing_extensions.TypeAlias = typing.Literal["_bucket", b"_bucket"]
    _WhichOneofReturnType__hash_used: typing_extensions.TypeAlias = typing.Literal["hash_used"]
    _WhichOneofArgType__hash_used: typing_extensions.TypeAlias = typing.Literal["_hash_used", b"_hash_used"]
    _WhichOneofReturnType__sticky_bucket_used: typing_extensions.TypeAlias = typing.Literal["sticky_bucket_used"]
    _WhichOneofArgType__sticky_bucket_used: typing_extensions.TypeAlias = typing.Literal["_sticky_bucket_used", b"_sticky_bucket_used"]
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__bucket) -> _WhichOneofReturnType__bucket | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__hash_used) -> _WhichOneofReturnType__hash_used | None: ...
    @typing.overload
    def WhichOneof(self, oneof_group: _WhichOneofArgType__sticky_bucket_used) -> _WhichOneofReturnType__sticky_bucket_used | None: ...

Global___LogExperimentExposureReq: typing_extensions.TypeAlias = LogExperimentExposureReq
