@@ -1049,7 +1049,7 @@ export class Contract<Abi extends ContractAbi>
1049
1049
call : async ( options ?: PayableCallOptions , block ?: BlockNumberOrTag ) =>
1050
1050
this . _contractMethodCall ( methodAbi , abiParams , errorsAbis , options , block ) ,
1051
1051
send : ( options ?: PayableTxOptions ) =>
1052
- this . _contractMethodSend ( methodAbi , abiParams , options ) , // TODO: refactor to parse errorsAbi #5587
1052
+ this . _contractMethodSend ( methodAbi , abiParams , errorsAbis , options ) ,
1053
1053
estimateGas : async <
1054
1054
ReturnFormat extends DataFormat = typeof DEFAULT_RETURN_FORMAT ,
1055
1055
> (
@@ -1073,7 +1073,7 @@ export class Contract<Abi extends ContractAbi>
1073
1073
call : async ( options ?: NonPayableCallOptions , block ?: BlockNumberOrTag ) =>
1074
1074
this . _contractMethodCall ( methodAbi , abiParams , errorsAbis , options , block ) ,
1075
1075
send : ( options ?: NonPayableTxOptions ) =>
1076
- this . _contractMethodSend ( methodAbi , abiParams , options ) , // TODO: refactor to parse errorsAbi #5587
1076
+ this . _contractMethodSend ( methodAbi , abiParams , errorsAbis , options ) ,
1077
1077
estimateGas : async < ReturnFormat extends DataFormat = typeof DEFAULT_RETURN_FORMAT > (
1078
1078
options ?: NonPayableCallOptions ,
1079
1079
returnFormat : ReturnFormat = DEFAULT_RETURN_FORMAT as ReturnFormat ,
@@ -1092,13 +1092,10 @@ export class Contract<Abi extends ContractAbi>
1092
1092
} ;
1093
1093
}
1094
1094
1095
- private async _contractMethodCall <
1096
- E extends AbiErrorFragment ,
1097
- Options extends PayableCallOptions | NonPayableCallOptions ,
1098
- > (
1095
+ private async _contractMethodCall < Options extends PayableCallOptions | NonPayableCallOptions > (
1099
1096
abi : AbiFunctionFragment ,
1100
1097
params : unknown [ ] ,
1101
- errorsAbi : E [ ] ,
1098
+ errorsAbi : AbiErrorFragment [ ] ,
1102
1099
options ?: Options ,
1103
1100
block ?: BlockNumberOrTag ,
1104
1101
) {
@@ -1126,6 +1123,7 @@ export class Contract<Abi extends ContractAbi>
1126
1123
private _contractMethodSend < Options extends PayableCallOptions | NonPayableCallOptions > (
1127
1124
abi : AbiFunctionFragment ,
1128
1125
params : unknown [ ] ,
1126
+ errorsAbi : AbiErrorFragment [ ] ,
1129
1127
options ?: Options ,
1130
1128
contractOptions ?: ContractOptions ,
1131
1129
) {
@@ -1143,7 +1141,17 @@ export class Contract<Abi extends ContractAbi>
1143
1141
contractOptions : modifiedContractOptions ,
1144
1142
} ) ;
1145
1143
1146
- return sendTransaction ( this , tx , DEFAULT_RETURN_FORMAT ) ;
1144
+ const promiEvent = sendTransaction ( this , tx , DEFAULT_RETURN_FORMAT ) ;
1145
+
1146
+ // eslint-disable-next-line @typescript-eslint/no-floating-promises
1147
+ promiEvent . on ( 'error' , ( error : unknown ) => {
1148
+ if ( error instanceof ContractExecutionError ) {
1149
+ // this will parse the error data by trying to decode the ABI error inputs according to EIP-838
1150
+ decodeErrorData ( errorsAbi , error . innerError ) ;
1151
+ }
1152
+ } ) ;
1153
+
1154
+ return promiEvent ;
1147
1155
}
1148
1156
1149
1157
private _contractMethodDeploySend < Options extends PayableCallOptions | NonPayableCallOptions > (
0 commit comments