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

class MsgStub:
    """Msg defines the Msg service."""

    def __init__(self, channel: grpc.Channel) -> None: ...
    SuperfluidDelegate: grpc.UnaryUnaryMultiCallable[
        osmosis.superfluid.tx_pb2.MsgSuperfluidDelegate,
        osmosis.superfluid.tx_pb2.MsgSuperfluidDelegateResponse,
    ]
    """Execute superfluid delegation for a lockup"""
    SuperfluidUndelegate: grpc.UnaryUnaryMultiCallable[
        osmosis.superfluid.tx_pb2.MsgSuperfluidUndelegate,
        osmosis.superfluid.tx_pb2.MsgSuperfluidUndelegateResponse,
    ]
    """Execute superfluid undelegation for a lockup"""
    SuperfluidUnbondLock: grpc.UnaryUnaryMultiCallable[
        osmosis.superfluid.tx_pb2.MsgSuperfluidUnbondLock,
        osmosis.superfluid.tx_pb2.MsgSuperfluidUnbondLockResponse,
    ]
    """Execute superfluid redelegation for a lockup
    rpc SuperfluidRedelegate(MsgSuperfluidRedelegate) returns
    (MsgSuperfluidRedelegateResponse);

    For a given lock that is being superfluidly undelegated,
    also unbond the underlying lock.
    """
    LockAndSuperfluidDelegate: grpc.UnaryUnaryMultiCallable[
        osmosis.superfluid.tx_pb2.MsgLockAndSuperfluidDelegate,
        osmosis.superfluid.tx_pb2.MsgLockAndSuperfluidDelegateResponse,
    ]
    """Execute lockup lock and superfluid delegation in a single msg"""
    UnPoolWhitelistedPool: grpc.UnaryUnaryMultiCallable[
        osmosis.superfluid.tx_pb2.MsgUnPoolWhitelistedPool,
        osmosis.superfluid.tx_pb2.MsgUnPoolWhitelistedPoolResponse,
    ]

class MsgServicer(metaclass=abc.ABCMeta):
    """Msg defines the Msg service."""

    @abc.abstractmethod
    def SuperfluidDelegate(
        self,
        request: osmosis.superfluid.tx_pb2.MsgSuperfluidDelegate,
        context: grpc.ServicerContext,
    ) -> osmosis.superfluid.tx_pb2.MsgSuperfluidDelegateResponse:
        """Execute superfluid delegation for a lockup"""
    @abc.abstractmethod
    def SuperfluidUndelegate(
        self,
        request: osmosis.superfluid.tx_pb2.MsgSuperfluidUndelegate,
        context: grpc.ServicerContext,
    ) -> osmosis.superfluid.tx_pb2.MsgSuperfluidUndelegateResponse:
        """Execute superfluid undelegation for a lockup"""
    @abc.abstractmethod
    def SuperfluidUnbondLock(
        self,
        request: osmosis.superfluid.tx_pb2.MsgSuperfluidUnbondLock,
        context: grpc.ServicerContext,
    ) -> osmosis.superfluid.tx_pb2.MsgSuperfluidUnbondLockResponse:
        """Execute superfluid redelegation for a lockup
        rpc SuperfluidRedelegate(MsgSuperfluidRedelegate) returns
        (MsgSuperfluidRedelegateResponse);

        For a given lock that is being superfluidly undelegated,
        also unbond the underlying lock.
        """
    @abc.abstractmethod
    def LockAndSuperfluidDelegate(
        self,
        request: osmosis.superfluid.tx_pb2.MsgLockAndSuperfluidDelegate,
        context: grpc.ServicerContext,
    ) -> osmosis.superfluid.tx_pb2.MsgLockAndSuperfluidDelegateResponse:
        """Execute lockup lock and superfluid delegation in a single msg"""
    @abc.abstractmethod
    def UnPoolWhitelistedPool(
        self,
        request: osmosis.superfluid.tx_pb2.MsgUnPoolWhitelistedPool,
        context: grpc.ServicerContext,
    ) -> osmosis.superfluid.tx_pb2.MsgUnPoolWhitelistedPoolResponse: ...

def add_MsgServicer_to_server(servicer: MsgServicer, server: grpc.Server) -> None: ...
