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

This proto forms the basis of a flag-evaluation API.
It supports single and bulk evaluation RPCs, and flags of various types, as well as establishing a stream for getting notifications about changes in a flag definition.
It supports the inclusion of a "context" with each evaluation, which may contain arbitrary attributes relevant to flag evaluation.
"""

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.struct_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

@typing.final
class ResolveAllRequest(google.protobuf.message.Message):
    """Request body for bulk flag evaluation, used by the ResolveAll rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CONTEXT_FIELD_NUMBER: builtins.int
    @property
    def context(self) -> google.protobuf.struct_pb2.Struct:
        """Object structure describing the EvaluationContext used in the flag evaluation, see https://openfeature.dev/docs/reference/concepts/evaluation-context"""

    def __init__(
        self,
        *,
        context: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["context", b"context"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["context", b"context"]) -> None: ...

global___ResolveAllRequest = ResolveAllRequest

@typing.final
class ResolveAllResponse(google.protobuf.message.Message):
    """Response body for bulk flag evaluation, used by the ResolveAll rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

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

    FLAGS_FIELD_NUMBER: builtins.int
    @property
    def flags(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___AnyFlag]:
        """Object structure describing the evaluated flags for the provided context."""

    def __init__(
        self,
        *,
        flags: collections.abc.Mapping[builtins.str, global___AnyFlag] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["flags", b"flags"]) -> None: ...

global___ResolveAllResponse = ResolveAllResponse

@typing.final
class AnyFlag(google.protobuf.message.Message):
    """A variant type flag response."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    REASON_FIELD_NUMBER: builtins.int
    VARIANT_FIELD_NUMBER: builtins.int
    BOOL_VALUE_FIELD_NUMBER: builtins.int
    STRING_VALUE_FIELD_NUMBER: builtins.int
    DOUBLE_VALUE_FIELD_NUMBER: builtins.int
    OBJECT_VALUE_FIELD_NUMBER: builtins.int
    reason: builtins.str
    """The reason for the given return value, see https://openfeature.dev/docs/specification/types#resolution-details"""
    variant: builtins.str
    """The variant name of the returned flag value."""
    bool_value: builtins.bool
    string_value: builtins.str
    double_value: builtins.float
    @property
    def object_value(self) -> google.protobuf.struct_pb2.Struct: ...
    def __init__(
        self,
        *,
        reason: builtins.str = ...,
        variant: builtins.str = ...,
        bool_value: builtins.bool = ...,
        string_value: builtins.str = ...,
        double_value: builtins.float = ...,
        object_value: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["bool_value", b"bool_value", "double_value", b"double_value", "object_value", b"object_value", "string_value", b"string_value", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["bool_value", b"bool_value", "double_value", b"double_value", "object_value", b"object_value", "reason", b"reason", "string_value", b"string_value", "value", b"value", "variant", b"variant"]) -> None: ...
    def WhichOneof(self, oneof_group: typing.Literal["value", b"value"]) -> typing.Literal["bool_value", "string_value", "double_value", "object_value"] | None: ...

global___AnyFlag = AnyFlag

@typing.final
class ResolveBooleanRequest(google.protobuf.message.Message):
    """Request body for boolean flag evaluation, used by the ResolveBoolean rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FLAG_KEY_FIELD_NUMBER: builtins.int
    CONTEXT_FIELD_NUMBER: builtins.int
    flag_key: builtins.str
    """Flag key of the requested flag."""
    @property
    def context(self) -> google.protobuf.struct_pb2.Struct:
        """Object structure describing the EvaluationContext used in the flag evaluation, see https://openfeature.dev/docs/reference/concepts/evaluation-context"""

    def __init__(
        self,
        *,
        flag_key: builtins.str = ...,
        context: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["context", b"context"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["context", b"context", "flag_key", b"flag_key"]) -> None: ...

global___ResolveBooleanRequest = ResolveBooleanRequest

@typing.final
class ResolveBooleanResponse(google.protobuf.message.Message):
    """Response body for boolean flag evaluation. used by the ResolveBoolean rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VALUE_FIELD_NUMBER: builtins.int
    REASON_FIELD_NUMBER: builtins.int
    VARIANT_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    value: builtins.bool
    """The response value of the boolean flag evaluation, will be unset in the case of error."""
    reason: builtins.str
    """The reason for the given return value, see https://openfeature.dev/docs/specification/types#resolution-details"""
    variant: builtins.str
    """The variant name of the returned flag value."""
    @property
    def metadata(self) -> google.protobuf.struct_pb2.Struct:
        """Metadata for this evaluation"""

    def __init__(
        self,
        *,
        value: builtins.bool = ...,
        reason: builtins.str = ...,
        variant: builtins.str = ...,
        metadata: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["metadata", b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "reason", b"reason", "value", b"value", "variant", b"variant"]) -> None: ...

global___ResolveBooleanResponse = ResolveBooleanResponse

@typing.final
class ResolveStringRequest(google.protobuf.message.Message):
    """Request body for string flag evaluation, used by the ResolveString rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FLAG_KEY_FIELD_NUMBER: builtins.int
    CONTEXT_FIELD_NUMBER: builtins.int
    flag_key: builtins.str
    """Flag key of the requested flag."""
    @property
    def context(self) -> google.protobuf.struct_pb2.Struct:
        """Object structure describing the EvaluationContext used in the flag evaluation, see https://openfeature.dev/docs/reference/concepts/evaluation-context"""

    def __init__(
        self,
        *,
        flag_key: builtins.str = ...,
        context: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["context", b"context"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["context", b"context", "flag_key", b"flag_key"]) -> None: ...

global___ResolveStringRequest = ResolveStringRequest

@typing.final
class ResolveStringResponse(google.protobuf.message.Message):
    """Response body for string flag evaluation. used by the ResolveString rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VALUE_FIELD_NUMBER: builtins.int
    REASON_FIELD_NUMBER: builtins.int
    VARIANT_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    value: builtins.str
    """The response value of the string flag evaluation, will be unset in the case of error."""
    reason: builtins.str
    """The reason for the given return value, see https://openfeature.dev/docs/specification/types#resolution-details"""
    variant: builtins.str
    """The variant name of the returned flag value."""
    @property
    def metadata(self) -> google.protobuf.struct_pb2.Struct:
        """Metadata for this evaluation"""

    def __init__(
        self,
        *,
        value: builtins.str = ...,
        reason: builtins.str = ...,
        variant: builtins.str = ...,
        metadata: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["metadata", b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "reason", b"reason", "value", b"value", "variant", b"variant"]) -> None: ...

global___ResolveStringResponse = ResolveStringResponse

@typing.final
class ResolveFloatRequest(google.protobuf.message.Message):
    """Request body for float flag evaluation, used by the ResolveFloat rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FLAG_KEY_FIELD_NUMBER: builtins.int
    CONTEXT_FIELD_NUMBER: builtins.int
    flag_key: builtins.str
    """Flag key of the requested flag."""
    @property
    def context(self) -> google.protobuf.struct_pb2.Struct:
        """Object structure describing the EvaluationContext used in the flag evaluation, see https://openfeature.dev/docs/reference/concepts/evaluation-context"""

    def __init__(
        self,
        *,
        flag_key: builtins.str = ...,
        context: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["context", b"context"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["context", b"context", "flag_key", b"flag_key"]) -> None: ...

global___ResolveFloatRequest = ResolveFloatRequest

@typing.final
class ResolveFloatResponse(google.protobuf.message.Message):
    """Response body for float flag evaluation. used by the ResolveFloat rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VALUE_FIELD_NUMBER: builtins.int
    REASON_FIELD_NUMBER: builtins.int
    VARIANT_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    value: builtins.float
    """The response value of the float flag evaluation, will be empty in the case of error."""
    reason: builtins.str
    """The reason for the given return value, see https://openfeature.dev/docs/specification/types#resolution-details"""
    variant: builtins.str
    """The variant name of the returned flag value."""
    @property
    def metadata(self) -> google.protobuf.struct_pb2.Struct:
        """Metadata for this evaluation"""

    def __init__(
        self,
        *,
        value: builtins.float = ...,
        reason: builtins.str = ...,
        variant: builtins.str = ...,
        metadata: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["metadata", b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "reason", b"reason", "value", b"value", "variant", b"variant"]) -> None: ...

global___ResolveFloatResponse = ResolveFloatResponse

@typing.final
class ResolveIntRequest(google.protobuf.message.Message):
    """Request body for int flag evaluation, used by the ResolveInt rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FLAG_KEY_FIELD_NUMBER: builtins.int
    CONTEXT_FIELD_NUMBER: builtins.int
    flag_key: builtins.str
    """Flag key of the requested flag."""
    @property
    def context(self) -> google.protobuf.struct_pb2.Struct:
        """Object structure describing the EvaluationContext used in the flag evaluation, see https://openfeature.dev/docs/reference/concepts/evaluation-context"""

    def __init__(
        self,
        *,
        flag_key: builtins.str = ...,
        context: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["context", b"context"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["context", b"context", "flag_key", b"flag_key"]) -> None: ...

global___ResolveIntRequest = ResolveIntRequest

@typing.final
class ResolveIntResponse(google.protobuf.message.Message):
    """Response body for int flag evaluation. used by the ResolveInt rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VALUE_FIELD_NUMBER: builtins.int
    REASON_FIELD_NUMBER: builtins.int
    VARIANT_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    value: builtins.int
    """The response value of the int flag evaluation, will be unset in the case of error."""
    reason: builtins.str
    """The reason for the given return value, see https://openfeature.dev/docs/specification/types#resolution-details"""
    variant: builtins.str
    """The variant name of the returned flag value."""
    @property
    def metadata(self) -> google.protobuf.struct_pb2.Struct:
        """Metadata for this evaluation"""

    def __init__(
        self,
        *,
        value: builtins.int = ...,
        reason: builtins.str = ...,
        variant: builtins.str = ...,
        metadata: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["metadata", b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "reason", b"reason", "value", b"value", "variant", b"variant"]) -> None: ...

global___ResolveIntResponse = ResolveIntResponse

@typing.final
class ResolveObjectRequest(google.protobuf.message.Message):
    """Request body for object flag evaluation, used by the ResolveObject rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    FLAG_KEY_FIELD_NUMBER: builtins.int
    CONTEXT_FIELD_NUMBER: builtins.int
    flag_key: builtins.str
    """Flag key of the requested flag."""
    @property
    def context(self) -> google.protobuf.struct_pb2.Struct:
        """Object structure describing the EvaluationContext used in the flag evaluation, see https://openfeature.dev/docs/reference/concepts/evaluation-context"""

    def __init__(
        self,
        *,
        flag_key: builtins.str = ...,
        context: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["context", b"context"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["context", b"context", "flag_key", b"flag_key"]) -> None: ...

global___ResolveObjectRequest = ResolveObjectRequest

@typing.final
class ResolveObjectResponse(google.protobuf.message.Message):
    """Response body for object flag evaluation. used by the ResolveObject rpc."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    VALUE_FIELD_NUMBER: builtins.int
    REASON_FIELD_NUMBER: builtins.int
    VARIANT_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    reason: builtins.str
    """The reason for the given return value, see https://openfeature.dev/docs/specification/types#resolution-details"""
    variant: builtins.str
    """The variant name of the returned flag value."""
    @property
    def value(self) -> google.protobuf.struct_pb2.Struct:
        """The response value of the object flag evaluation, will be unset in the case of error.

        NOTE: This structure will need to be decoded from google/protobuf/struct.proto before it is returned to the SDK
        """

    @property
    def metadata(self) -> google.protobuf.struct_pb2.Struct:
        """Metadata for this evaluation"""

    def __init__(
        self,
        *,
        value: google.protobuf.struct_pb2.Struct | None = ...,
        reason: builtins.str = ...,
        variant: builtins.str = ...,
        metadata: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["metadata", b"metadata", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["metadata", b"metadata", "reason", b"reason", "value", b"value", "variant", b"variant"]) -> None: ...

global___ResolveObjectResponse = ResolveObjectResponse

@typing.final
class EventStreamResponse(google.protobuf.message.Message):
    """Response body for the EventStream stream response"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TYPE_FIELD_NUMBER: builtins.int
    DATA_FIELD_NUMBER: builtins.int
    type: builtins.str
    """String key indicating the type of event that is being received, for example, provider_ready or configuration_change"""
    @property
    def data(self) -> google.protobuf.struct_pb2.Struct:
        """Object structure for use when sending relevant metadata to provide context to the event.
        Can be left unset when it is not required.
        """

    def __init__(
        self,
        *,
        type: builtins.str = ...,
        data: google.protobuf.struct_pb2.Struct | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["data", b"data"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["data", b"data", "type", b"type"]) -> None: ...

global___EventStreamResponse = EventStreamResponse

@typing.final
class EventStreamRequest(google.protobuf.message.Message):
    """Empty stream request body"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    def __init__(
        self,
    ) -> None: ...

global___EventStreamRequest = EventStreamRequest
