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

import abc
import collections.abc
import grpc
import grpc.aio
import sift.user_defined_functions.v1.user_defined_functions_pb2
import typing

_T = typing.TypeVar("_T")

class _MaybeAsyncIterator(collections.abc.AsyncIterator[_T], collections.abc.Iterator[_T], metaclass=abc.ABCMeta): ...

class _ServicerContext(grpc.ServicerContext, grpc.aio.ServicerContext):  # type: ignore[misc, type-arg]
    ...

class UserDefinedFunctionServiceStub:
    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    GetUserDefinedFunction: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionResponse,
    ]
    """Retrieve the latest version of a user defined function"""

    GetUserDefinedFunctionVersion: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionResponse,
    ]
    """Retrieve a specific version of a user defined function"""

    GetUserDefinedFunctionVersions: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionsResponse,
    ]
    """Retrieve versions of user defined functions"""

    GetUserDefinedFunctionDependents: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionDependentsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionDependentsResponse,
    ]
    """Retrieve versions of user defined functions"""

    CreateUserDefinedFunction: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.CreateUserDefinedFunctionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.CreateUserDefinedFunctionResponse,
    ]
    """Create a user defined function."""

    ValidateUserDefinedFunction: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.ValidateUserDefinedFunctionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.ValidateUserDefinedFunctionResponse,
    ]
    """Validate a potential user defined function"""

    UpdateUserDefinedFunction: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.UpdateUserDefinedFunctionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.UpdateUserDefinedFunctionResponse,
    ]
    """Update a user defined function."""

    CheckUpdatableFields: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.CheckUpdatableFieldsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.CheckUpdatableFieldsResponse,
    ]
    """Check if given update paths are allowed to update for the user defined function."""

    ListUserDefinedFunctions: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionsResponse,
    ]
    """Retrieve the latest versions of user defined functions based on an optional filter."""

    ListUserDefinedFunctionVersions: grpc.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionVersionsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionVersionsResponse,
    ]
    """List versions of a particular user defined functions with an optional filter."""

class UserDefinedFunctionServiceAsyncStub:
    GetUserDefinedFunction: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionResponse,
    ]
    """Retrieve the latest version of a user defined function"""

    GetUserDefinedFunctionVersion: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionResponse,
    ]
    """Retrieve a specific version of a user defined function"""

    GetUserDefinedFunctionVersions: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionsResponse,
    ]
    """Retrieve versions of user defined functions"""

    GetUserDefinedFunctionDependents: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionDependentsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionDependentsResponse,
    ]
    """Retrieve versions of user defined functions"""

    CreateUserDefinedFunction: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.CreateUserDefinedFunctionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.CreateUserDefinedFunctionResponse,
    ]
    """Create a user defined function."""

    ValidateUserDefinedFunction: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.ValidateUserDefinedFunctionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.ValidateUserDefinedFunctionResponse,
    ]
    """Validate a potential user defined function"""

    UpdateUserDefinedFunction: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.UpdateUserDefinedFunctionRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.UpdateUserDefinedFunctionResponse,
    ]
    """Update a user defined function."""

    CheckUpdatableFields: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.CheckUpdatableFieldsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.CheckUpdatableFieldsResponse,
    ]
    """Check if given update paths are allowed to update for the user defined function."""

    ListUserDefinedFunctions: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionsResponse,
    ]
    """Retrieve the latest versions of user defined functions based on an optional filter."""

    ListUserDefinedFunctionVersions: grpc.aio.UnaryUnaryMultiCallable[
        sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionVersionsRequest,
        sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionVersionsResponse,
    ]
    """List versions of a particular user defined functions with an optional filter."""

class UserDefinedFunctionServiceServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def GetUserDefinedFunction(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionResponse]]:
        """Retrieve the latest version of a user defined function"""

    @abc.abstractmethod
    def GetUserDefinedFunctionVersion(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionResponse]]:
        """Retrieve a specific version of a user defined function"""

    @abc.abstractmethod
    def GetUserDefinedFunctionVersions(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionsRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionsResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionVersionsResponse]]:
        """Retrieve versions of user defined functions"""

    @abc.abstractmethod
    def GetUserDefinedFunctionDependents(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionDependentsRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionDependentsResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.GetUserDefinedFunctionDependentsResponse]]:
        """Retrieve versions of user defined functions"""

    @abc.abstractmethod
    def CreateUserDefinedFunction(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.CreateUserDefinedFunctionRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.CreateUserDefinedFunctionResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.CreateUserDefinedFunctionResponse]]:
        """Create a user defined function."""

    @abc.abstractmethod
    def ValidateUserDefinedFunction(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.ValidateUserDefinedFunctionRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.ValidateUserDefinedFunctionResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.ValidateUserDefinedFunctionResponse]]:
        """Validate a potential user defined function"""

    @abc.abstractmethod
    def UpdateUserDefinedFunction(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.UpdateUserDefinedFunctionRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.UpdateUserDefinedFunctionResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.UpdateUserDefinedFunctionResponse]]:
        """Update a user defined function."""

    @abc.abstractmethod
    def CheckUpdatableFields(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.CheckUpdatableFieldsRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.CheckUpdatableFieldsResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.CheckUpdatableFieldsResponse]]:
        """Check if given update paths are allowed to update for the user defined function."""

    @abc.abstractmethod
    def ListUserDefinedFunctions(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionsRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionsResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionsResponse]]:
        """Retrieve the latest versions of user defined functions based on an optional filter."""

    @abc.abstractmethod
    def ListUserDefinedFunctionVersions(
        self,
        request: sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionVersionsRequest,
        context: _ServicerContext,
    ) -> typing.Union[sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionVersionsResponse, collections.abc.Awaitable[sift.user_defined_functions.v1.user_defined_functions_pb2.ListUserDefinedFunctionVersionsResponse]]:
        """List versions of a particular user defined functions with an optional filter."""

def add_UserDefinedFunctionServiceServicer_to_server(servicer: UserDefinedFunctionServiceServicer, server: typing.Union[grpc.Server, grpc.aio.Server]) -> None: ...
