"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import collections.abc
import feast.core.FeatureViewProjection_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import google.protobuf.timestamp_pb2
import sys

if sys.version_info >= (3, 8):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class FeatureService(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPEC_FIELD_NUMBER: builtins.int
    META_FIELD_NUMBER: builtins.int
    @property
    def spec(self) -> global___FeatureServiceSpec:
        """User-specified specifications of this feature service."""
    @property
    def meta(self) -> global___FeatureServiceMeta:
        """System-populated metadata for this feature service."""
    def __init__(
        self,
        *,
        spec: global___FeatureServiceSpec | None = ...,
        meta: global___FeatureServiceMeta | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["meta", b"meta", "spec", b"spec"]) -> None: ...

global___FeatureService = FeatureService

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

    class TagsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    NAME_FIELD_NUMBER: builtins.int
    PROJECT_FIELD_NUMBER: builtins.int
    FEATURES_FIELD_NUMBER: builtins.int
    TAGS_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    OWNER_FIELD_NUMBER: builtins.int
    LOGGING_CONFIG_FIELD_NUMBER: builtins.int
    name: builtins.str
    """Name of the Feature Service. Must be unique. Not updated."""
    project: builtins.str
    """Name of Feast project that this Feature Service belongs to."""
    @property
    def features(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.FeatureViewProjection_pb2.FeatureViewProjection]:
        """Represents a projection that's to be applied on top of the FeatureView.
        Contains data such as the features to use from a FeatureView.
        """
    @property
    def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """User defined metadata"""
    description: builtins.str
    """Description of the feature service."""
    owner: builtins.str
    """Owner of the feature service."""
    @property
    def logging_config(self) -> global___LoggingConfig:
        """(optional) if provided logging will be enabled for this feature service."""
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        project: builtins.str = ...,
        features: collections.abc.Iterable[feast.core.FeatureViewProjection_pb2.FeatureViewProjection] | None = ...,
        tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        description: builtins.str = ...,
        owner: builtins.str = ...,
        logging_config: global___LoggingConfig | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["logging_config", b"logging_config"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["description", b"description", "features", b"features", "logging_config", b"logging_config", "name", b"name", "owner", b"owner", "project", b"project", "tags", b"tags"]) -> None: ...

global___FeatureServiceSpec = FeatureServiceSpec

class FeatureServiceMeta(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int
    LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int
    @property
    def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Time where this Feature Service is created"""
    @property
    def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Time where this Feature Service is last updated"""
    def __init__(
        self,
        *,
        created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp"]) -> None: ...

global___FeatureServiceMeta = FeatureServiceMeta

class LoggingConfig(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class FileDestination(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        PATH_FIELD_NUMBER: builtins.int
        S3_ENDPOINT_OVERRIDE_FIELD_NUMBER: builtins.int
        PARTITION_BY_FIELD_NUMBER: builtins.int
        path: builtins.str
        s3_endpoint_override: builtins.str
        @property
        def partition_by(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
            """column names to use for partitioning"""
        def __init__(
            self,
            *,
            path: builtins.str = ...,
            s3_endpoint_override: builtins.str = ...,
            partition_by: collections.abc.Iterable[builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["partition_by", b"partition_by", "path", b"path", "s3_endpoint_override", b"s3_endpoint_override"]) -> None: ...

    class BigQueryDestination(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TABLE_REF_FIELD_NUMBER: builtins.int
        table_ref: builtins.str
        """Full table reference in the form of [project:dataset.table]"""
        def __init__(
            self,
            *,
            table_ref: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["table_ref", b"table_ref"]) -> None: ...

    class RedshiftDestination(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TABLE_NAME_FIELD_NUMBER: builtins.int
        table_name: builtins.str
        """Destination table name. ClusterId and database will be taken from an offline store config"""
        def __init__(
            self,
            *,
            table_name: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ...

    class AthenaDestination(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TABLE_NAME_FIELD_NUMBER: builtins.int
        table_name: builtins.str
        """Destination table name. data_source and database will be taken from an offline store config"""
        def __init__(
            self,
            *,
            table_name: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ...

    class SnowflakeDestination(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        TABLE_NAME_FIELD_NUMBER: builtins.int
        table_name: builtins.str
        """Destination table name. Schema and database will be taken from an offline store config"""
        def __init__(
            self,
            *,
            table_name: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["table_name", b"table_name"]) -> None: ...

    class CustomDestination(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        class ConfigEntry(google.protobuf.message.Message):
            DESCRIPTOR: google.protobuf.descriptor.Descriptor

            KEY_FIELD_NUMBER: builtins.int
            VALUE_FIELD_NUMBER: builtins.int
            key: builtins.str
            value: builtins.str
            def __init__(
                self,
                *,
                key: builtins.str = ...,
                value: builtins.str = ...,
            ) -> None: ...
            def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

        KIND_FIELD_NUMBER: builtins.int
        CONFIG_FIELD_NUMBER: builtins.int
        kind: builtins.str
        @property
        def config(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ...
        def __init__(
            self,
            *,
            kind: builtins.str = ...,
            config: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["config", b"config", "kind", b"kind"]) -> None: ...

    class CouchbaseColumnarDestination(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        DATABASE_FIELD_NUMBER: builtins.int
        SCOPE_FIELD_NUMBER: builtins.int
        COLLECTION_FIELD_NUMBER: builtins.int
        database: builtins.str
        """Destination database name"""
        scope: builtins.str
        """Destination scope name"""
        collection: builtins.str
        """Destination collection name"""
        def __init__(
            self,
            *,
            database: builtins.str = ...,
            scope: builtins.str = ...,
            collection: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["collection", b"collection", "database", b"database", "scope", b"scope"]) -> None: ...

    SAMPLE_RATE_FIELD_NUMBER: builtins.int
    FILE_DESTINATION_FIELD_NUMBER: builtins.int
    BIGQUERY_DESTINATION_FIELD_NUMBER: builtins.int
    REDSHIFT_DESTINATION_FIELD_NUMBER: builtins.int
    SNOWFLAKE_DESTINATION_FIELD_NUMBER: builtins.int
    CUSTOM_DESTINATION_FIELD_NUMBER: builtins.int
    ATHENA_DESTINATION_FIELD_NUMBER: builtins.int
    COUCHBASE_COLUMNAR_DESTINATION_FIELD_NUMBER: builtins.int
    sample_rate: builtins.float
    @property
    def file_destination(self) -> global___LoggingConfig.FileDestination: ...
    @property
    def bigquery_destination(self) -> global___LoggingConfig.BigQueryDestination: ...
    @property
    def redshift_destination(self) -> global___LoggingConfig.RedshiftDestination: ...
    @property
    def snowflake_destination(self) -> global___LoggingConfig.SnowflakeDestination: ...
    @property
    def custom_destination(self) -> global___LoggingConfig.CustomDestination: ...
    @property
    def athena_destination(self) -> global___LoggingConfig.AthenaDestination: ...
    @property
    def couchbase_columnar_destination(self) -> global___LoggingConfig.CouchbaseColumnarDestination: ...
    def __init__(
        self,
        *,
        sample_rate: builtins.float = ...,
        file_destination: global___LoggingConfig.FileDestination | None = ...,
        bigquery_destination: global___LoggingConfig.BigQueryDestination | None = ...,
        redshift_destination: global___LoggingConfig.RedshiftDestination | None = ...,
        snowflake_destination: global___LoggingConfig.SnowflakeDestination | None = ...,
        custom_destination: global___LoggingConfig.CustomDestination | None = ...,
        athena_destination: global___LoggingConfig.AthenaDestination | None = ...,
        couchbase_columnar_destination: global___LoggingConfig.CouchbaseColumnarDestination | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["athena_destination", b"athena_destination", "bigquery_destination", b"bigquery_destination", "couchbase_columnar_destination", b"couchbase_columnar_destination", "custom_destination", b"custom_destination", "destination", b"destination", "file_destination", b"file_destination", "redshift_destination", b"redshift_destination", "snowflake_destination", b"snowflake_destination"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["athena_destination", b"athena_destination", "bigquery_destination", b"bigquery_destination", "couchbase_columnar_destination", b"couchbase_columnar_destination", "custom_destination", b"custom_destination", "destination", b"destination", "file_destination", b"file_destination", "redshift_destination", b"redshift_destination", "sample_rate", b"sample_rate", "snowflake_destination", b"snowflake_destination"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["destination", b"destination"]) -> typing_extensions.Literal["file_destination", "bigquery_destination", "redshift_destination", "snowflake_destination", "custom_destination", "athena_destination", "couchbase_columnar_destination"] | None: ...

global___LoggingConfig = LoggingConfig

class FeatureServiceList(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

global___FeatureServiceList = FeatureServiceList
