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