UNPKG

@openzeppelin/hardhat-upgrades

Version:

[![Docs](https://img.shields.io/badge/docs-%F0%9F%93%84-blue)](https://docs.openzeppelin.com/upgrades-plugins/hardhat-upgrades) [![NPM Package](https://img.shields.io/npm/v/@openzeppelin/hardhat-upgrades.svg)](https://www.npmjs.org/package/@openzeppelin/h

37 lines (30 loc) • 1.42 kB
import { HardhatRuntimeEnvironment } from 'hardhat/types/hre'; import type { NetworkConnection } from 'hardhat/types/network'; import type { ContractFactory, ethers } from 'ethers'; import { DeployImplementationOptions } from './utils/index.js'; import { deployUpgradeableImpl } from './engine/deploy-impl.js'; import { enableDefender } from './defender/utils.js'; import { makeEthersBinding, contractInfo, txResponseOf } from './ethers-binding.js'; export type DeployImplementationFunction = ( ImplFactory: ContractFactory, opts?: DeployImplementationOptions, ) => Promise<DeployImplementationResponse>; export type DeployImplementationResponse = string | ethers.TransactionResponse; export function makeDeployImplementation( hre: HardhatRuntimeEnvironment, defenderModule: boolean, connection: NetworkConnection, ): DeployImplementationFunction { return async function deployImplementation(ImplFactory, opts: DeployImplementationOptions = {}) { opts = enableDefender(hre, defenderModule, opts); const binding = makeEthersBinding(hre, connection, ImplFactory.runner, opts); const deployedImpl = await deployUpgradeableImpl(binding, contractInfo(ImplFactory), opts, undefined); if (opts.getTxResponse) { const txResponse = await txResponseOf(deployedImpl.deployment, connection); if (txResponse) { return txResponse; } } return deployedImpl.impl; }; }