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  }