pragma solidity ^0.7.0; import { TokenInterface } from "../../common/interfaces.sol"; import { DSMath } from "../../common/math.sol"; import { Basic } from "../../common/basic.sol"; import { TokenInterface, OneProtoInterface } from "./interface.sol"; abstract contract Helpers is DSMath, Basic { /** * @dev 1proto Address */ OneProtoInterface constant internal oneProto = OneProtoInterface(0x50FDA034C0Ce7a8f7EFDAebDA7Aa7cA21CC1267e); 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; } }