github.com/Finschia/finschia-sdk@v0.48.1/x/staking/types/codec.go (about)

     1  package types
     2  
     3  import (
     4  	"github.com/Finschia/finschia-sdk/codec"
     5  	"github.com/Finschia/finschia-sdk/codec/legacy"
     6  	"github.com/Finschia/finschia-sdk/codec/types"
     7  	cryptocodec "github.com/Finschia/finschia-sdk/crypto/codec"
     8  	sdk "github.com/Finschia/finschia-sdk/types"
     9  	"github.com/Finschia/finschia-sdk/types/msgservice"
    10  	"github.com/Finschia/finschia-sdk/x/authz"
    11  	authzcodec "github.com/Finschia/finschia-sdk/x/authz/codec"
    12  	fdncodec "github.com/Finschia/finschia-sdk/x/foundation/codec"
    13  	govcodec "github.com/Finschia/finschia-sdk/x/gov/codec"
    14  )
    15  
    16  // RegisterLegacyAminoCodec registers the necessary x/staking interfaces and concrete types
    17  // on the provided LegacyAmino codec. These types are used for Amino JSON serialization.
    18  func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
    19  	legacy.RegisterAminoMsg(cdc, &MsgCreateValidator{}, "cosmos-sdk/MsgCreateValidator")
    20  	legacy.RegisterAminoMsg(cdc, &MsgEditValidator{}, "cosmos-sdk/MsgEditValidator")
    21  	legacy.RegisterAminoMsg(cdc, &MsgDelegate{}, "cosmos-sdk/MsgDelegate")
    22  	legacy.RegisterAminoMsg(cdc, &MsgUndelegate{}, "cosmos-sdk/MsgUndelegate")
    23  	legacy.RegisterAminoMsg(cdc, &MsgBeginRedelegate{}, "cosmos-sdk/MsgBeginRedelegate")
    24  
    25  	cdc.RegisterInterface((*isStakeAuthorization_Validators)(nil), nil)
    26  	cdc.RegisterConcrete(&StakeAuthorization_AllowList{}, "cosmos-sdk/StakeAuthorization/AllowList", nil)
    27  	cdc.RegisterConcrete(&StakeAuthorization_DenyList{}, "cosmos-sdk/StakeAuthorization/DenyList", nil)
    28  	cdc.RegisterConcrete(&StakeAuthorization{}, "cosmos-sdk/StakeAuthorization", nil)
    29  }
    30  
    31  // RegisterInterfaces registers the x/staking interfaces types with the interface registry
    32  func RegisterInterfaces(registry types.InterfaceRegistry) {
    33  	registry.RegisterImplementations((*sdk.Msg)(nil),
    34  		&MsgCreateValidator{},
    35  		&MsgEditValidator{},
    36  		&MsgDelegate{},
    37  		&MsgUndelegate{},
    38  		&MsgBeginRedelegate{},
    39  	)
    40  	registry.RegisterImplementations(
    41  		(*authz.Authorization)(nil),
    42  		&StakeAuthorization{},
    43  	)
    44  
    45  	msgservice.RegisterMsgServiceDesc(registry, &_Msg_serviceDesc)
    46  }
    47  
    48  var (
    49  	amino     = codec.NewLegacyAmino()
    50  	ModuleCdc = codec.NewAminoCodec(amino)
    51  )
    52  
    53  func init() {
    54  	RegisterLegacyAminoCodec(amino)
    55  	cryptocodec.RegisterCrypto(amino)
    56  	sdk.RegisterLegacyAminoCodec(amino)
    57  
    58  	// Register all Amino interfaces and concrete types on the authz  and gov Amino codec so that this can later be
    59  	// used to properly serialize MsgGrant, MsgExec and MsgSubmitProposal instances
    60  	RegisterLegacyAminoCodec(authzcodec.Amino)
    61  	RegisterLegacyAminoCodec(govcodec.Amino)
    62  	RegisterLegacyAminoCodec(fdncodec.Amino)
    63  }