"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import abc
import grpc
import osmosis.incentives.query_pb2

class QueryStub:
    """Query defines the gRPC querier service"""

    def __init__(self, channel: grpc.Channel) -> None: ...
    ModuleToDistributeCoins: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.ModuleToDistributeCoinsRequest,
        osmosis.incentives.query_pb2.ModuleToDistributeCoinsResponse,
    ]
    """ModuleToDistributeCoins returns coins that are going to be distributed"""
    GaugeByID: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.GaugeByIDRequest,
        osmosis.incentives.query_pb2.GaugeByIDResponse,
    ]
    """GaugeByID returns gauges by their respective ID"""
    Gauges: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.GaugesRequest,
        osmosis.incentives.query_pb2.GaugesResponse,
    ]
    """Gauges returns both upcoming and active gauges"""
    ActiveGauges: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.ActiveGaugesRequest,
        osmosis.incentives.query_pb2.ActiveGaugesResponse,
    ]
    """ActiveGauges returns active gauges"""
    ActiveGaugesPerDenom: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.ActiveGaugesPerDenomRequest,
        osmosis.incentives.query_pb2.ActiveGaugesPerDenomResponse,
    ]
    """ActiveGaugesPerDenom returns active gauges by denom"""
    UpcomingGauges: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.UpcomingGaugesRequest,
        osmosis.incentives.query_pb2.UpcomingGaugesResponse,
    ]
    """Returns scheduled gauges that have not yet occured"""
    UpcomingGaugesPerDenom: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.UpcomingGaugesPerDenomRequest,
        osmosis.incentives.query_pb2.UpcomingGaugesPerDenomResponse,
    ]
    """UpcomingGaugesPerDenom returns scheduled gauges that have not yet occured
    by denom
    """
    RewardsEst: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.RewardsEstRequest,
        osmosis.incentives.query_pb2.RewardsEstResponse,
    ]
    """RewardsEst returns an estimate of the rewards from now until a specified
    time in the future The querier either provides an address or a set of locks
    for which they want to find the associated rewards
    """
    LockableDurations: grpc.UnaryUnaryMultiCallable[
        osmosis.incentives.query_pb2.QueryLockableDurationsRequest,
        osmosis.incentives.query_pb2.QueryLockableDurationsResponse,
    ]
    """LockableDurations returns lockable durations that are valid to distribute
    incentives for
    """

class QueryServicer(metaclass=abc.ABCMeta):
    """Query defines the gRPC querier service"""

    @abc.abstractmethod
    def ModuleToDistributeCoins(
        self,
        request: osmosis.incentives.query_pb2.ModuleToDistributeCoinsRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.ModuleToDistributeCoinsResponse:
        """ModuleToDistributeCoins returns coins that are going to be distributed"""
    @abc.abstractmethod
    def GaugeByID(
        self,
        request: osmosis.incentives.query_pb2.GaugeByIDRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.GaugeByIDResponse:
        """GaugeByID returns gauges by their respective ID"""
    @abc.abstractmethod
    def Gauges(
        self,
        request: osmosis.incentives.query_pb2.GaugesRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.GaugesResponse:
        """Gauges returns both upcoming and active gauges"""
    @abc.abstractmethod
    def ActiveGauges(
        self,
        request: osmosis.incentives.query_pb2.ActiveGaugesRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.ActiveGaugesResponse:
        """ActiveGauges returns active gauges"""
    @abc.abstractmethod
    def ActiveGaugesPerDenom(
        self,
        request: osmosis.incentives.query_pb2.ActiveGaugesPerDenomRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.ActiveGaugesPerDenomResponse:
        """ActiveGaugesPerDenom returns active gauges by denom"""
    @abc.abstractmethod
    def UpcomingGauges(
        self,
        request: osmosis.incentives.query_pb2.UpcomingGaugesRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.UpcomingGaugesResponse:
        """Returns scheduled gauges that have not yet occured"""
    @abc.abstractmethod
    def UpcomingGaugesPerDenom(
        self,
        request: osmosis.incentives.query_pb2.UpcomingGaugesPerDenomRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.UpcomingGaugesPerDenomResponse:
        """UpcomingGaugesPerDenom returns scheduled gauges that have not yet occured
        by denom
        """
    @abc.abstractmethod
    def RewardsEst(
        self,
        request: osmosis.incentives.query_pb2.RewardsEstRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.RewardsEstResponse:
        """RewardsEst returns an estimate of the rewards from now until a specified
        time in the future The querier either provides an address or a set of locks
        for which they want to find the associated rewards
        """
    @abc.abstractmethod
    def LockableDurations(
        self,
        request: osmosis.incentives.query_pb2.QueryLockableDurationsRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.incentives.query_pb2.QueryLockableDurationsResponse:
        """LockableDurations returns lockable durations that are valid to distribute
        incentives for
        """

def add_QueryServicer_to_server(servicer: QueryServicer, server: grpc.Server) -> None: ...
