"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import abc
import collections.abc
import grpc
import grpc.aio
import model.model.v1alpha.model_definition_pb2
import model.model.v1alpha.model_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
    ...

class ModelPublicServiceStub:
    """Model service responds to external access"""

    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Liveness: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.LivenessRequest,
        model.model.v1alpha.model_pb2.LivenessResponse,
    ]
    """Liveness method receives a LivenessRequest message and returns a
    LivenessResponse message.
    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    """
    Readiness: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ReadinessRequest,
        model.model.v1alpha.model_pb2.ReadinessResponse,
    ]
    """Readiness method receives a ReadinessRequest message and returns a
    ReadinessResponse message.
    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    """
    ListModelDefinitions: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_definition_pb2.ListModelDefinitionsRequest,
        model.model.v1alpha.model_definition_pb2.ListModelDefinitionsResponse,
    ]
    """ListModelDefinitions method receives a ListModelDefinitionsRequest message
    and returns a ListModelDefinitionsResponse
    """
    GetModelDefinition: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_definition_pb2.GetModelDefinitionRequest,
        model.model.v1alpha.model_definition_pb2.GetModelDefinitionResponse,
    ]
    """GetModelDefinition method receives a GetModelDefinitionRequest message and
    returns a GetModelDefinitionResponse
    """
    ListModels: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListModelsRequest,
        model.model.v1alpha.model_pb2.ListModelsResponse,
    ]
    """ListModels method receives a ListModelsRequest message and returns a
    ListModelsResponse
    """
    LookUpModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.LookUpModelRequest,
        model.model.v1alpha.model_pb2.LookUpModelResponse,
    ]
    """LookUpUodel method receives a LookUpModelRequest message and returns a
    LookUpModelResponse
    """
    ListUserModels: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListUserModelsRequest,
        model.model.v1alpha.model_pb2.ListUserModelsResponse,
    ]
    """LisUsertModels method receives a ListUserModelsRequest message and returns a
    ListUserModelsResponse
    """
    CreateUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateUserModelRequest,
        model.model.v1alpha.model_pb2.CreateUserModelResponse,
    ]
    """CreateUserModel method receives a CreateUserModelRequest message and returns a
    CreateUserModelResponse
    """
    CreateUserModelBinaryFileUpload: grpc.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadResponse,
    ]
    """CreateUserModelBinaryFileUpload method receives a
    CreateUserModelBinaryFileUploadRequest message and returns a
    CreateUserModelBinaryFileUploadResponse message.

    Endpoint: "POST /v1alpha/users/*/models:multipart"
    """
    GetUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetUserModelRequest,
        model.model.v1alpha.model_pb2.GetUserModelResponse,
    ]
    """GetUserModel method receives a GetUserModelRequest message and returns a
    GetUserModelResponse
    """
    UpdateUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UpdateUserModelRequest,
        model.model.v1alpha.model_pb2.UpdateUserModelResponse,
    ]
    """UpdateUserModel method receives a UpdateUserModelRequest message and returns a
    UpdateUserModelResponse
    """
    DeleteUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeleteUserModelRequest,
        model.model.v1alpha.model_pb2.DeleteUserModelResponse,
    ]
    """DeleteUserModel method receives a DeleteUserModelRequest message and returns a
    DeleteUserModelResponse
    """
    RenameUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.RenameUserModelRequest,
        model.model.v1alpha.model_pb2.RenameUserModelResponse,
    ]
    """RenameUserModel method rename a model"""
    PublishUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.PublishUserModelRequest,
        model.model.v1alpha.model_pb2.PublishUserModelResponse,
    ]
    """PublishUserModel method receives a PublisUserhModelRequest message and returns a
    PublishUserModelResponse
    """
    UnpublishUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UnpublishUserModelRequest,
        model.model.v1alpha.model_pb2.UnpublishUserModelResponse,
    ]
    """UnpublishUserModel method receives a UnpublishUserModelRequest message and returns
    a UnpublishUserModelResponse
    """
    DeployUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeployUserModelRequest,
        model.model.v1alpha.model_pb2.DeployUserModelResponse,
    ]
    """DeployUserModel deploy a model to online state"""
    UndeployUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UndeployUserModelRequest,
        model.model.v1alpha.model_pb2.UndeployUserModelResponse,
    ]
    """UndeployUserModel undeploy a model to offline state"""
    GetUserModelCard: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetUserModelCardRequest,
        model.model.v1alpha.model_pb2.GetUserModelCardResponse,
    ]
    """GetUserModelCard method receives a GetUserModelCardRequest message
    and returns a GetUserModelCardResponseUser
    """
    WatchUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.WatchUserModelRequest,
        model.model.v1alpha.model_pb2.WatchUserModelResponse,
    ]
    """WatchUserModel method receives a WatchUserModelRequest message
    and returns a WatchModelResponse
    """
    TriggerUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerUserModelRequest,
        model.model.v1alpha.model_pb2.TriggerUserModelResponse,
    ]
    """/////////////////////////////////////////////////////

    TriggerUserModel method receives a TriggerUserModelRequest message
    and returns a TriggerUserModelResponse message.
    """
    TriggerUserModelBinaryFileUpload: grpc.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadResponse,
    ]
    """TriggerUserModelBinaryFileUpload method receives a
    TriggerUserModelBinaryFileUploadRequest message and returns a
    TriggerUserModelBinaryFileUploadResponse message.

    Endpoint: "POST/v1alpha/{name=models/*}/trigger-multipart"
    """
    TestUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TestUserModelRequest,
        model.model.v1alpha.model_pb2.TestUserModelResponse,
    ]
    """TestUserModel method receives a TestUserModelRequest message
    and returns a TestUserModelResponse message.
    """
    TestUserModelBinaryFileUpload: grpc.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TestUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.TestUserModelBinaryFileUploadResponse,
    ]
    """TestUserModelBinaryFileUpload method receives a
    TestUserModelBinaryFileUploadRequest message and returns a
    TestUserModelBinaryFileUploadResponse message.

    Endpoint: "POST/v1alpha/{name=users/*/models/*}/test-multipart"
    """
    GetModelOperation: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetModelOperationRequest,
        model.model.v1alpha.model_pb2.GetModelOperationResponse,
    ]
    """GetModelOperation method receives a
    GetModelOperationRequest message and returns a
    GetModelOperationResponse message.
    """

