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

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

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

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

    SPEC_FIELD_NUMBER: builtins.int
    META_FIELD_NUMBER: builtins.int
    @property
    def spec(self) -> global___PermissionSpec:
        """User-specified specifications of this permission."""
    @property
    def meta(self) -> global___PermissionMeta:
        """System-populated metadata for this permission."""
    def __init__(
        self,
        *,
        spec: global___PermissionSpec | None = ...,
        meta: global___PermissionMeta | 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___Permission = Permission

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

    class _AuthzedAction:
        ValueType = typing.NewType("ValueType", builtins.int)
        V: typing_extensions.TypeAlias = ValueType

    class _AuthzedActionEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PermissionSpec._AuthzedAction.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        CREATE: PermissionSpec._AuthzedAction.ValueType  # 0
        DESCRIBE: PermissionSpec._AuthzedAction.ValueType  # 1
        UPDATE: PermissionSpec._AuthzedAction.ValueType  # 2
        DELETE: PermissionSpec._AuthzedAction.ValueType  # 3
        READ_ONLINE: PermissionSpec._AuthzedAction.ValueType  # 4
        READ_OFFLINE: PermissionSpec._AuthzedAction.ValueType  # 5
        WRITE_ONLINE: PermissionSpec._AuthzedAction.ValueType  # 6
        WRITE_OFFLINE: PermissionSpec._AuthzedAction.ValueType  # 7

    class AuthzedAction(_AuthzedAction, metaclass=_AuthzedActionEnumTypeWrapper): ...
    CREATE: PermissionSpec.AuthzedAction.ValueType  # 0
    DESCRIBE: PermissionSpec.AuthzedAction.ValueType  # 1
    UPDATE: PermissionSpec.AuthzedAction.ValueType  # 2
    DELETE: PermissionSpec.AuthzedAction.ValueType  # 3
    READ_ONLINE: PermissionSpec.AuthzedAction.ValueType  # 4
    READ_OFFLINE: PermissionSpec.AuthzedAction.ValueType  # 5
    WRITE_ONLINE: PermissionSpec.AuthzedAction.ValueType  # 6
    WRITE_OFFLINE: PermissionSpec.AuthzedAction.ValueType  # 7

    class _Type:
        ValueType = typing.NewType("ValueType", builtins.int)
        V: typing_extensions.TypeAlias = ValueType

    class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[PermissionSpec._Type.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        FEATURE_VIEW: PermissionSpec._Type.ValueType  # 0
        ON_DEMAND_FEATURE_VIEW: PermissionSpec._Type.ValueType  # 1
        BATCH_FEATURE_VIEW: PermissionSpec._Type.ValueType  # 2
        STREAM_FEATURE_VIEW: PermissionSpec._Type.ValueType  # 3
        ENTITY: PermissionSpec._Type.ValueType  # 4
        FEATURE_SERVICE: PermissionSpec._Type.ValueType  # 5
        DATA_SOURCE: PermissionSpec._Type.ValueType  # 6
        VALIDATION_REFERENCE: PermissionSpec._Type.ValueType  # 7
        SAVED_DATASET: PermissionSpec._Type.ValueType  # 8
        PERMISSION: PermissionSpec._Type.ValueType  # 9
        PROJECT: PermissionSpec._Type.ValueType  # 10

    class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...
    FEATURE_VIEW: PermissionSpec.Type.ValueType  # 0
    ON_DEMAND_FEATURE_VIEW: PermissionSpec.Type.ValueType  # 1
    BATCH_FEATURE_VIEW: PermissionSpec.Type.ValueType  # 2
    STREAM_FEATURE_VIEW: PermissionSpec.Type.ValueType  # 3
    ENTITY: PermissionSpec.Type.ValueType  # 4
    FEATURE_SERVICE: PermissionSpec.Type.ValueType  # 5
    DATA_SOURCE: PermissionSpec.Type.ValueType  # 6
    VALIDATION_REFERENCE: PermissionSpec.Type.ValueType  # 7
    SAVED_DATASET: PermissionSpec.Type.ValueType  # 8
    PERMISSION: PermissionSpec.Type.ValueType  # 9
    PROJECT: PermissionSpec.Type.ValueType  # 10

    class RequiredTagsEntry(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: ...

    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
    TYPES_FIELD_NUMBER: builtins.int
    NAME_PATTERNS_FIELD_NUMBER: builtins.int
    REQUIRED_TAGS_FIELD_NUMBER: builtins.int
    ACTIONS_FIELD_NUMBER: builtins.int
    POLICY_FIELD_NUMBER: builtins.int
    TAGS_FIELD_NUMBER: builtins.int
    name: builtins.str
    """Name of the permission. Must be unique. Not updated."""
    project: builtins.str
    """Name of Feast project."""
    @property
    def types(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___PermissionSpec.Type.ValueType]: ...
    @property
    def name_patterns(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.str]: ...
    @property
    def required_tags(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]: ...
    @property
    def actions(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[global___PermissionSpec.AuthzedAction.ValueType]:
        """List of actions."""
    @property
    def policy(self) -> feast.core.Policy_pb2.Policy:
        """the policy."""
    @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 = ...,
        types: collections.abc.Iterable[global___PermissionSpec.Type.ValueType] | None = ...,
        name_patterns: collections.abc.Iterable[builtins.str] | None = ...,
        required_tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
        actions: collections.abc.Iterable[global___PermissionSpec.AuthzedAction.ValueType] | None = ...,
        policy: feast.core.Policy_pb2.Policy | None = ...,
        tags: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["policy", b"policy"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["actions", b"actions", "name", b"name", "name_patterns", b"name_patterns", "policy", b"policy", "project", b"project", "required_tags", b"required_tags", "tags", b"tags", "types", b"types"]) -> None: ...

global___PermissionSpec = PermissionSpec

class PermissionMeta(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: ...
    @property
    def last_updated_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    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___PermissionMeta = PermissionMeta
