package std import ( "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/codec/types" cryptocodec "github.com/cosmos/cosmos-sdk/crypto/codec" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/types/module" "github.com/cosmos/cosmos-sdk/x/auth/vesting" ) // Codec defines the application-level codec. This codec contains all the // required module-specific codecs that are to be provided upon initialization. type Codec struct { codec.Marshaler // Keep reference to the amino codec to allow backwards compatibility along // with type, and interface registration. amino *codec.Codec anyUnpacker types.AnyUnpacker } func NewAppCodec(amino *codec.Codec, anyUnpacker types.AnyUnpacker) *Codec { return &Codec{Marshaler: codec.NewHybridCodec(amino, anyUnpacker), amino: amino, anyUnpacker: anyUnpacker} } // ---------------------------------------------------------------------------- // necessary types and interfaces registered. This codec is provided to all the // modules the application depends on. // // NOTE: This codec will be deprecated in favor of AppCodec once all modules are // migrated. func MakeCodec(bm module.BasicManager) *codec.Codec { cdc := codec.New() bm.RegisterCodec(cdc) vesting.RegisterCodec(cdc) sdk.RegisterCodec(cdc) cryptocodec.RegisterCrypto(cdc) return cdc } // RegisterInterfaces registers Interfaces from sdk/types and vesting func RegisterInterfaces(interfaceRegistry types.InterfaceRegistry) { sdk.RegisterInterfaces(interfaceRegistry) vesting.RegisterInterfaces(interfaceRegistry) }