diff options
author | Fabio Berger <me@fabioberger.com> | 2018-08-22 18:41:42 +0800 |
---|---|---|
committer | Fabio Berger <me@fabioberger.com> | 2018-08-22 18:41:42 +0800 |
commit | 0248add542ac801bcb021fa7b13c182baec5612e (patch) | |
tree | 1d04404632ee381621b384f1e82ade97c06c9b92 /packages/contracts/src/2.0.0/extensions/Forwarder/interfaces/IForwarderCore.sol | |
parent | c12f0d04bb2f0d5ad73943d02a592a110423a423 (diff) | |
parent | 80e52464a6fdf9576776214f77e46d441b959b06 (diff) | |
download | dexon-sol-tools-0248add542ac801bcb021fa7b13c182baec5612e.tar dexon-sol-tools-0248add542ac801bcb021fa7b13c182baec5612e.tar.gz dexon-sol-tools-0248add542ac801bcb021fa7b13c182baec5612e.tar.bz2 dexon-sol-tools-0248add542ac801bcb021fa7b13c182baec5612e.tar.lz dexon-sol-tools-0248add542ac801bcb021fa7b13c182baec5612e.tar.xz dexon-sol-tools-0248add542ac801bcb021fa7b13c182baec5612e.tar.zst dexon-sol-tools-0248add542ac801bcb021fa7b13c182baec5612e.zip |
Merge development branch
Diffstat (limited to 'packages/contracts/src/2.0.0/extensions/Forwarder/interfaces/IForwarderCore.sol')
-rw-r--r-- | packages/contracts/src/2.0.0/extensions/Forwarder/interfaces/IForwarderCore.sol | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/packages/contracts/src/2.0.0/extensions/Forwarder/interfaces/IForwarderCore.sol b/packages/contracts/src/2.0.0/extensions/Forwarder/interfaces/IForwarderCore.sol new file mode 100644 index 000000000..74c7da01d --- /dev/null +++ b/packages/contracts/src/2.0.0/extensions/Forwarder/interfaces/IForwarderCore.sol @@ -0,0 +1,80 @@ +/* + + Copyright 2018 ZeroEx Intl. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + +*/ + +pragma solidity 0.4.24; +pragma experimental ABIEncoderV2; + +import "../../../protocol/Exchange/libs/LibOrder.sol"; +import "../../../protocol/Exchange/libs/LibFillResults.sol"; + + +contract IForwarderCore { + + /// @dev Purchases as much of orders' makerAssets as possible by selling up to 95% of transaction's ETH value. + /// Any ZRX required to pay fees for primary orders will automatically be purchased by this contract. + /// 5% of ETH value is reserved for paying fees to order feeRecipients (in ZRX) and forwarding contract feeRecipient (in ETH). + /// Any ETH not spent will be refunded to sender. + /// @param orders Array of order specifications used containing desired makerAsset and WETH as takerAsset. + /// @param signatures Proofs that orders have been created by makers. + /// @param feeOrders Array of order specifications containing ZRX as makerAsset and WETH as takerAsset. Used to purchase ZRX for primary order fees. + /// @param feeSignatures Proofs that feeOrders have been created by makers. + /// @param feePercentage Percentage of WETH sold that will payed as fee to forwarding contract feeRecipient. + /// @param feeRecipient Address that will receive ETH when orders are filled. + /// @return Amounts filled and fees paid by maker and taker for both sets of orders. + function marketSellOrdersWithEth( + LibOrder.Order[] memory orders, + bytes[] memory signatures, + LibOrder.Order[] memory feeOrders, + bytes[] memory feeSignatures, + uint256 feePercentage, + address feeRecipient + ) + public + payable + returns ( + LibFillResults.FillResults memory orderFillResults, + LibFillResults.FillResults memory feeOrderFillResults + ); + + /// @dev Attempt to purchase makerAssetFillAmount of makerAsset by selling ETH provided with transaction. + /// Any ZRX required to pay fees for primary orders will automatically be purchased by this contract. + /// Any ETH not spent will be refunded to sender. + /// @param orders Array of order specifications used containing desired makerAsset and WETH as takerAsset. + /// @param makerAssetFillAmount Desired amount of makerAsset to purchase. + /// @param signatures Proofs that orders have been created by makers. + /// @param feeOrders Array of order specifications containing ZRX as makerAsset and WETH as takerAsset. Used to purchase ZRX for primary order fees. + /// @param feeSignatures Proofs that feeOrders have been created by makers. + /// @param feePercentage Percentage of WETH sold that will payed as fee to forwarding contract feeRecipient. + /// @param feeRecipient Address that will receive ETH when orders are filled. + /// @return Amounts filled and fees paid by maker and taker for both sets of orders. + function marketBuyOrdersWithEth( + LibOrder.Order[] memory orders, + uint256 makerAssetFillAmount, + bytes[] memory signatures, + LibOrder.Order[] memory feeOrders, + bytes[] memory feeSignatures, + uint256 feePercentage, + address feeRecipient + ) + public + payable + returns ( + LibFillResults.FillResults memory orderFillResults, + LibFillResults.FillResults memory feeOrderFillResults + ); +} |