import type { DeployContractOptions, FactoryOptions } from "../../types.js";
import type { HardhatEthersProvider } from "../hardhat-ethers-provider/hardhat-ethers-provider.js";
import type { HardhatEthersSigner } from "../signers/signers.js";
import type { ethers as EthersT } from "ethers";
import type { Abi, Artifact, ArtifactManager } from "hardhat/types/artifacts";
import type { NetworkConfig } from "hardhat/types/config";
export declare class HardhatHelpers {
    #private;
    constructor(provider: HardhatEthersProvider, networkName: string, networkConfig: NetworkConfig, artifactManager: ArtifactManager);
    getSigners(): Promise<HardhatEthersSigner[]>;
    getSigner(address: string): Promise<HardhatEthersSigner>;
    getContractFactory<A extends any[] = any[], I = EthersT.Contract>(name: string, signerOrOptions?: EthersT.Signer | FactoryOptions): Promise<EthersT.ContractFactory<A, I>>;
    getContractFactory<A extends any[] = any[], I = EthersT.Contract>(abi: any[] | Abi, bytecode: EthersT.BytesLike, signer?: EthersT.Signer): Promise<EthersT.ContractFactory<A, I>>;
    getContractFactoryFromArtifact<A extends any[] = any[], I = EthersT.Contract>(artifact: Artifact<Abi>, signerOrOptions?: EthersT.Signer | FactoryOptions): Promise<EthersT.ContractFactory<A, I>>;
    getContractAt(nameOrAbi: string | Abi, address: string | EthersT.Addressable, signer?: EthersT.Signer): Promise<EthersT.Contract>;
    getContractAtFromArtifact(artifact: Artifact, address: string | EthersT.Addressable, signer?: EthersT.Signer): Promise<EthersT.Contract>;
    deployContract(name: string, args?: any[], signerOrOptions?: EthersT.Signer | DeployContractOptions): Promise<EthersT.Contract>;
    deployContract(name: string, signerOrOptions?: EthersT.Signer | DeployContractOptions): Promise<EthersT.Contract>;
    getImpersonatedSigner(address: string): Promise<HardhatEthersSigner>;
}
//# sourceMappingURL=hardhat-helpers.d.ts.map