package tx import ( "fmt" signingtypes "github.com/cosmos/cosmos-sdk/types/tx/signing" "github.com/cosmos/cosmos-sdk/codec" "github.com/cosmos/cosmos-sdk/client" sdk "github.com/cosmos/cosmos-sdk/types" "github.com/cosmos/cosmos-sdk/x/auth/signing" ) type config struct { handler signing.SignModeHandler decoder sdk.TxDecoder encoder sdk.TxEncoder jsonDecoder sdk.TxDecoder jsonEncoder sdk.TxEncoder protoCodec codec.ProtoCodecMarshaler } // NewTxConfig returns a new protobuf TxConfig using the provided ProtoCodec and sign modes. The // first enabled sign mode will become the default sign mode. func NewTxConfig(protoCodec codec.ProtoCodecMarshaler, enabledSignModes []signingtypes.SignMode) client.TxConfig { return &config{ handler: makeSignModeHandler(enabledSignModes), decoder: DefaultTxDecoder(protoCodec), encoder: DefaultTxEncoder(), jsonDecoder: DefaultJSONTxDecoder(protoCodec), jsonEncoder: DefaultJSONTxEncoder(protoCodec), protoCodec: protoCodec, } } func (g config) NewTxBuilder() client.TxBuilder { return newBuilder() } // WrapTxBuilder returns a builder from provided transaction func (g config) WrapTxBuilder(newTx sdk.Tx) (client.TxBuilder, error) { newBuilder, ok := newTx.(*wrapper) if !ok { return nil, fmt.Errorf("expected %T, got %T", &wrapper{}, newTx) } return newBuilder, nil } func (g config) SignModeHandler() signing.SignModeHandler { return g.handler } func (g config) TxEncoder() sdk.TxEncoder { return g.encoder } func (g config) TxDecoder() sdk.TxDecoder { return g.decoder } func (g config) TxJSONEncoder() sdk.TxEncoder { return g.jsonEncoder } func (g config) TxJSONDecoder() sdk.TxDecoder { return g.jsonDecoder }