100 lines
2.4 KiB
Solidity
100 lines
2.4 KiB
Solidity
/*
|
||
|
||
Copyright 2020 DODO ZOO.
|
||
SPDX-License-Identifier: Apache-2.0
|
||
|
||
*/
|
||
|
||
pragma solidity 0.6.9;
|
||
pragma experimental ABIEncoderV2;
|
||
|
||
import {IDPP} from "../intf/IDPP.sol";
|
||
import {IDODOApproveProxy} from "../../SmartRoute/DODOApproveProxy.sol";
|
||
import {InitializableOwnable} from "../../lib/InitializableOwnable.sol";
|
||
|
||
/**
|
||
* @title DPPAdmin
|
||
* @author DODO Breeder
|
||
*
|
||
* @notice Admin of DODOPrivatePool
|
||
*/
|
||
contract DPPAdmin is InitializableOwnable {
|
||
address public _DPP_;
|
||
address public _OPERATOR_;
|
||
address public _DODO_APPROVE_PROXY_;
|
||
uint256 public _FREEZE_TIMESTAMP_;
|
||
|
||
|
||
modifier notFreezed() {
|
||
require(block.timestamp >= _FREEZE_TIMESTAMP_, "ADMIN_FREEZED");
|
||
_;
|
||
}
|
||
|
||
function init(
|
||
address owner,
|
||
address dpp,
|
||
address operator,
|
||
address dodoApproveProxy
|
||
) external {
|
||
initOwner(owner);
|
||
_DPP_ = dpp;
|
||
_OPERATOR_ = operator;
|
||
_DODO_APPROVE_PROXY_ = dodoApproveProxy;
|
||
}
|
||
|
||
function sync() external notFreezed onlyOwner {
|
||
IDPP(_DPP_).ratioSync();
|
||
}
|
||
|
||
function setFreezeTimestamp(uint256 timestamp) external notFreezed onlyOwner {
|
||
_FREEZE_TIMESTAMP_ = timestamp;
|
||
}
|
||
|
||
function setOperator(address newOperator) external notFreezed onlyOwner {
|
||
_OPERATOR_ = newOperator;
|
||
}
|
||
|
||
function retrieve(
|
||
address payable to,
|
||
address token,
|
||
uint256 amount
|
||
) external notFreezed onlyOwner {
|
||
IDPP(_DPP_).retrieve(to, token, amount);
|
||
}
|
||
|
||
function reset(
|
||
address operator,
|
||
uint256 newLpFeeRate,
|
||
uint256 newI,
|
||
uint256 newK,
|
||
uint256 baseOutAmount,
|
||
uint256 quoteOutAmount,
|
||
uint256 minBaseReserve,
|
||
uint256 minQuoteReserve
|
||
) external notFreezed returns (bool) {
|
||
require(
|
||
msg.sender == _OWNER_ ||
|
||
(IDODOApproveProxy(_DODO_APPROVE_PROXY_).isAllowedProxy(msg.sender) &&
|
||
operator == _OPERATOR_),
|
||
"RESET FORBIDDEN!"
|
||
);
|
||
return
|
||
IDPP(_DPP_).reset(
|
||
msg.sender,
|
||
newLpFeeRate,
|
||
newI,
|
||
newK,
|
||
baseOutAmount,
|
||
quoteOutAmount,
|
||
minBaseReserve,
|
||
minQuoteReserve
|
||
);
|
||
}
|
||
|
||
// ============ Admin Version Control ============
|
||
|
||
function version() external pure returns (string memory) {
|
||
return "DPPAdmin 1.0.0"; // 1.0.0
|
||
}
|
||
}
|