github.com/InjectiveLabs/sdk-go@v1.53.0/chain/exchange/types/codec.go (about)

     1  package types
     2  
     3  import (
     4  	"github.com/cosmos/cosmos-sdk/codec"
     5  	"github.com/cosmos/cosmos-sdk/codec/types"
     6  	cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec"
     7  	sdk "github.com/cosmos/cosmos-sdk/types"
     8  	"github.com/cosmos/cosmos-sdk/types/msgservice"
     9  	"github.com/cosmos/cosmos-sdk/x/authz"
    10  	authzcdc "github.com/cosmos/cosmos-sdk/x/authz/codec"
    11  	govtypes "github.com/cosmos/cosmos-sdk/x/gov/types/v1beta1"
    12  	"github.com/cosmos/gogoproto/proto"
    13  )
    14  
    15  // RegisterLegacyAminoCodec registers the necessary x/exchange interfaces and concrete types
    16  // on the provided LegacyAmino codec. These types are used for Amino JSON serialization.
    17  func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
    18  	cdc.RegisterConcrete(&MsgDeposit{}, "exchange/MsgDeposit", nil)
    19  	cdc.RegisterConcrete(&MsgWithdraw{}, "exchange/MsgWithdraw", nil)
    20  	cdc.RegisterConcrete(&MsgInstantSpotMarketLaunch{}, "exchange/MsgInstantSpotMarketLaunch", nil)
    21  	cdc.RegisterConcrete(&MsgInstantPerpetualMarketLaunch{}, "exchange/MsgInstantPerpetualMarketLaunch", nil)
    22  	cdc.RegisterConcrete(&MsgInstantExpiryFuturesMarketLaunch{}, "exchange/MsgInstantExpiryFuturesMarketLaunch", nil)
    23  	cdc.RegisterConcrete(&MsgCreateSpotLimitOrder{}, "exchange/MsgCreateSpotLimitOrder", nil)
    24  	cdc.RegisterConcrete(&MsgBatchCreateSpotLimitOrders{}, "exchange/MsgBatchCreateSpotLimitOrders", nil)
    25  	cdc.RegisterConcrete(&MsgCreateSpotMarketOrder{}, "exchange/MsgCreateSpotMarketOrder", nil)
    26  	cdc.RegisterConcrete(&MsgCancelSpotOrder{}, "exchange/MsgCancelSpotOrder", nil)
    27  	cdc.RegisterConcrete(&MsgBatchCancelSpotOrders{}, "exchange/MsgBatchCancelSpotOrders", nil)
    28  	cdc.RegisterConcrete(&MsgCreateDerivativeLimitOrder{}, "exchange/MsgCreateDerivativeLimitOrder", nil)
    29  	cdc.RegisterConcrete(&MsgBatchCreateDerivativeLimitOrders{}, "exchange/MsgBatchCreateDerivativeLimitOrders", nil)
    30  	cdc.RegisterConcrete(&MsgCreateDerivativeMarketOrder{}, "exchange/MsgCreateDerivativeMarketOrder", nil)
    31  	cdc.RegisterConcrete(&MsgCancelDerivativeOrder{}, "exchange/MsgCancelDerivativeOrder", nil)
    32  	cdc.RegisterConcrete(&MsgBatchCancelDerivativeOrders{}, "exchange/MsgBatchCancelDerivativeOrders", nil)
    33  	cdc.RegisterConcrete(&MsgBatchCancelBinaryOptionsOrders{}, "exchange/MsgBatchCancelBinaryOptionsOrders", nil)
    34  	cdc.RegisterConcrete(&MsgSubaccountTransfer{}, "exchange/MsgSubaccountTransfer", nil)
    35  	cdc.RegisterConcrete(&MsgExternalTransfer{}, "exchange/MsgExternalTransfer", nil)
    36  	cdc.RegisterConcrete(&MsgIncreasePositionMargin{}, "exchange/MsgIncreasePositionMargin", nil)
    37  	cdc.RegisterConcrete(&MsgLiquidatePosition{}, "exchange/MsgLiquidatePosition", nil)
    38  	cdc.RegisterConcrete(&MsgBatchUpdateOrders{}, "exchange/MsgBatchUpdateOrders", nil)
    39  	cdc.RegisterConcrete(&MsgPrivilegedExecuteContract{}, "exchange/MsgPrivilegedExecuteContract", nil)
    40  	cdc.RegisterConcrete(&MsgRewardsOptOut{}, "exchange/MsgRewardsOptOut", nil)
    41  	cdc.RegisterConcrete(&MsgInstantBinaryOptionsMarketLaunch{}, "exchange/MsgInstantBinaryOptionsMarketLaunch", nil)
    42  	cdc.RegisterConcrete(&MsgCreateBinaryOptionsLimitOrder{}, "exchange/MsgCreateBinaryOptionsLimitOrder", nil)
    43  	cdc.RegisterConcrete(&MsgCreateBinaryOptionsMarketOrder{}, "exchange/MsgCreateBinaryOptionsMarketOrder", nil)
    44  	cdc.RegisterConcrete(&MsgCancelBinaryOptionsOrder{}, "exchange/MsgCancelBinaryOptionsOrder", nil)
    45  	cdc.RegisterConcrete(&MsgAdminUpdateBinaryOptionsMarket{}, "exchange/MsgAdminUpdateBinaryOptionsMarket", nil)
    46  	cdc.RegisterConcrete(&MsgUpdateParams{}, "exchange/MsgUpdateParams", nil)
    47  	cdc.RegisterConcrete(&MsgUpdateSpotMarket{}, "exchange/MsgUpdateSpotMarket", nil)
    48  	cdc.RegisterConcrete(&MsgUpdateDerivativeMarket{}, "exchange/MsgUpdateDerivativeMarket", nil)
    49  
    50  	cdc.RegisterConcrete(&ExchangeEnableProposal{}, "exchange/ExchangeEnableProposal", nil)
    51  	cdc.RegisterConcrete(&BatchExchangeModificationProposal{}, "exchange/BatchExchangeModificationProposal", nil)
    52  	cdc.RegisterConcrete(&SpotMarketParamUpdateProposal{}, "exchange/SpotMarketParamUpdateProposal", nil)
    53  	cdc.RegisterConcrete(&SpotMarketLaunchProposal{}, "exchange/SpotMarketLaunchProposal", nil)
    54  	cdc.RegisterConcrete(&PerpetualMarketLaunchProposal{}, "exchange/PerpetualMarketLaunchProposal", nil)
    55  	cdc.RegisterConcrete(&ExpiryFuturesMarketLaunchProposal{}, "exchange/ExpiryFuturesMarketLaunchProposal", nil)
    56  	cdc.RegisterConcrete(&DerivativeMarketParamUpdateProposal{}, "exchange/DerivativeMarketParamUpdateProposal", nil)
    57  	cdc.RegisterConcrete(&MarketForcedSettlementProposal{}, "exchange/MarketForcedSettlementProposal", nil)
    58  	cdc.RegisterConcrete(&UpdateDenomDecimalsProposal{}, "exchange/UpdateDenomDecimalsProposal", nil)
    59  	cdc.RegisterConcrete(&TradingRewardCampaignLaunchProposal{}, "exchange/TradingRewardCampaignLaunchProposal", nil)
    60  	cdc.RegisterConcrete(&TradingRewardCampaignUpdateProposal{}, "exchange/TradingRewardCampaignUpdateProposal", nil)
    61  	cdc.RegisterConcrete(&TradingRewardPendingPointsUpdateProposal{}, "exchange/TradingRewardPendingPointsUpdateProposal", nil)
    62  	cdc.RegisterConcrete(&FeeDiscountProposal{}, "exchange/FeeDiscountProposal", nil)
    63  	cdc.RegisterConcrete(&BatchCommunityPoolSpendProposal{}, "exchange/BatchCommunityPoolSpendProposal", nil)
    64  	cdc.RegisterConcrete(&BinaryOptionsMarketParamUpdateProposal{}, "exchange/BinaryOptionsMarketParamUpdateProposal", nil)
    65  	cdc.RegisterConcrete(&BinaryOptionsMarketLaunchProposal{}, "exchange/BinaryOptionsMarketLaunchProposal", nil)
    66  	cdc.RegisterConcrete(&AtomicMarketOrderFeeMultiplierScheduleProposal{}, "exchange/AtomicMarketOrderFeeMultiplierScheduleProposal", nil)
    67  
    68  	cdc.RegisterConcrete(&CreateSpotLimitOrderAuthz{}, "exchange/CreateSpotLimitOrderAuthz", nil)
    69  	cdc.RegisterConcrete(&CreateSpotMarketOrderAuthz{}, "exchange/CreateSpotMarketOrderAuthz", nil)
    70  	cdc.RegisterConcrete(&BatchCreateSpotLimitOrdersAuthz{}, "exchange/BatchCreateSpotLimitOrdersAuthz", nil)
    71  	cdc.RegisterConcrete(&CancelSpotOrderAuthz{}, "exchange/CancelSpotOrderAuthz", nil)
    72  	cdc.RegisterConcrete(&BatchCancelSpotOrdersAuthz{}, "exchange/BatchCancelSpotOrdersAuthz", nil)
    73  	cdc.RegisterConcrete(&CreateDerivativeLimitOrderAuthz{}, "exchange/CreateDerivativeLimitOrderAuthz", nil)
    74  	cdc.RegisterConcrete(&CreateDerivativeMarketOrderAuthz{}, "exchange/CreateDerivativeMarketOrderAuthz", nil)
    75  	cdc.RegisterConcrete(&BatchCreateDerivativeLimitOrdersAuthz{}, "exchange/BatchCreateDerivativeLimitOrdersAuthz", nil)
    76  	cdc.RegisterConcrete(&CancelDerivativeOrderAuthz{}, "exchange/CancelDerivativeOrderAuthz", nil)
    77  	cdc.RegisterConcrete(&BatchCancelDerivativeOrdersAuthz{}, "exchange/BatchCancelDerivativeOrdersAuthz", nil)
    78  	cdc.RegisterConcrete(&BatchUpdateOrdersAuthz{}, "exchange/BatchUpdateOrdersAuthz", nil)
    79  
    80  	cdc.RegisterConcrete(&Params{}, "exchange/Params", nil)
    81  }
    82  
    83  func RegisterInterfaces(registry types.InterfaceRegistry) {
    84  	registry.RegisterImplementations((*sdk.Msg)(nil),
    85  		&MsgDeposit{},
    86  		&MsgWithdraw{},
    87  		&MsgInstantSpotMarketLaunch{},
    88  		&MsgInstantPerpetualMarketLaunch{},
    89  		&MsgInstantExpiryFuturesMarketLaunch{},
    90  		&MsgCreateSpotLimitOrder{},
    91  		&MsgBatchCreateSpotLimitOrders{},
    92  		&MsgCreateSpotMarketOrder{},
    93  		&MsgCancelSpotOrder{},
    94  		&MsgBatchCancelSpotOrders{},
    95  		&MsgCreateDerivativeLimitOrder{},
    96  		&MsgBatchCreateDerivativeLimitOrders{},
    97  		&MsgCreateDerivativeMarketOrder{},
    98  		&MsgCancelDerivativeOrder{},
    99  		&MsgBatchCancelDerivativeOrders{},
   100  		&MsgBatchCancelBinaryOptionsOrders{},
   101  		&MsgSubaccountTransfer{},
   102  		&MsgExternalTransfer{},
   103  		&MsgIncreasePositionMargin{},
   104  		&MsgLiquidatePosition{},
   105  		&MsgBatchUpdateOrders{},
   106  		&MsgPrivilegedExecuteContract{},
   107  		&MsgRewardsOptOut{},
   108  		&MsgInstantBinaryOptionsMarketLaunch{},
   109  		&MsgCreateBinaryOptionsLimitOrder{},
   110  		&MsgCreateBinaryOptionsMarketOrder{},
   111  		&MsgCancelBinaryOptionsOrder{},
   112  		&MsgAdminUpdateBinaryOptionsMarket{},
   113  		&MsgUpdateParams{},
   114  		&MsgUpdateSpotMarket{},
   115  		&MsgUpdateDerivativeMarket{},
   116  	)
   117  
   118  	registry.RegisterImplementations(
   119  		(*proto.Message)(nil),
   120  		&MsgCreateSpotLimitOrderResponse{},
   121  		&MsgCreateSpotMarketOrderResponse{},
   122  		&MsgBatchCreateSpotLimitOrdersResponse{},
   123  		&MsgCreateDerivativeLimitOrderResponse{},
   124  		&MsgCreateDerivativeMarketOrderResponse{},
   125  		&MsgBatchCreateDerivativeLimitOrdersResponse{},
   126  		&MsgCreateBinaryOptionsLimitOrderResponse{},
   127  		&MsgCreateBinaryOptionsMarketOrderResponse{},
   128  		&MsgBatchUpdateOrdersResponse{},
   129  	)
   130  
   131  	registry.RegisterImplementations(
   132  		(*govtypes.Content)(nil),
   133  		&ExchangeEnableProposal{},
   134  		&BatchExchangeModificationProposal{},
   135  		&SpotMarketParamUpdateProposal{},
   136  		&SpotMarketLaunchProposal{},
   137  		&PerpetualMarketLaunchProposal{},
   138  		&ExpiryFuturesMarketLaunchProposal{},
   139  		&DerivativeMarketParamUpdateProposal{},
   140  		&MarketForcedSettlementProposal{},
   141  		&UpdateDenomDecimalsProposal{},
   142  		&TradingRewardCampaignLaunchProposal{},
   143  		&TradingRewardCampaignUpdateProposal{},
   144  		&TradingRewardPendingPointsUpdateProposal{},
   145  		&FeeDiscountProposal{},
   146  		&BatchCommunityPoolSpendProposal{},
   147  		&BinaryOptionsMarketParamUpdateProposal{},
   148  		&BinaryOptionsMarketLaunchProposal{},
   149  		&AtomicMarketOrderFeeMultiplierScheduleProposal{},
   150  	)
   151  
   152  	registry.RegisterImplementations(
   153  		(*authz.Authorization)(nil),
   154  		// spot authz
   155  		&CreateSpotLimitOrderAuthz{},
   156  		&CreateSpotMarketOrderAuthz{},
   157  		&BatchCreateSpotLimitOrdersAuthz{},
   158  		&CancelSpotOrderAuthz{},
   159  		&BatchCancelSpotOrdersAuthz{},
   160  		// derivative authz
   161  		&CreateDerivativeLimitOrderAuthz{},
   162  		&CreateDerivativeMarketOrderAuthz{},
   163  		&BatchCreateDerivativeLimitOrdersAuthz{},
   164  		&CancelDerivativeOrderAuthz{},
   165  		&BatchCancelDerivativeOrdersAuthz{},
   166  		// common spot, derivative authz
   167  		&BatchUpdateOrdersAuthz{},
   168  	)
   169  
   170  	msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)
   171  }
   172  
   173  var (
   174  	// ModuleCdc references the global x/exchange module codec. Note, the codec should
   175  	// ONLY be used in certain instances of tests and for JSON encoding as Amino is
   176  	// still used for that purpose.
   177  	//
   178  	// The actual codec used for serialization should be provided to x/exchange and
   179  	// defined at the application level.
   180  	ModuleCdc = codec.NewLegacyAmino()
   181  )
   182  
   183  func init() {
   184  	RegisterLegacyAminoCodec(ModuleCdc)
   185  	cryptocodec.RegisterCrypto(ModuleCdc)
   186  	RegisterLegacyAminoCodec(authzcdc.Amino)
   187  
   188  	ModuleCdc.Seal()
   189  }