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

30 lines (25 loc) • 954 B
import type { ContractInfo, EngineBinding, SentTransaction } from './binding.js'; import { deployBeaconImpl } from './deploy-impl.js'; import { upgradeableBeaconAbi } from './artifacts.js'; import type { UpgradeBeaconOptions } from './options.js'; export interface UpgradeBeaconResult { beaconAddress: string; sent: SentTransaction; } /** * Client-neutral orchestration of `upgradeBeacon`: deploys (or reuses) the new implementation and * sends `upgradeTo` to the beacon. */ export async function upgradeBeacon( binding: EngineBinding, beaconAddress: string, implInfo: ContractInfo, opts: UpgradeBeaconOptions, ): Promise<UpgradeBeaconResult> { const { impl: nextImpl } = await deployBeaconImpl(binding, implInfo, opts, beaconAddress); const sent = await binding.sendTransaction({ to: beaconAddress, data: binding.encodeFunctionData(upgradeableBeaconAbi, 'upgradeTo', [nextImpl]), }); return { beaconAddress, sent }; }