initial EpFundRecoveryFeature implementation without tests
This commit is contained in:
parent
254b850a8b
commit
dbb1c88ad9
@ -0,0 +1,83 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
/*
|
||||
Copyright 2021 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.6.5;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import "@0x/contracts-erc20/contracts/src/v06/IERC20TokenV06.sol";
|
||||
import "@0x/contracts-erc20/contracts/src/v06/IEtherTokenV06.sol";
|
||||
import "../vendor/IUniswapV3Pool.sol";
|
||||
import "../migrations/LibMigrate.sol";
|
||||
import "../fixins/FixinCommon.sol";
|
||||
import "../fixins/FixinTokenSpender.sol";
|
||||
import "./interfaces/IFeature.sol";
|
||||
import "./interfaces/IEpFundRecoveryFeature.sol";
|
||||
import "../transformers/LibERC20Transformer.sol";
|
||||
|
||||
contract EpFundRecoveryFeature is
|
||||
IFeature,
|
||||
IEpFundRecoveryFeature,
|
||||
FixinCommon,
|
||||
ITransformERC20Feature,
|
||||
FixinTokenSpender
|
||||
{
|
||||
/// @dev Name of this feature.
|
||||
string public constant override FEATURE_NAME = "EpFundRecoveryFeature";
|
||||
/// @dev Version of this feature.
|
||||
uint256 public immutable override FEATURE_VERSION = _encodeVersion(1, 0, 0);
|
||||
/// @dev Deployed exchange proxy address.
|
||||
bytes32 private immutable 0X_EP_ADDRESS;
|
||||
|
||||
/// @dev Construct this contract.
|
||||
/// @param erc20 Any ERC-20 contract address.
|
||||
/// @param amountOut Amount in wei to withdraw
|
||||
/// @param designatedWallet Designated wallet to send recovered funds to.
|
||||
constructor(address exchangeProxy) public {
|
||||
0X_EP_ADDRESS = exchangeProxy;
|
||||
}
|
||||
|
||||
// solhint-enable state-visibility
|
||||
/// @dev recovers WETH from the 0x Exchange Proxy contract
|
||||
function recoverToDesignatedWallet(
|
||||
IERC20TokenV06 erc20,
|
||||
uint256 amountOut,
|
||||
address designatedWallet
|
||||
)
|
||||
public
|
||||
{
|
||||
if(amountOut == uint256(-1)) {
|
||||
amountOut = erc20.balanceOf(this);
|
||||
}
|
||||
if(LibERC20Transformer.isTokenETH(erc20))
|
||||
{
|
||||
designatedWallet.transfer(amountOut);
|
||||
}
|
||||
else{
|
||||
erc20.transferFrom(0X_EP_ADDRESS,designatedWallet,amountOut);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/// @dev Initialize and register this feature.
|
||||
/// Should be delegatecalled by `Migrate.migrate()`.
|
||||
/// @return success `LibMigrate.SUCCESS` on success.
|
||||
function migrate()
|
||||
external
|
||||
returns (bytes4 success)
|
||||
{
|
||||
//_registerFeatureFunction(this.sellEthForTokenToUniswapV3.selector);
|
||||
_registerFeatureFunction(this.recoverToDesignatedWallet.selector);
|
||||
return LibMigrate.MIGRATE_SUCCESS;
|
||||
}
|
||||
}
|
@ -0,0 +1,30 @@
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
/*
|
||||
Copyright 2020 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.6.5;
|
||||
pragma experimental ABIEncoderV2;
|
||||
|
||||
import "@0x/contracts-erc20/contracts/src/v06/IERC20TokenV06.sol";
|
||||
|
||||
|
||||
/// @dev VIP Exchange Proxy Recovery Funcions
|
||||
interface IEpFundRecoveryFeature {
|
||||
|
||||
function recoverToDesignatedWallet(
|
||||
IERC20TokenV06 erc20,
|
||||
uint256 amountOut,
|
||||
address designatedWallet
|
||||
)
|
||||
public;
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user