class ModelPublicServiceAsyncStub:
    """Model service responds to external access"""

    Liveness: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.LivenessRequest,
        model.model.v1alpha.model_pb2.LivenessResponse,
    ]
    """Liveness method receives a LivenessRequest message and returns a
    LivenessResponse message.
    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    """
    Readiness: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ReadinessRequest,
        model.model.v1alpha.model_pb2.ReadinessResponse,
    ]
    """Readiness method receives a ReadinessRequest message and returns a
    ReadinessResponse message.
    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    """
    ListModelDefinitions: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_definition_pb2.ListModelDefinitionsRequest,
        model.model.v1alpha.model_definition_pb2.ListModelDefinitionsResponse,
    ]
    """ListModelDefinitions method receives a ListModelDefinitionsRequest message
    and returns a ListModelDefinitionsResponse
    """
    GetModelDefinition: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_definition_pb2.GetModelDefinitionRequest,
        model.model.v1alpha.model_definition_pb2.GetModelDefinitionResponse,
    ]
    """GetModelDefinition method receives a GetModelDefinitionRequest message and
    returns a GetModelDefinitionResponse
    """
    ListModels: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListModelsRequest,
        model.model.v1alpha.model_pb2.ListModelsResponse,
    ]
    """ListModels method receives a ListModelsRequest message and returns a
    ListModelsResponse
    """
    LookUpModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.LookUpModelRequest,
        model.model.v1alpha.model_pb2.LookUpModelResponse,
    ]
    """LookUpUodel method receives a LookUpModelRequest message and returns a
    LookUpModelResponse
    """
    ListUserModels: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListUserModelsRequest,
        model.model.v1alpha.model_pb2.ListUserModelsResponse,
    ]
    """LisUsertModels method receives a ListUserModelsRequest message and returns a
    ListUserModelsResponse
    """
    CreateUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateUserModelRequest,
        model.model.v1alpha.model_pb2.CreateUserModelResponse,
    ]
    """CreateUserModel method receives a CreateUserModelRequest message and returns a
    CreateUserModelResponse
    """
    CreateUserModelBinaryFileUpload: grpc.aio.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadResponse,
    ]
    """CreateUserModelBinaryFileUpload method receives a
    CreateUserModelBinaryFileUploadRequest message and returns a
    CreateUserModelBinaryFileUploadResponse message.

    Endpoint: "POST /v1alpha/users/*/models:multipart"
    """
    GetUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetUserModelRequest,
        model.model.v1alpha.model_pb2.GetUserModelResponse,
    ]
    """GetUserModel method receives a GetUserModelRequest message and returns a
    GetUserModelResponse
    """
    UpdateUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UpdateUserModelRequest,
        model.model.v1alpha.model_pb2.UpdateUserModelResponse,
    ]
    """UpdateUserModel method receives a UpdateUserModelRequest message and returns a
    UpdateUserModelResponse
    """
    DeleteUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeleteUserModelRequest,
        model.model.v1alpha.model_pb2.DeleteUserModelResponse,
    ]
    """DeleteUserModel method receives a DeleteUserModelRequest message and returns a
    DeleteUserModelResponse
    """
    RenameUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.RenameUserModelRequest,
        model.model.v1alpha.model_pb2.RenameUserModelResponse,
    ]
    """RenameUserModel method rename a model"""
    PublishUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.PublishUserModelRequest,
        model.model.v1alpha.model_pb2.PublishUserModelResponse,
    ]
    """PublishUserModel method receives a PublisUserhModelRequest message and returns a
    PublishUserModelResponse
    """
    UnpublishUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UnpublishUserModelRequest,
        model.model.v1alpha.model_pb2.UnpublishUserModelResponse,
    ]
    """UnpublishUserModel method receives a UnpublishUserModelRequest message and returns
    a UnpublishUserModelResponse
    """
    DeployUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeployUserModelRequest,
        model.model.v1alpha.model_pb2.DeployUserModelResponse,
    ]
    """DeployUserModel deploy a model to online state"""
    UndeployUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UndeployUserModelRequest,
        model.model.v1alpha.model_pb2.UndeployUserModelResponse,
    ]
    """UndeployUserModel undeploy a model to offline state"""
    GetUserModelCard: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetUserModelCardRequest,
        model.model.v1alpha.model_pb2.GetUserModelCardResponse,
    ]
    """GetUserModelCard method receives a GetUserModelCardRequest message
    and returns a GetUserModelCardResponseUser
    """
    WatchUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.WatchUserModelRequest,
        model.model.v1alpha.model_pb2.WatchUserModelResponse,
    ]
    """WatchUserModel method receives a WatchUserModelRequest message
    and returns a WatchModelResponse
    """
    TriggerUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerUserModelRequest,
        model.model.v1alpha.model_pb2.TriggerUserModelResponse,
    ]
    """/////////////////////////////////////////////////////

    TriggerUserModel method receives a TriggerUserModelRequest message
    and returns a TriggerUserModelResponse message.
    """
    TriggerUserModelBinaryFileUpload: grpc.aio.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadResponse,
    ]
    """TriggerUserModelBinaryFileUpload method receives a
    TriggerUserModelBinaryFileUploadRequest message and returns a
    TriggerUserModelBinaryFileUploadResponse message.

    Endpoint: "POST/v1alpha/{name=models/*}/trigger-multipart"
    """
    TestUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TestUserModelRequest,
        model.model.v1alpha.model_pb2.TestUserModelResponse,
    ]
    """TestUserModel method receives a TestUserModelRequest message
    and returns a TestUserModelResponse message.
    """
    TestUserModelBinaryFileUpload: grpc.aio.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TestUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.TestUserModelBinaryFileUploadResponse,
    ]
    """TestUserModelBinaryFileUpload method receives a
    TestUserModelBinaryFileUploadRequest message and returns a
    TestUserModelBinaryFileUploadResponse message.

    Endpoint: "POST/v1alpha/{name=users/*/models/*}/test-multipart"
    """
    GetModelOperation: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetModelOperationRequest,
        model.model.v1alpha.model_pb2.GetModelOperationResponse,
    ]
    """GetModelOperation method receives a
    GetModelOperationRequest message and returns a
    GetModelOperationResponse message.
    """

