github.com/Finschia/finschia-sdk@v0.49.1/x/auth/tx/config.go (about) 1 package tx 2 3 import ( 4 "fmt" 5 6 "github.com/Finschia/finschia-sdk/client" 7 "github.com/Finschia/finschia-sdk/codec" 8 sdk "github.com/Finschia/finschia-sdk/types" 9 signingtypes "github.com/Finschia/finschia-sdk/types/tx/signing" 10 "github.com/Finschia/finschia-sdk/x/auth/signing" 11 ) 12 13 type config struct { 14 handler signing.SignModeHandler 15 decoder sdk.TxDecoder 16 encoder sdk.TxEncoder 17 jsonDecoder sdk.TxDecoder 18 jsonEncoder sdk.TxEncoder 19 protoCodec codec.ProtoCodecMarshaler 20 } 21 22 // NewTxConfig returns a new protobuf TxConfig using the provided ProtoCodec and sign modes. The 23 // first enabled sign mode will become the default sign mode. 24 // NOTE: Use NewTxConfigWithHandler to provide a custom signing handler in case the sign mode 25 // is not supported by default (eg: SignMode_SIGN_MODE_EIP_191). 26 func NewTxConfig(protoCodec codec.ProtoCodecMarshaler, enabledSignModes []signingtypes.SignMode) client.TxConfig { 27 return NewTxConfigWithHandler(protoCodec, makeSignModeHandler(enabledSignModes)) 28 } 29 30 // NewTxConfig returns a new protobuf TxConfig using the provided ProtoCodec and signing handler. 31 func NewTxConfigWithHandler(protoCodec codec.ProtoCodecMarshaler, handler signing.SignModeHandler) client.TxConfig { 32 return &config{ 33 handler: handler, 34 decoder: DefaultTxDecoder(protoCodec), 35 encoder: DefaultTxEncoder(), 36 jsonDecoder: DefaultJSONTxDecoder(protoCodec), 37 jsonEncoder: DefaultJSONTxEncoder(protoCodec), 38 protoCodec: protoCodec, 39 } 40 } 41 42 func (g config) NewTxBuilder() client.TxBuilder { 43 return newBuilder() 44 } 45 46 // WrapTxBuilder returns a builder from provided transaction 47 func (g config) WrapTxBuilder(newTx sdk.Tx) (client.TxBuilder, error) { 48 newBuilder, ok := newTx.(*wrapper) 49 if !ok { 50 return nil, fmt.Errorf("expected %T, got %T", &wrapper{}, newTx) 51 } 52 53 return newBuilder, nil 54 } 55 56 func (g config) SignModeHandler() signing.SignModeHandler { 57 return g.handler 58 } 59 60 func (g config) TxEncoder() sdk.TxEncoder { 61 return g.encoder 62 } 63 64 func (g config) TxDecoder() sdk.TxDecoder { 65 return g.decoder 66 } 67 68 func (g config) TxJSONEncoder() sdk.TxEncoder { 69 return g.jsonEncoder 70 } 71 72 func (g config) TxJSONDecoder() sdk.TxDecoder { 73 return g.jsonDecoder 74 }