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

     1  package types
     2  
     3  import (
     4  	"github.com/Finschia/finschia-sdk/codec"
     5  	"github.com/Finschia/finschia-sdk/codec/types"
     6  	cryptocodec "github.com/Finschia/finschia-sdk/crypto/codec"
     7  	sdk "github.com/Finschia/finschia-sdk/types"
     8  	"github.com/Finschia/finschia-sdk/x/auth/legacy/legacytx"
     9  	authzcodec "github.com/Finschia/finschia-sdk/x/authz/codec"
    10  	fdncodec "github.com/Finschia/finschia-sdk/x/foundation/codec"
    11  	govcodec "github.com/Finschia/finschia-sdk/x/gov/codec"
    12  )
    13  
    14  // RegisterLegacyAminoCodec registers the account interfaces and concrete types on the
    15  // provided LegacyAmino codec. These types are used for Amino JSON serialization
    16  func RegisterLegacyAminoCodec(cdc *codec.LegacyAmino) {
    17  	cdc.RegisterInterface((*ModuleAccountI)(nil), nil)
    18  	cdc.RegisterInterface((*GenesisAccount)(nil), nil)
    19  	cdc.RegisterInterface((*AccountI)(nil), nil)
    20  	cdc.RegisterConcrete(&BaseAccount{}, "cosmos-sdk/BaseAccount", nil)
    21  	cdc.RegisterConcrete(&ModuleAccount{}, "cosmos-sdk/ModuleAccount", nil)
    22  
    23  	legacytx.RegisterLegacyAminoCodec(cdc)
    24  }
    25  
    26  // RegisterInterfaces associates protoName with AccountI interface
    27  // and creates a registry of it's concrete implementations
    28  func RegisterInterfaces(registry types.InterfaceRegistry) {
    29  	registry.RegisterInterface(
    30  		"cosmos.auth.v1beta1.AccountI",
    31  		(*AccountI)(nil),
    32  		&BaseAccount{},
    33  		&ModuleAccount{},
    34  	)
    35  
    36  	registry.RegisterInterface(
    37  		"cosmos.auth.v1beta1.GenesisAccount",
    38  		(*GenesisAccount)(nil),
    39  		&BaseAccount{},
    40  		&ModuleAccount{},
    41  	)
    42  }
    43  
    44  var (
    45  	amino     = codec.NewLegacyAmino()
    46  	ModuleCdc = codec.NewAminoCodec(amino)
    47  )
    48  
    49  func init() {
    50  	RegisterLegacyAminoCodec(amino)
    51  	cryptocodec.RegisterCrypto(amino)
    52  	sdk.RegisterLegacyAminoCodec(amino)
    53  
    54  	// Register all Amino interfaces and concrete types on the authz  and gov Amino codec so that this can later be
    55  	// used to properly serialize MsgGrant, MsgExec and MsgSubmitProposal instances
    56  	RegisterLegacyAminoCodec(authzcodec.Amino)
    57  	RegisterLegacyAminoCodec(govcodec.Amino)
    58  	RegisterLegacyAminoCodec(fdncodec.Amino)
    59  }