import { HardhatRuntimeEnvironment } from 'hardhat/types/hre';
import type { ContractFactory } from 'ethers';
import { DefenderDeploy } from './index.js';
import { DeployOpts } from '@openzeppelin/upgrades-core';
import { ContractTypeOfFactory } from '../type-extensions.js';
import type { DeployedContract } from '../engine/binding.js';
/**
 * Gets a contract instance from a deployment, where the deployment may be remote.
 * If the deployment is remote, the instance has an overridden `waitForDeployment` method to wait for the remote deployment
 * and update its `deploymentTransaction` with the new transaction hash if it was detected to have changed.
 *
 * @param hre The Hardhat Runtime Environment
 * @param contract The contract factory
 * @param opts The deploy and defender options
 * @param deployment The deployment
 * @returns The contract instance
 */
export declare function getContractInstance<F extends ContractFactory>(hre: HardhatRuntimeEnvironment, contract: F, opts: DeployOpts & DefenderDeploy, deployment: DeployedContract): ContractTypeOfFactory<F>;
//# sourceMappingURL=contract-instance.d.ts.map