aboutsummaryrefslogtreecommitdiffstats
path: root/packages/contracts/src/2.0.0/extensions/Forwarder/interfaces/IForwarderCore.sol
diff options
context:
space:
mode:
authorAmir Bandeali <abandeali1@gmail.com>2018-08-15 06:39:10 +0800
committerAmir Bandeali <abandeali1@gmail.com>2018-08-22 02:47:28 +0800
commitbe67c25b0a3dcf2eaf91c39e4d8a8cdb1215bbe0 (patch)
tree7045a114ca79f5e572db3742015b1cb917efd598 /packages/contracts/src/2.0.0/extensions/Forwarder/interfaces/IForwarderCore.sol
parentf53157414f144a7ea8c24126c9d75d3168228130 (diff)
downloaddexon-sol-tools-be67c25b0a3dcf2eaf91c39e4d8a8cdb1215bbe0.tar
dexon-sol-tools-be67c25b0a3dcf2eaf91c39e4d8a8cdb1215bbe0.tar.gz
dexon-sol-tools-be67c25b0a3dcf2eaf91c39e4d8a8cdb1215bbe0.tar.bz2
dexon-sol-tools-be67c25b0a3dcf2eaf91c39e4d8a8cdb1215bbe0.tar.lz
dexon-sol-tools-be67c25b0a3dcf2eaf91c39e4d8a8cdb1215bbe0.tar.xz
dexon-sol-tools-be67c25b0a3dcf2eaf91c39e4d8a8cdb1215bbe0.tar.zst
dexon-sol-tools-be67c25b0a3dcf2eaf91c39e4d8a8cdb1215bbe0.zip
Add OrderValidator contract
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.sol80
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
+ );
+}