github.com/KiraCore/sekai@v0.3.43/x/basket/keeper/msg_server.go (about)

     1  package keeper
     2  
     3  import (
     4  	"context"
     5  
     6  	"github.com/KiraCore/sekai/x/basket/types"
     7  	govtypes "github.com/KiraCore/sekai/x/gov/types"
     8  	sdk "github.com/cosmos/cosmos-sdk/types"
     9  	sdkerrors "github.com/cosmos/cosmos-sdk/types/errors"
    10  )
    11  
    12  type msgServer struct {
    13  	keeper Keeper
    14  	cgk    types.CustomGovKeeper
    15  }
    16  
    17  // NewMsgServerImpl returns an implementation of the bank MsgServer interface
    18  // for the provided Keeper.
    19  func NewMsgServerImpl(keeper Keeper, cgk types.CustomGovKeeper) types.MsgServer {
    20  	return &msgServer{
    21  		keeper: keeper,
    22  		cgk:    cgk,
    23  	}
    24  }
    25  
    26  var _ types.MsgServer = msgServer{}
    27  
    28  func (k msgServer) DisableBasketDeposits(
    29  	goCtx context.Context,
    30  	msg *types.MsgDisableBasketDeposits,
    31  ) (*types.MsgDisableBasketDepositsResponse, error) {
    32  	ctx := sdk.UnwrapSDKContext(goCtx)
    33  	basket, err := k.keeper.GetBasketById(ctx, msg.BasketId)
    34  	if err != nil {
    35  		return nil, err
    36  	}
    37  
    38  	sender, err := sdk.AccAddressFromBech32(msg.Sender)
    39  	isAllowed := k.keeper.CheckIfAllowedPermission(ctx, sender, govtypes.PermHandleBasketEmergency)
    40  	if !isAllowed {
    41  		return nil, sdkerrors.Wrap(govtypes.ErrNotEnoughPermissions, "PermHandleBasketEmergency")
    42  	}
    43  
    44  	basket.MintsDisabled = true
    45  	k.keeper.SetBasket(ctx, basket)
    46  	return &types.MsgDisableBasketDepositsResponse{}, nil
    47  }
    48  
    49  func (k msgServer) DisableBasketWithdraws(
    50  	goCtx context.Context,
    51  	msg *types.MsgDisableBasketWithdraws,
    52  ) (*types.MsgDisableBasketWithdrawsResponse, error) {
    53  	ctx := sdk.UnwrapSDKContext(goCtx)
    54  	basket, err := k.keeper.GetBasketById(ctx, msg.BasketId)
    55  	if err != nil {
    56  		return nil, err
    57  	}
    58  
    59  	sender, err := sdk.AccAddressFromBech32(msg.Sender)
    60  	isAllowed := k.keeper.CheckIfAllowedPermission(ctx, sender, govtypes.PermHandleBasketEmergency)
    61  	if !isAllowed {
    62  		return nil, sdkerrors.Wrap(govtypes.ErrNotEnoughPermissions, "PermHandleBasketEmergency")
    63  	}
    64  
    65  	basket.BurnsDisabled = true
    66  	k.keeper.SetBasket(ctx, basket)
    67  	return &types.MsgDisableBasketWithdrawsResponse{}, nil
    68  }
    69  
    70  func (k msgServer) DisableBasketSwaps(
    71  	goCtx context.Context,
    72  	msg *types.MsgDisableBasketSwaps,
    73  ) (*types.MsgDisableBasketSwapsResponse, error) {
    74  	ctx := sdk.UnwrapSDKContext(goCtx)
    75  	basket, err := k.keeper.GetBasketById(ctx, msg.BasketId)
    76  	if err != nil {
    77  		return nil, err
    78  	}
    79  
    80  	sender, err := sdk.AccAddressFromBech32(msg.Sender)
    81  	isAllowed := k.keeper.CheckIfAllowedPermission(ctx, sender, govtypes.PermHandleBasketEmergency)
    82  	if !isAllowed {
    83  		return nil, sdkerrors.Wrap(govtypes.ErrNotEnoughPermissions, "PermHandleBasketEmergency")
    84  	}
    85  
    86  	basket.SwapsDisabled = true
    87  	k.keeper.SetBasket(ctx, basket)
    88  	return &types.MsgDisableBasketSwapsResponse{}, nil
    89  }
    90  
    91  func (k msgServer) BasketTokenMint(
    92  	goCtx context.Context,
    93  	msg *types.MsgBasketTokenMint,
    94  ) (*types.MsgBasketTokenMintResponse, error) {
    95  	ctx := sdk.UnwrapSDKContext(goCtx)
    96  	err := k.keeper.MintBasketToken(ctx, msg)
    97  	if err != nil {
    98  		return nil, err
    99  	}
   100  	return &types.MsgBasketTokenMintResponse{}, nil
   101  }
   102  
   103  func (k msgServer) BasketTokenBurn(
   104  	goCtx context.Context,
   105  	msg *types.MsgBasketTokenBurn,
   106  ) (*types.MsgBasketTokenBurnResponse, error) {
   107  	ctx := sdk.UnwrapSDKContext(goCtx)
   108  	err := k.keeper.BurnBasketToken(ctx, msg)
   109  	if err != nil {
   110  		return nil, err
   111  	}
   112  	return &types.MsgBasketTokenBurnResponse{}, nil
   113  }
   114  
   115  func (k msgServer) BasketTokenSwap(
   116  	goCtx context.Context,
   117  	msg *types.MsgBasketTokenSwap,
   118  ) (*types.MsgBasketTokenSwapResponse, error) {
   119  	ctx := sdk.UnwrapSDKContext(goCtx)
   120  	err := k.keeper.BasketSwap(ctx, msg)
   121  	if err != nil {
   122  		return nil, err
   123  	}
   124  	return &types.MsgBasketTokenSwapResponse{}, nil
   125  }
   126  
   127  func (k msgServer) BasketClaimRewards(
   128  	goCtx context.Context,
   129  	msg *types.MsgBasketClaimRewards,
   130  ) (*types.MsgBasketClaimRewardsResponse, error) {
   131  	ctx := sdk.UnwrapSDKContext(goCtx)
   132  
   133  	k.keeper.RegisterBasketModuleAsDelegator(ctx)
   134  	return &types.MsgBasketClaimRewardsResponse{}, nil
   135  }