"""
@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

    ModelPublicService exposes the public endpoints that allow clients to manage
    models.
    """

    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,
    ]
    """Check if the model server is alive

    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,
    ]
    """Check if the model server is ready

    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,
    ]
    """List model definitions

    Returns a paginated list of model definitions.
    """
    GetModelDefinition: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_definition_pb2.GetModelDefinitionRequest,
        model.model.v1alpha.model_definition_pb2.GetModelDefinitionResponse,
    ]
    """Get a model definition

    Returns the details of a model definition.
    """
    ListModels: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListModelsRequest,
        model.model.v1alpha.model_pb2.ListModelsResponse,
    ]
    """List models

    Returns a paginated list of models.
    """
    LookUpModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.LookUpModelRequest,
        model.model.v1alpha.model_pb2.LookUpModelResponse,
    ]
    """Get a model by UID

    Returns the details of a model by a permalink defined by the resource UID.
    """
    ListUserModels: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListUserModelsRequest,
        model.model.v1alpha.model_pb2.ListUserModelsResponse,
    ]
    """List user models

    Returns a paginated list of models that belong to the specified user. The
    parent user may be different from the authenticated user, in which case
    the results will contain the models that are visible to the latter.
    """
    CreateUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateUserModelRequest,
        model.model.v1alpha.model_pb2.CreateUserModelResponse,
    ]
    """Create a new model

    Creates a new model under the parenthood of a user. This is an
    asynchronous endpoint, i.e., the server will not wait for the model to be
    created in order to respond. Instead, it will return a response with the
    necessary information to access the result and status of the creation
    operation.
    """
    CreateUserModelBinaryFileUpload: grpc.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadResponse,
    ]
    """Upload model binary

    Creates a new model by upploading its binary content.
    """
    GetUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetUserModelRequest,
        model.model.v1alpha.model_pb2.GetUserModelResponse,
    ]
    """Get a model

    Returns the detail of a model, accessing it by the model ID and its parent user.
    """
    UpdateUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UpdateUserModelRequest,
        model.model.v1alpha.model_pb2.UpdateUserModelResponse,
    ]
    """Update a model

    Updates a model, accessing it by its resource name, which is defined by
    the parent user and the ID of the model.

    In REST requests, only the supplied model fields will be taken into
    account when updating the resource.
    """
    DeleteUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeleteUserModelRequest,
        model.model.v1alpha.model_pb2.DeleteUserModelResponse,
    ]
    """Delete a model

    Deletes a model, accesing it by its resource name, which is defined by the
    parent user and the ID of the model.
    """
    RenameUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.RenameUserModelRequest,
        model.model.v1alpha.model_pb2.RenameUserModelResponse,
    ]
    """Rename a model

    Renames a model, accesing it by its resource name, which is defined by the
    parent user and the ID of the model.
    """
    PublishUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.PublishUserModelRequest,
        model.model.v1alpha.model_pb2.PublishUserModelResponse,
    ]
    """Publish a model

    Updates the visibility in a model to PUBLIC. The model is accessed by its
    resource name, defined by the model ID and its parent user.
    """
    UnpublishUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UnpublishUserModelRequest,
        model.model.v1alpha.model_pb2.UnpublishUserModelResponse,
    ]
    """Unpublish a model

    Updates the visibility in a model to PRIVATE. The model is accessed by its
    resource name, defined by the model ID and its parent user.
    """
    DeployUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeployUserModelRequest,
        model.model.v1alpha.model_pb2.DeployUserModelResponse,
    ]
    """Deploy a model

    Transitions the model into an ONLINE state. The model is accessed by its
    resource name, defined by the model ID and its parent user.

    While this operation is being performed, the state of the model will
    transition to UNSPECIFIED. As completing the deployment might take time,
    the server will not wait to complete the operation to return a response.
    The state of the model can be used to track the completion of the
    operation. This can be done by using the `watch` operation on the model.
    """
    UndeployUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UndeployUserModelRequest,
        model.model.v1alpha.model_pb2.UndeployUserModelResponse,
    ]
    """Undeploy a model

    Transitions the model into an OFFLINE state. The model is accessed by its
    resource name, defined by the model ID and its parent user.

    While this operation is being performed, the state of the model will
    transition to UNSPECIFIED. As completing the teardown might take time,
    the server will not wait to complete the operation to return a response.
    The state of the model can be used to track the completion of the
    operation. This can be done by using the `watch` operation on the model.
    """
    GetUserModelCard: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetUserModelCardRequest,
        model.model.v1alpha.model_pb2.GetUserModelCardResponse,
    ]
    """Get a model card

    Returns the README file that accompanies a model, describing it and
    enhancing it with metadata. The model is accessed by its resource name.
    """
    WatchUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.WatchUserModelRequest,
        model.model.v1alpha.model_pb2.WatchUserModelResponse,
    ]
    """Watch the state of a model

    Returns the state of a model. The deploy / undeploy actions take some
    time, during which a model will be in an UNSPECIFIED state. This endpoint
    allows clients to track the state and progress of the model.
    """
    TriggerUserModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerUserModelRequest,
        model.model.v1alpha.model_pb2.TriggerUserModelResponse,
    ]
    """/////////////////////////////////////////////////////

    Trigger model inference

    Triggers a deployed model to infer the result of a set of task or
    questions.
    """
    TriggerUserModelBinaryFileUpload: grpc.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadResponse,
    ]
    """Trigger model inference with a binary input

    Triggers a deployed model to infer the result of a task or question,
    submitted as a binary file.
    """
    ListOrganizationModels: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListOrganizationModelsRequest,
        model.model.v1alpha.model_pb2.ListOrganizationModelsResponse,
    ]
    """List organization models

    Returns a paginated list of models that belong to the specified organization. The
    parent organization may be different from the authenticated organization, in which case
    the results will contain the models that are visible to the latter.
    """
    CreateOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateOrganizationModelRequest,
        model.model.v1alpha.model_pb2.CreateOrganizationModelResponse,
    ]
    """Create a new model

    Creates a new model under the parenthood of an organization. This is an
    asynchronous endpoint, i.e., the server will not wait for the model to be
    created in order to respond. Instead, it will return a response with the
    necessary information to access the result and status of the creation
    operation.
    """
    CreateOrganizationModelBinaryFileUpload: grpc.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateOrganizationModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.CreateOrganizationModelBinaryFileUploadResponse,
    ]
    """Upload model binary

    Creates a new model by upploading its binary content.
    """
    GetOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetOrganizationModelRequest,
        model.model.v1alpha.model_pb2.GetOrganizationModelResponse,
    ]
    """Get a model

    Returns the detail of a model, accessing it by the model ID and its parent organization.
    """
    UpdateOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UpdateOrganizationModelRequest,
        model.model.v1alpha.model_pb2.UpdateOrganizationModelResponse,
    ]
    """Update a model

    Updates a model, accessing it by its resource name, which is defined by
    the parent organization and the ID of the model.

    In REST requests, only the supplied model fields will be taken into
    account when updating the resource.
    """
    DeleteOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeleteOrganizationModelRequest,
        model.model.v1alpha.model_pb2.DeleteOrganizationModelResponse,
    ]
    """Delete a model

    Deletes a model, accesing it by its resource name, which is defined by the
    parent organization and the ID of the model.
    """
    RenameOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.RenameOrganizationModelRequest,
        model.model.v1alpha.model_pb2.RenameOrganizationModelResponse,
    ]
    """Rename a model

    Renames a model, accesing it by its resource name, which is defined by the
    parent organization and the ID of the model.
    """
    PublishOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.PublishOrganizationModelRequest,
        model.model.v1alpha.model_pb2.PublishOrganizationModelResponse,
    ]
    """Publish a model

    Updates the visibility in a model to PUBLIC. The model is accessed by its
    resource name, defined by the model ID and its parent organization.
    """
    UnpublishOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UnpublishOrganizationModelRequest,
        model.model.v1alpha.model_pb2.UnpublishOrganizationModelResponse,
    ]
    """Unpublish a model

    Updates the visibility in a model to PRIVATE. The model is accessed by its
    resource name, defined by the model ID and its parent organization.
    """
    DeployOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeployOrganizationModelRequest,
        model.model.v1alpha.model_pb2.DeployOrganizationModelResponse,
    ]
    """Deploy a model

    Transitions the model into an ONLINE state. The model is accessed by its
    resource name, defined by the model ID and its parent organization.

    While this operation is being performed, the state of the model will
    transition to UNSPECIFIED. As completing the deployment might take time,
    the server will not wait to complete the operation to return a response.
    The state of the model can be used to track the completion of the
    operation. This can be done by using the `watch` operation on the model.
    """
    UndeployOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UndeployOrganizationModelRequest,
        model.model.v1alpha.model_pb2.UndeployOrganizationModelResponse,
    ]
    """Undeploy a model

    Transitions the model into an OFFLINE state. The model is accessed by its
    resource name, defined by the model ID and its parent organization.

    While this operation is being performed, the state of the model will
    transition to UNSPECIFIED. As completing the teardown might take time,
    the server will not wait to complete the operation to return a response.
    The state of the model can be used to track the completion of the
    operation. This can be done by using the `watch` operation on the model.
    """
    GetOrganizationModelCard: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetOrganizationModelCardRequest,
        model.model.v1alpha.model_pb2.GetOrganizationModelCardResponse,
    ]
    """Get a model card

    Returns the README file that accompanies a model, describing it and
    enhancing it with metadata. The model is accessed by its resource name.
    """
    WatchOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.WatchOrganizationModelRequest,
        model.model.v1alpha.model_pb2.WatchOrganizationModelResponse,
    ]
    """Watch the state of a model

    Returns the state of a model. The deploy / undeploy actions take some
    time, during which a model will be in an UNSPECIFIED state. This endpoint
    allows clients to track the state and progress of the model.
    """
    TriggerOrganizationModel: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerOrganizationModelRequest,
        model.model.v1alpha.model_pb2.TriggerOrganizationModelResponse,
    ]
    """/////////////////////////////////////////////////////

    Trigger model inference

    Triggers a deployed model to infer the result of a set of task or
    questions.
    """
    TriggerOrganizationModelBinaryFileUpload: grpc.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerOrganizationModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.TriggerOrganizationModelBinaryFileUploadResponse,
    ]
    """Trigger model inference with a binary input

    Triggers a deployed model to infer the result of a task or question,
    submitted as a binary file.
    """
    GetModelOperation: grpc.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetModelOperationRequest,
        model.model.v1alpha.model_pb2.GetModelOperationResponse,
    ]
    """Get the details of a long-running operation

    This method allows requesters to request the status and outcome of
    long-running operations in a model, such as deployment.
    """

