2021-02-05 18:33:49 +00:00
|
|
|
pragma solidity ^0.6.5;
|
2020-11-20 14:49:48 +00:00
|
|
|
|
|
|
|
import { TokenInterface } from "../../common/interfaces.sol";
|
|
|
|
import { DSMath } from "../../common/math.sol";
|
|
|
|
import { Basic } from "../../common/basic.sol";
|
|
|
|
import { TokenInterface, OneProtoMappingInterface } from "./interface.sol";
|
|
|
|
|
|
|
|
|
2021-02-05 18:33:49 +00:00
|
|
|
abstract contract Helpers is DSMath, Basic {
|
2020-11-20 14:49:48 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @dev Return 1proto mapping Address
|
|
|
|
*/
|
|
|
|
function getOneProtoMappingAddress() internal pure returns (address payable) {
|
|
|
|
return 0x8d0287AFa7755BB5f2eFe686AA8d4F0A7BC4AE7F;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dev Return 1proto Address
|
|
|
|
*/
|
|
|
|
function getOneProtoAddress() internal virtual view returns (address payable) {
|
|
|
|
return payable(OneProtoMappingInterface(getOneProtoMappingAddress()).oneProtoAddress());
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dev Return 1Inch Address
|
|
|
|
*/
|
|
|
|
function getOneInchAddress() internal pure returns (address) {
|
|
|
|
return 0x111111125434b319222CdBf8C261674aDB56F3ae;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* @dev Return 1inch swap function sig
|
|
|
|
*/
|
|
|
|
function getOneInchSig() internal pure returns (bytes4) {
|
|
|
|
return 0x90411a32;
|
|
|
|
}
|
|
|
|
|
|
|
|
function getSlippageAmt(
|
|
|
|
TokenInterface _buyAddr,
|
|
|
|
TokenInterface _sellAddr,
|
|
|
|
uint _sellAmt,
|
|
|
|
uint unitAmt
|
|
|
|
) internal view returns(uint _slippageAmt) {
|
|
|
|
(uint _buyDec, uint _sellDec) = getTokensDec(_buyAddr, _sellAddr);
|
|
|
|
uint _sellAmt18 = convertTo18(_sellDec, _sellAmt);
|
|
|
|
_slippageAmt = convert18ToDec(_buyDec, wmul(unitAmt, _sellAmt18));
|
|
|
|
}
|
|
|
|
|
|
|
|
function convertToTokenInterface(address[] memory tokens) internal pure returns(TokenInterface[] memory) {
|
|
|
|
TokenInterface[] memory _tokens = new TokenInterface[](tokens.length);
|
|
|
|
for (uint i = 0; i < tokens.length; i++) {
|
|
|
|
_tokens[i] = TokenInterface(tokens[i]);
|
|
|
|
}
|
|
|
|
return _tokens;
|
|
|
|
}
|
|
|
|
}
|