mirror of
https://github.com/Instadapp/dsa-connectors.git
synced 2024-07-29 22:37:00 +00:00
refactor: minor fixes and implement ETH-INST pool test
This commit is contained in:
parent
cff2edda79
commit
1252c0f427
|
@ -18,7 +18,7 @@ contract Events {
|
||||||
);
|
);
|
||||||
|
|
||||||
event LogIncentiveCreated(
|
event LogIncentiveCreated(
|
||||||
uint256 tokenId,
|
address poolAddr,
|
||||||
uint256 startTime,
|
uint256 startTime,
|
||||||
uint256 endTime,
|
uint256 endTime,
|
||||||
uint256 reward
|
uint256 reward
|
||||||
|
|
|
@ -177,24 +177,21 @@ abstract contract UniswapResolver is Helpers, Events {
|
||||||
* @param _rewardToken _rewardToken address
|
* @param _rewardToken _rewardToken address
|
||||||
* @param _length incentive length
|
* @param _length incentive length
|
||||||
* @param _refundee refundee address
|
* @param _refundee refundee address
|
||||||
* @param _tokenId NFT LP token id
|
* @param _poolAddr Uniswap V3 Pool address
|
||||||
* @param _reward reward amount
|
* @param _reward reward amount
|
||||||
*/
|
*/
|
||||||
function createIncentive(
|
function createIncentive(
|
||||||
address _rewardToken,
|
address _rewardToken,
|
||||||
uint256 _length,
|
uint256 _length,
|
||||||
address _refundee,
|
address _refundee,
|
||||||
uint256 _tokenId,
|
address _poolAddr,
|
||||||
uint256 _reward
|
uint256 _reward
|
||||||
)
|
)
|
||||||
external
|
external
|
||||||
payable
|
payable
|
||||||
returns (string memory _eventName, bytes memory _eventParam)
|
returns (string memory _eventName, bytes memory _eventParam)
|
||||||
{
|
{
|
||||||
if (_tokenId == 0) _tokenId = _getLastNftId(address(this));
|
IUniswapV3Pool pool = IUniswapV3Pool(_poolAddr);
|
||||||
address poolAddr = getPoolAddress(_tokenId);
|
|
||||||
|
|
||||||
IUniswapV3Pool pool = IUniswapV3Pool(poolAddr);
|
|
||||||
uint256 _startTime = block.timestamp;
|
uint256 _startTime = block.timestamp;
|
||||||
uint256 _endTime = _startTime + _length;
|
uint256 _endTime = _startTime + _length;
|
||||||
IUniswapV3Staker.IncentiveKey memory _key = IUniswapV3Staker
|
IUniswapV3Staker.IncentiveKey memory _key = IUniswapV3Staker
|
||||||
|
@ -205,10 +202,13 @@ abstract contract UniswapResolver is Helpers, Events {
|
||||||
_endTime,
|
_endTime,
|
||||||
_refundee
|
_refundee
|
||||||
);
|
);
|
||||||
|
if (_rewardToken != ethAddr) {
|
||||||
|
IERC20Minimal(_rewardToken).approve(address(staker), _reward);
|
||||||
|
}
|
||||||
staker.createIncentive(_key, _reward);
|
staker.createIncentive(_key, _reward);
|
||||||
|
|
||||||
_eventName = "LogIncentiveCreated(uint256,uint256,uint256,uint256)";
|
_eventName = "LogIncentiveCreated(address,uint256,uint256,uint256)";
|
||||||
_eventParam = abi.encode(_tokenId, _startTime, _endTime, _reward);
|
_eventParam = abi.encode(_poolAddr, _startTime, _endTime, _reward);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -50,6 +50,15 @@ const tokenMapping = {
|
||||||
await mineTx(contract.mint(address, amt));
|
await mineTx(contract.mint(address, amt));
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
inst: {
|
||||||
|
impersonateSigner: "0x75e89d5979E4f6Fba9F97c104c2F0AFB3F1dcB88",
|
||||||
|
address: "0x6f40d4a6237c257fff2db00fa0510deeecd303eb",
|
||||||
|
abi: ["function transfer(address to, uint value)"],
|
||||||
|
process: async function(owner, address, amt) {
|
||||||
|
const contract = new ethers.Contract(this.address, this.abi, owner);
|
||||||
|
await mineTx(contract.transfer(address, amt));
|
||||||
|
},
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
module.exports = async (tokenName, address, amt) => {
|
module.exports = async (tokenName, address, amt) => {
|
||||||
|
|
|
@ -30,6 +30,7 @@ const TICK_SPACINGS = {
|
||||||
|
|
||||||
const DAI_ADDR = "0x6b175474e89094c44da98b954eedeac495271d0f"
|
const DAI_ADDR = "0x6b175474e89094c44da98b954eedeac495271d0f"
|
||||||
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
const ethAddress = "0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee"
|
||||||
|
const INST_ADDR = "0x6f40d4a6237c257fff2db00fa0510deeecd303eb"
|
||||||
|
|
||||||
let tokenIds = []
|
let tokenIds = []
|
||||||
const abiCoder = ethers.utils.defaultAbiCoder
|
const abiCoder = ethers.utils.defaultAbiCoder
|
||||||
|
@ -88,7 +89,7 @@ describe("UniswapV3", function () {
|
||||||
await addLiquidity("dai", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
await addLiquidity("dai", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Deposit ETH & USDT into DSA wallet", async function () {
|
it("Deposit ETH & USDT & INST into DSA wallet", async function () {
|
||||||
await wallet0.sendTransaction({
|
await wallet0.sendTransaction({
|
||||||
to: dsaWallet0.address,
|
to: dsaWallet0.address,
|
||||||
value: ethers.utils.parseEther("10")
|
value: ethers.utils.parseEther("10")
|
||||||
|
@ -97,12 +98,14 @@ describe("UniswapV3", function () {
|
||||||
|
|
||||||
await addLiquidity("dai", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
await addLiquidity("dai", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
await addLiquidity("usdt", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
await addLiquidity("usdt", dsaWallet0.address, ethers.utils.parseEther("100000"));
|
||||||
|
await addLiquidity("inst", dsaWallet0.address, ethers.utils.parseEther("10000"));
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe("Main", function () {
|
describe("Main", function () {
|
||||||
const ethAmount = ethers.utils.parseEther("0.1") // 1 ETH
|
const ethAmount = ethers.utils.parseEther("0.1") // 1 ETH
|
||||||
const daiAmount = ethers.utils.parseEther("400") // 1 ETH
|
const daiAmount = ethers.utils.parseEther("400") // 1 ETH
|
||||||
|
const instAmount = ethers.utils.parseEther("50")
|
||||||
|
|
||||||
it("Should mint successfully", async function () {
|
it("Should mint successfully", async function () {
|
||||||
const getIds = ["0", "0"]
|
const getIds = ["0", "0"]
|
||||||
|
@ -124,6 +127,22 @@ describe("UniswapV3", function () {
|
||||||
getIds,
|
getIds,
|
||||||
setId
|
setId
|
||||||
],
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: connectorUniswap,
|
||||||
|
method: "mint",
|
||||||
|
args: [
|
||||||
|
INST_ADDR,
|
||||||
|
ethAddress,
|
||||||
|
FeeAmount.MEDIUM,
|
||||||
|
getMinTick(TICK_SPACINGS[FeeAmount.MEDIUM]),
|
||||||
|
getMaxTick(TICK_SPACINGS[FeeAmount.MEDIUM]),
|
||||||
|
instAmount,
|
||||||
|
ethAmount,
|
||||||
|
"500000000000000000",
|
||||||
|
getIds,
|
||||||
|
setId
|
||||||
|
],
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -133,7 +152,9 @@ describe("UniswapV3", function () {
|
||||||
let castEvent = new Promise((resolve, reject) => {
|
let castEvent = new Promise((resolve, reject) => {
|
||||||
dsaWallet0.on('LogCast', (origin, sender, value, targetNames, targets, eventNames, eventParams, event) => {
|
dsaWallet0.on('LogCast', (origin, sender, value, targetNames, targets, eventNames, eventParams, event) => {
|
||||||
const params = abiCoder.decode(["uint256", "uint256", "uint256", "uint256", "int24", "int24"], eventParams[0]);
|
const params = abiCoder.decode(["uint256", "uint256", "uint256", "uint256", "int24", "int24"], eventParams[0]);
|
||||||
|
const params1 = abiCoder.decode(["uint256", "uint256", "uint256", "uint256", "int24", "int24"], eventParams[1]);
|
||||||
tokenIds.push(params[0]);
|
tokenIds.push(params[0]);
|
||||||
|
tokenIds.push(params1[0]);
|
||||||
event.removeListener();
|
event.removeListener();
|
||||||
|
|
||||||
resolve({
|
resolve({
|
||||||
|
@ -153,6 +174,7 @@ describe("UniswapV3", function () {
|
||||||
});
|
});
|
||||||
|
|
||||||
it("Should create incentive successfully", async function () {
|
it("Should create incentive successfully", async function () {
|
||||||
|
console.log("TokenIds", tokenIds[1]);
|
||||||
const spells = [
|
const spells = [
|
||||||
{
|
{
|
||||||
connector: connectorStaker,
|
connector: connectorStaker,
|
||||||
|
@ -161,20 +183,32 @@ describe("UniswapV3", function () {
|
||||||
ethAddress,
|
ethAddress,
|
||||||
"1000",
|
"1000",
|
||||||
dsaWallet0.address,
|
dsaWallet0.address,
|
||||||
tokenIds[0],
|
"0xc2e9f25be6257c210d7adf0d4cd6e3e881ba25f8",
|
||||||
|
ethers.utils.parseEther("0.01")
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: connectorStaker,
|
||||||
|
method: "createIncentive",
|
||||||
|
args: [
|
||||||
|
INST_ADDR,
|
||||||
|
"50",
|
||||||
|
dsaWallet0.address,
|
||||||
|
"0xcba27c8e7115b4eb50aa14999bc0866674a96ecb",
|
||||||
ethers.utils.parseEther("0.01")
|
ethers.utils.parseEther("0.01")
|
||||||
],
|
],
|
||||||
}]
|
}]
|
||||||
|
|
||||||
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet1.address)
|
const tx = await dsaWallet0.connect(wallet0).cast(...encodeSpells(spells), wallet0.address)
|
||||||
let receipt = await tx.wait()
|
let receipt = await tx.wait()
|
||||||
|
|
||||||
let castEvent = new Promise((resolve, reject) => {
|
let castEvent = new Promise((resolve, reject) => {
|
||||||
dsaWallet0.on('LogCast', (origin, sender, value, targetNames, targets, eventNames, eventParams, event) => {
|
dsaWallet0.on('LogCast', (origin, sender, value, targetNames, targets, eventNames, eventParams, event) => {
|
||||||
const params = abiCoder.decode(["uint256", "uint256", "uint256", "uint256"], eventParams[0]);
|
const params = abiCoder.decode(["uint256", "uint256", "uint256", "uint256"], eventParams[0]);
|
||||||
|
const params1 = abiCoder.decode(["uint256", "uint256", "uint256", "uint256"], eventParams[1]);
|
||||||
event.removeListener();
|
event.removeListener();
|
||||||
|
|
||||||
resolve({ start: params[1], end: params[2] });
|
resolve({ start: [params[1], params1[1]], end: [params[2], params1[2]] });
|
||||||
});
|
});
|
||||||
|
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
@ -201,11 +235,29 @@ describe("UniswapV3", function () {
|
||||||
method: "stake",
|
method: "stake",
|
||||||
args: [
|
args: [
|
||||||
ethAddress,
|
ethAddress,
|
||||||
startTime,
|
startTime[0],
|
||||||
endTime,
|
endTime[0],
|
||||||
dsaWallet0.address,
|
dsaWallet0.address,
|
||||||
tokenIds[0]
|
tokenIds[0]
|
||||||
],
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: connectorStaker,
|
||||||
|
method: "deposit",
|
||||||
|
args: [
|
||||||
|
tokenIds[1]
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: connectorStaker,
|
||||||
|
method: "stake",
|
||||||
|
args: [
|
||||||
|
INST_ADDR,
|
||||||
|
startTime[1],
|
||||||
|
endTime[1],
|
||||||
|
dsaWallet0.address,
|
||||||
|
tokenIds[1]
|
||||||
|
],
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
@ -222,7 +274,14 @@ describe("UniswapV3", function () {
|
||||||
connector: connectorStaker,
|
connector: connectorStaker,
|
||||||
method: "claimRewards",
|
method: "claimRewards",
|
||||||
args: [
|
args: [
|
||||||
ethAddress,
|
DAI_ADDR,
|
||||||
|
dsaWallet0.address,
|
||||||
|
"1000",
|
||||||
|
],
|
||||||
|
connector: connectorStaker,
|
||||||
|
method: "claimRewards",
|
||||||
|
args: [
|
||||||
|
INST_ADDR,
|
||||||
dsaWallet0.address,
|
dsaWallet0.address,
|
||||||
"1000",
|
"1000",
|
||||||
],
|
],
|
||||||
|
@ -239,7 +298,7 @@ describe("UniswapV3", function () {
|
||||||
connector: connectorStaker,
|
connector: connectorStaker,
|
||||||
method: "unstake",
|
method: "unstake",
|
||||||
args: [
|
args: [
|
||||||
ethAddress,
|
DAI_ADDR,
|
||||||
startTime,
|
startTime,
|
||||||
endTime,
|
endTime,
|
||||||
dsaWallet0.address,
|
dsaWallet0.address,
|
||||||
|
@ -253,6 +312,25 @@ describe("UniswapV3", function () {
|
||||||
tokenIds[0],
|
tokenIds[0],
|
||||||
dsaWallet0.address,
|
dsaWallet0.address,
|
||||||
],
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: connectorStaker,
|
||||||
|
method: "unstake",
|
||||||
|
args: [
|
||||||
|
INST_ADDR,
|
||||||
|
startTime,
|
||||||
|
endTime,
|
||||||
|
dsaWallet0.address,
|
||||||
|
tokenIds[1]
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
connector: connectorStaker,
|
||||||
|
method: "withdraw",
|
||||||
|
args: [
|
||||||
|
tokenIds[1],
|
||||||
|
dsaWallet0.address,
|
||||||
|
],
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user