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

import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import senren.feature_store.v1.specs.alerts_pb2
import senren.feature_store.v1.specs.feature_pb2
import senren.feature_store.v1.specs.metadata_pb2
import senren.feature_store.v1.specs.online_store_pb2
import typing

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    @typing.final
    class DeploymentEntry(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___DeploymentConfig: ...
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: global___DeploymentConfig | 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: ...

    METADATA_FIELD_NUMBER: builtins.int
    FEATURES_FIELD_NUMBER: builtins.int
    DEPLOYMENT_FIELD_NUMBER: builtins.int
    ALERTS_FIELD_NUMBER: builtins.int
    @property
    def metadata(self) -> senren.feature_store.v1.specs.metadata_pb2.CommonMetadata: ...
    @property
    def features(
        self,
    ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[
        senren.feature_store.v1.specs.feature_pb2.FeatureReference
    ]: ...
    @property
    def deployment(self) -> google.protobuf.internal.containers.MessageMap[builtins.str, global___DeploymentConfig]: ...
    @property
    def alerts(
        self,
    ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[
        senren.feature_store.v1.specs.alerts_pb2.Alert
    ]: ...
    def __init__(
        self,
        *,
        metadata: senren.feature_store.v1.specs.metadata_pb2.CommonMetadata | None = ...,
        features: collections.abc.Iterable[senren.feature_store.v1.specs.feature_pb2.FeatureReference] | None = ...,
        deployment: collections.abc.Mapping[builtins.str, global___DeploymentConfig] | None = ...,
        alerts: collections.abc.Iterable[senren.feature_store.v1.specs.alerts_pb2.Alert] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["metadata", b"metadata"]) -> builtins.bool: ...
    def ClearField(
        self,
        field_name: typing.Literal[
            "alerts", b"alerts", "deployment", b"deployment", "features", b"features", "metadata", b"metadata"
        ],
    ) -> None: ...

global___FeatureServiceSpec = FeatureServiceSpec

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

    PARTITION_VALUES_FIELD_NUMBER: builtins.int
    ROUTING_FIELD_NUMBER: builtins.int
    @property
    def partition_values(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def routing(self) -> global___RoutingConfig: ...
    def __init__(
        self,
        *,
        partition_values: collections.abc.Iterable[builtins.str] | None = ...,
        routing: global___RoutingConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["routing", b"routing"]) -> builtins.bool: ...
    def ClearField(
        self, field_name: typing.Literal["partition_values", b"partition_values", "routing", b"routing"]
    ) -> None: ...

global___DeploymentConfig = DeploymentConfig

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

    DESTINATIONS_FIELD_NUMBER: builtins.int
    @property
    def destinations(
        self,
    ) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Destination]: ...
    def __init__(
        self,
        *,
        destinations: collections.abc.Iterable[global___Destination] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing.Literal["destinations", b"destinations"]) -> None: ...

global___RoutingConfig = RoutingConfig

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

    ONLINE_STORE_FIELD_NUMBER: builtins.int
    SHARE_FIELD_NUMBER: builtins.int
    share: builtins.float
    @property
    def online_store(self) -> senren.feature_store.v1.specs.online_store_pb2.OnlineStoreRef: ...
    def __init__(
        self,
        *,
        online_store: senren.feature_store.v1.specs.online_store_pb2.OnlineStoreRef | None = ...,
        share: builtins.float = ...,
    ) -> None: ...
    def HasField(self, field_name: typing.Literal["online_store", b"online_store"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing.Literal["online_store", b"online_store", "share", b"share"]) -> None: ...

global___Destination = Destination
