mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
//SPDX-License-Identifier: MIT
 | 
						|
pragma solidity ^0.7.0;
 | 
						|
 | 
						|
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);
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 |