dsa-connectors/contracts/polygon/connectors/limitOrder/helpers.sol
Shriya Tyagi feca05639e
Update contracts/polygon/connectors/limitOrder/helpers.sol
Co-authored-by: Samyak Jain <34437877+KaymasJain@users.noreply.github.com>
2022-03-04 03:35:17 +05:30

86 lines
2.5 KiB
Solidity

pragma solidity ^0.8.1;
// SPDX-License-Identifier: MIT
import { Basic } from "../../common/basic.sol";
import "./interface.sol";
contract Helpers is Basic {
UniLimitOrder limitCon_ = UniLimitOrder(0xfC428E6535dC5Fee30fb57cFc93EBB1D92fdCf6e);
function sortTokenAddress(address _token0, address _token1)
internal
pure
returns (address token0, address token1)
{
if (_token0 > _token1) {
(token0, token1) = (_token1, _token0);
} else {
(token0, token1) = (_token0, _token1);
}
}
struct MintParams {
address token0;
address token1;
uint24 fee;
int24 tickLower;
int24 tickUpper;
uint256 amount;
bool token0to1;
}
/**
* @dev Mint function which interact with Uniswap v3
*/
function _createPosition (MintParams memory params_)
internal
returns (
uint256 tokenId_,
uint128 liquidity_,
uint256 mintAmount_
)
{
uint256 amountSend_;
(TokenInterface token0_, TokenInterface token1_) = changeMaticAddress(
params_.token0,
params_.token1
);
if(params_.token0to1){
amountSend_ = params_.amount == type(uint128).max ? getTokenBal(TokenInterface(params_.token0)) : params_.amount;
convertMaticToWmatic(address(token0_) == wmaticAddr, token0_, amountSend_);
approve(token0_, address(limitCon_), amountSend_);
} else {
amountSend_ = params_.amount == type(uint128).max ? getTokenBal(TokenInterface(params_.token1)) : params_.amount;
convertMaticToWmatic(address(token1_) == wmaticAddr, token1_, amountSend_);
approve(token1_, address(limitCon_), amountSend_);
}
{
(address token0, ) = sortTokenAddress(
address(token0_),
address(token1_)
);
if (token0 != address(token0_)) {
(token0_, token1_) = (token1_, token0_);
}
}
UniLimitOrder.MintParams memory parameter =
UniLimitOrder.MintParams(
address(token0_),
address(token1_),
params_.fee,
params_.tickLower,
params_.tickUpper,
amountSend_,
params_.token0to1
);
(tokenId_, liquidity_, mintAmount_) = limitCon_.createPosition(parameter);
}
}