import type { UnsafeHardhatRuntimeEnvironmentOptions } from "./types.js";
import type { ArtifactManager } from "../../types/artifacts.js";
import type { HardhatUserConfig, HardhatConfig } from "../../types/config.js";
import type { GlobalOptions } from "../../types/global-options.js";
import type { HardhatConfigValidationError, HardhatUserConfigValidationError, HookManager } from "../../types/hooks.js";
import type { HardhatRuntimeEnvironment } from "../../types/hre.js";
import type { NetworkManager } from "../../types/network.js";
import type { HardhatPlugin } from "../../types/plugins.js";
import type { SolidityBuildSystem } from "../../types/solidity/build-system.js";
import type { TaskManager } from "../../types/tasks.js";
import type { UserInterruptionManager } from "../../types/user-interruptions.js";
import type { CoverageManager } from "../builtin-plugins/coverage/types.js";
import type { GasAnalyticsManager } from "../builtin-plugins/gas-analytics/types.js";
export declare class HardhatRuntimeEnvironmentImplementation implements HardhatRuntimeEnvironment {
    readonly userConfig: HardhatUserConfig;
    readonly config: HardhatConfig;
    readonly hooks: HookManager;
    readonly interruptions: UserInterruptionManager;
    readonly globalOptions: GlobalOptions;
    readonly versions: {
        readonly hardhat: string;
        readonly edr: string;
    };
    network: NetworkManager;
    artifacts: ArtifactManager;
    solidity: SolidityBuildSystem;
    _coverage: CoverageManager;
    _gasAnalytics: GasAnalyticsManager;
    static create(inputUserConfig: HardhatUserConfig, userProvidedGlobalOptions: Partial<GlobalOptions>, projectRoot?: string, unsafeOptions?: UnsafeHardhatRuntimeEnvironmentOptions): Promise<HardhatRuntimeEnvironmentImplementation>;
    readonly tasks: TaskManager;
    private constructor();
}
/**
 * Resolves the project root of a Hardhat project based on the config file or
 * another path within the project. If not provided, it will be resolved from
 * the current working directory.
 *
 * @param absolutePathWithinProject An absolute path within the project, usually
 * the config file.
 */
export declare function resolveProjectRoot(absolutePathWithinProject: string | undefined): Promise<string>;
/**
 * Runs the provided Hardhat user config through the resolution process,
 * invoking relevant plugin hooks (both internal and external) to extend
 * and transform the config into a full HardhatConfig.
 *
 * @param hooks - The HookManager used to run config extension and validation
 * hooks.
 * @param inputUserConfig - The initial user provided Hardhat config object.
 * @param resolvedProjectRoot - The project root path.
 * @param userProvidedConfigPath - The user provided Hardhat config file path.
 * @param resolvedPlugins - The list of plugins, we do not want the plugins
 * overwriting them so we re-add them to the final HardhatConfig.
 * @returns Either an object containing the resolved HardhatConfig and the
 * extended version of the user config, or a list of validation errors.
 */
export declare function resolveUserConfigToHardhatConfig(inputUserConfig: HardhatUserConfig, hooks: HookManager, resolvedProjectRoot: string, userProvidedConfigPath: string | undefined, resolvedPlugins: HardhatPlugin[]): Promise<{
    success: true;
    config: HardhatConfig;
    extendedUserConfig: HardhatUserConfig;
} | {
    success: false;
    userConfigValidationErrors: HardhatUserConfigValidationError[];
    configValidationErrors?: HardhatConfigValidationError[];
}>;
//# sourceMappingURL=hre.d.ts.map