import { addresses as addressesPolygon } from "./polygon/addresses"; import { addresses } from "./mainnet/addresses"; import { abis } from "../constant/abis"; import { addresses as addressesArbitrum } from "./arbitrum/addresses"; import { addresses as addressesAvalanche } from "./avalanche/addresses"; import { addresses as addressesOptimism } from "./optimism/addresses"; import { addresses as addressesFantom } from "./fantom/addresses"; import hre from "hardhat"; import type { Signer, Contract } from "ethers"; import type { ContractJSON } from "ethereum-waffle/dist/esm/ContractJSON"; const { ethers } = hre; import {deployContract} from 'ethereum-waffle'; // const { deployContract } = waffle; interface DeployInterface { connectorName: string; contractArtifact: ContractJSON; signer: Signer; connectors: Contract; } function getAddress(network: string | undefined) { if (network === "polygon") return addressesPolygon; else if (network === "arbitrum") return addressesArbitrum; else if (network === "avalanche") return addressesAvalanche; else if (network === "optimism") return addressesOptimism; else if (network === "fantom") return addressesFantom; else return addresses; } export async function deployAndEnableConnector( { connectorName, contractArtifact, signer, connectors } : DeployInterface ) { const connectorInstanace: Contract = await deployContract(signer, contractArtifact); await connectors .connect(signer) .addConnectors([connectorName], [connectorInstanace.address]); getAddress(String(process.env.networkType)).connectors[connectorName] = connectorInstanace.address; abis.connectors[connectorName] = contractArtifact.abi; return connectorInstanace; }