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

class QueryStub:
    def __init__(self, channel: grpc.Channel) -> None: ...
    GaugeIds: grpc.UnaryUnaryMultiCallable[
        osmosis.pool_incentives.v1beta1.query_pb2.QueryGaugeIdsRequest,
        osmosis.pool_incentives.v1beta1.query_pb2.QueryGaugeIdsResponse,
    ]
    """GaugeIds takes the pool id and returns the matching gauge ids and durations"""
    DistrInfo: grpc.UnaryUnaryMultiCallable[
        osmosis.pool_incentives.v1beta1.query_pb2.QueryDistrInfoRequest,
        osmosis.pool_incentives.v1beta1.query_pb2.QueryDistrInfoResponse,
    ]
    """DistrInfo returns the pool's matching gauge ids and weights."""
    Params: grpc.UnaryUnaryMultiCallable[
        osmosis.pool_incentives.v1beta1.query_pb2.QueryParamsRequest,
        osmosis.pool_incentives.v1beta1.query_pb2.QueryParamsResponse,
    ]
    """Params returns pool incentives params."""
    LockableDurations: grpc.UnaryUnaryMultiCallable[
        osmosis.pool_incentives.v1beta1.query_pb2.QueryLockableDurationsRequest,
        osmosis.pool_incentives.v1beta1.query_pb2.QueryLockableDurationsResponse,
    ]
    """LockableDurations returns lock durations for pools."""
    IncentivizedPools: grpc.UnaryUnaryMultiCallable[
        osmosis.pool_incentives.v1beta1.query_pb2.QueryIncentivizedPoolsRequest,
        osmosis.pool_incentives.v1beta1.query_pb2.QueryIncentivizedPoolsResponse,
    ]
    """IncentivizedPools returns currently incentivized pools"""
    ExternalIncentiveGauges: grpc.UnaryUnaryMultiCallable[
        osmosis.pool_incentives.v1beta1.query_pb2.QueryExternalIncentiveGaugesRequest,
        osmosis.pool_incentives.v1beta1.query_pb2.QueryExternalIncentiveGaugesResponse,
    ]
    """ExternalIncentiveGauges returns external incentive gauges."""

class QueryServicer(metaclass=abc.ABCMeta):
    @abc.abstractmethod
    def GaugeIds(
        self,
        request: osmosis.pool_incentives.v1beta1.query_pb2.QueryGaugeIdsRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.pool_incentives.v1beta1.query_pb2.QueryGaugeIdsResponse:
        """GaugeIds takes the pool id and returns the matching gauge ids and durations"""
    @abc.abstractmethod
    def DistrInfo(
        self,
        request: osmosis.pool_incentives.v1beta1.query_pb2.QueryDistrInfoRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.pool_incentives.v1beta1.query_pb2.QueryDistrInfoResponse:
        """DistrInfo returns the pool's matching gauge ids and weights."""
    @abc.abstractmethod
    def Params(
        self,
        request: osmosis.pool_incentives.v1beta1.query_pb2.QueryParamsRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.pool_incentives.v1beta1.query_pb2.QueryParamsResponse:
        """Params returns pool incentives params."""
    @abc.abstractmethod
    def LockableDurations(
        self,
        request: osmosis.pool_incentives.v1beta1.query_pb2.QueryLockableDurationsRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.pool_incentives.v1beta1.query_pb2.QueryLockableDurationsResponse:
        """LockableDurations returns lock durations for pools."""
    @abc.abstractmethod
    def IncentivizedPools(
        self,
        request: osmosis.pool_incentives.v1beta1.query_pb2.QueryIncentivizedPoolsRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.pool_incentives.v1beta1.query_pb2.QueryIncentivizedPoolsResponse:
        """IncentivizedPools returns currently incentivized pools"""
    @abc.abstractmethod
    def ExternalIncentiveGauges(
        self,
        request: osmosis.pool_incentives.v1beta1.query_pb2.QueryExternalIncentiveGaugesRequest,
        context: grpc.ServicerContext,
    ) -> osmosis.pool_incentives.v1beta1.query_pb2.QueryExternalIncentiveGaugesResponse:
        """ExternalIncentiveGauges returns external incentive gauges."""

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