This repository has been archived by the owner on Jul 9, 2021. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 465
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #1465 from 0xProject/feature/contracts/dutchAuctio…
…nWrapper Dutch Auction Wrapper
- Loading branch information
Showing
29 changed files
with
1,356 additions
and
140 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Large diffs are not rendered by default.
Oops, something went wrong.
62 changes: 62 additions & 0 deletions
62
contracts/extensions/test/utils/dutch_auction_test_wrapper.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
import { artifacts as protocolArtifacts } from '@0x/contracts-protocol'; | ||
import { LogDecoder } from '@0x/contracts-test-utils'; | ||
import { artifacts as tokensArtifacts } from '@0x/contracts-tokens'; | ||
import { DutchAuctionDetails, SignedOrder } from '@0x/types'; | ||
import { Web3Wrapper } from '@0x/web3-wrapper'; | ||
import { Provider, TransactionReceiptWithDecodedLogs } from 'ethereum-types'; | ||
import * as _ from 'lodash'; | ||
|
||
import { DutchAuctionContract } from '../../generated-wrappers/dutch_auction'; | ||
import { artifacts } from '../../src/artifacts'; | ||
|
||
export class DutchAuctionTestWrapper { | ||
private readonly _dutchAuctionContract: DutchAuctionContract; | ||
private readonly _web3Wrapper: Web3Wrapper; | ||
private readonly _logDecoder: LogDecoder; | ||
|
||
constructor(contractInstance: DutchAuctionContract, provider: Provider) { | ||
this._dutchAuctionContract = contractInstance; | ||
this._web3Wrapper = new Web3Wrapper(provider); | ||
this._logDecoder = new LogDecoder(this._web3Wrapper, { | ||
...artifacts, | ||
...tokensArtifacts, | ||
...protocolArtifacts, | ||
}); | ||
} | ||
/** | ||
* Matches the buy and sell orders at an amount given the following: the current block time, the auction | ||
* start time and the auction begin amount. The sell order is a an order at the lowest amount | ||
* at the end of the auction. Excess from the match is transferred to the seller. | ||
* Over time the price moves from beginAmount to endAmount given the current block.timestamp. | ||
* @param buyOrder The Buyer's order. This order is for the current expected price of the auction. | ||
* @param sellOrder The Seller's order. This order is for the lowest amount (at the end of the auction). | ||
* @param from Address the transaction is being sent from. | ||
* @return Transaction receipt with decoded logs. | ||
*/ | ||
public async matchOrdersAsync( | ||
buyOrder: SignedOrder, | ||
sellOrder: SignedOrder, | ||
from: string, | ||
): Promise<TransactionReceiptWithDecodedLogs> { | ||
const txHash = await this._dutchAuctionContract.matchOrders.sendTransactionAsync( | ||
buyOrder, | ||
sellOrder, | ||
buyOrder.signature, | ||
sellOrder.signature, | ||
{ | ||
from, | ||
}, | ||
); | ||
const tx = await this._logDecoder.getTxWithDecodedLogsAsync(txHash); | ||
return tx; | ||
} | ||
/** | ||
* Calculates the Auction Details for the given order | ||
* @param sellOrder The Seller's order. This order is for the lowest amount (at the end of the auction). | ||
* @return The dutch auction details. | ||
*/ | ||
public async getAuctionDetailsAsync(sellOrder: SignedOrder): Promise<DutchAuctionDetails> { | ||
const auctionDetails = await this._dutchAuctionContract.getAuctionDetails.callAsync(sellOrder); | ||
return auctionDetails; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.