import { DiamondCutActionType } from '../types/diamond';
import { ExtendedFacetCut, ModuleBatchValidationResult } from '../types/upgrade';
import { DopStickConfig, UpgradeConfig } from '../types/config';
import { BatchedModuleFunctions } from '../types/upgrade';
/**
 * UpgradeProcessor handles the processing and validation of diamond contract upgrades.
 * It manages the upgrade workflow including file loading, validation, and preparation of diamond cuts.
 */
export declare class UpgradeProcessor {
    private readonly config;
    private batchProcessor;
    private readonly mode;
    private parallelBatchLogger;
    private validationTimeline;
    private executionSummary;
    private lastValidatedModules;
    /**
     * Creates a new UpgradeProcessor instance
     * @param config - Configuration object containing upgrade settings and modes
     */
    constructor(config: DopStickConfig);
    /**
     * Loads and validates the upgrade configuration file
     * @returns Promise resolving to parsed and validated upgrade configuration
     * @throws Error if file is not found or has invalid format
     */
    loadUpgradeFile(): Promise<UpgradeConfig>;
    /**
     * Processes upgrades using the batch processing system
     * @param upgradeConfig - Configuration containing upgrade specifications
     * @returns Object containing processed modules, actions, selectors, and final cuts
     * @throws Error if validation fails in strict mode
     */
    processUpgrades(upgradeConfig: UpgradeConfig): Promise<{
        modules: string[];
        actions: DiamondCutActionType[];
        selectors: string[][];
        finalCuts: ExtendedFacetCut[];
        validatedModules: ModuleBatchValidationResult[];
    }>;
    createBatches(upgradeConfig: UpgradeConfig, isParallel?: boolean): Promise<BatchedModuleFunctions[]>;
    /**
     * Consolidates multiple batches of the same module into a single batch
     * @param batches Original array of batches
     * @returns Consolidated array of batches with unique module names
     * @private
     */
    private consolidateBatches;
    private validateBatches;
    /**
     * Processes upgrades in parallel for improved performance
     * @param upgradeConfig - Configuration containing upgrade specifications
     * @returns Object containing processed modules and final cuts
     * @throws Error if parallel processing fails
     */
    processUpgradesParallel(upgradeConfig: UpgradeConfig): Promise<{
        modules: string[];
        actions: DiamondCutActionType[];
        selectors: string[][];
        finalCuts: ExtendedFacetCut[];
        validatedModules: ModuleBatchValidationResult[];
    }>;
    /**
     * Prepares final diamond cuts from validated modules
     * @param validatedModules - Array of validation results for each module
     * @returns Object containing individual and grouped cuts
     * @private
     */
    private prepareFinalCuts;
    private handleExecutionSummaryInteraction;
    private getValidatedModules;
    extractModuleCuts(upgradeConfig: UpgradeConfig): Promise<ExtendedFacetCut[]>;
}
//# sourceMappingURL=upgradeProcessor.d.ts.map