mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
Merge branch 'feat/quickswap' of https://github.com/Instadapp/dsa-connectors into feat/quickswap
This commit is contained in:
parent
c7fc18143c
commit
4162176d96
|
@ -20,7 +20,11 @@ contract Events {
|
||||||
uint256 getId,
|
uint256 getId,
|
||||||
uint256[] setId
|
uint256[] setId
|
||||||
);
|
);
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
|
=======
|
||||||
|
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
event LogBuy(
|
event LogBuy(
|
||||||
address indexed buyToken,
|
address indexed buyToken,
|
||||||
address indexed sellToken,
|
address indexed sellToken,
|
||||||
|
@ -38,4 +42,8 @@ contract Events {
|
||||||
uint256 getId,
|
uint256 getId,
|
||||||
uint256 setId
|
uint256 setId
|
||||||
);
|
);
|
||||||
|
<<<<<<< HEAD
|
||||||
}
|
}
|
||||||
|
=======
|
||||||
|
}
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
|
|
|
@ -2,12 +2,16 @@ pragma solidity ^0.7.0;
|
||||||
|
|
||||||
interface IQuickSwapRouter {
|
interface IQuickSwapRouter {
|
||||||
function factory() external pure returns (address);
|
function factory() external pure returns (address);
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
|
=======
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
function WETH() external pure returns (address);
|
function WETH() external pure returns (address);
|
||||||
|
|
||||||
function addLiquidity(
|
function addLiquidity(
|
||||||
address tokenA,
|
address tokenA,
|
||||||
address tokenB,
|
address tokenB,
|
||||||
|
<<<<<<< HEAD
|
||||||
uint256 amountADesired,
|
uint256 amountADesired,
|
||||||
uint256 amountBDesired,
|
uint256 amountBDesired,
|
||||||
uint256 amountAMin,
|
uint256 amountAMin,
|
||||||
|
@ -94,4 +98,53 @@ interface IQuickSwapFactory {
|
||||||
function createPair(address tokenA, address tokenB)
|
function createPair(address tokenA, address tokenB)
|
||||||
external
|
external
|
||||||
returns (address pair);
|
returns (address pair);
|
||||||
|
=======
|
||||||
|
uint amountADesired,
|
||||||
|
uint amountBDesired,
|
||||||
|
uint amountAMin,
|
||||||
|
uint amountBMin,
|
||||||
|
address to,
|
||||||
|
uint deadline
|
||||||
|
) external returns (uint amountA, uint amountB, uint liquidity);
|
||||||
|
function removeLiquidity(
|
||||||
|
address tokenA,
|
||||||
|
address tokenB,
|
||||||
|
uint liquidity,
|
||||||
|
uint amountAMin,
|
||||||
|
uint amountBMin,
|
||||||
|
address to,
|
||||||
|
uint deadline
|
||||||
|
) external returns (uint amountA, uint amountB);
|
||||||
|
function swapExactTokensForTokens(
|
||||||
|
uint amountIn,
|
||||||
|
uint amountOutMin,
|
||||||
|
address[] calldata path,
|
||||||
|
address to,
|
||||||
|
uint deadline
|
||||||
|
) external returns (uint[] memory amounts);
|
||||||
|
function swapTokensForExactTokens(
|
||||||
|
uint amountOut,
|
||||||
|
uint amountInMax,
|
||||||
|
address[] calldata path,
|
||||||
|
address to,
|
||||||
|
uint deadline
|
||||||
|
) external returns (uint[] memory amounts);
|
||||||
|
|
||||||
|
function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
|
||||||
|
function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
|
||||||
|
function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
|
||||||
|
function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
|
||||||
|
function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
|
||||||
|
}
|
||||||
|
|
||||||
|
interface IQuickSwapFactory {
|
||||||
|
function getPair(address tokenA, address tokenB) external view returns (address pair);
|
||||||
|
function allPairs(uint) external view returns (address pair);
|
||||||
|
function allPairsLength() external view returns (uint);
|
||||||
|
|
||||||
|
function feeTo() external view returns (address);
|
||||||
|
function feeToSetter() external view returns (address);
|
||||||
|
|
||||||
|
function createPair(address tokenA, address tokenB) external returns (address pair);
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,9 +5,15 @@ pragma solidity ^0.7.0;
|
||||||
* @dev Decentralized Exchange.
|
* @dev Decentralized Exchange.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
import {TokenInterface} from "../../common/interfaces.sol";
|
import {TokenInterface} from "../../common/interfaces.sol";
|
||||||
import {Helpers} from "./helpers.sol";
|
import {Helpers} from "./helpers.sol";
|
||||||
import {Events} from "./events.sol";
|
import {Events} from "./events.sol";
|
||||||
|
=======
|
||||||
|
import { TokenInterface } from "../../common/interfaces.sol";
|
||||||
|
import { Helpers } from "./helpers.sol";
|
||||||
|
import { Events } from "./events.sol";
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
|
|
||||||
abstract contract QuickpswapResolver is Helpers, Events {
|
abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
/**
|
/**
|
||||||
|
@ -20,7 +26,11 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
* @param slippage Slippage amount.
|
* @param slippage Slippage amount.
|
||||||
* @param getId ID to retrieve amtA.
|
* @param getId ID to retrieve amtA.
|
||||||
* @param setId ID stores the amount of pools tokens received.
|
* @param setId ID stores the amount of pools tokens received.
|
||||||
|
<<<<<<< HEAD
|
||||||
*/
|
*/
|
||||||
|
=======
|
||||||
|
*/
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
function deposit(
|
function deposit(
|
||||||
address tokenA,
|
address tokenA,
|
||||||
address tokenB,
|
address tokenB,
|
||||||
|
@ -29,6 +39,7 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
uint256 slippage,
|
uint256 slippage,
|
||||||
uint256 getId,
|
uint256 getId,
|
||||||
uint256 setId
|
uint256 setId
|
||||||
|
<<<<<<< HEAD
|
||||||
)
|
)
|
||||||
external
|
external
|
||||||
payable
|
payable
|
||||||
|
@ -55,6 +66,22 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
getId,
|
getId,
|
||||||
setId
|
setId
|
||||||
);
|
);
|
||||||
|
=======
|
||||||
|
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
|
uint _amt = getUint(getId, amtA);
|
||||||
|
|
||||||
|
(uint _amtA, uint _amtB, uint _uniAmt) = _addLiquidity(
|
||||||
|
tokenA,
|
||||||
|
tokenB,
|
||||||
|
_amt,
|
||||||
|
unitAmt,
|
||||||
|
slippage
|
||||||
|
);
|
||||||
|
setUint(setId, _uniAmt);
|
||||||
|
|
||||||
|
_eventName = "LogDepositLiquidity(address,address,uint256,uint256,uint256,uint256,uint256)";
|
||||||
|
_eventParam = abi.encode(tokenA, tokenB, _amtA, _amtB, _uniAmt, getId, setId);
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -67,7 +94,11 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
* @param unitAmtB The unit amount of amtB/uniAmt with slippage.
|
* @param unitAmtB The unit amount of amtB/uniAmt with slippage.
|
||||||
* @param getId ID to retrieve uniAmt.
|
* @param getId ID to retrieve uniAmt.
|
||||||
* @param setIds Array of IDs to store the amount tokens received.
|
* @param setIds Array of IDs to store the amount tokens received.
|
||||||
|
<<<<<<< HEAD
|
||||||
*/
|
*/
|
||||||
|
=======
|
||||||
|
*/
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
function withdraw(
|
function withdraw(
|
||||||
address tokenA,
|
address tokenA,
|
||||||
address tokenB,
|
address tokenB,
|
||||||
|
@ -76,6 +107,7 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
uint256 unitAmtB,
|
uint256 unitAmtB,
|
||||||
uint256 getId,
|
uint256 getId,
|
||||||
uint256[] calldata setIds
|
uint256[] calldata setIds
|
||||||
|
<<<<<<< HEAD
|
||||||
)
|
)
|
||||||
external
|
external
|
||||||
payable
|
payable
|
||||||
|
@ -84,6 +116,12 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
uint256 _amt = getUint(getId, uniAmt);
|
uint256 _amt = getUint(getId, uniAmt);
|
||||||
|
|
||||||
(uint256 _amtA, uint256 _amtB, uint256 _uniAmt) = _removeLiquidity(
|
(uint256 _amtA, uint256 _amtB, uint256 _uniAmt) = _removeLiquidity(
|
||||||
|
=======
|
||||||
|
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
|
uint _amt = getUint(getId, uniAmt);
|
||||||
|
|
||||||
|
(uint _amtA, uint _amtB, uint _uniAmt) = _removeLiquidity(
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
tokenA,
|
tokenA,
|
||||||
tokenB,
|
tokenB,
|
||||||
_amt,
|
_amt,
|
||||||
|
@ -93,6 +131,7 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
|
|
||||||
setUint(setIds[0], _amtA);
|
setUint(setIds[0], _amtA);
|
||||||
setUint(setIds[1], _amtB);
|
setUint(setIds[1], _amtB);
|
||||||
|
<<<<<<< HEAD
|
||||||
|
|
||||||
_eventName = "LogWithdrawLiquidity(address,address,uint256,uint256,uint256,uint256,uint256[])";
|
_eventName = "LogWithdrawLiquidity(address,address,uint256,uint256,uint256,uint256,uint256[])";
|
||||||
_eventParam = abi.encode(
|
_eventParam = abi.encode(
|
||||||
|
@ -104,6 +143,11 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
getId,
|
getId,
|
||||||
setIds
|
setIds
|
||||||
);
|
);
|
||||||
|
=======
|
||||||
|
|
||||||
|
_eventName = "LogWithdrawLiquidity(address,address,uint256,uint256,uint256,uint256,uint256[])";
|
||||||
|
_eventParam = abi.encode(tokenA, tokenB, _amtA, _amtB, _uniAmt, getId, setIds);
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -115,7 +159,11 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
* @param unitAmt The unit amount of sellAmt/buyAmt with slippage.
|
* @param unitAmt The unit amount of sellAmt/buyAmt with slippage.
|
||||||
* @param getId ID to retrieve buyAmt.
|
* @param getId ID to retrieve buyAmt.
|
||||||
* @param setId ID to store the amount of tokens sold.
|
* @param setId ID to store the amount of tokens sold.
|
||||||
|
<<<<<<< HEAD
|
||||||
*/
|
*/
|
||||||
|
=======
|
||||||
|
*/
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
function buy(
|
function buy(
|
||||||
address buyAddr,
|
address buyAddr,
|
||||||
address sellAddr,
|
address sellAddr,
|
||||||
|
@ -123,6 +171,7 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
uint256 unitAmt,
|
uint256 unitAmt,
|
||||||
uint256 getId,
|
uint256 getId,
|
||||||
uint256 setId
|
uint256 setId
|
||||||
|
<<<<<<< HEAD
|
||||||
)
|
)
|
||||||
external
|
external
|
||||||
payable
|
payable
|
||||||
|
@ -140,18 +189,34 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
|
|
||||||
uint256 _slippageAmt = convert18ToDec(
|
uint256 _slippageAmt = convert18ToDec(
|
||||||
_sellAddr.decimals(),
|
_sellAddr.decimals(),
|
||||||
|
=======
|
||||||
|
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
|
uint _buyAmt = getUint(getId, buyAmt);
|
||||||
|
(TokenInterface _buyAddr, TokenInterface _sellAddr) = changeMaticAddress(buyAddr, sellAddr);
|
||||||
|
address[] memory paths = getPaths(address(_buyAddr), address(_sellAddr));
|
||||||
|
|
||||||
|
uint _slippageAmt = convert18ToDec(_sellAddr.decimals(),
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
wmul(unitAmt, convertTo18(_buyAddr.decimals(), _buyAmt))
|
wmul(unitAmt, convertTo18(_buyAddr.decimals(), _buyAmt))
|
||||||
);
|
);
|
||||||
|
|
||||||
checkPair(paths);
|
checkPair(paths);
|
||||||
|
<<<<<<< HEAD
|
||||||
uint256 _expectedAmt = getExpectedSellAmt(paths, _buyAmt);
|
uint256 _expectedAmt = getExpectedSellAmt(paths, _buyAmt);
|
||||||
|
=======
|
||||||
|
uint _expectedAmt = getExpectedSellAmt(paths, _buyAmt);
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
require(_slippageAmt >= _expectedAmt, "Too much slippage");
|
require(_slippageAmt >= _expectedAmt, "Too much slippage");
|
||||||
|
|
||||||
bool isEth = address(_sellAddr) == wmaticAddr;
|
bool isEth = address(_sellAddr) == wmaticAddr;
|
||||||
convertMaticToWmatic(isEth, _sellAddr, _expectedAmt);
|
convertMaticToWmatic(isEth, _sellAddr, _expectedAmt);
|
||||||
approve(_sellAddr, address(router), _expectedAmt);
|
approve(_sellAddr, address(router), _expectedAmt);
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
uint256 _sellAmt = router.swapTokensForExactTokens(
|
uint256 _sellAmt = router.swapTokensForExactTokens(
|
||||||
|
=======
|
||||||
|
uint _sellAmt = router.swapTokensForExactTokens(
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
_buyAmt,
|
_buyAmt,
|
||||||
_expectedAmt,
|
_expectedAmt,
|
||||||
paths,
|
paths,
|
||||||
|
@ -165,6 +230,7 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
setUint(setId, _sellAmt);
|
setUint(setId, _sellAmt);
|
||||||
|
|
||||||
_eventName = "LogBuy(address,address,uint256,uint256,uint256,uint256)";
|
_eventName = "LogBuy(address,address,uint256,uint256,uint256,uint256)";
|
||||||
|
<<<<<<< HEAD
|
||||||
_eventParam = abi.encode(
|
_eventParam = abi.encode(
|
||||||
buyAddr,
|
buyAddr,
|
||||||
sellAddr,
|
sellAddr,
|
||||||
|
@ -173,6 +239,9 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
getId,
|
getId,
|
||||||
setId
|
setId
|
||||||
);
|
);
|
||||||
|
=======
|
||||||
|
_eventParam = abi.encode(buyAddr, sellAddr, _buyAmt, _sellAmt, getId, setId);
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -184,7 +253,11 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
* @param unitAmt The unit amount of buyAmt/sellAmt with slippage.
|
* @param unitAmt The unit amount of buyAmt/sellAmt with slippage.
|
||||||
* @param getId ID to retrieve sellAmt.
|
* @param getId ID to retrieve sellAmt.
|
||||||
* @param setId ID stores the amount of token brought.
|
* @param setId ID stores the amount of token brought.
|
||||||
|
<<<<<<< HEAD
|
||||||
*/
|
*/
|
||||||
|
=======
|
||||||
|
*/
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
function sell(
|
function sell(
|
||||||
address buyAddr,
|
address buyAddr,
|
||||||
address sellAddr,
|
address sellAddr,
|
||||||
|
@ -192,6 +265,7 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
uint256 unitAmt,
|
uint256 unitAmt,
|
||||||
uint256 getId,
|
uint256 getId,
|
||||||
uint256 setId
|
uint256 setId
|
||||||
|
<<<<<<< HEAD
|
||||||
)
|
)
|
||||||
external
|
external
|
||||||
payable
|
payable
|
||||||
|
@ -215,18 +289,40 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
|
|
||||||
uint256 _slippageAmt = convert18ToDec(
|
uint256 _slippageAmt = convert18ToDec(
|
||||||
_buyAddr.decimals(),
|
_buyAddr.decimals(),
|
||||||
|
=======
|
||||||
|
) external payable returns (string memory _eventName, bytes memory _eventParam) {
|
||||||
|
uint _sellAmt = getUint(getId, sellAmt);
|
||||||
|
(TokenInterface _buyAddr, TokenInterface _sellAddr) = changeMaticAddress(buyAddr, sellAddr);
|
||||||
|
address[] memory paths = getPaths(address(_buyAddr), address(_sellAddr));
|
||||||
|
|
||||||
|
if (_sellAmt == uint(-1)) {
|
||||||
|
_sellAmt = sellAddr == maticAddr ?
|
||||||
|
address(this).balance :
|
||||||
|
_sellAddr.balanceOf(address(this));
|
||||||
|
}
|
||||||
|
|
||||||
|
uint _slippageAmt = convert18ToDec(_buyAddr.decimals(),
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
wmul(unitAmt, convertTo18(_sellAddr.decimals(), _sellAmt))
|
wmul(unitAmt, convertTo18(_sellAddr.decimals(), _sellAmt))
|
||||||
);
|
);
|
||||||
|
|
||||||
checkPair(paths);
|
checkPair(paths);
|
||||||
|
<<<<<<< HEAD
|
||||||
uint256 _expectedAmt = getExpectedBuyAmt(paths, _sellAmt);
|
uint256 _expectedAmt = getExpectedBuyAmt(paths, _sellAmt);
|
||||||
|
=======
|
||||||
|
uint _expectedAmt = getExpectedBuyAmt(paths, _sellAmt);
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
require(_slippageAmt <= _expectedAmt, "Too much slippage");
|
require(_slippageAmt <= _expectedAmt, "Too much slippage");
|
||||||
|
|
||||||
bool isEth = address(_sellAddr) == wmaticAddr;
|
bool isEth = address(_sellAddr) == wmaticAddr;
|
||||||
convertMaticToWmatic(isEth, _sellAddr, _sellAmt);
|
convertMaticToWmatic(isEth, _sellAddr, _sellAmt);
|
||||||
approve(_sellAddr, address(router), _sellAmt);
|
approve(_sellAddr, address(router), _sellAmt);
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
uint256 _buyAmt = router.swapExactTokensForTokens(
|
uint256 _buyAmt = router.swapExactTokensForTokens(
|
||||||
|
=======
|
||||||
|
uint _buyAmt = router.swapExactTokensForTokens(
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
_sellAmt,
|
_sellAmt,
|
||||||
_expectedAmt,
|
_expectedAmt,
|
||||||
paths,
|
paths,
|
||||||
|
@ -240,6 +336,7 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
setUint(setId, _buyAmt);
|
setUint(setId, _buyAmt);
|
||||||
|
|
||||||
_eventName = "LogSell(address,address,uint256,uint256,uint256,uint256)";
|
_eventName = "LogSell(address,address,uint256,uint256,uint256,uint256)";
|
||||||
|
<<<<<<< HEAD
|
||||||
_eventParam = abi.encode(
|
_eventParam = abi.encode(
|
||||||
buyAddr,
|
buyAddr,
|
||||||
sellAddr,
|
sellAddr,
|
||||||
|
@ -248,6 +345,9 @@ abstract contract QuickpswapResolver is Helpers, Events {
|
||||||
getId,
|
getId,
|
||||||
setId
|
setId
|
||||||
);
|
);
|
||||||
|
=======
|
||||||
|
_eventParam = abi.encode(buyAddr, sellAddr, _buyAmt, _sellAmt, getId, setId);
|
||||||
|
>>>>>>> d9a7bfba85acceb302ac1d1dd854e9b380976557
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
169
test/quickswap-polygon/quickswap.test.js
Normal file
169
test/quickswap-polygon/quickswap.test.js
Normal file
|
@ -0,0 +1,169 @@
|
||||||
|
const { expect } = require("chai");
|
||||||
|
const hre = require("hardhat");
|
||||||
|
const { waffle, ethers } = hre;
|
||||||
|
const { provider } = waffle
|
||||||
|
|
||||||
|
const deployAndEnableConnector = require("../../scripts/deployAndEnableConnector.js")
|
||||||
|
const buildDSAv2 = require("../../scripts/buildDSAv2")
|
||||||
|
const encodeSpells = require("../../scripts/encodeSpells.js")
|
||||||
|
const getMasterSigner = require("../../scripts/getMasterSigner")
|
||||||
|
const addLiquidity = require("../../scripts/addLiquidity");
|
||||||
|
|
||||||
|
const addresses = require("../../scripts/constant/addresses");
|
||||||
|
const abis = require("../../scripts/constant/abis");
|
||||||
|
|
||||||
|
const connectV2QuickswapArtifacts = require("../../artifacts/contracts/polygon/connectors/quickswap/main.sol/ConnectV2Quickswap.json");
|
||||||
|
|
||||||
|
const DAI_ADDR = "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063"
|
||||||
|
|
||||||
|
describe("Quickswap", function () {
|
||||||
|
const connectorName = "Quickpswap-v1.1"
|
||||||
|
|
||||||
|
let dsaWallet0
|
||||||
|
let masterSigner;
|
||||||
|
let instaConnectorsV2;
|
||||||
|
let connector;
|
||||||
|
|
||||||
|
const wallets = provider.getWallets()
|
||||||
|
const [wallet0, wallet1, wallet2, wallet3] = wallets
|
||||||
|
before(async () => {
|
||||||
|
// await hre.network.provider.request({
|
||||||
|
// method: "hardhat_reset",
|
||||||
|
// params: [
|
||||||
|
// {
|
||||||
|
// forking: {
|
||||||
|
// jsonRpcUrl: hre.config.networks.hardhat.forking.url,
|
||||||
|
// blockNumber: 13005785,
|
||||||
|
// },
|
||||||
|
// },
|
||||||
|
// ],
|
||||||
|
// });
|
||||||
|
masterSigner = await getMasterSigner(wallet3)
|
||||||
|
instaConnectorsV2 = await ethers.getContractAt(abis.core.connectorsV2, addresses.core.connectorsV2);
|
||||||
|
connector = await deployAndEnableConnector({
|
||||||
|
connectorName,
|
||||||
|
contractArtifact: connectV2QuickswapArtifacts,
|
||||||
|
signer: masterSigner,
|
||||||
|
connectors: instaConnectorsV2
|
||||||
|
})
|
||||||
|
console.log("Connector address", connector.address)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("Should have contracts deployed.", async function () {
|
||||||
|
expect(!!instaConnectorsV2.address).to.be.true;
|
||||||
|
expect(!!connector.address).to.be.true;
|
||||||
|
expect(!!masterSigner.address).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("DSA wallet setup", function () {
|
||||||
|
it("Should build DSA v2", async function () {
|
||||||
|
dsaWallet0 = await buildDSAv2(wallet0.address)
|
||||||
|
expect(!!dsaWallet0.address).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Deposit ETH & DAI into DSA wallet", async function () {
|
||||||
|
await wallet0.sendTransaction({
|
||||||
|
to: dsaWallet0.address,
|
||||||
|
value: ethers.utils.parseEther("10")
|
||||||
|
});
|
||||||
|
expect(await ethers.provider.getBalance(dsaWallet0.address)).to.be.gte(ethers.utils.parseEther("10"));
|
||||||
|
|
||||||
|
await addLiquidity("dai", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Deposit ETH & USDT into DSA wallet", async function () {
|
||||||
|
await wallet0.sendTransaction({
|
||||||
|
to: dsaWallet0.address,
|
||||||
|
value: ethers.utils.parseEther("10")
|
||||||
|
});
|
||||||
|
expect(await ethers.provider.getBalance(dsaWallet0.address)).to.be.gte(ethers.utils.parseEther("10"));
|
||||||
|
|
||||||
|
await addLiquidity("usdt", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Main", function () {
|
||||||
|
it("Should deposit successfully", async function () {
|
||||||
|
const ethAmount = ethers.utils.parseEther("100") // 1 ETH
|
||||||
|
const daiUnitAmount = ethers.utils.parseUnits("4", 6) // 1 ETH
|
||||||
|
const usdtAmount = ethers.utils.parseEther("400") / Math.pow(10, 12) // 1 ETH
|
||||||
|
const ethAddress = "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE"
|
||||||
|
|
||||||
|
const getId = "0"
|
||||||
|
const setId = "0"
|
||||||
|
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "deposit",
|
||||||
|
args: [
|
||||||
|
ethAddress,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethAmount,
|
||||||
|
daiUnitAmount,
|
||||||
|
"500000000000000000",
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
||||||
|
let receipt = await tx.wait()
|
||||||
|
}).timeout(10000000000);
|
||||||
|
|
||||||
|
it("Should withdraw successfully", async function () {
|
||||||
|
const ethAmount = ethers.utils.parseEther("0.1") // 1 ETH
|
||||||
|
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||||
|
|
||||||
|
const getId = "0"
|
||||||
|
const setIds = ["0", "0"]
|
||||||
|
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "withdraw",
|
||||||
|
args: [
|
||||||
|
ethAddress,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethAmount,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
getId,
|
||||||
|
setIds
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
||||||
|
let receipt = await tx.wait()
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should buy successfully", async function () {
|
||||||
|
const ethAmount = ethers.utils.parseEther("0.1") // 1 ETH
|
||||||
|
const daiUnitAmount = ethers.utils.parseEther("4000") // 1 ETH
|
||||||
|
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||||
|
|
||||||
|
const getId = "0"
|
||||||
|
const setId = "0"
|
||||||
|
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "buy",
|
||||||
|
args: [
|
||||||
|
ethAddress,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethAmount,
|
||||||
|
daiUnitAmount,
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
||||||
|
let receipt = await tx.wait()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
170
test/sushiswap/sushiswap.test.js
Normal file
170
test/sushiswap/sushiswap.test.js
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
const { expect } = require("chai");
|
||||||
|
const hre = require("hardhat");
|
||||||
|
const { waffle, ethers } = hre;
|
||||||
|
const { provider } = waffle
|
||||||
|
|
||||||
|
const deployAndEnableConnector = require("../../scripts/deployAndEnableConnector.js")
|
||||||
|
const buildDSAv2 = require("../../scripts/buildDSAv2")
|
||||||
|
const encodeSpells = require("../../scripts/encodeSpells.js")
|
||||||
|
const getMasterSigner = require("../../scripts/getMasterSigner")
|
||||||
|
const addLiquidity = require("../../scripts/addLiquidity");
|
||||||
|
|
||||||
|
const addresses = require("../../scripts/constant/addresses");
|
||||||
|
const abis = require("../../scripts/constant/abis");
|
||||||
|
|
||||||
|
const connectV2SushiswapArtifacts = require("../../artifacts/contracts/mainnet/connectors/sushiswap/main.sol/ConnectV2Sushiswap.json");
|
||||||
|
|
||||||
|
const DAI_ADDR = "0x6b175474e89094c44da98b954eedeac495271d0f"
|
||||||
|
|
||||||
|
describe("Sushiswap", function () {
|
||||||
|
const connectorName = "Sushiswap-v1"
|
||||||
|
|
||||||
|
let dsaWallet0
|
||||||
|
let masterSigner;
|
||||||
|
let instaConnectorsV2;
|
||||||
|
let connector;
|
||||||
|
|
||||||
|
const wallets = provider.getWallets()
|
||||||
|
const [wallet0, wallet1, wallet2, wallet3] = wallets
|
||||||
|
before(async () => {
|
||||||
|
await hre.network.provider.request({
|
||||||
|
method: "hardhat_reset",
|
||||||
|
params: [
|
||||||
|
{
|
||||||
|
forking: {
|
||||||
|
jsonRpcUrl: hre.config.networks.hardhat.forking.url,
|
||||||
|
blockNumber: 13005785,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
masterSigner = await getMasterSigner(wallet3)
|
||||||
|
instaConnectorsV2 = await ethers.getContractAt(abis.core.connectorsV2, addresses.core.connectorsV2);
|
||||||
|
connector = await deployAndEnableConnector({
|
||||||
|
connectorName,
|
||||||
|
contractArtifact: connectV2SushiswapArtifacts,
|
||||||
|
signer: masterSigner,
|
||||||
|
connectors: instaConnectorsV2
|
||||||
|
})
|
||||||
|
console.log("Connector address", connector.address)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("Should have contracts deployed.", async function () {
|
||||||
|
expect(!!instaConnectorsV2.address).to.be.true;
|
||||||
|
expect(!!connector.address).to.be.true;
|
||||||
|
expect(!!masterSigner.address).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("DSA wallet setup", function () {
|
||||||
|
it("Should build DSA v2", async function () {
|
||||||
|
dsaWallet0 = await buildDSAv2(wallet0.address)
|
||||||
|
expect(!!dsaWallet0.address).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Deposit ETH & DAI into DSA wallet", async function () {
|
||||||
|
await wallet0.sendTransaction({
|
||||||
|
to: dsaWallet0.address,
|
||||||
|
value: ethers.utils.parseEther("10")
|
||||||
|
});
|
||||||
|
expect(await ethers.provider.getBalance(dsaWallet0.address)).to.be.gte(ethers.utils.parseEther("10"));
|
||||||
|
|
||||||
|
await addLiquidity("dai", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Deposit ETH & USDT into DSA wallet", async function () {
|
||||||
|
await wallet0.sendTransaction({
|
||||||
|
to: dsaWallet0.address,
|
||||||
|
value: ethers.utils.parseEther("10")
|
||||||
|
});
|
||||||
|
expect(await ethers.provider.getBalance(dsaWallet0.address)).to.be.gte(ethers.utils.parseEther("10"));
|
||||||
|
|
||||||
|
await addLiquidity("usdt", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Main", function () {
|
||||||
|
|
||||||
|
it("Should deposit successfully", async function () {
|
||||||
|
const ethAmount = ethers.utils.parseEther("0.1") // 1 ETH
|
||||||
|
const daiUnitAmount = ethers.utils.parseEther("4000") // 1 ETH
|
||||||
|
const usdtAmount = ethers.utils.parseEther("400") / Math.pow(10, 12) // 1 ETH
|
||||||
|
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||||
|
|
||||||
|
const getId = "0"
|
||||||
|
const setId = "0"
|
||||||
|
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "deposit",
|
||||||
|
args: [
|
||||||
|
ethAddress,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethAmount,
|
||||||
|
daiUnitAmount,
|
||||||
|
"500000000000000000",
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
||||||
|
let receipt = await tx.wait()
|
||||||
|
}).timeout(10000000000);
|
||||||
|
|
||||||
|
it("Should withdraw successfully", async function () {
|
||||||
|
const ethAmount = ethers.utils.parseEther("0.1") // 1 ETH
|
||||||
|
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||||
|
|
||||||
|
const getId = "0"
|
||||||
|
const setIds = ["0", "0"]
|
||||||
|
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "withdraw",
|
||||||
|
args: [
|
||||||
|
ethAddress,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethAmount,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
getId,
|
||||||
|
setIds
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
||||||
|
let receipt = await tx.wait()
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Should buy successfully", async function () {
|
||||||
|
const ethAmount = ethers.utils.parseEther("0.1") // 1 ETH
|
||||||
|
const daiUnitAmount = ethers.utils.parseEther("4000") // 1 ETH
|
||||||
|
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||||
|
|
||||||
|
const getId = "0"
|
||||||
|
const setId = "0"
|
||||||
|
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "buy",
|
||||||
|
args: [
|
||||||
|
ethAddress,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethAmount,
|
||||||
|
daiUnitAmount,
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
||||||
|
let receipt = await tx.wait()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
237
test/sushiswapIncentive/sushiIncentive.test.js
Normal file
237
test/sushiswapIncentive/sushiIncentive.test.js
Normal file
|
@ -0,0 +1,237 @@
|
||||||
|
const { expect } = require("chai");
|
||||||
|
const hre = require("hardhat");
|
||||||
|
const { waffle, ethers } = hre;
|
||||||
|
const { provider } = waffle
|
||||||
|
|
||||||
|
const deployAndEnableConnector = require("../../scripts/deployAndEnableConnector.js")
|
||||||
|
const buildDSAv2 = require("../../scripts/buildDSAv2")
|
||||||
|
const encodeSpells = require("../../scripts/encodeSpells.js")
|
||||||
|
const getMasterSigner = require("../../scripts/getMasterSigner")
|
||||||
|
const addLiquidity = require("../../scripts/addLiquidity");
|
||||||
|
|
||||||
|
const addresses = require("../../scripts/constant/addresses");
|
||||||
|
const abis = require("../../scripts/constant/abis");
|
||||||
|
|
||||||
|
const connectV2SushiswapArtifacts = require("../../artifacts/contracts/mainnet/connectors/sushiswap/main.sol/ConnectV2Sushiswap.json");
|
||||||
|
const connectV2SushiswapIncentiveArtifacts = require("../../artifacts/contracts/mainnet/connectors/sushi-incentive/main.sol/ConnectV2SushiswapIncentive.json");
|
||||||
|
|
||||||
|
const DAI_ADDR = "0x6b175474e89094c44da98b954eedeac495271d0f"
|
||||||
|
const WETH_ADDR = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
|
||||||
|
|
||||||
|
describe("Sushiswap", function () {
|
||||||
|
const connectorName = "Sushiswap-v1"
|
||||||
|
const incentiveConnectorName = "Sushiswp-Incentive-v1"
|
||||||
|
|
||||||
|
let dsaWallet0
|
||||||
|
let masterSigner;
|
||||||
|
let instaConnectorsV2;
|
||||||
|
let connector, connectorIncentive;
|
||||||
|
|
||||||
|
const wallets = provider.getWallets()
|
||||||
|
const [wallet0, wallet1, wallet2, wallet3] = wallets
|
||||||
|
before(async () => {
|
||||||
|
await hre.network.provider.request({
|
||||||
|
method: "hardhat_reset",
|
||||||
|
params: [
|
||||||
|
{
|
||||||
|
forking: {
|
||||||
|
jsonRpcUrl: hre.config.networks.hardhat.forking.url,
|
||||||
|
blockNumber: 13005785,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
masterSigner = await getMasterSigner(wallet3)
|
||||||
|
instaConnectorsV2 = await ethers.getContractAt(abis.core.connectorsV2, addresses.core.connectorsV2);
|
||||||
|
connector = await deployAndEnableConnector({
|
||||||
|
connectorName,
|
||||||
|
contractArtifact: connectV2SushiswapArtifacts,
|
||||||
|
signer: masterSigner,
|
||||||
|
connectors: instaConnectorsV2
|
||||||
|
})
|
||||||
|
console.log("Connector address", connector.address)
|
||||||
|
|
||||||
|
connectorIncentive = await deployAndEnableConnector({
|
||||||
|
connectorName: incentiveConnectorName,
|
||||||
|
contractArtifact: connectV2SushiswapIncentiveArtifacts,
|
||||||
|
signer: masterSigner,
|
||||||
|
connectors: instaConnectorsV2
|
||||||
|
})
|
||||||
|
console.log("Incentive Connector address", connectorIncentive.address)
|
||||||
|
})
|
||||||
|
|
||||||
|
it("Should have contracts deployed.", async function () {
|
||||||
|
expect(!!instaConnectorsV2.address).to.be.true;
|
||||||
|
expect(!!connector.address).to.be.true;
|
||||||
|
expect(!!masterSigner.address).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("DSA wallet setup", function () {
|
||||||
|
it("Should build DSA v2", async function () {
|
||||||
|
dsaWallet0 = await buildDSAv2(wallet0.address)
|
||||||
|
expect(!!dsaWallet0.address).to.be.true;
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Deposit ETH & DAI into DSA wallet", async function () {
|
||||||
|
await wallet0.sendTransaction({
|
||||||
|
to: dsaWallet0.address,
|
||||||
|
value: ethers.utils.parseEther("10")
|
||||||
|
});
|
||||||
|
expect(await ethers.provider.getBalance(dsaWallet0.address)).to.be.gte(ethers.utils.parseEther("10"));
|
||||||
|
|
||||||
|
await addLiquidity("dai", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
|
});
|
||||||
|
|
||||||
|
it("Deposit ETH & USDT into DSA wallet", async function () {
|
||||||
|
await wallet0.sendTransaction({
|
||||||
|
to: dsaWallet0.address,
|
||||||
|
value: ethers.utils.parseEther("10")
|
||||||
|
});
|
||||||
|
expect(await ethers.provider.getBalance(dsaWallet0.address)).to.be.gte(ethers.utils.parseEther("10"));
|
||||||
|
|
||||||
|
await addLiquidity("usdt", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("Main", function () {
|
||||||
|
|
||||||
|
it("Should deposit successfully", async function () {
|
||||||
|
const ethAmount = ethers.utils.parseEther("2") // 1 ETH
|
||||||
|
const daiUnitAmount = ethers.utils.parseEther("4000") // 1 ETH
|
||||||
|
const usdtAmount = ethers.utils.parseEther("400") / Math.pow(10, 12) // 1 ETH
|
||||||
|
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||||
|
|
||||||
|
const getId = "0"
|
||||||
|
const setId = "0"
|
||||||
|
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "deposit",
|
||||||
|
args: [
|
||||||
|
ethAddress,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethAmount,
|
||||||
|
daiUnitAmount,
|
||||||
|
"500000000000000000",
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
],
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
||||||
|
await tx.wait()
|
||||||
|
|
||||||
|
describe("Incentive", () => {
|
||||||
|
it("Should deposit successfully", async () => {
|
||||||
|
const getId = 0
|
||||||
|
const setId = 0
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: incentiveConnectorName,
|
||||||
|
method: "deposit",
|
||||||
|
args: [
|
||||||
|
WETH_ADDR,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethers.utils.parseEther("10"),
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet0.address)
|
||||||
|
await tx.wait();
|
||||||
|
})
|
||||||
|
|
||||||
|
it("Should harvest successfully", async () => {
|
||||||
|
const setId = 0
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: incentiveConnectorName,
|
||||||
|
method: "harvest",
|
||||||
|
args: [
|
||||||
|
WETH_ADDR,
|
||||||
|
DAI_ADDR,
|
||||||
|
setId
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet0.address)
|
||||||
|
await tx.wait();
|
||||||
|
})
|
||||||
|
|
||||||
|
it("Should harvest and withdraw successfully", async () => {
|
||||||
|
const getId = 0
|
||||||
|
const setId = 0
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: incentiveConnectorName,
|
||||||
|
method: "withdrawAndHarvest",
|
||||||
|
args: [
|
||||||
|
WETH_ADDR,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethers.utils.parseEther("1"),
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet0.address)
|
||||||
|
await tx.wait();
|
||||||
|
})
|
||||||
|
|
||||||
|
it("Should withdraw successfully", async () => {
|
||||||
|
const getId = 0
|
||||||
|
const setId = 0
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: incentiveConnectorName,
|
||||||
|
method: "withdraw",
|
||||||
|
args: [
|
||||||
|
WETH_ADDR,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethers.utils.parseEther("1"),
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet0.address)
|
||||||
|
await tx.wait();
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}).timeout(10000000000);
|
||||||
|
|
||||||
|
it("Should buy successfully", async function () {
|
||||||
|
const ethAmount = ethers.utils.parseEther("0.1") // 1 ETH
|
||||||
|
const daiUnitAmount = ethers.utils.parseEther("4000") // 1 ETH
|
||||||
|
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||||
|
|
||||||
|
const getId = "0"
|
||||||
|
const setId = "0"
|
||||||
|
|
||||||
|
const spells = [
|
||||||
|
{
|
||||||
|
connector: connectorName,
|
||||||
|
method: "buy",
|
||||||
|
args: [
|
||||||
|
ethAddress,
|
||||||
|
DAI_ADDR,
|
||||||
|
ethAmount,
|
||||||
|
daiUnitAmount,
|
||||||
|
getId,
|
||||||
|
setId
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
||||||
|
let receipt = await tx.wait()
|
||||||
|
});
|
||||||
|
});
|
||||||
|
})
|
Loading…
Reference in New Issue
Block a user