package solomachine import ( errorsmod "cosmossdk.io/errors" "github.com/cosmos/cosmos-sdk/codec" codectypes "github.com/cosmos/cosmos-sdk/codec/types" "github.com/cosmos/cosmos-sdk/types/tx/signing" "github.com/cosmos/ibc-go/v10/modules/core/exported" ) // RegisterInterfaces register the ibc channel submodule interfaces to protobuf // Any. func RegisterInterfaces(registry codectypes.InterfaceRegistry) { registry.RegisterImplementations( (*exported.ClientState)(nil), &ClientState{}, ) registry.RegisterImplementations( (*exported.ConsensusState)(nil), &ConsensusState{}, ) registry.RegisterImplementations( (*exported.ClientMessage)(nil), &Header{}, ) registry.RegisterImplementations( (*exported.ClientMessage)(nil), &Misbehaviour{}, ) } func UnmarshalSignatureData(cdc codec.BinaryCodec, data []byte) (signing.SignatureData, error) { protoSigData := &signing.SignatureDescriptor_Data{} if err := cdc.Unmarshal(data, protoSigData); err != nil { return nil, errorsmod.Wrapf(err, "failed to unmarshal proof into type %T", protoSigData) } sigData := signing.SignatureDataFromProto(protoSigData) return sigData, nil }