"""
@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.DatastoreTable_pb2
import feast.core.SqliteTable_pb2
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import sys

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class Infra(google.protobuf.message.Message):
    """Represents a set of infrastructure objects managed by Feast"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    INFRA_OBJECTS_FIELD_NUMBER: builtins.int
    @property
    def infra_objects(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___InfraObject]:
        """List of infrastructure objects managed by Feast"""
    def __init__(
        self,
        *,
        infra_objects: collections.abc.Iterable[global___InfraObject] | None = ...,
    ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal["infra_objects", b"infra_objects"]) -> None: ...

global___Infra = Infra

class InfraObject(google.protobuf.message.Message):
    """Represents a single infrastructure object managed by Feast"""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    class CustomInfra(google.protobuf.message.Message):
        """Allows for custom infra objects to be added"""

        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        FIELD_FIELD_NUMBER: builtins.int
        field: builtins.bytes
        def __init__(
            self,
            *,
            field: builtins.bytes = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["field", b"field"]) -> None: ...

    INFRA_OBJECT_CLASS_TYPE_FIELD_NUMBER: builtins.int
    DATASTORE_TABLE_FIELD_NUMBER: builtins.int
    SQLITE_TABLE_FIELD_NUMBER: builtins.int
    CUSTOM_INFRA_FIELD_NUMBER: builtins.int
    infra_object_class_type: builtins.str
    """Represents the Python class for the infrastructure object"""
    @property
    def datastore_table(self) -> feast.core.DatastoreTable_pb2.DatastoreTable: ...
    @property
    def sqlite_table(self) -> feast.core.SqliteTable_pb2.SqliteTable: ...
    @property
    def custom_infra(self) -> global___InfraObject.CustomInfra: ...
    def __init__(
        self,
        *,
        infra_object_class_type: builtins.str = ...,
        datastore_table: feast.core.DatastoreTable_pb2.DatastoreTable | None = ...,
        sqlite_table: feast.core.SqliteTable_pb2.SqliteTable | None = ...,
        custom_infra: global___InfraObject.CustomInfra | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["custom_infra", b"custom_infra", "datastore_table", b"datastore_table", "infra_object", b"infra_object", "sqlite_table", b"sqlite_table"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["custom_infra", b"custom_infra", "datastore_table", b"datastore_table", "infra_object", b"infra_object", "infra_object_class_type", b"infra_object_class_type", "sqlite_table", b"sqlite_table"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["infra_object", b"infra_object"]) -> typing_extensions.Literal["datastore_table", "sqlite_table", "custom_infra"] | None: ...

global___InfraObject = InfraObject
