mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			93 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			93 lines
		
	
	
		
			1.9 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(uint256 _dec, uint256 _amt)
 | |
| 		internal
 | |
| 		pure
 | |
| 		returns (uint256 amt)
 | |
| 	{
 | |
| 		amt = (_amt / 10**(18 - _dec));
 | |
| 	}
 | |
| 
 | |
| 	function convertTo18(uint256 _dec, uint256 _amt)
 | |
| 		internal
 | |
| 		pure
 | |
| 		returns (uint256 amt)
 | |
| 	{
 | |
| 		amt = mul(_amt, 10**(18 - _dec));
 | |
| 	}
 | |
| 
 | |
| 	function getTokenBal(TokenInterface token)
 | |
| 		internal
 | |
| 		view
 | |
| 		returns (uint256 _amt)
 | |
| 	{
 | |
| 		_amt = address(token) == ftmAddr
 | |
| 			? address(this).balance
 | |
| 			: token.balanceOf(address(this));
 | |
| 	}
 | |
| 
 | |
| 	function getTokensDec(TokenInterface buyAddr, TokenInterface sellAddr)
 | |
| 		internal
 | |
| 		view
 | |
| 		returns (uint256 buyDec, uint256 sellDec)
 | |
| 	{
 | |
| 		buyDec = address(buyAddr) == ftmAddr ? 18 : buyAddr.decimals();
 | |
| 		sellDec = address(sellAddr) == ftmAddr ? 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 changeftmAddress(address buy, address sell)
 | |
| 		internal
 | |
| 		pure
 | |
| 		returns (TokenInterface _buy, TokenInterface _sell)
 | |
| 	{
 | |
| 		_buy = buy == ftmAddr ? TokenInterface(wftmAddr) : TokenInterface(buy);
 | |
| 		_sell = sell == ftmAddr
 | |
| 			? TokenInterface(wftmAddr)
 | |
| 			: TokenInterface(sell);
 | |
| 	}
 | |
| 
 | |
| 	function convertFtmToWftm(
 | |
| 		bool isFtm,
 | |
| 		TokenInterface token,
 | |
| 		uint256 amount
 | |
| 	) internal {
 | |
| 		if (isFtm) token.deposit{ value: amount }();
 | |
| 	}
 | |
| 
 | |
| 	function convertWftmToFtm(
 | |
| 		bool isFtm,
 | |
| 		TokenInterface token,
 | |
| 		uint256 amount
 | |
| 	) internal {
 | |
| 		if (isFtm) {
 | |
| 			approve(token, address(token), amount);
 | |
| 			token.withdraw(amount);
 | |
| 		}
 | |
| 	}
 | |
| }
 | 
