/**
 * @fileoverview Main upgrade module for handling diamond upgrades
 * Supports both parallel and sequential upgrade processes
 */
import { ethers, Signer } from 'ethers';
import { DopStickConfig } from './types/config';
import { UpgradeContext, ExtendedFacetCut, UpgradeModuleResult } from './types/upgrade';
import { IDeploymentTimelineAdapter, IParallelDeploymentTimelineAdapter } from './utils/logsAndMetrics/adapters/types';
declare function getSigner(): Promise<Signer>;
export declare function executeUpgradeInBatches(cuts: ExtendedFacetCut[], config: DopStickConfig, context: UpgradeContext): Promise<void>;
/**
 * Main upgrade function that orchestrates the entire upgrade process
 * @param config - DopStick configuration object containing upgrade settings
 * @returns Promise<UpgradeContext> - Context object containing upgrade results
 * @throws {Error} If upgrade process fails at any stage
 */
export declare function upgrade(config: DopStickConfig): Promise<UpgradeContext>;
/**
 * Deploys a single module as part of the upgrade process
 * @param moduleName - Name of the module to deploy
 * @param moduleIndex - Current index in the deployment sequence
 * @param totalModules - Total number of modules to deploy
 * @param context - Current upgrade context
 * @param config - Optional DopStick configuration
 * @returns Promise<string> - Deployed contract address
 * @throws {Error} If deployment fails or private key is missing
 */
declare function deployModule(moduleName: string, moduleIndex: number, totalModules: number, context: UpgradeContext, config?: DopStickConfig): Promise<string>;
/**
 * Executes a diamond upgrade with rollback support
 * @param finalCuts - Array of facet cuts to be applied
 * @param config - DopStick configuration object
 * @param context - Upgrade context for tracking progress and results
 * @throws {Error} If diamond address is missing or upgrade fails
 */
declare function executeUpgrade(finalCuts: ExtendedFacetCut[], config: DopStickConfig, context: UpgradeContext): Promise<void>;
/**
 * Processes module groups sequentially
 * @param cuts - Array of ExtendedFacetCut objects to process
 * @param config - DopStick configuration
 * @returns Promise<UpgradeModuleResult[]> Results of module processing
 */
declare function processModuleGroups(finalCuts: ExtendedFacetCut[], config: DopStickConfig, deploymentLogger: DeploymentLogger): Promise<UpgradeModuleResult[]>;
/**
 * Process module groups in parallel using separate wallets
 * @param cuts - Array of ExtendedFacetCut objects to process
 * @param config - DopStick configuration
 * @returns Promise<UpgradeModuleResult[]> Array of results for each module
 * @throws {Error} If parallel processing fails
 */
declare function processModuleGroupsParallel(cuts: ExtendedFacetCut[], config: DopStickConfig, deploymentLogger: IParallelDeploymentTimelineAdapter): Promise<UpgradeModuleResult[]>;
/**
 * Exports for external use
 */
export { deployModule, executeUpgrade, getSigner, type UpgradeContext, type UpgradeModuleResult, processModuleGroups, processModuleGroupsParallel, upgrade as parallelUpgrade };
/**
 * Type declarations for module augmentation
 */
declare module 'hardhat/types/runtime' {
    interface HardhatRuntimeEnvironment {
        upgrades: {
            deployProxy: (Contract: any, args: any[], opts?: any) => Promise<ethers.Contract>;
        };
    }
}
type DeploymentLogger = IDeploymentTimelineAdapter | IParallelDeploymentTimelineAdapter;
//# sourceMappingURL=upgrade.d.ts.map