class ModelPublicServiceServicer(metaclass=abc.ABCMeta):
    """Model service responds to external access"""

    @abc.abstractmethod
    def Liveness(
        self,
        request: model.model.v1alpha.model_pb2.LivenessRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.LivenessResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.LivenessResponse]]:
        """Liveness method receives a LivenessRequest message and returns a
        LivenessResponse message.
        See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
        """
    @abc.abstractmethod
    def Readiness(
        self,
        request: model.model.v1alpha.model_pb2.ReadinessRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.ReadinessResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.ReadinessResponse]]:
        """Readiness method receives a ReadinessRequest message and returns a
        ReadinessResponse message.
        See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
        """
    @abc.abstractmethod
    def ListModelDefinitions(
        self,
        request: model.model.v1alpha.model_definition_pb2.ListModelDefinitionsRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_definition_pb2.ListModelDefinitionsResponse, collections.abc.Awaitable[model.model.v1alpha.model_definition_pb2.ListModelDefinitionsResponse]]:
        """ListModelDefinitions method receives a ListModelDefinitionsRequest message
        and returns a ListModelDefinitionsResponse
        """
    @abc.abstractmethod
    def GetModelDefinition(
        self,
        request: model.model.v1alpha.model_definition_pb2.GetModelDefinitionRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_definition_pb2.GetModelDefinitionResponse, collections.abc.Awaitable[model.model.v1alpha.model_definition_pb2.GetModelDefinitionResponse]]:
        """GetModelDefinition method receives a GetModelDefinitionRequest message and
        returns a GetModelDefinitionResponse
        """
    @abc.abstractmethod
    def ListModels(
        self,
        request: model.model.v1alpha.model_pb2.ListModelsRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.ListModelsResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.ListModelsResponse]]:
        """ListModels method receives a ListModelsRequest message and returns a
        ListModelsResponse
        """
    @abc.abstractmethod
    def LookUpModel(
        self,
        request: model.model.v1alpha.model_pb2.LookUpModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.LookUpModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.LookUpModelResponse]]:
        """LookUpUodel method receives a LookUpModelRequest message and returns a
        LookUpModelResponse
        """
    @abc.abstractmethod
    def ListUserModels(
        self,
        request: model.model.v1alpha.model_pb2.ListUserModelsRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.ListUserModelsResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.ListUserModelsResponse]]:
        """LisUsertModels method receives a ListUserModelsRequest message and returns a
        ListUserModelsResponse
        """
    @abc.abstractmethod
    def CreateUserModel(
        self,
        request: model.model.v1alpha.model_pb2.CreateUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.CreateUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.CreateUserModelResponse]]:
        """CreateUserModel method receives a CreateUserModelRequest message and returns a
        CreateUserModelResponse
        """
    @abc.abstractmethod
    def CreateUserModelBinaryFileUpload(
        self,
        request_iterator: _MaybeAsyncIterator[model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadRequest],
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadResponse]]:
        """CreateUserModelBinaryFileUpload method receives a
        CreateUserModelBinaryFileUploadRequest message and returns a
        CreateUserModelBinaryFileUploadResponse message.

        Endpoint: "POST /v1alpha/users/*/models:multipart"
        """
    @abc.abstractmethod
    def GetUserModel(
        self,
        request: model.model.v1alpha.model_pb2.GetUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.GetUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.GetUserModelResponse]]:
        """GetUserModel method receives a GetUserModelRequest message and returns a
        GetUserModelResponse
        """
    @abc.abstractmethod
    def UpdateUserModel(
        self,
        request: model.model.v1alpha.model_pb2.UpdateUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.UpdateUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.UpdateUserModelResponse]]:
        """UpdateUserModel method receives a UpdateUserModelRequest message and returns a
        UpdateUserModelResponse
        """
    @abc.abstractmethod
    def DeleteUserModel(
        self,
        request: model.model.v1alpha.model_pb2.DeleteUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.DeleteUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.DeleteUserModelResponse]]:
        """DeleteUserModel method receives a DeleteUserModelRequest message and returns a
        DeleteUserModelResponse
        """
    @abc.abstractmethod
    def RenameUserModel(
        self,
        request: model.model.v1alpha.model_pb2.RenameUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.RenameUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.RenameUserModelResponse]]:
        """RenameUserModel method rename a model"""
    @abc.abstractmethod
    def PublishUserModel(
        self,
        request: model.model.v1alpha.model_pb2.PublishUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.PublishUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.PublishUserModelResponse]]:
        """PublishUserModel method receives a PublisUserhModelRequest message and returns a
        PublishUserModelResponse
        """
    @abc.abstractmethod
    def UnpublishUserModel(
        self,
        request: model.model.v1alpha.model_pb2.UnpublishUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.UnpublishUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.UnpublishUserModelResponse]]:
        """UnpublishUserModel method receives a UnpublishUserModelRequest message and returns
        a UnpublishUserModelResponse
        """
    @abc.abstractmethod
    def DeployUserModel(
        self,
        request: model.model.v1alpha.model_pb2.DeployUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.DeployUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.DeployUserModelResponse]]:
        """DeployUserModel deploy a model to online state"""
    @abc.abstractmethod
    def UndeployUserModel(
        self,
        request: model.model.v1alpha.model_pb2.UndeployUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.UndeployUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.UndeployUserModelResponse]]:
        """UndeployUserModel undeploy a model to offline state"""
    @abc.abstractmethod
    def GetUserModelCard(
        self,
        request: model.model.v1alpha.model_pb2.GetUserModelCardRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.GetUserModelCardResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.GetUserModelCardResponse]]:
        """GetUserModelCard method receives a GetUserModelCardRequest message
        and returns a GetUserModelCardResponseUser
        """
    @abc.abstractmethod
    def WatchUserModel(
        self,
        request: model.model.v1alpha.model_pb2.WatchUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.WatchUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.WatchUserModelResponse]]:
        """WatchUserModel method receives a WatchUserModelRequest message
        and returns a WatchModelResponse
        """
    @abc.abstractmethod
    def TriggerUserModel(
        self,
        request: model.model.v1alpha.model_pb2.TriggerUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.TriggerUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.TriggerUserModelResponse]]:
        """/////////////////////////////////////////////////////

        TriggerUserModel method receives a TriggerUserModelRequest message
        and returns a TriggerUserModelResponse message.
        """
    @abc.abstractmethod
    def TriggerUserModelBinaryFileUpload(
        self,
        request_iterator: _MaybeAsyncIterator[model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadRequest],
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadResponse]]:
        """TriggerUserModelBinaryFileUpload method receives a
        TriggerUserModelBinaryFileUploadRequest message and returns a
        TriggerUserModelBinaryFileUploadResponse message.

        Endpoint: "POST/v1alpha/{name=models/*}/trigger-multipart"
        """
    @abc.abstractmethod
    def TestUserModel(
        self,
        request: model.model.v1alpha.model_pb2.TestUserModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.TestUserModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.TestUserModelResponse]]:
        """TestUserModel method receives a TestUserModelRequest message
        and returns a TestUserModelResponse message.
        """
    @abc.abstractmethod
    def TestUserModelBinaryFileUpload(
        self,
        request_iterator: _MaybeAsyncIterator[model.model.v1alpha.model_pb2.TestUserModelBinaryFileUploadRequest],
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.TestUserModelBinaryFileUploadResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.TestUserModelBinaryFileUploadResponse]]:
        """TestUserModelBinaryFileUpload method receives a
        TestUserModelBinaryFileUploadRequest message and returns a
        TestUserModelBinaryFileUploadResponse message.

        Endpoint: "POST/v1alpha/{name=users/*/models/*}/test-multipart"
        """
    @abc.abstractmethod
    def GetModelOperation(
        self,
        request: model.model.v1alpha.model_pb2.GetModelOperationRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.GetModelOperationResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.GetModelOperationResponse]]:
        """GetModelOperation method receives a
        GetModelOperationRequest message and returns a
        GetModelOperationResponse message.
        """

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