diff options
Diffstat (limited to 'packages/contracts/src')
-rw-r--r-- | packages/contracts/src/utils/exchange_wrapper.ts | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/packages/contracts/src/utils/exchange_wrapper.ts b/packages/contracts/src/utils/exchange_wrapper.ts index 04e6c2feb..9dd414be2 100644 --- a/packages/contracts/src/utils/exchange_wrapper.ts +++ b/packages/contracts/src/utils/exchange_wrapper.ts @@ -81,6 +81,27 @@ export class ExchangeWrapper { }); return tx; } + public async fillOrderNoThrowAsync( + signedOrder: SignedOrder, + from: string, + opts: { takerTokenFillAmount?: BigNumber } = {}, + ): Promise<TransactionReceiptWithDecodedLogs> { + const params = orderUtils.createFill(signedOrder, opts.takerTokenFillAmount); + const txHash = await this._exchange.fillOrderNoThrow.sendTransactionAsync( + params.order, + params.takerTokenFillAmount, + params.signature, + { from }, + ); + const tx = await this._zeroEx.awaitTransactionMinedAsync(txHash); + tx.logs = _.filter(tx.logs, log => log.address === this._exchange.address); + tx.logs = _.map(tx.logs, log => { + const logWithDecodedArgs = this._logDecoder.decodeLogOrThrow(log); + wrapLogBigNumbers(logWithDecodedArgs); + return logWithDecodedArgs; + }); + return tx; + } public async batchFillOrdersAsync( orders: SignedOrder[], from: string, |