diff --git a/contracts/arbitrum/connectors/dexSimulation/events.sol b/contracts/arbitrum/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/arbitrum/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/arbitrum/connectors/dexSimulation/helpers.sol b/contracts/arbitrum/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..65c56bcf --- /dev/null +++ b/contracts/arbitrum/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0xa5044f8FfA8FbDdd0781cEDe502F1C493BB6978A; +} diff --git a/contracts/arbitrum/connectors/dexSimulation/interfaces.sol b/contracts/arbitrum/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/arbitrum/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/arbitrum/connectors/dexSimulation/main.sol b/contracts/arbitrum/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..4b65de7e --- /dev/null +++ b/contracts/arbitrum/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == ethAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationArbitrum is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/contracts/avalanche/connectors/dexSimulation/events.sol b/contracts/avalanche/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/avalanche/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/avalanche/connectors/dexSimulation/helpers.sol b/contracts/avalanche/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..6d65ff2c --- /dev/null +++ b/contracts/avalanche/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0x266b527deb47eBe327D1933da310ef13Fe76D213; +} diff --git a/contracts/avalanche/connectors/dexSimulation/interfaces.sol b/contracts/avalanche/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/avalanche/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/avalanche/connectors/dexSimulation/main.sol b/contracts/avalanche/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..6631a066 --- /dev/null +++ b/contracts/avalanche/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == avaxAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationAvalanche is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/contracts/fantom/connectors/dexSimulation/events.sol b/contracts/fantom/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/fantom/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/fantom/connectors/dexSimulation/helpers.sol b/contracts/fantom/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..d607ad86 --- /dev/null +++ b/contracts/fantom/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0xbD07728E20c49F0Fa22c82915955fbeA5E203a6a; +} diff --git a/contracts/fantom/connectors/dexSimulation/interfaces.sol b/contracts/fantom/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/fantom/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/fantom/connectors/dexSimulation/main.sol b/contracts/fantom/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..2536c69e --- /dev/null +++ b/contracts/fantom/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == ftmAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationFantom is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/contracts/mainnet/connectors/dexSimulation/events.sol b/contracts/mainnet/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/mainnet/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/mainnet/connectors/dexSimulation/helpers.sol b/contracts/mainnet/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..3501e000 --- /dev/null +++ b/contracts/mainnet/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0x49B159E897b7701769B1E66061C8dcCd7240c461; +} diff --git a/contracts/mainnet/connectors/dexSimulation/interfaces.sol b/contracts/mainnet/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/mainnet/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/mainnet/connectors/dexSimulation/main.sol b/contracts/mainnet/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..d16cdaa1 --- /dev/null +++ b/contracts/mainnet/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == ethAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulation is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/contracts/optimism/connectors/dexSimulation/events.sol b/contracts/optimism/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/optimism/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/optimism/connectors/dexSimulation/helpers.sol b/contracts/optimism/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..13eb5c92 --- /dev/null +++ b/contracts/optimism/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0x718365C3d1aA4c5CcE869E16bE3f6A96EC65200b; +} diff --git a/contracts/optimism/connectors/dexSimulation/interfaces.sol b/contracts/optimism/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/optimism/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/optimism/connectors/dexSimulation/main.sol b/contracts/optimism/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..0603811b --- /dev/null +++ b/contracts/optimism/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == ethAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationOptimism is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/contracts/polygon/connectors/dexSimulation/events.sol b/contracts/polygon/connectors/dexSimulation/events.sol new file mode 100644 index 00000000..083afebe --- /dev/null +++ b/contracts/polygon/connectors/dexSimulation/events.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +contract Events { + event LogSimulateSwap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ); +} diff --git a/contracts/polygon/connectors/dexSimulation/helpers.sol b/contracts/polygon/connectors/dexSimulation/helpers.sol new file mode 100644 index 00000000..dc5f34f1 --- /dev/null +++ b/contracts/polygon/connectors/dexSimulation/helpers.sol @@ -0,0 +1,15 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +import "./interfaces.sol"; +import { Basic } from "../../common/basic.sol"; +import { TokenInterface } from "../../common/interfaces.sol"; +import { Stores } from "../../common/stores.sol"; + +abstract contract Helpers is Stores, Basic { + /** + * @dev dexSimulation Address + */ + address internal constant dexSimulation = + 0x49c8AA422207Dc2709FCdc21CeAD0943578a21e8; +} diff --git a/contracts/polygon/connectors/dexSimulation/interfaces.sol b/contracts/polygon/connectors/dexSimulation/interfaces.sol new file mode 100644 index 00000000..bb390ddd --- /dev/null +++ b/contracts/polygon/connectors/dexSimulation/interfaces.sol @@ -0,0 +1,11 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; + +interface InstaDexSimulation { + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount + ) external payable; +} diff --git a/contracts/polygon/connectors/dexSimulation/main.sol b/contracts/polygon/connectors/dexSimulation/main.sol new file mode 100644 index 00000000..98a578f1 --- /dev/null +++ b/contracts/polygon/connectors/dexSimulation/main.sol @@ -0,0 +1,69 @@ +//SPDX-License-Identifier: MIT +pragma solidity ^0.7.0; +pragma experimental ABIEncoderV2; + +/** + * @title Insta dex simulation. + * @dev swap. + */ + +import { Events } from "./events.sol"; +import "./helpers.sol"; + +abstract contract InstaDexSimulationResolver is Events, Helpers { + /** + * @dev Simulation swap using Insta dex swap contract + * @param sellToken The token to sell/swap + * @param buyToken The token to buy + * @param sellAmount The sell token amount + * @param buyAmount The buy token amount + * @param setId Set token amount at this ID in `InstaMemory` Contract. + * @param getId Get token amount at this ID in `InstaMemory` Contract. + */ + function swap( + address sellToken, + address buyToken, + uint256 sellAmount, + uint256 buyAmount, + uint256 setId, + uint256 getId + ) + external + payable + returns (string memory _eventName, bytes memory _eventParam) + { + sellAmount = getUint(getId, sellAmount); + uint256 nativeAmount; + + if (sellToken == maticAddr) { + sellAmount = sellAmount == uint256(-1) + ? address(this).balance + : sellAmount; + nativeAmount = sellAmount; + } else { + TokenInterface tokenContract = TokenInterface(sellToken); + + sellAmount = sellAmount == uint256(-1) + ? tokenContract.balanceOf(address(this)) + : sellAmount; + + approve(tokenContract, address(dexSimulation), sellAmount); + } + + InstaDexSimulation(dexSimulation).swap{ value: nativeAmount }( + sellToken, + buyToken, + sellAmount, + buyAmount + ); + + setUint(setId, buyAmount); + + _eventName = "LogSimulateSwap(address,address,uint256,uint256)"; + _eventParam = abi.encode(sellToken, buyToken, sellAmount, buyAmount); + } +} + +contract ConnectV2InstaDexSimulationPolygon is InstaDexSimulationResolver { + string public name = "Instadapp-DEX-Simulation-v1"; +} diff --git a/scripts/deployment/deployConnector.ts b/scripts/deployment/deployConnector.ts index cbcca6b1..1b925480 100644 --- a/scripts/deployment/deployConnector.ts +++ b/scripts/deployment/deployConnector.ts @@ -1,6 +1,6 @@ import hre, { ethers } from "hardhat"; - import { execScript } from "../tests/command"; + export const deployConnector = async (connectorName?: string) => { connectorName = String(process.env.connectorName) ?? connectorName; const Connector = await ethers.getContractFactory(connectorName); @@ -11,19 +11,20 @@ export const deployConnector = async (connectorName?: string) => { const chain = String(hre.network.name); if (chain !== "hardhat") { + const allPaths = await hre.artifacts.getArtifactPaths(); + + let connectorPath; + for (const path of allPaths) + if (path.split("/").includes(connectorName + ".json")) + connectorPath = path.slice(path.indexOf("contracts"), path.indexOf(connectorName) - 1) + `:${connectorName}`; + try { await execScript({ cmd: "npx", - args: [ - "hardhat", - "verify", - "--network", - `${chain}`, - `${connector.address}`, - ], + args: ["hardhat", "verify", "--network", `${chain}`, `${connector.address}`, "--contract", `${connectorPath}`], env: { - networkType: chain, - }, + networkType: chain + } }); } catch (error) { console.log(`Failed to verify: ${connectorName}@${connector.address}`);