@@ -885,14 +885,30 @@ export class Account extends AbstractAccount implements WithAddress {
885885 * @param transactionRequestLike - The transaction request to sign.
886886 * @returns A promise that resolves to the signature of the transaction.
887887 */
888- async signTransaction ( transactionRequestLike : TransactionRequestLike ) : Promise < string > {
888+ async signTransaction (
889+ transactionRequestLike : TransactionRequestLike ,
890+ connectorOptions : AccountSendTxParams = { }
891+ ) : Promise < string | TransactionRequest > {
889892 if ( ! this . _connector ) {
890893 throw new FuelError (
891894 ErrorCode . MISSING_CONNECTOR ,
892895 'A connector is required to sign transactions.'
893896 ) ;
894897 }
895- return this . _connector . signTransaction ( this . address . toString ( ) , transactionRequestLike ) ;
898+
899+ const transactionRequest = transactionRequestify ( transactionRequestLike ) ;
900+
901+ const { transactionRequest : requestToSign , connectorsSendTxParams } =
902+ await this . setTransactionStateForConnectors ( {
903+ transactionRequest,
904+ connectorOptions,
905+ } ) ;
906+
907+ return this . _connector . signTransaction (
908+ this . address . toString ( ) ,
909+ requestToSign ,
910+ connectorsSendTxParams
911+ ) ;
896912 }
897913
898914 /**
@@ -906,30 +922,20 @@ export class Account extends AbstractAccount implements WithAddress {
906922 transactionRequestLike : TransactionRequestLike ,
907923 { estimateTxDependencies = true , ...connectorOptions } : AccountSendTxParams = { }
908924 ) : Promise < TransactionResponse > {
909- let transactionRequest = transactionRequestify ( transactionRequestLike ) ;
925+ const transactionRequest = transactionRequestify ( transactionRequestLike ) ;
910926
911927 // Check if the account is using a connector, and therefore we do not have direct access to the
912928 // private key.
913929 if ( this . _connector ) {
914- const { onBeforeSend, skipCustomFee = false } = connectorOptions ;
915-
916- transactionRequest = await this . prepareTransactionForSend ( transactionRequest ) ;
917-
918- const params : FuelConnectorSendTxParams = {
919- onBeforeSend,
920- skipCustomFee,
921- provider : {
922- url : this . provider . url ,
923- cache : await serializeProviderCache ( this . provider ) ,
924- } ,
925- transactionState : transactionRequest . flag . state ,
926- transactionSummary : await this . prepareTransactionSummary ( transactionRequest ) ,
927- } ;
930+ const response = await this . setTransactionStateForConnectors ( {
931+ transactionRequest,
932+ connectorOptions,
933+ } ) ;
928934
929935 const transaction : string | TransactionResponse = await this . _connector . sendTransaction (
930936 this . address . toString ( ) ,
931- transactionRequest ,
932- params
937+ response . transactionRequest ,
938+ response . connectorsSendTxParams
933939 ) ;
934940
935941 return typeof transaction === 'string'
@@ -940,6 +946,7 @@ export class Account extends AbstractAccount implements WithAddress {
940946 if ( estimateTxDependencies ) {
941947 await this . provider . estimateTxDependencies ( transactionRequest ) ;
942948 }
949+
943950 return this . provider . sendTransaction ( transactionRequest , {
944951 estimateTxDependencies : false ,
945952 } ) ;
@@ -1113,4 +1120,32 @@ export class Account extends AbstractAccount implements WithAddress {
11131120 ) ;
11141121 }
11151122 }
1123+
1124+ /** @hidden * */
1125+ private async setTransactionStateForConnectors ( params : {
1126+ transactionRequest : TransactionRequest ;
1127+ connectorOptions : AccountSendTxParams ;
1128+ } ) : Promise < {
1129+ transactionRequest : TransactionRequest ;
1130+ connectorsSendTxParams : FuelConnectorSendTxParams ;
1131+ } > {
1132+ const { transactionRequest : requestToPrepare , connectorOptions } = params ;
1133+
1134+ const { onBeforeSend, skipCustomFee = false } = connectorOptions ;
1135+
1136+ const transactionRequest = await this . prepareTransactionForSend ( requestToPrepare ) ;
1137+
1138+ const connectorsSendTxParams : FuelConnectorSendTxParams = {
1139+ onBeforeSend,
1140+ skipCustomFee,
1141+ provider : {
1142+ url : this . provider . url ,
1143+ cache : await serializeProviderCache ( this . provider ) ,
1144+ } ,
1145+ transactionState : requestToPrepare . flag . state ,
1146+ transactionSummary : await this . prepareTransactionSummary ( requestToPrepare ) ,
1147+ } ;
1148+
1149+ return { transactionRequest, connectorsSendTxParams } ;
1150+ }
11161151}
0 commit comments