class ModelPublicServiceAsyncStub:
    """Model

    ModelPublicService exposes the public endpoints that allow clients to manage
    models.
    """

    Liveness: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.LivenessRequest,
        model.model.v1alpha.model_pb2.LivenessResponse,
    ]
    """Check if the model server is alive

    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,
    ]
    """Check if the model server is ready

    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,
    ]
    """List model definitions

    Returns a paginated list of model definitions.
    """
    GetModelDefinition: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_definition_pb2.GetModelDefinitionRequest,
        model.model.v1alpha.model_definition_pb2.GetModelDefinitionResponse,
    ]
    """Get a model definition

    Returns the details of a model definition.
    """
    ListModels: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListModelsRequest,
        model.model.v1alpha.model_pb2.ListModelsResponse,
    ]
    """List models

    Returns a paginated list of models.
    """
    LookUpModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.LookUpModelRequest,
        model.model.v1alpha.model_pb2.LookUpModelResponse,
    ]
    """Get a model by UID

    Returns the details of a model by a permalink defined by the resource UID.
    """
    ListUserModels: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListUserModelsRequest,
        model.model.v1alpha.model_pb2.ListUserModelsResponse,
    ]
    """List user models

    Returns a paginated list of models that belong to the specified user. The
    parent user may be different from the authenticated user, in which case
    the results will contain the models that are visible to the latter.
    """
    CreateUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateUserModelRequest,
        model.model.v1alpha.model_pb2.CreateUserModelResponse,
    ]
    """Create a new model

    Creates a new model under the parenthood of a user. This is an
    asynchronous endpoint, i.e., the server will not wait for the model to be
    created in order to respond. Instead, it will return a response with the
    necessary information to access the result and status of the creation
    operation.
    """
    CreateUserModelBinaryFileUpload: grpc.aio.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.CreateUserModelBinaryFileUploadResponse,
    ]
    """Upload model binary

    Creates a new model by upploading its binary content.
    """
    GetUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetUserModelRequest,
        model.model.v1alpha.model_pb2.GetUserModelResponse,
    ]
    """Get a model

    Returns the detail of a model, accessing it by the model ID and its parent user.
    """
    UpdateUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UpdateUserModelRequest,
        model.model.v1alpha.model_pb2.UpdateUserModelResponse,
    ]
    """Update a model

    Updates a model, accessing it by its resource name, which is defined by
    the parent user and the ID of the model.

    In REST requests, only the supplied model fields will be taken into
    account when updating the resource.
    """
    DeleteUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeleteUserModelRequest,
        model.model.v1alpha.model_pb2.DeleteUserModelResponse,
    ]
    """Delete a model

    Deletes a model, accesing it by its resource name, which is defined by the
    parent user and the ID of the model.
    """
    RenameUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.RenameUserModelRequest,
        model.model.v1alpha.model_pb2.RenameUserModelResponse,
    ]
    """Rename a model

    Renames a model, accesing it by its resource name, which is defined by the
    parent user and the ID of the model.
    """
    PublishUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.PublishUserModelRequest,
        model.model.v1alpha.model_pb2.PublishUserModelResponse,
    ]
    """Publish a model

    Updates the visibility in a model to PUBLIC. The model is accessed by its
    resource name, defined by the model ID and its parent user.
    """
    UnpublishUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UnpublishUserModelRequest,
        model.model.v1alpha.model_pb2.UnpublishUserModelResponse,
    ]
    """Unpublish a model

    Updates the visibility in a model to PRIVATE. The model is accessed by its
    resource name, defined by the model ID and its parent user.
    """
    DeployUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeployUserModelRequest,
        model.model.v1alpha.model_pb2.DeployUserModelResponse,
    ]
    """Deploy a model

    Transitions the model into an ONLINE state. The model is accessed by its
    resource name, defined by the model ID and its parent user.

    While this operation is being performed, the state of the model will
    transition to UNSPECIFIED. As completing the deployment might take time,
    the server will not wait to complete the operation to return a response.
    The state of the model can be used to track the completion of the
    operation. This can be done by using the `watch` operation on the model.
    """
    UndeployUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UndeployUserModelRequest,
        model.model.v1alpha.model_pb2.UndeployUserModelResponse,
    ]
    """Undeploy a model

    Transitions the model into an OFFLINE state. The model is accessed by its
    resource name, defined by the model ID and its parent user.

    While this operation is being performed, the state of the model will
    transition to UNSPECIFIED. As completing the teardown might take time,
    the server will not wait to complete the operation to return a response.
    The state of the model can be used to track the completion of the
    operation. This can be done by using the `watch` operation on the model.
    """
    GetUserModelCard: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetUserModelCardRequest,
        model.model.v1alpha.model_pb2.GetUserModelCardResponse,
    ]
    """Get a model card

    Returns the README file that accompanies a model, describing it and
    enhancing it with metadata. The model is accessed by its resource name.
    """
    WatchUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.WatchUserModelRequest,
        model.model.v1alpha.model_pb2.WatchUserModelResponse,
    ]
    """Watch the state of a model

    Returns the state of a model. The deploy / undeploy actions take some
    time, during which a model will be in an UNSPECIFIED state. This endpoint
    allows clients to track the state and progress of the model.
    """
    TriggerUserModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerUserModelRequest,
        model.model.v1alpha.model_pb2.TriggerUserModelResponse,
    ]
    """/////////////////////////////////////////////////////

    Trigger model inference

    Triggers a deployed model to infer the result of a set of task or
    questions.
    """
    TriggerUserModelBinaryFileUpload: grpc.aio.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.TriggerUserModelBinaryFileUploadResponse,
    ]
    """Trigger model inference with a binary input

    Triggers a deployed model to infer the result of a task or question,
    submitted as a binary file.
    """
    ListOrganizationModels: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.ListOrganizationModelsRequest,
        model.model.v1alpha.model_pb2.ListOrganizationModelsResponse,
    ]
    """List organization models

    Returns a paginated list of models that belong to the specified organization. The
    parent organization may be different from the authenticated organization, in which case
    the results will contain the models that are visible to the latter.
    """
    CreateOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateOrganizationModelRequest,
        model.model.v1alpha.model_pb2.CreateOrganizationModelResponse,
    ]
    """Create a new model

    Creates a new model under the parenthood of an organization. This is an
    asynchronous endpoint, i.e., the server will not wait for the model to be
    created in order to respond. Instead, it will return a response with the
    necessary information to access the result and status of the creation
    operation.
    """
    CreateOrganizationModelBinaryFileUpload: grpc.aio.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.CreateOrganizationModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.CreateOrganizationModelBinaryFileUploadResponse,
    ]
    """Upload model binary

    Creates a new model by upploading its binary content.
    """
    GetOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetOrganizationModelRequest,
        model.model.v1alpha.model_pb2.GetOrganizationModelResponse,
    ]
    """Get a model

    Returns the detail of a model, accessing it by the model ID and its parent organization.
    """
    UpdateOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UpdateOrganizationModelRequest,
        model.model.v1alpha.model_pb2.UpdateOrganizationModelResponse,
    ]
    """Update a model

    Updates a model, accessing it by its resource name, which is defined by
    the parent organization and the ID of the model.

    In REST requests, only the supplied model fields will be taken into
    account when updating the resource.
    """
    DeleteOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeleteOrganizationModelRequest,
        model.model.v1alpha.model_pb2.DeleteOrganizationModelResponse,
    ]
    """Delete a model

    Deletes a model, accesing it by its resource name, which is defined by the
    parent organization and the ID of the model.
    """
    RenameOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.RenameOrganizationModelRequest,
        model.model.v1alpha.model_pb2.RenameOrganizationModelResponse,
    ]
    """Rename a model

    Renames a model, accesing it by its resource name, which is defined by the
    parent organization and the ID of the model.
    """
    PublishOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.PublishOrganizationModelRequest,
        model.model.v1alpha.model_pb2.PublishOrganizationModelResponse,
    ]
    """Publish a model

    Updates the visibility in a model to PUBLIC. The model is accessed by its
    resource name, defined by the model ID and its parent organization.
    """
    UnpublishOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UnpublishOrganizationModelRequest,
        model.model.v1alpha.model_pb2.UnpublishOrganizationModelResponse,
    ]
    """Unpublish a model

    Updates the visibility in a model to PRIVATE. The model is accessed by its
    resource name, defined by the model ID and its parent organization.
    """
    DeployOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.DeployOrganizationModelRequest,
        model.model.v1alpha.model_pb2.DeployOrganizationModelResponse,
    ]
    """Deploy a model

    Transitions the model into an ONLINE state. The model is accessed by its
    resource name, defined by the model ID and its parent organization.

    While this operation is being performed, the state of the model will
    transition to UNSPECIFIED. As completing the deployment might take time,
    the server will not wait to complete the operation to return a response.
    The state of the model can be used to track the completion of the
    operation. This can be done by using the `watch` operation on the model.
    """
    UndeployOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.UndeployOrganizationModelRequest,
        model.model.v1alpha.model_pb2.UndeployOrganizationModelResponse,
    ]
    """Undeploy a model

    Transitions the model into an OFFLINE state. The model is accessed by its
    resource name, defined by the model ID and its parent organization.

    While this operation is being performed, the state of the model will
    transition to UNSPECIFIED. As completing the teardown might take time,
    the server will not wait to complete the operation to return a response.
    The state of the model can be used to track the completion of the
    operation. This can be done by using the `watch` operation on the model.
    """
    GetOrganizationModelCard: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetOrganizationModelCardRequest,
        model.model.v1alpha.model_pb2.GetOrganizationModelCardResponse,
    ]
    """Get a model card

    Returns the README file that accompanies a model, describing it and
    enhancing it with metadata. The model is accessed by its resource name.
    """
    WatchOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.WatchOrganizationModelRequest,
        model.model.v1alpha.model_pb2.WatchOrganizationModelResponse,
    ]
    """Watch the state of a model

    Returns the state of a model. The deploy / undeploy actions take some
    time, during which a model will be in an UNSPECIFIED state. This endpoint
    allows clients to track the state and progress of the model.
    """
    TriggerOrganizationModel: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerOrganizationModelRequest,
        model.model.v1alpha.model_pb2.TriggerOrganizationModelResponse,
    ]
    """/////////////////////////////////////////////////////

    Trigger model inference

    Triggers a deployed model to infer the result of a set of task or
    questions.
    """
    TriggerOrganizationModelBinaryFileUpload: grpc.aio.StreamUnaryMultiCallable[
        model.model.v1alpha.model_pb2.TriggerOrganizationModelBinaryFileUploadRequest,
        model.model.v1alpha.model_pb2.TriggerOrganizationModelBinaryFileUploadResponse,
    ]
    """Trigger model inference with a binary input

    Triggers a deployed model to infer the result of a task or question,
    submitted as a binary file.
    """
    GetModelOperation: grpc.aio.UnaryUnaryMultiCallable[
        model.model.v1alpha.model_pb2.GetModelOperationRequest,
        model.model.v1alpha.model_pb2.GetModelOperationResponse,
    ]
    """Get the details of a long-running operation

    This method allows requesters to request the status and outcome of
    long-running operations in a model, such as deployment.
    """

