MCPcopy Create free account
hub / github.com/Sifchain/sifnode / AdminClose

Method AdminClose

x/margin/keeper/admin_msg_server.go:14–58  ·  view source on GitHub ↗
(goCtx context.Context, msg *types.MsgAdminClose)

Source from the content-addressed store, hash-verified

12)
13
14func (k msgServer) AdminClose(goCtx context.Context, msg *types.MsgAdminClose) (*types.MsgAdminCloseResponse, error) {
15 ctx := sdk.UnwrapSDKContext(goCtx)
16
17 signer, err := sdk.AccAddressFromBech32(msg.Signer)
18 if err != nil {
19 return nil, err
20 }
21 if !k.AdminKeeper().IsAdminAccount(ctx, admintypes.AdminType_MARGIN, signer) {
22 return nil, sdkerrors.Wrap(admintypes.ErrPermissionDenied, fmt.Sprintf("signer not authorised: %s", msg.Signer))
23 }
24
25 mtpToClose, err := k.GetMTP(ctx, msg.MtpAddress, msg.Id)
26 if err != nil {
27 return nil, err
28 }
29
30 var repayAmount sdk.Uint
31 switch mtpToClose.Position {
32 case types.Position_LONG:
33 var pool clptypes.Pool
34
35 nativeAsset := types.GetSettlementAsset()
36 if types.StringCompare(mtpToClose.CollateralAsset, nativeAsset) {
37 pool, err = k.ClpKeeper().GetPool(ctx, mtpToClose.CustodyAsset)
38 if err != nil {
39 return nil, sdkerrors.Wrap(clptypes.ErrPoolDoesNotExist, mtpToClose.CustodyAsset)
40 }
41 } else {
42 pool, err = k.ClpKeeper().GetPool(ctx, mtpToClose.CollateralAsset)
43 if err != nil {
44 return nil, sdkerrors.Wrap(clptypes.ErrPoolDoesNotExist, mtpToClose.CollateralAsset)
45 }
46 }
47 repayAmount, err = k.ForceCloseLong(ctx, &mtpToClose, &pool, true, msg.TakeMarginFund)
48 if err != nil {
49 return nil, err
50 }
51 default:
52 return nil, sdkerrors.Wrap(types.ErrInvalidPosition, mtpToClose.Position.String())
53 }
54
55 k.EmitAdminClose(ctx, &mtpToClose, repayAmount, msg.Signer)
56
57 return &types.MsgAdminCloseResponse{}, nil
58}
59
60func (k msgServer) AdminCloseAll(goCtx context.Context, msg *types.MsgAdminCloseAll) (*types.MsgAdminCloseAllResponse, error) {
61 ctx := sdk.UnwrapSDKContext(goCtx)

Callers

nothing calls this directly

Calls 8

IsAdminAccountMethod · 0.65
AdminKeeperMethod · 0.65
GetMTPMethod · 0.65
GetPoolMethod · 0.65
ClpKeeperMethod · 0.65
ForceCloseLongMethod · 0.65
EmitAdminCloseMethod · 0.65
StringMethod · 0.45

Tested by

no test coverage detected