github.com/cosmos/cosmos-sdk@v0.50.10/codec/testutil/codec.go (about) 1 package testutil 2 3 import ( 4 "github.com/cosmos/gogoproto/proto" 5 6 "cosmossdk.io/x/tx/signing" 7 8 "github.com/cosmos/cosmos-sdk/codec" 9 "github.com/cosmos/cosmos-sdk/codec/address" 10 codectypes "github.com/cosmos/cosmos-sdk/codec/types" 11 ) 12 13 // CodecOptions are options for creating a test codec. 14 type CodecOptions struct { 15 AccAddressPrefix string 16 ValAddressPrefix string 17 } 18 19 // NewInterfaceRegistry returns a new InterfaceRegistry with the given options. 20 func (o CodecOptions) NewInterfaceRegistry() codectypes.InterfaceRegistry { 21 accAddressPrefix := o.AccAddressPrefix 22 if accAddressPrefix == "" { 23 accAddressPrefix = "cosmos" 24 } 25 26 valAddressPrefix := o.ValAddressPrefix 27 if valAddressPrefix == "" { 28 valAddressPrefix = "cosmosvaloper" 29 } 30 31 ir, err := codectypes.NewInterfaceRegistryWithOptions(codectypes.InterfaceRegistryOptions{ 32 ProtoFiles: proto.HybridResolver, 33 SigningOptions: signing.Options{ 34 AddressCodec: address.NewBech32Codec(accAddressPrefix), 35 ValidatorAddressCodec: address.NewBech32Codec(valAddressPrefix), 36 }, 37 }) 38 if err != nil { 39 panic(err) 40 } 41 return ir 42 } 43 44 // NewCodec returns a new codec with the given options. 45 func (o CodecOptions) NewCodec() *codec.ProtoCodec { 46 return codec.NewProtoCodec(o.NewInterfaceRegistry()) 47 }