class ModelPublicServiceServicer(metaclass=abc.ABCMeta):
    """Model

    ModelPublicService exposes the public endpoints that allow clients to manage
    models.
    """

    @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]]:
        """Check if the model server is alive

        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]]:
        """Check if the model server is ready

        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]]:
        """List model definitions

        Returns a paginated list of model definitions.
        """
    @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]]:
        """Get a model definition

        Returns the details of a model definition.
        """
    @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]]:
        """List models

        Returns a paginated list of models.
        """
    @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]]:
        """Get a model by UID

        Returns the details of a model by a permalink defined by the resource UID.
        """
    @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]]:
        """List user models

        Returns a paginated list of models that belong to the specified user. The
        parent user may be different from the authenticated user, in which case
        the results will contain the models that are visible to the latter.
        """
    @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]]:
        """Create a new model

        Creates a new model under the parenthood of a user. This is an
        asynchronous endpoint, i.e., the server will not wait for the model to be
        created in order to respond. Instead, it will return a response with the
        necessary information to access the result and status of the creation
        operation.
        """
    @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]]:
        """Upload model binary

        Creates a new model by upploading its binary content.
        """
    @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]]:
        """Get a model

        Returns the detail of a model, accessing it by the model ID and its parent user.
        """
    @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]]:
        """Update a model

        Updates a model, accessing it by its resource name, which is defined by
        the parent user and the ID of the model.

        In REST requests, only the supplied model fields will be taken into
        account when updating the resource.
        """
    @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]]:
        """Delete a model

        Deletes a model, accesing it by its resource name, which is defined by the
        parent user and the ID of the model.
        """
    @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]]:
        """Rename a model

        Renames a model, accesing it by its resource name, which is defined by the
        parent user and the ID of the 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]]:
        """Publish a model

        Updates the visibility in a model to PUBLIC. The model is accessed by its
        resource name, defined by the model ID and its parent user.
        """
    @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]]:
        """Unpublish a model

        Updates the visibility in a model to PRIVATE. The model is accessed by its
        resource name, defined by the model ID and its parent user.
        """
    @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]]:
        """Deploy a model

        Transitions the model into an ONLINE state. The model is accessed by its
        resource name, defined by the model ID and its parent user.

        While this operation is being performed, the state of the model will
        transition to UNSPECIFIED. As completing the deployment might take time,
        the server will not wait to complete the operation to return a response.
        The state of the model can be used to track the completion of the
        operation. This can be done by using the `watch` operation on the model.
        """
    @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]]:
        """Undeploy a model

        Transitions the model into an OFFLINE state. The model is accessed by its
        resource name, defined by the model ID and its parent user.

        While this operation is being performed, the state of the model will
        transition to UNSPECIFIED. As completing the teardown might take time,
        the server will not wait to complete the operation to return a response.
        The state of the model can be used to track the completion of the
        operation. This can be done by using the `watch` operation on the model.
        """
    @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]]:
        """Get a model card

        Returns the README file that accompanies a model, describing it and
        enhancing it with metadata. The model is accessed by its resource name.
        """
    @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]]:
        """Watch the state of a model

        Returns the state of a model. The deploy / undeploy actions take some
        time, during which a model will be in an UNSPECIFIED state. This endpoint
        allows clients to track the state and progress of the model.
        """
    @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]]:
        """/////////////////////////////////////////////////////

        Trigger model inference

        Triggers a deployed model to infer the result of a set of task or
        questions.
        """
    @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]]:
        """Trigger model inference with a binary input

        Triggers a deployed model to infer the result of a task or question,
        submitted as a binary file.
        """
    @abc.abstractmethod
    def ListOrganizationModels(
        self,
        request: model.model.v1alpha.model_pb2.ListOrganizationModelsRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.ListOrganizationModelsResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.ListOrganizationModelsResponse]]:
        """List organization models

        Returns a paginated list of models that belong to the specified organization. The
        parent organization may be different from the authenticated organization, in which case
        the results will contain the models that are visible to the latter.
        """
    @abc.abstractmethod
    def CreateOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.CreateOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.CreateOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.CreateOrganizationModelResponse]]:
        """Create a new model

        Creates a new model under the parenthood of an organization. This is an
        asynchronous endpoint, i.e., the server will not wait for the model to be
        created in order to respond. Instead, it will return a response with the
        necessary information to access the result and status of the creation
        operation.
        """
    @abc.abstractmethod
    def CreateOrganizationModelBinaryFileUpload(
        self,
        request_iterator: _MaybeAsyncIterator[model.model.v1alpha.model_pb2.CreateOrganizationModelBinaryFileUploadRequest],
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.CreateOrganizationModelBinaryFileUploadResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.CreateOrganizationModelBinaryFileUploadResponse]]:
        """Upload model binary

        Creates a new model by upploading its binary content.
        """
    @abc.abstractmethod
    def GetOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.GetOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.GetOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.GetOrganizationModelResponse]]:
        """Get a model

        Returns the detail of a model, accessing it by the model ID and its parent organization.
        """
    @abc.abstractmethod
    def UpdateOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.UpdateOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.UpdateOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.UpdateOrganizationModelResponse]]:
        """Update a model

        Updates a model, accessing it by its resource name, which is defined by
        the parent organization and the ID of the model.

        In REST requests, only the supplied model fields will be taken into
        account when updating the resource.
        """
    @abc.abstractmethod
    def DeleteOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.DeleteOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.DeleteOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.DeleteOrganizationModelResponse]]:
        """Delete a model

        Deletes a model, accesing it by its resource name, which is defined by the
        parent organization and the ID of the model.
        """
    @abc.abstractmethod
    def RenameOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.RenameOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.RenameOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.RenameOrganizationModelResponse]]:
        """Rename a model

        Renames a model, accesing it by its resource name, which is defined by the
        parent organization and the ID of the model.
        """
    @abc.abstractmethod
    def PublishOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.PublishOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.PublishOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.PublishOrganizationModelResponse]]:
        """Publish a model

        Updates the visibility in a model to PUBLIC. The model is accessed by its
        resource name, defined by the model ID and its parent organization.
        """
    @abc.abstractmethod
    def UnpublishOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.UnpublishOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.UnpublishOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.UnpublishOrganizationModelResponse]]:
        """Unpublish a model

        Updates the visibility in a model to PRIVATE. The model is accessed by its
        resource name, defined by the model ID and its parent organization.
        """
    @abc.abstractmethod
    def DeployOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.DeployOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.DeployOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.DeployOrganizationModelResponse]]:
        """Deploy a model

        Transitions the model into an ONLINE state. The model is accessed by its
        resource name, defined by the model ID and its parent organization.

        While this operation is being performed, the state of the model will
        transition to UNSPECIFIED. As completing the deployment might take time,
        the server will not wait to complete the operation to return a response.
        The state of the model can be used to track the completion of the
        operation. This can be done by using the `watch` operation on the model.
        """
    @abc.abstractmethod
    def UndeployOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.UndeployOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.UndeployOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.UndeployOrganizationModelResponse]]:
        """Undeploy a model

        Transitions the model into an OFFLINE state. The model is accessed by its
        resource name, defined by the model ID and its parent organization.

        While this operation is being performed, the state of the model will
        transition to UNSPECIFIED. As completing the teardown might take time,
        the server will not wait to complete the operation to return a response.
        The state of the model can be used to track the completion of the
        operation. This can be done by using the `watch` operation on the model.
        """
    @abc.abstractmethod
    def GetOrganizationModelCard(
        self,
        request: model.model.v1alpha.model_pb2.GetOrganizationModelCardRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.GetOrganizationModelCardResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.GetOrganizationModelCardResponse]]:
        """Get a model card

        Returns the README file that accompanies a model, describing it and
        enhancing it with metadata. The model is accessed by its resource name.
        """
    @abc.abstractmethod
    def WatchOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.WatchOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.WatchOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.WatchOrganizationModelResponse]]:
        """Watch the state of a model

        Returns the state of a model. The deploy / undeploy actions take some
        time, during which a model will be in an UNSPECIFIED state. This endpoint
        allows clients to track the state and progress of the model.
        """
    @abc.abstractmethod
    def TriggerOrganizationModel(
        self,
        request: model.model.v1alpha.model_pb2.TriggerOrganizationModelRequest,
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.TriggerOrganizationModelResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.TriggerOrganizationModelResponse]]:
        """/////////////////////////////////////////////////////

        Trigger model inference

        Triggers a deployed model to infer the result of a set of task or
        questions.
        """
    @abc.abstractmethod
    def TriggerOrganizationModelBinaryFileUpload(
        self,
        request_iterator: _MaybeAsyncIterator[model.model.v1alpha.model_pb2.TriggerOrganizationModelBinaryFileUploadRequest],
        context: _ServicerContext,
    ) -> typing.Union[model.model.v1alpha.model_pb2.TriggerOrganizationModelBinaryFileUploadResponse, collections.abc.Awaitable[model.model.v1alpha.model_pb2.TriggerOrganizationModelBinaryFileUploadResponse]]:
        """Trigger model inference with a binary input

        Triggers a deployed model to infer the result of a task or question,
        submitted as a binary file.
        """
    @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]]:
        """Get the details of a long-running operation

        This method allows requesters to request the status and outcome of
        long-running operations in a model, such as deployment.
        """

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