mirror of
				https://github.com/Instadapp/dsa-connectors.git
				synced 2024-07-29 22:37:00 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Solidity
		
	
	
	
	
	
//SPDX-License-Identifier: MIT
 | 
						|
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 ETH/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 ETH: 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)
 | 
						|
	 * @param sellAddr The address of the token to sell.(For ETH: 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 ConnectV2ParaswapV5Arbitrum is ParaswapResolver {
 | 
						|
	string public name = "Paraswap-v5";
 | 
						|
}
 |