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

Copyright 2021 The Feast Authors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    https://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
import builtins
import collections.abc
import feast.core.DataSource_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 SavedDatasetSpec(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
    JOIN_KEYS_FIELD_NUMBER: builtins.int
    FULL_FEATURE_NAMES_FIELD_NUMBER: builtins.int
    STORAGE_FIELD_NUMBER: builtins.int
    FEATURE_SERVICE_NAME_FIELD_NUMBER: builtins.int
    TAGS_FIELD_NUMBER: builtins.int
    name: builtins.str
    """Name of the dataset. Must be unique since it's possible to overwrite dataset by name"""
    project: builtins.str
    """Name of Feast project that this Dataset belongs to."""
    @property
    def features(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """list of feature references with format "<view name>:<feature name>" """
    @property
    def join_keys(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """entity columns + request columns from all feature views used during retrieval"""
    full_feature_names: builtins.bool
    """Whether full feature names are used in stored data"""
    @property
    def storage(self) -> global___SavedDatasetStorage: ...
    feature_service_name: builtins.str
    """Optional and only populated if generated from a feature service fetch"""
    @property
    def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """User defined metadata"""
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        project: builtins.str = ...,
        features: collections.abc.Iterable[builtins.str] | None = ...,
        join_keys: collections.abc.Iterable[builtins.str] | None = ...,
        full_feature_names: builtins.bool = ...,
        storage: global___SavedDatasetStorage | None = ...,
        feature_service_name: builtins.str = ...,
        tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["storage", b"storage"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["feature_service_name", b"feature_service_name", "features", b"features", "full_feature_names", b"full_feature_names", "join_keys", b"join_keys", "name", b"name", "project", b"project", "storage", b"storage", "tags", b"tags"]) -> None: ...

global___SavedDatasetSpec = SavedDatasetSpec

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

    FILE_STORAGE_FIELD_NUMBER: builtins.int
    BIGQUERY_STORAGE_FIELD_NUMBER: builtins.int
    REDSHIFT_STORAGE_FIELD_NUMBER: builtins.int
    SNOWFLAKE_STORAGE_FIELD_NUMBER: builtins.int
    TRINO_STORAGE_FIELD_NUMBER: builtins.int
    SPARK_STORAGE_FIELD_NUMBER: builtins.int
    CUSTOM_STORAGE_FIELD_NUMBER: builtins.int
    ATHENA_STORAGE_FIELD_NUMBER: builtins.int
    @property
    def file_storage(self) -> feast.core.DataSource_pb2.DataSource.FileOptions: ...
    @property
    def bigquery_storage(self) -> feast.core.DataSource_pb2.DataSource.BigQueryOptions: ...
    @property
    def redshift_storage(self) -> feast.core.DataSource_pb2.DataSource.RedshiftOptions: ...
    @property
    def snowflake_storage(self) -> feast.core.DataSource_pb2.DataSource.SnowflakeOptions: ...
    @property
    def trino_storage(self) -> feast.core.DataSource_pb2.DataSource.TrinoOptions: ...
    @property
    def spark_storage(self) -> feast.core.DataSource_pb2.DataSource.SparkOptions: ...
    @property
    def custom_storage(self) -> feast.core.DataSource_pb2.DataSource.CustomSourceOptions: ...
    @property
    def athena_storage(self) -> feast.core.DataSource_pb2.DataSource.AthenaOptions: ...
    def __init__(
        self,
        *,
        file_storage: feast.core.DataSource_pb2.DataSource.FileOptions | None = ...,
        bigquery_storage: feast.core.DataSource_pb2.DataSource.BigQueryOptions | None = ...,
        redshift_storage: feast.core.DataSource_pb2.DataSource.RedshiftOptions | None = ...,
        snowflake_storage: feast.core.DataSource_pb2.DataSource.SnowflakeOptions | None = ...,
        trino_storage: feast.core.DataSource_pb2.DataSource.TrinoOptions | None = ...,
        spark_storage: feast.core.DataSource_pb2.DataSource.SparkOptions | None = ...,
        custom_storage: feast.core.DataSource_pb2.DataSource.CustomSourceOptions | None = ...,
        athena_storage: feast.core.DataSource_pb2.DataSource.AthenaOptions | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["athena_storage", b"athena_storage", "bigquery_storage", b"bigquery_storage", "custom_storage", b"custom_storage", "file_storage", b"file_storage", "kind", b"kind", "redshift_storage", b"redshift_storage", "snowflake_storage", b"snowflake_storage", "spark_storage", b"spark_storage", "trino_storage", b"trino_storage"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["athena_storage", b"athena_storage", "bigquery_storage", b"bigquery_storage", "custom_storage", b"custom_storage", "file_storage", b"file_storage", "kind", b"kind", "redshift_storage", b"redshift_storage", "snowflake_storage", b"snowflake_storage", "spark_storage", b"spark_storage", "trino_storage", b"trino_storage"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["kind", b"kind"]) -> typing_extensions.Literal["file_storage", "bigquery_storage", "redshift_storage", "snowflake_storage", "trino_storage", "spark_storage", "custom_storage", "athena_storage"] | None: ...

global___SavedDatasetStorage = SavedDatasetStorage

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

    CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int
    LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int
    MIN_EVENT_TIMESTAMP_FIELD_NUMBER: builtins.int
    MAX_EVENT_TIMESTAMP_FIELD_NUMBER: builtins.int
    @property
    def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Time when this saved dataset is created"""
    @property
    def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Time when this saved dataset is last updated"""
    @property
    def min_event_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Min timestamp in the dataset (needed for retrieval)"""
    @property
    def max_event_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Max timestamp in the dataset (needed for retrieval)"""
    def __init__(
        self,
        *,
        created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        min_event_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        max_event_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", "max_event_timestamp", b"max_event_timestamp", "min_event_timestamp", b"min_event_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["created_timestamp", b"created_timestamp", "last_updated_timestamp", b"last_updated_timestamp", "max_event_timestamp", b"max_event_timestamp", "min_event_timestamp", b"min_event_timestamp"]) -> None: ...

global___SavedDatasetMeta = SavedDatasetMeta

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

    SPEC_FIELD_NUMBER: builtins.int
    META_FIELD_NUMBER: builtins.int
    @property
    def spec(self) -> global___SavedDatasetSpec: ...
    @property
    def meta(self) -> global___SavedDatasetMeta: ...
    def __init__(
        self,
        *,
        spec: global___SavedDatasetSpec | None = ...,
        meta: global___SavedDatasetMeta | 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___SavedDataset = SavedDataset
