"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import abc
import artifact.artifact.v1alpha.artifact_pb2
import artifact.artifact.v1alpha.chunk_pb2
import artifact.artifact.v1alpha.file_catalog_pb2
import artifact.artifact.v1alpha.object_pb2
import artifact.artifact.v1alpha.qa_pb2
import collections.abc
import grpc
import grpc.aio
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 ArtifactPublicServiceStub:
    """ArtifactPublicService exposes the public endpoints that allow clients to
    manage artifacts.
    """

    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    Liveness: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.LivenessRequest,
        artifact.artifact.v1alpha.artifact_pb2.LivenessResponse,
    ]
    """Check if the artifact server is alive

    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md.
    """
    Readiness: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ReadinessRequest,
        artifact.artifact.v1alpha.artifact_pb2.ReadinessResponse,
    ]
    """Check if the artifact server is ready

    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    """
    CreateCatalog: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.CreateCatalogRequest,
        artifact.artifact.v1alpha.artifact_pb2.CreateCatalogResponse,
    ]
    """TODO improve public endpoint definitions with title and description.

    Create a catalog
    """
    ListCatalogs: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogsRequest,
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogsResponse,
    ]
    """Get all catalogs info"""
    UpdateCatalog: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.UpdateCatalogRequest,
        artifact.artifact.v1alpha.artifact_pb2.UpdateCatalogResponse,
    ]
    """Update a catalog info"""
    DeleteCatalog: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogRequest,
        artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogResponse,
    ]
    """Delete a catalog"""
    UploadCatalogFile: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.UploadCatalogFileRequest,
        artifact.artifact.v1alpha.artifact_pb2.UploadCatalogFileResponse,
    ]
    """Create a file"""
    DeleteCatalogFile: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogFileRequest,
        artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogFileResponse,
    ]
    """Delete a file"""
    ProcessCatalogFiles: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ProcessCatalogFilesRequest,
        artifact.artifact.v1alpha.artifact_pb2.ProcessCatalogFilesResponse,
    ]
    """Process catalog files"""
    ListCatalogFiles: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogFilesRequest,
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogFilesResponse,
    ]
    """List catalog files"""
    ListChunks: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.chunk_pb2.ListChunksRequest,
        artifact.artifact.v1alpha.chunk_pb2.ListChunksResponse,
    ]
    """List catalog chunks"""
    GetSourceFile: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.chunk_pb2.GetSourceFileRequest,
        artifact.artifact.v1alpha.chunk_pb2.GetSourceFileResponse,
    ]
    """Get catalog single-source-of-truth file"""
    UpdateChunk: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.chunk_pb2.UpdateChunkRequest,
        artifact.artifact.v1alpha.chunk_pb2.UpdateChunkResponse,
    ]
    """Update catalog chunk"""
    SimilarityChunksSearch: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.chunk_pb2.SimilarityChunksSearchRequest,
        artifact.artifact.v1alpha.chunk_pb2.SimilarityChunksSearchResponse,
    ]
    """Retrieve similar chunks"""
    QuestionAnswering: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.qa_pb2.QuestionAnsweringRequest,
        artifact.artifact.v1alpha.qa_pb2.QuestionAnsweringResponse,
    ]
    """Ask a question"""
    GetFileCatalog: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.file_catalog_pb2.GetFileCatalogRequest,
        artifact.artifact.v1alpha.file_catalog_pb2.GetFileCatalogResponse,
    ]
    """Get file catalog"""
    ListCatalogRuns: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogRunsRequest,
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogRunsResponse,
    ]
    """List Catalog Runs"""
    GetObjectUploadURL: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.object_pb2.GetObjectUploadURLRequest,
        artifact.artifact.v1alpha.object_pb2.GetObjectUploadURLResponse,
    ]
    """Get Object Upload URL"""
    GetObjectDownloadURL: grpc.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.object_pb2.GetObjectDownloadURLRequest,
        artifact.artifact.v1alpha.object_pb2.GetObjectDownloadURLResponse,
    ]
    """Get Object Download URL"""

