import { HardhatRuntimeEnvironment } from 'hardhat/types/hre';
import type { NetworkConnection } from 'hardhat/types/network';
import type { ContractFactory, ethers } from 'ethers';
import { ContractAddressOrInstance, PrepareUpgradeOptions } from './utils/index.js';
import { DeployImplementationResponse } from './deploy-implementation.js';
export type PrepareUpgradeFunction = (referenceAddressOrContract: ContractAddressOrInstance, ImplFactory: ContractFactory, opts?: PrepareUpgradeOptions) => Promise<DeployImplementationResponse>;
/** Implementation deployment for an upgrade, with the ethers transaction response for `getTxResponse`. */
export interface DeployedImpl {
    impl: string;
    txResponse?: ethers.TransactionResponse;
}
export declare function makePrepareUpgrade(hre: HardhatRuntimeEnvironment, defenderModule: boolean, connection: NetworkConnection): PrepareUpgradeFunction;
export declare function deployImplForUpgrade(hre: HardhatRuntimeEnvironment, referenceAddressOrContract: ContractAddressOrInstance, ImplFactory: ContractFactory, opts: PrepareUpgradeOptions | undefined, connection: NetworkConnection): Promise<DeployedImpl>;
//# sourceMappingURL=prepare-upgrade.d.ts.map