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

class MsgStub:
    """Msg defines the x/stablecoin Msg service."""
    def __init__(self, channel: grpc.Channel) -> None: ...
    MintStable: grpc.UnaryUnaryMultiCallable[
        stablecoin.tx_pb2.MsgMintStable,
        stablecoin.tx_pb2.MsgMintStableResponse]
    """MintStable defines a method for trading a mixture of GOV and COLL to mint an 
    equivalent value of stablecoins.
    """

    BurnStable: grpc.UnaryUnaryMultiCallable[
        stablecoin.tx_pb2.MsgBurnStable,
        stablecoin.tx_pb2.MsgBurnStableResponse]
    """BurnStable defines a method for redeeming/burning stablecoins to receive an 
    equivalent value as a mixture of governance and collateral tokens.
    """

    Recollateralize: grpc.UnaryUnaryMultiCallable[
        stablecoin.tx_pb2.MsgRecollateralize,
        stablecoin.tx_pb2.MsgRecollateralizeResponse]
    """Recollateralize defines a method for manually adding collateral to the 
    protocol in exchange for an equivalent stablecoin value in governance tokens 
    plus a small bonus.
    """

    Buyback: grpc.UnaryUnaryMultiCallable[
        stablecoin.tx_pb2.MsgBuyback,
        stablecoin.tx_pb2.MsgBuybackResponse]
    """Buyback defines a method for manually adding NIBI to the protocol 
    in exchange for an equivalent stablecoin value in collateral, effectively 
    executing a share buyback for Nibiru Chain. The NIBI purchased by the protocol 
    is then burned, distributing value to all NIBI hodlers.
    """


class MsgServicer(metaclass=abc.ABCMeta):
    """Msg defines the x/stablecoin Msg service."""
    @abc.abstractmethod
    def MintStable(self,
        request: stablecoin.tx_pb2.MsgMintStable,
        context: grpc.ServicerContext,
    ) -> stablecoin.tx_pb2.MsgMintStableResponse:
        """MintStable defines a method for trading a mixture of GOV and COLL to mint an 
        equivalent value of stablecoins.
        """
        pass

    @abc.abstractmethod
    def BurnStable(self,
        request: stablecoin.tx_pb2.MsgBurnStable,
        context: grpc.ServicerContext,
    ) -> stablecoin.tx_pb2.MsgBurnStableResponse:
        """BurnStable defines a method for redeeming/burning stablecoins to receive an 
        equivalent value as a mixture of governance and collateral tokens.
        """
        pass

    @abc.abstractmethod
    def Recollateralize(self,
        request: stablecoin.tx_pb2.MsgRecollateralize,
        context: grpc.ServicerContext,
    ) -> stablecoin.tx_pb2.MsgRecollateralizeResponse:
        """Recollateralize defines a method for manually adding collateral to the 
        protocol in exchange for an equivalent stablecoin value in governance tokens 
        plus a small bonus.
        """
        pass

    @abc.abstractmethod
    def Buyback(self,
        request: stablecoin.tx_pb2.MsgBuyback,
        context: grpc.ServicerContext,
    ) -> stablecoin.tx_pb2.MsgBuybackResponse:
        """Buyback defines a method for manually adding NIBI to the protocol 
        in exchange for an equivalent stablecoin value in collateral, effectively 
        executing a share buyback for Nibiru Chain. The NIBI purchased by the protocol 
        is then burned, distributing value to all NIBI hodlers.
        """
        pass


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