class ArtifactPublicServiceAsyncStub:
    """ArtifactPublicService exposes the public endpoints that allow clients to
    manage artifacts.
    """

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

    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md.
    """
    Readiness: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ReadinessRequest,
        artifact.artifact.v1alpha.artifact_pb2.ReadinessResponse,
    ]
    """Check if the artifact server is ready

    See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
    """
    CreateCatalog: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.CreateCatalogRequest,
        artifact.artifact.v1alpha.artifact_pb2.CreateCatalogResponse,
    ]
    """TODO improve public endpoint definitions with title and description.

    Create a catalog
    """
    ListCatalogs: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogsRequest,
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogsResponse,
    ]
    """Get all catalogs info"""
    UpdateCatalog: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.UpdateCatalogRequest,
        artifact.artifact.v1alpha.artifact_pb2.UpdateCatalogResponse,
    ]
    """Update a catalog info"""
    DeleteCatalog: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogRequest,
        artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogResponse,
    ]
    """Delete a catalog"""
    UploadCatalogFile: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.UploadCatalogFileRequest,
        artifact.artifact.v1alpha.artifact_pb2.UploadCatalogFileResponse,
    ]
    """Create a file"""
    DeleteCatalogFile: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogFileRequest,
        artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogFileResponse,
    ]
    """Delete a file"""
    ProcessCatalogFiles: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ProcessCatalogFilesRequest,
        artifact.artifact.v1alpha.artifact_pb2.ProcessCatalogFilesResponse,
    ]
    """Process catalog files"""
    ListCatalogFiles: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogFilesRequest,
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogFilesResponse,
    ]
    """List catalog files"""
    ListChunks: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.chunk_pb2.ListChunksRequest,
        artifact.artifact.v1alpha.chunk_pb2.ListChunksResponse,
    ]
    """List catalog chunks"""
    GetSourceFile: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.chunk_pb2.GetSourceFileRequest,
        artifact.artifact.v1alpha.chunk_pb2.GetSourceFileResponse,
    ]
    """Get catalog single-source-of-truth file"""
    UpdateChunk: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.chunk_pb2.UpdateChunkRequest,
        artifact.artifact.v1alpha.chunk_pb2.UpdateChunkResponse,
    ]
    """Update catalog chunk"""
    SimilarityChunksSearch: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.chunk_pb2.SimilarityChunksSearchRequest,
        artifact.artifact.v1alpha.chunk_pb2.SimilarityChunksSearchResponse,
    ]
    """Retrieve similar chunks"""
    QuestionAnswering: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.qa_pb2.QuestionAnsweringRequest,
        artifact.artifact.v1alpha.qa_pb2.QuestionAnsweringResponse,
    ]
    """Ask a question"""
    GetFileCatalog: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.file_catalog_pb2.GetFileCatalogRequest,
        artifact.artifact.v1alpha.file_catalog_pb2.GetFileCatalogResponse,
    ]
    """Get file catalog"""
    ListCatalogRuns: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogRunsRequest,
        artifact.artifact.v1alpha.artifact_pb2.ListCatalogRunsResponse,
    ]
    """List Catalog Runs"""
    GetObjectUploadURL: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.object_pb2.GetObjectUploadURLRequest,
        artifact.artifact.v1alpha.object_pb2.GetObjectUploadURLResponse,
    ]
    """Get Object Upload URL"""
    GetObjectDownloadURL: grpc.aio.UnaryUnaryMultiCallable[
        artifact.artifact.v1alpha.object_pb2.GetObjectDownloadURLRequest,
        artifact.artifact.v1alpha.object_pb2.GetObjectDownloadURLResponse,
    ]
    """Get Object Download URL"""

class ArtifactPublicServiceServicer(metaclass=abc.ABCMeta):
    """ArtifactPublicService exposes the public endpoints that allow clients to
    manage artifacts.
    """

    @abc.abstractmethod
    def Liveness(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.LivenessRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.LivenessResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.LivenessResponse]]:
        """Check if the artifact server is alive

        See https://github.com/grpc/grpc/blob/master/doc/health-checking.md.
        """
    @abc.abstractmethod
    def Readiness(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.ReadinessRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.ReadinessResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.ReadinessResponse]]:
        """Check if the artifact server is ready

        See https://github.com/grpc/grpc/blob/master/doc/health-checking.md
        """
    @abc.abstractmethod
    def CreateCatalog(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.CreateCatalogRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.CreateCatalogResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.CreateCatalogResponse]]:
        """TODO improve public endpoint definitions with title and description.

        Create a catalog
        """
    @abc.abstractmethod
    def ListCatalogs(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.ListCatalogsRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.ListCatalogsResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.ListCatalogsResponse]]:
        """Get all catalogs info"""
    @abc.abstractmethod
    def UpdateCatalog(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.UpdateCatalogRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.UpdateCatalogResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.UpdateCatalogResponse]]:
        """Update a catalog info"""
    @abc.abstractmethod
    def DeleteCatalog(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogResponse]]:
        """Delete a catalog"""
    @abc.abstractmethod
    def UploadCatalogFile(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.UploadCatalogFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.UploadCatalogFileResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.UploadCatalogFileResponse]]:
        """Create a file"""
    @abc.abstractmethod
    def DeleteCatalogFile(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogFileResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.DeleteCatalogFileResponse]]:
        """Delete a file"""
    @abc.abstractmethod
    def ProcessCatalogFiles(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.ProcessCatalogFilesRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.ProcessCatalogFilesResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.ProcessCatalogFilesResponse]]:
        """Process catalog files"""
    @abc.abstractmethod
    def ListCatalogFiles(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.ListCatalogFilesRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.ListCatalogFilesResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.ListCatalogFilesResponse]]:
        """List catalog files"""
    @abc.abstractmethod
    def ListChunks(
        self,
        request: artifact.artifact.v1alpha.chunk_pb2.ListChunksRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.chunk_pb2.ListChunksResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.chunk_pb2.ListChunksResponse]]:
        """List catalog chunks"""
    @abc.abstractmethod
    def GetSourceFile(
        self,
        request: artifact.artifact.v1alpha.chunk_pb2.GetSourceFileRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.chunk_pb2.GetSourceFileResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.chunk_pb2.GetSourceFileResponse]]:
        """Get catalog single-source-of-truth file"""
    @abc.abstractmethod
    def UpdateChunk(
        self,
        request: artifact.artifact.v1alpha.chunk_pb2.UpdateChunkRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.chunk_pb2.UpdateChunkResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.chunk_pb2.UpdateChunkResponse]]:
        """Update catalog chunk"""
    @abc.abstractmethod
    def SimilarityChunksSearch(
        self,
        request: artifact.artifact.v1alpha.chunk_pb2.SimilarityChunksSearchRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.chunk_pb2.SimilarityChunksSearchResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.chunk_pb2.SimilarityChunksSearchResponse]]:
        """Retrieve similar chunks"""
    @abc.abstractmethod
    def QuestionAnswering(
        self,
        request: artifact.artifact.v1alpha.qa_pb2.QuestionAnsweringRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.qa_pb2.QuestionAnsweringResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.qa_pb2.QuestionAnsweringResponse]]:
        """Ask a question"""
    @abc.abstractmethod
    def GetFileCatalog(
        self,
        request: artifact.artifact.v1alpha.file_catalog_pb2.GetFileCatalogRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.file_catalog_pb2.GetFileCatalogResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.file_catalog_pb2.GetFileCatalogResponse]]:
        """Get file catalog"""
    @abc.abstractmethod
    def ListCatalogRuns(
        self,
        request: artifact.artifact.v1alpha.artifact_pb2.ListCatalogRunsRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.artifact_pb2.ListCatalogRunsResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.artifact_pb2.ListCatalogRunsResponse]]:
        """List Catalog Runs"""
    @abc.abstractmethod
    def GetObjectUploadURL(
        self,
        request: artifact.artifact.v1alpha.object_pb2.GetObjectUploadURLRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.object_pb2.GetObjectUploadURLResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.object_pb2.GetObjectUploadURLResponse]]:
        """Get Object Upload URL"""
    @abc.abstractmethod
    def GetObjectDownloadURL(
        self,
        request: artifact.artifact.v1alpha.object_pb2.GetObjectDownloadURLRequest,
        context: _ServicerContext,
    ) -> typing.Union[artifact.artifact.v1alpha.object_pb2.GetObjectDownloadURLResponse, collections.abc.Awaitable[artifact.artifact.v1alpha.object_pb2.GetObjectDownloadURLResponse]]:
        """Get Object Download URL"""

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