diff --git a/.github/workflows/ci-connectors.yml b/.github/workflows/ci-connectors.yml index bf25b6c5..3e5ff865 100644 --- a/.github/workflows/ci-connectors.yml +++ b/.github/workflows/ci-connectors.yml @@ -55,3 +55,5 @@ jobs: run: yarn workspace @mimic-fi/v3-connectors test:optimism - name: Test arbitrum run: yarn workspace @mimic-fi/v3-connectors test:arbitrum + - name: Test gnosis + run: yarn workspace @mimic-fi/v3-connectors test:gnosis diff --git a/packages/connectors/contracts/swap/hop/HopSwapConnector.sol b/packages/connectors/contracts/swap/hop/HopSwapConnector.sol new file mode 100644 index 00000000..8359a652 --- /dev/null +++ b/packages/connectors/contracts/swap/hop/HopSwapConnector.sol @@ -0,0 +1,60 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +pragma solidity ^0.8.0; + +import '@openzeppelin/contracts/token/ERC20/IERC20.sol'; + +import '@mimic-fi/v3-helpers/contracts/utils/ERC20Helpers.sol'; + +import './IHopDex.sol'; + +/** + * @title HopSwapConnector + * @dev Interfaces with Hop to swap tokens + */ +contract HopSwapConnector { + /** + * @dev Executes a token swap in Hop + * @param tokenIn Token being sent + * @param tokenOut Token being received + * @param amountIn Amount of tokenIn being swapped + * @param minAmountOut Minimum amount of tokenOut willing to receive + * @param hopDexAddress Address of the Hop dex to be used + */ + function execute(address tokenIn, address tokenOut, uint256 amountIn, uint256 minAmountOut, address hopDexAddress) + external + returns (uint256 amountOut) + { + require(tokenIn != tokenOut, 'HOP_SWAP_SAME_TOKEN'); + require(hopDexAddress != address(0), 'HOP_DEX_ADDRESS_ZERO'); + + uint256 preBalanceIn = IERC20(tokenIn).balanceOf(address(this)); + uint256 preBalanceOut = IERC20(tokenOut).balanceOf(address(this)); + + IHopDex hopDex = IHopDex(hopDexAddress); + uint8 tokenInIndex = hopDex.getTokenIndex(tokenIn); + uint8 tokenOutIndex = hopDex.getTokenIndex(tokenOut); + + ERC20Helpers.approve(tokenIn, hopDexAddress, amountIn); + hopDex.swap(tokenInIndex, tokenOutIndex, amountIn, minAmountOut, block.timestamp); + + uint256 postBalanceIn = IERC20(tokenIn).balanceOf(address(this)); + require(postBalanceIn >= preBalanceIn - amountIn, 'HOP_BAD_TOKEN_IN_BALANCE'); + + uint256 postBalanceOut = IERC20(tokenOut).balanceOf(address(this)); + amountOut = postBalanceOut - preBalanceOut; + require(amountOut >= minAmountOut, 'HOP_MIN_AMOUNT_OUT'); + } +} diff --git a/packages/connectors/contracts/swap/hop/IHopDex.sol b/packages/connectors/contracts/swap/hop/IHopDex.sol new file mode 100644 index 00000000..9c6e3943 --- /dev/null +++ b/packages/connectors/contracts/swap/hop/IHopDex.sol @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-3.0-or-later +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. + +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. + +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +pragma solidity >=0.8.0; + +interface IHopDex { + function getTokenIndex(address) external view returns (uint8); + + function swap(uint8 tokenIndexFrom, uint8 tokenIndexTo, uint256 dx, uint256 minDy, uint256 deadline) + external + returns (uint256); +} diff --git a/packages/connectors/package.json b/packages/connectors/package.json index ffd58e4b..6275913f 100644 --- a/packages/connectors/package.json +++ b/packages/connectors/package.json @@ -19,6 +19,7 @@ "test:polygon": "yarn test --fork polygon --block-number 44153231", "test:optimism": "yarn test --fork optimism --block-number 105914596", "test:arbitrum": "yarn test --fork arbitrum --block-number 105116582", + "test:gnosis": "yarn test --fork gnosis --block-number 28580764", "prepare": "yarn build" }, "dependencies": { diff --git a/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/USDC-WETH.json b/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/USDC-WETH.json deleted file mode 100644 index 2f4b6498..00000000 --- a/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/USDC-WETH.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "data": "0xa6886da90000000000000000000000000000000000000000000000000000000000000020000000000000000000000000ff970a61a04b1ca14834a43f5de4533ebddb5cc800000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000e592427a0aece92de3edee1f18e0157c0586156400000000000000000000000000000000000000000000000000000002540be4000000000000000000000000000000000000000000000000004891e1cf3a2e1aeb000000000000000000000000000000000000000000000000494d8995d881517e010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000649995f30000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007973573d1113c256fee02ccf1b1e1be0eb93aad00000000000000000000000000000000000000000000000000000000000001c00000000000000000000000000000000000000000000000000000000000000220690000a4f9c94f57be0c88dde4dca79e00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002bff970a61a04b1ca14834a43f5de4533ebddb5cc80001f482af49447d8a07e3bd95bd0d56f35241523fbab10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "sig": "0x7bdfe0635d4a2a21ff15455ae33b35e6a8cacbe14d3fee51e0bf9b1e148954ce5cfe94c8ae6e11763a1d53462a0a55b4a8300a578ee57848ffd2b2897eb4f4e21b", - "signer": "0x6278c27CF5534F07fA8f1Ab6188a155cb8750FFA", - "tokenIn": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - "tokenOut": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - "amountIn": "10000000000", - "minAmountOut": "5229208922504436459", - "expectedAmountOut": "5282029214650945918" -} \ No newline at end of file diff --git a/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/WBTC-USDC.json b/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/WBTC-USDC.json deleted file mode 100644 index cc236b35..00000000 --- a/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/WBTC-USDC.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "data": "0x46c67b6d00000000000000000000000000000000000000000000000000000000000000200000000000000000000000002f2a2543b76a4166549f7aab2e75bef0aefc5b0f0000000000000000000000000000000000000000000000000000000005f5e10000000000000000000000000000000000000000000000000000000007051905d3000000000000000000000000000000000000000000000000000000071740103900000000000000000000000007973573d1113c256fee02ccf1b1e1be0eb93aad0000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000d400000000000000000000000000000000000000000000000000000000064999602960a7daba2c545bfabe2437bd7af9292000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000005600000000000000000000000000000000000000000000000000000000000002328000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000ff970a61a04b1ca14834a43f5de4533ebddb5cc800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000280000000000000000000000000745ec73855cec7249e5ff4c9dd81cc65b4d297a9000000000000000000000000000000000000000000000000000000000000037900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064a2d060000000000000000000000000000000000000000000000000000000000000002b2f2a2543b76a4166549f7aab2e75bef0aefc5b0f0001f4ff970a61a04b1ca14834a43f5de4533ebddb5cc80000000000000000000000000000000000000000000000000000000000000000003ad7f275e27ac579ca88e0b4765828242a9e8c49000000000000000000000000000000000000000000000000000000000000239700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000eff23b4be1091b53205e35f3afcd9c7182bf3062000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000d5b927956057075377263aab7f8afc12f85100db00000000000000000000000000000000000000000000000000000000000003e80000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000745ec73855cec7249e5ff4c9dd81cc65b4d297a9000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064a2d060000000000000000000000000000000000000000000000000000000000000002b2f2a2543b76a4166549f7aab2e75bef0aefc5b0f0001f482af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000000000000000000000000000000000000000000000ff970a61a04b1ca14834a43f5de4533ebddb5cc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000020000000000000000000000000745ec73855cec7249e5ff4c9dd81cc65b4d297a9000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000003000000000000000000000000fa58b8024b49836772180f2df902f231ba712f72000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064a2d060000000000000000000000000000000000000000000000000000000000000002882af49447d8a07e3bd95bd0d56f35241523fbab1ff970a61a04b1ca14834a43f5de4533ebddb5cc80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "sig": "0xa044506f1764c9f1152b797c7be49ffcf2b5b01e8bbdc458efb74898676e67be1d23f87072e2f3376d37254dab32ffc83b9d53a7290f29019c429f4b6a579a7e1b", - "signer": "0x6278c27CF5534F07fA8f1Ab6188a155cb8750FFA", - "tokenIn": "0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f", - "tokenOut": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - "amountIn": "100000000", - "minAmountOut": "30150297043", - "expectedAmountOut": "30454845497" -} \ No newline at end of file diff --git a/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/WETH-USDC.json b/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/WETH-USDC.json deleted file mode 100644 index 2c032bca..00000000 --- a/packages/connectors/test/helpers/paraswap-v5/fixtures/42161/105116582/WETH-USDC.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "data": "0x54e3f31b000000000000000000000000000000000000000000000000000000000000002000000000000000000000000082af49447d8a07e3bd95bd0d56f35241523fbab1000000000000000000000000ff970a61a04b1ca14834a43f5de4533ebddb5cc80000000000000000000000000000000000000000000000000de0b6b3a7640000000000000000000000000000000000000000000000000000000000006f9f5bfb0000000000000000000000000000000000000000000000000000000070bfffd100000000000000000000000000000000000000000000000000000000000001e00000000000000000000000000000000000000000000000000000000000000220000000000000000000000000000000000000000000000000000000000000038000000000000000000000000000000000000000000000000000000000000003e000000000000000000000000007973573d1113c256fee02ccf1b1e1be0eb93aad00000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000042000000000000000000000000000000000000000000000000000000000649995f83da4e0439a4a4a59bf7c961a70a911f4000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000fa58b8024b49836772180f2df902f231ba712f720000000000000000000000000000000000000000000000000000000000000124c04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee570000000000000000000000000000000000000000000000000000000064a2d04c0000000000000000000000000000000000000000000000000de0b6b3a76400000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002882af49447d8a07e3bd95bd0d56f35241523fbab1ff970a61a04b1ca14834a43f5de4533ebddb5cc800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000124000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", - "sig": "0xf7846923136f7899cef3ca36cfc36420d4c98c8c48c1b6409b9aa20631bcbe4d4c6880e1539a24b4227ea31ed7536b14e537c6e74983e243f7a44118fb4ed6371b", - "signer": "0x6278c27CF5534F07fA8f1Ab6188a155cb8750FFA", - "tokenIn": "0x82af49447d8a07e3bd95bd0d56f35241523fbab1", - "tokenOut": "0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8", - "amountIn": "1000000000000000000", - "minAmountOut": "1872714747", - "expectedAmountOut": "1891631057" -} \ No newline at end of file diff --git a/packages/connectors/test/swap/hop/HopSwapConnector.arbitrum.ts b/packages/connectors/test/swap/hop/HopSwapConnector.arbitrum.ts new file mode 100644 index 00000000..14502706 --- /dev/null +++ b/packages/connectors/test/swap/hop/HopSwapConnector.arbitrum.ts @@ -0,0 +1,22 @@ +import { deploy } from '@mimic-fi/v3-helpers' + +import { itBehavesLikeHopSwapConnector } from './HopSwapConnector.behavior' + +/* eslint-disable no-secrets/no-secrets */ + +const CHAIN = 42161 + +const USDC = '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8' +const HUSDC = '0x0ce6c85cf43553de10fc56ceca0aef6ff0dd444d' +const WHALE = '0x5bdf85216ec1e38d6458c870992a69e38e03f7ef' +const HOP_USDC_DEX = '0x10541b07d8ad2647dc6cd67abd4c03575dade261' + +describe('HopSwapConnector', () => { + const SLIPPAGE = 0.01 + + before('create hop swap connector', async function () { + this.connector = await deploy('HopSwapConnector') + }) + + itBehavesLikeHopSwapConnector(CHAIN, USDC, HUSDC, HOP_USDC_DEX, WHALE, SLIPPAGE) +}) diff --git a/packages/connectors/test/swap/hop/HopSwapConnector.behavior.ts b/packages/connectors/test/swap/hop/HopSwapConnector.behavior.ts new file mode 100644 index 00000000..6c007105 --- /dev/null +++ b/packages/connectors/test/swap/hop/HopSwapConnector.behavior.ts @@ -0,0 +1,55 @@ +import { fp, impersonate, instanceAt, toUSDC } from '@mimic-fi/v3-helpers' +import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers' +import { expect } from 'chai' +import { BigNumber, Contract } from 'ethers' + +export function itBehavesLikeHopSwapConnector( + CHAIN: number, + USDC: string, + HUSDC: string, + HOP_USDC_DEX: string, + WHALE: string, + SLIPPAGE: number +): void { + let usdc: Contract, husdc: Contract, whale: SignerWithAddress + + before('load tokens and accounts', async function () { + usdc = await instanceAt('IERC20Metadata', USDC) + husdc = await instanceAt('IERC20Metadata', HUSDC) + whale = await impersonate(WHALE, fp(100)) + }) + + context('USDC-hUSDC', () => { + const amountIn = toUSDC(10e3) + + it('swaps correctly', async function () { + const previousBalance = await husdc.balanceOf(this.connector.address) + await usdc.connect(whale).transfer(this.connector.address, amountIn) + + await this.connector.connect(whale).execute(USDC, HUSDC, amountIn, 0, HOP_USDC_DEX) + + const currentBalance = await husdc.balanceOf(this.connector.address) + const expectedMinAmountOut = amountIn.sub(amountIn.mul(fp(SLIPPAGE)).div(fp(1))) + expect(currentBalance.sub(previousBalance)).to.be.at.least(expectedMinAmountOut) + }) + }) + + context('hUSDC-USDC', () => { + let amountIn: BigNumber + + beforeEach('load amount in', async function () { + amountIn = await husdc.balanceOf(this.connector.address) + expect(amountIn).to.be.gt(0) + }) + + it('swaps correctly hUSDC-USDC', async function () { + const previousBalance = await usdc.balanceOf(this.connector.address) + + await this.connector.connect(whale).execute(HUSDC, USDC, amountIn, 0, HOP_USDC_DEX) + + const currentBalance = await usdc.balanceOf(this.connector.address) + const expectedMinAmountOut = amountIn.sub(amountIn.mul(fp(SLIPPAGE)).div(fp(1))) + expect(currentBalance.sub(previousBalance)).to.be.at.least(expectedMinAmountOut) + }) + }) +} diff --git a/packages/connectors/test/swap/hop/HopSwapConnector.gnosis.ts b/packages/connectors/test/swap/hop/HopSwapConnector.gnosis.ts new file mode 100644 index 00000000..dd9e370d --- /dev/null +++ b/packages/connectors/test/swap/hop/HopSwapConnector.gnosis.ts @@ -0,0 +1,22 @@ +import { deploy } from '@mimic-fi/v3-helpers' + +import { itBehavesLikeHopSwapConnector } from './HopSwapConnector.behavior' + +/* eslint-disable no-secrets/no-secrets */ + +const CHAIN = 100 + +const USDC = '0xDDAfbb505ad214D7b80b1f830fcCc89B60fb7A83' +const HUSDC = '0x9ec9551d4a1a1593b0ee8124d98590cc71b3b09d' +const WHALE = '0xc66825c5c04b3c2ccd536d626934e16248a63f68' +const HOP_USDC_SWAP = '0x5c32143c8b198f392d01f8446b754c181224ac26' + +describe('HopSwapConnector', () => { + const SLIPPAGE = 0.02 + + before('create hop swap connector', async function () { + this.connector = await deploy('HopSwapConnector') + }) + + itBehavesLikeHopSwapConnector(CHAIN, USDC, HUSDC, HOP_USDC_SWAP, WHALE, SLIPPAGE) +}) diff --git a/packages/connectors/test/swap/paraswap-v5/ParaswapV5Connector.arbitrum.ts b/packages/connectors/test/swap/paraswap-v5/ParaswapV5Connector.arbitrum.ts deleted file mode 100644 index 02eb8206..00000000 --- a/packages/connectors/test/swap/paraswap-v5/ParaswapV5Connector.arbitrum.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { deploy } from '@mimic-fi/v3-helpers' - -import { itBehavesLikeParaswapV5Connector } from './ParaswapV5Connector.behavior' - -/* eslint-disable no-secrets/no-secrets */ - -const CHAIN = 42161 - -const USDC = '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8' -const WETH = '0x82af49447d8a07e3bd95bd0d56f35241523fbab1' -const WBTC = '0x2f2a2543b76a4166549f7aab2e75bef0aefc5b0f' -const WHALE = '0xba12222222228d8ba445958a75a0704d566bf2c8' - -const PARASWAP_V5_AUGUSTUS = '0xdef171fe48cf0115b1d80b88dc8eab59176fee57' - -const CHAINLINK_ETH_USD = '0x639fe6ab55c921f74e7fac1ee960c0b6293ba612' -const CHAINLINK_BTC_USD = '0x6ce185860a4963106506c203335a2910413708e9' - -describe('ParaswapV5Connector', () => { - const SLIPPAGE = 0.01 - - before('create paraswap connector', async function () { - this.connector = await deploy('ParaswapV5Connector', [PARASWAP_V5_AUGUSTUS]) - }) - - itBehavesLikeParaswapV5Connector(CHAIN, USDC, WETH, WBTC, WHALE, SLIPPAGE, CHAINLINK_ETH_USD, CHAINLINK_BTC_USD) -})