mirror of
https://github.com/Instadapp/dsa-connectors-2.0.git
synced 2024-07-29 21:57:39 +00:00
92 lines
2.4 KiB
Solidity
92 lines
2.4 KiB
Solidity
//SPDX-License-Identifier: MIT
|
|
pragma solidity ^0.8.2;
|
|
|
|
import {TokenInterface} from "./interfaces.sol";
|
|
import {Stores} from "./stores.sol";
|
|
import {DSMath} from "./math.sol";
|
|
|
|
abstract contract Basic is DSMath, Stores {
|
|
function convert18ToDec(
|
|
uint _dec,
|
|
uint256 _amt
|
|
) internal pure returns (uint256 amt) {
|
|
amt = (_amt / 10 ** (18 - _dec));
|
|
}
|
|
|
|
function convertTo18(
|
|
uint _dec,
|
|
uint256 _amt
|
|
) internal pure returns (uint256 amt) {
|
|
amt = mul(_amt, 10 ** (18 - _dec));
|
|
}
|
|
|
|
function getTokenBal(
|
|
TokenInterface token
|
|
) internal view returns (uint _amt) {
|
|
_amt = address(token) == ethAddr
|
|
? address(this).balance
|
|
: token.balanceOf(address(this));
|
|
}
|
|
|
|
function getTokensDec(
|
|
TokenInterface buyAddr,
|
|
TokenInterface sellAddr
|
|
) internal view returns (uint buyDec, uint sellDec) {
|
|
buyDec = address(buyAddr) == ethAddr ? 18 : buyAddr.decimals();
|
|
sellDec = address(sellAddr) == ethAddr ? 18 : sellAddr.decimals();
|
|
}
|
|
|
|
function encodeEvent(
|
|
string memory eventName,
|
|
bytes memory eventParam
|
|
) internal pure returns (bytes memory) {
|
|
return abi.encode(eventName, eventParam);
|
|
}
|
|
|
|
function approve(
|
|
TokenInterface token,
|
|
address spender,
|
|
uint256 amount
|
|
) internal {
|
|
try token.approve(spender, amount) {} catch {
|
|
token.approve(spender, 0);
|
|
token.approve(spender, amount);
|
|
}
|
|
}
|
|
|
|
function changeEthAddress(
|
|
address buy,
|
|
address sell
|
|
) internal pure returns (TokenInterface _buy, TokenInterface _sell) {
|
|
_buy = buy == ethAddr ? TokenInterface(wethAddr) : TokenInterface(buy);
|
|
_sell = sell == ethAddr
|
|
? TokenInterface(wethAddr)
|
|
: TokenInterface(sell);
|
|
}
|
|
|
|
function changeEthAddrToWethAddr(
|
|
address token
|
|
) internal pure returns (address tokenAddr) {
|
|
tokenAddr = token == ethAddr ? wethAddr : token;
|
|
}
|
|
|
|
function convertEthToWeth(
|
|
bool isEth,
|
|
TokenInterface token,
|
|
uint amount
|
|
) internal {
|
|
if (isEth) token.deposit{value: amount}();
|
|
}
|
|
|
|
function convertWethToEth(
|
|
bool isEth,
|
|
TokenInterface token,
|
|
uint amount
|
|
) internal {
|
|
if (isEth) {
|
|
approve(token, address(token), amount);
|
|
token.withdraw(amount);
|
|
}
|
|
}
|
|
}
|