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

Copyright 2020 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 feast.core.Feature_pb2
import google.protobuf.descriptor
import google.protobuf.duration_pb2
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 FeatureView(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SPEC_FIELD_NUMBER: builtins.int
    META_FIELD_NUMBER: builtins.int
    @property
    def spec(self) -> global___FeatureViewSpec:
        """User-specified specifications of this feature view."""
    @property
    def meta(self) -> global___FeatureViewMeta:
        """System-populated metadata for this feature view."""
    def __init__(
        self,
        *,
        spec: global___FeatureViewSpec | None = ...,
        meta: global___FeatureViewMeta | 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___FeatureView = FeatureView

class FeatureViewSpec(google.protobuf.message.Message):
    """Next available id: 13
    TODO(adchia): refactor common fields from this and ODFV into separate metadata proto
    """

    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
    ENTITIES_FIELD_NUMBER: builtins.int
    FEATURES_FIELD_NUMBER: builtins.int
    ENTITY_COLUMNS_FIELD_NUMBER: builtins.int
    DESCRIPTION_FIELD_NUMBER: builtins.int
    TAGS_FIELD_NUMBER: builtins.int
    OWNER_FIELD_NUMBER: builtins.int
    TTL_FIELD_NUMBER: builtins.int
    BATCH_SOURCE_FIELD_NUMBER: builtins.int
    STREAM_SOURCE_FIELD_NUMBER: builtins.int
    ONLINE_FIELD_NUMBER: builtins.int
    OFFLINE_FIELD_NUMBER: builtins.int
    SOURCE_VIEWS_FIELD_NUMBER: builtins.int
    name: builtins.str
    """Name of the feature view. Must be unique. Not updated."""
    project: builtins.str
    """Name of Feast project that this feature view belongs to."""
    @property
    def entities(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]:
        """List of names of entities associated with this feature view."""
    @property
    def features(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]:
        """List of specifications for each feature defined as part of this feature view."""
    @property
    def entity_columns(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[feast.core.Feature_pb2.FeatureSpecV2]:
        """List of specifications for each entity defined as part of this feature view."""
    description: builtins.str
    """Description of the feature view."""
    @property
    def tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """User defined metadata"""
    owner: builtins.str
    """Owner of the feature view."""
    @property
    def ttl(self) -> google.protobuf.duration_pb2.Duration:
        """Features in this feature view can only be retrieved from online serving
        younger than ttl. Ttl is measured as the duration of time between
        the feature's event timestamp and when the feature is retrieved
        Feature values outside ttl will be returned as unset values and indicated to end user
        """
    @property
    def batch_source(self) -> feast.core.DataSource_pb2.DataSource:
        """Batch/Offline DataSource where this view can retrieve offline feature data."""
    @property
    def stream_source(self) -> feast.core.DataSource_pb2.DataSource:
        """Streaming DataSource from where this view can consume "online" feature data."""
    online: builtins.bool
    """Whether these features should be served online or not
    This is also used to determine whether the features should be written to the online store
    """
    offline: builtins.bool
    """Whether these features should be written to the offline store"""
    @property
    def source_views(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___FeatureViewSpec]: ...
    def __init__(
        self,
        *,
        name: builtins.str = ...,
        project: builtins.str = ...,
        entities: collections.abc.Iterable[builtins.str] | None = ...,
        features: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ...,
        entity_columns: collections.abc.Iterable[feast.core.Feature_pb2.FeatureSpecV2] | None = ...,
        description: builtins.str = ...,
        tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        owner: builtins.str = ...,
        ttl: google.protobuf.duration_pb2.Duration | None = ...,
        batch_source: feast.core.DataSource_pb2.DataSource | None = ...,
        stream_source: feast.core.DataSource_pb2.DataSource | None = ...,
        online: builtins.bool = ...,
        offline: builtins.bool = ...,
        source_views: collections.abc.Iterable[global___FeatureViewSpec] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "stream_source", b"stream_source", "ttl", b"ttl"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["batch_source", b"batch_source", "description", b"description", "entities", b"entities", "entity_columns", b"entity_columns", "features", b"features", "name", b"name", "offline", b"offline", "online", b"online", "owner", b"owner", "project", b"project", "source_views", b"source_views", "stream_source", b"stream_source", "tags", b"tags", "ttl", b"ttl"]) -> None: ...

global___FeatureViewSpec = FeatureViewSpec

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

    CREATED_TIMESTAMP_FIELD_NUMBER: builtins.int
    LAST_UPDATED_TIMESTAMP_FIELD_NUMBER: builtins.int
    MATERIALIZATION_INTERVALS_FIELD_NUMBER: builtins.int
    @property
    def created_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Time where this Feature View is created"""
    @property
    def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Time where this Feature View is last updated"""
    @property
    def materialization_intervals(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___MaterializationInterval]:
        """List of pairs (start_time, end_time) for which this feature view has been materialized."""
    def __init__(
        self,
        *,
        created_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        last_updated_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        materialization_intervals: collections.abc.Iterable[global___MaterializationInterval] | 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", "materialization_intervals", b"materialization_intervals"]) -> None: ...

global___FeatureViewMeta = FeatureViewMeta

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

    START_TIME_FIELD_NUMBER: builtins.int
    END_TIME_FIELD_NUMBER: builtins.int
    @property
    def start_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    @property
    def end_time(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        start_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        end_time: google.protobuf.timestamp_pb2.Timestamp | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["end_time", b"end_time", "start_time", b"start_time"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["end_time", b"end_time", "start_time", b"start_time"]) -> None: ...

global___MaterializationInterval = MaterializationInterval

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

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

global___FeatureViewList = FeatureViewList
