mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
| pragma solidity ^0.7.0;
 | |
| 
 | |
| /**
 | |
|  * @title Paraswap.
 | |
|  * @dev DEX Aggregator.
 | |
|  */
 | |
| 
 | |
| import { TokenInterface } from "../../common/interfaces.sol";
 | |
| import { Stores } from "../../common/stores.sol";
 | |
| import { Helpers } from "./helpers.sol";
 | |
| 
 | |
| abstract contract ParaswapResolver is Helpers {
 | |
| 	/**
 | |
| 	 * @dev Sell FTM/ERC20_Token using ParaSwap.
 | |
| 	 * @notice Swap tokens from exchanges like kyber, 0x etc, with calculation done off-chain.
 | |
| 	 * @param buyAddr The address of the token to buy.(For FTM: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
 | |
| 	 * @param sellAddr The address of the token to sell.(For FTM: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
 | |
| 	 * @param sellAmt The amount of the token to sell.
 | |
| 	 * @param unitAmt The amount of buyAmt/sellAmt with slippage.
 | |
| 	 * @param callData Data from paraswap API.
 | |
| 	 * @param setId ID stores the amount of token brought.
 | |
| 	 */
 | |
| 	function swap(
 | |
| 		address buyAddr,
 | |
| 		address sellAddr,
 | |
| 		uint256 sellAmt,
 | |
| 		uint256 unitAmt,
 | |
| 		bytes calldata callData,
 | |
| 		uint256 setId
 | |
| 	)
 | |
| 		external
 | |
| 		payable
 | |
| 		returns (string memory _eventName, bytes memory _eventParam)
 | |
| 	{
 | |
| 		Helpers.SwapData memory swapData = Helpers.SwapData({
 | |
| 			buyToken: TokenInterface(buyAddr),
 | |
| 			sellToken: TokenInterface(sellAddr),
 | |
| 			unitAmt: unitAmt,
 | |
| 			callData: callData,
 | |
| 			_sellAmt: sellAmt,
 | |
| 			_buyAmt: 0
 | |
| 		});
 | |
| 
 | |
| 		swapData = _swap(swapData, setId);
 | |
| 
 | |
| 		_eventName = "LogSwap(address,address,uint256,uint256,uint256)";
 | |
| 		_eventParam = abi.encode(
 | |
| 			address(swapData.buyToken),
 | |
| 			address(swapData.sellToken),
 | |
| 			swapData._buyAmt,
 | |
| 			swapData._sellAmt,
 | |
| 			setId
 | |
| 		);
 | |
| 	}
 | |
| }
 | |
| 
 | |
| contract ConnectV2ParaswapV5Fantom is ParaswapResolver {
 | |
| 	string public name = "Paraswap-v5";
 | |
| }
 | 
