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

This is the POC for metric-backend service that supports
1. receiving usage reports from pipeline-backend and model-backend clients
2. uploading usage to InfluxDB
3. uploading usage to Stripe
4. responding usage/price enquiries from clients
"""
import abc
import collections.abc
import core.metric.v1beta.metric_pb2
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 PipelineServiceStub:
    """Services related to pipeline trigger records
    Service for get pipeline information
    """

    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    GetPipelines: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetPipelinesRequest,
        core.metric.v1beta.metric_pb2.GetPipelinesResponse,
    ]
    """Get pipeline info"""
    ReportPipelineTrigger: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.ReportPipelineTriggerRequest,
        core.metric.v1beta.metric_pb2.ReportPipelineTriggerResponse,
    ]
    """Services for reporting usages

    For pipeline-backend clients to report a pipeline trigger record
    """
    ReportPipelineTriggers: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.ReportPipelineTriggersRequest,
        core.metric.v1beta.metric_pb2.ReportPipelineTriggersResponse,
    ]
    """For pipeline-backend clients to report pipeline trigger records"""
    GetPipelineTriggerRecords: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetPipelineTriggerRecordsRequest,
        core.metric.v1beta.metric_pb2.GetPipelineTriggerRecordsResponse,
    ]
    """Services for querying usages

    Get pipeline trigger records
    """
    GetBulkPipelineTriggerRecords: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerRecordsRequest,
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerRecordsResponse,
    ]
    """Get pipeline trigger records in bulk"""
    GetCumulativePipelineTriggerRecords: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetCumulativePipelineTriggerRecordsRequest,
        core.metric.v1beta.metric_pb2.GetCumulativePipelineTriggerRecordsResponse,
    ]
    """Get cumulative pipeline trigger records"""
    GetBulkCumulativePipelineTriggerRecords: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkCumulativePipelineTriggerRecordsRequest,
        core.metric.v1beta.metric_pb2.GetBulkCumulativePipelineTriggerRecordsResponse,
    ]
    """Get cumulative pipeline trigger records in bulk"""
    GetPipelineTriggerSummary: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetPipelineTriggerSummaryRequest,
        core.metric.v1beta.metric_pb2.GetPipelineTriggerSummaryResponse,
    ]
    """Get pipeline trigger summary"""
    GetBulkPipelineTriggerSummaries: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerSummariesRequest,
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerSummariesResponse,
    ]
    """Get pipeline trigger summary in bulk"""
    GetPipelineTriggerPrice: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetPipelineTriggerPriceRequest,
        core.metric.v1beta.metric_pb2.GetPipelineTriggerPriceResponse,
    ]
    """Services for querying prices

    Get pipeline trigger price
    """
    GetBulkPipelineTriggerPrice: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerPriceRequest,
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerPriceResponse,
    ]
    """Get pipeline trigger price in bulk"""

class PipelineServiceAsyncStub:
    """Services related to pipeline trigger records
    Service for get pipeline information
    """

    GetPipelines: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetPipelinesRequest,
        core.metric.v1beta.metric_pb2.GetPipelinesResponse,
    ]
    """Get pipeline info"""
    ReportPipelineTrigger: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.ReportPipelineTriggerRequest,
        core.metric.v1beta.metric_pb2.ReportPipelineTriggerResponse,
    ]
    """Services for reporting usages

    For pipeline-backend clients to report a pipeline trigger record
    """
    ReportPipelineTriggers: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.ReportPipelineTriggersRequest,
        core.metric.v1beta.metric_pb2.ReportPipelineTriggersResponse,
    ]
    """For pipeline-backend clients to report pipeline trigger records"""
    GetPipelineTriggerRecords: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetPipelineTriggerRecordsRequest,
        core.metric.v1beta.metric_pb2.GetPipelineTriggerRecordsResponse,
    ]
    """Services for querying usages

    Get pipeline trigger records
    """
    GetBulkPipelineTriggerRecords: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerRecordsRequest,
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerRecordsResponse,
    ]
    """Get pipeline trigger records in bulk"""
    GetCumulativePipelineTriggerRecords: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetCumulativePipelineTriggerRecordsRequest,
        core.metric.v1beta.metric_pb2.GetCumulativePipelineTriggerRecordsResponse,
    ]
    """Get cumulative pipeline trigger records"""
    GetBulkCumulativePipelineTriggerRecords: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkCumulativePipelineTriggerRecordsRequest,
        core.metric.v1beta.metric_pb2.GetBulkCumulativePipelineTriggerRecordsResponse,
    ]
    """Get cumulative pipeline trigger records in bulk"""
    GetPipelineTriggerSummary: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetPipelineTriggerSummaryRequest,
        core.metric.v1beta.metric_pb2.GetPipelineTriggerSummaryResponse,
    ]
    """Get pipeline trigger summary"""
    GetBulkPipelineTriggerSummaries: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerSummariesRequest,
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerSummariesResponse,
    ]
    """Get pipeline trigger summary in bulk"""
    GetPipelineTriggerPrice: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetPipelineTriggerPriceRequest,
        core.metric.v1beta.metric_pb2.GetPipelineTriggerPriceResponse,
    ]
    """Services for querying prices

    Get pipeline trigger price
    """
    GetBulkPipelineTriggerPrice: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerPriceRequest,
        core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerPriceResponse,
    ]
    """Get pipeline trigger price in bulk"""

class PipelineServiceServicer(metaclass=abc.ABCMeta):
    """Services related to pipeline trigger records
    Service for get pipeline information
    """

    @abc.abstractmethod
    def GetPipelines(
        self,
        request: core.metric.v1beta.metric_pb2.GetPipelinesRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetPipelinesResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetPipelinesResponse]]:
        """Get pipeline info"""
    @abc.abstractmethod
    def ReportPipelineTrigger(
        self,
        request: core.metric.v1beta.metric_pb2.ReportPipelineTriggerRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.ReportPipelineTriggerResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.ReportPipelineTriggerResponse]]:
        """Services for reporting usages

        For pipeline-backend clients to report a pipeline trigger record
        """
    @abc.abstractmethod
    def ReportPipelineTriggers(
        self,
        request: core.metric.v1beta.metric_pb2.ReportPipelineTriggersRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.ReportPipelineTriggersResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.ReportPipelineTriggersResponse]]:
        """For pipeline-backend clients to report pipeline trigger records"""
    @abc.abstractmethod
    def GetPipelineTriggerRecords(
        self,
        request: core.metric.v1beta.metric_pb2.GetPipelineTriggerRecordsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetPipelineTriggerRecordsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetPipelineTriggerRecordsResponse]]:
        """Services for querying usages

        Get pipeline trigger records
        """
    @abc.abstractmethod
    def GetBulkPipelineTriggerRecords(
        self,
        request: core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerRecordsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerRecordsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerRecordsResponse]]:
        """Get pipeline trigger records in bulk"""
    @abc.abstractmethod
    def GetCumulativePipelineTriggerRecords(
        self,
        request: core.metric.v1beta.metric_pb2.GetCumulativePipelineTriggerRecordsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetCumulativePipelineTriggerRecordsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetCumulativePipelineTriggerRecordsResponse]]:
        """Get cumulative pipeline trigger records"""
    @abc.abstractmethod
    def GetBulkCumulativePipelineTriggerRecords(
        self,
        request: core.metric.v1beta.metric_pb2.GetBulkCumulativePipelineTriggerRecordsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetBulkCumulativePipelineTriggerRecordsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetBulkCumulativePipelineTriggerRecordsResponse]]:
        """Get cumulative pipeline trigger records in bulk"""
    @abc.abstractmethod
    def GetPipelineTriggerSummary(
        self,
        request: core.metric.v1beta.metric_pb2.GetPipelineTriggerSummaryRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetPipelineTriggerSummaryResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetPipelineTriggerSummaryResponse]]:
        """Get pipeline trigger summary"""
    @abc.abstractmethod
    def GetBulkPipelineTriggerSummaries(
        self,
        request: core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerSummariesRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerSummariesResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerSummariesResponse]]:
        """Get pipeline trigger summary in bulk"""
    @abc.abstractmethod
    def GetPipelineTriggerPrice(
        self,
        request: core.metric.v1beta.metric_pb2.GetPipelineTriggerPriceRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetPipelineTriggerPriceResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetPipelineTriggerPriceResponse]]:
        """Services for querying prices

        Get pipeline trigger price
        """
    @abc.abstractmethod
    def GetBulkPipelineTriggerPrice(
        self,
        request: core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerPriceRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerPriceResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetBulkPipelineTriggerPriceResponse]]:
        """Get pipeline trigger price in bulk"""

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

class ModelServiceStub:
    """Services related to model online records
    Service for get model information
    """

    def __init__(self, channel: typing.Union[grpc.Channel, grpc.aio.Channel]) -> None: ...
    GetModels: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetModelsRequest,
        core.metric.v1beta.metric_pb2.GetModelsResponse,
    ]
    """Get Model info"""
    ReportModelOnline: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.ReportModelOnlineRequest,
        core.metric.v1beta.metric_pb2.ReportModelOnlineResponse,
    ]
    """Services for reporting usages

    For model-backend clients to report a model online record
    """
    ReportModelOnlines: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.ReportModelOnlinesRequest,
        core.metric.v1beta.metric_pb2.ReportModelOnlinesResponse,
    ]
    """For model-backend clients to report moel online records"""
    GetModelOnlineRecords: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetModelOnlineRecordsRequest,
        core.metric.v1beta.metric_pb2.GetModelOnlineRecordsResponse,
    ]
    """Services for querying usages

    Get model online records
    """
    GetBulkModelOnlineRecords: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkModelOnlineRecordsRequest,
        core.metric.v1beta.metric_pb2.GetBulkModelOnlineRecordsResponse,
    ]
    """Get model online records in bulk"""
    GetCumulativeModelOnlineRecords: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetCumulativeModelOnlineRecordsRequest,
        core.metric.v1beta.metric_pb2.GetCumulativeModelOnlineRecordsResponse,
    ]
    """Get cumulative model online records"""
    GetBulkCumulativeModelOnlineRecords: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkCumulativeModelOnlineRecordsRequest,
        core.metric.v1beta.metric_pb2.GetBulkCumulativeModelOnlineRecordsResponse,
    ]
    """Get cumulative model online records in bulk"""
    GetModelOnlineSummary: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetModelOnlineSummaryRequest,
        core.metric.v1beta.metric_pb2.GetModelOnlineSummaryResponse,
    ]
    """Get model online summary"""
    GetBulkModelOnlineSummary: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkModelOnlineSummaryRequest,
        core.metric.v1beta.metric_pb2.GetBulkModelOnlineSummaryResponse,
    ]
    """Get model online summary in bulk"""
    GetModelOnlinePrice: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetModelOnlinePriceRequest,
        core.metric.v1beta.metric_pb2.GetModelOnlinePriceResponse,
    ]
    """Services for querying prices

    Get model online price
    """
    GetBulkModelOnlinePrice: grpc.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkModelOnlinePriceRequest,
        core.metric.v1beta.metric_pb2.GetBulkModelOnlinePriceResponse,
    ]
    """Get model online price in bulk"""

class ModelServiceAsyncStub:
    """Services related to model online records
    Service for get model information
    """

    GetModels: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetModelsRequest,
        core.metric.v1beta.metric_pb2.GetModelsResponse,
    ]
    """Get Model info"""
    ReportModelOnline: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.ReportModelOnlineRequest,
        core.metric.v1beta.metric_pb2.ReportModelOnlineResponse,
    ]
    """Services for reporting usages

    For model-backend clients to report a model online record
    """
    ReportModelOnlines: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.ReportModelOnlinesRequest,
        core.metric.v1beta.metric_pb2.ReportModelOnlinesResponse,
    ]
    """For model-backend clients to report moel online records"""
    GetModelOnlineRecords: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetModelOnlineRecordsRequest,
        core.metric.v1beta.metric_pb2.GetModelOnlineRecordsResponse,
    ]
    """Services for querying usages

    Get model online records
    """
    GetBulkModelOnlineRecords: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkModelOnlineRecordsRequest,
        core.metric.v1beta.metric_pb2.GetBulkModelOnlineRecordsResponse,
    ]
    """Get model online records in bulk"""
    GetCumulativeModelOnlineRecords: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetCumulativeModelOnlineRecordsRequest,
        core.metric.v1beta.metric_pb2.GetCumulativeModelOnlineRecordsResponse,
    ]
    """Get cumulative model online records"""
    GetBulkCumulativeModelOnlineRecords: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkCumulativeModelOnlineRecordsRequest,
        core.metric.v1beta.metric_pb2.GetBulkCumulativeModelOnlineRecordsResponse,
    ]
    """Get cumulative model online records in bulk"""
    GetModelOnlineSummary: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetModelOnlineSummaryRequest,
        core.metric.v1beta.metric_pb2.GetModelOnlineSummaryResponse,
    ]
    """Get model online summary"""
    GetBulkModelOnlineSummary: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkModelOnlineSummaryRequest,
        core.metric.v1beta.metric_pb2.GetBulkModelOnlineSummaryResponse,
    ]
    """Get model online summary in bulk"""
    GetModelOnlinePrice: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetModelOnlinePriceRequest,
        core.metric.v1beta.metric_pb2.GetModelOnlinePriceResponse,
    ]
    """Services for querying prices

    Get model online price
    """
    GetBulkModelOnlinePrice: grpc.aio.UnaryUnaryMultiCallable[
        core.metric.v1beta.metric_pb2.GetBulkModelOnlinePriceRequest,
        core.metric.v1beta.metric_pb2.GetBulkModelOnlinePriceResponse,
    ]
    """Get model online price in bulk"""

class ModelServiceServicer(metaclass=abc.ABCMeta):
    """Services related to model online records
    Service for get model information
    """

    @abc.abstractmethod
    def GetModels(
        self,
        request: core.metric.v1beta.metric_pb2.GetModelsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetModelsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetModelsResponse]]:
        """Get Model info"""
    @abc.abstractmethod
    def ReportModelOnline(
        self,
        request: core.metric.v1beta.metric_pb2.ReportModelOnlineRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.ReportModelOnlineResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.ReportModelOnlineResponse]]:
        """Services for reporting usages

        For model-backend clients to report a model online record
        """
    @abc.abstractmethod
    def ReportModelOnlines(
        self,
        request: core.metric.v1beta.metric_pb2.ReportModelOnlinesRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.ReportModelOnlinesResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.ReportModelOnlinesResponse]]:
        """For model-backend clients to report moel online records"""
    @abc.abstractmethod
    def GetModelOnlineRecords(
        self,
        request: core.metric.v1beta.metric_pb2.GetModelOnlineRecordsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetModelOnlineRecordsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetModelOnlineRecordsResponse]]:
        """Services for querying usages

        Get model online records
        """
    @abc.abstractmethod
    def GetBulkModelOnlineRecords(
        self,
        request: core.metric.v1beta.metric_pb2.GetBulkModelOnlineRecordsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetBulkModelOnlineRecordsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetBulkModelOnlineRecordsResponse]]:
        """Get model online records in bulk"""
    @abc.abstractmethod
    def GetCumulativeModelOnlineRecords(
        self,
        request: core.metric.v1beta.metric_pb2.GetCumulativeModelOnlineRecordsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetCumulativeModelOnlineRecordsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetCumulativeModelOnlineRecordsResponse]]:
        """Get cumulative model online records"""
    @abc.abstractmethod
    def GetBulkCumulativeModelOnlineRecords(
        self,
        request: core.metric.v1beta.metric_pb2.GetBulkCumulativeModelOnlineRecordsRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetBulkCumulativeModelOnlineRecordsResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetBulkCumulativeModelOnlineRecordsResponse]]:
        """Get cumulative model online records in bulk"""
    @abc.abstractmethod
    def GetModelOnlineSummary(
        self,
        request: core.metric.v1beta.metric_pb2.GetModelOnlineSummaryRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetModelOnlineSummaryResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetModelOnlineSummaryResponse]]:
        """Get model online summary"""
    @abc.abstractmethod
    def GetBulkModelOnlineSummary(
        self,
        request: core.metric.v1beta.metric_pb2.GetBulkModelOnlineSummaryRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetBulkModelOnlineSummaryResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetBulkModelOnlineSummaryResponse]]:
        """Get model online summary in bulk"""
    @abc.abstractmethod
    def GetModelOnlinePrice(
        self,
        request: core.metric.v1beta.metric_pb2.GetModelOnlinePriceRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetModelOnlinePriceResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetModelOnlinePriceResponse]]:
        """Services for querying prices

        Get model online price
        """
    @abc.abstractmethod
    def GetBulkModelOnlinePrice(
        self,
        request: core.metric.v1beta.metric_pb2.GetBulkModelOnlinePriceRequest,
        context: _ServicerContext,
    ) -> typing.Union[core.metric.v1beta.metric_pb2.GetBulkModelOnlinePriceResponse, collections.abc.Awaitable[core.metric.v1beta.metric_pb2.GetBulkModelOnlinePriceResponse]]:
        """Get model online price in bulk"""

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