import { BigNumber } from 'ethers';
import { DiamondCutActionType } from '../types/diamond';
export interface ParallelValidationResult {
    moduleName: string;
    passed: boolean;
    errors: string[];
    warnings: string[];
    shouldProceed: boolean;
    finalCuts: ParallelFacetCut[];
}
export interface ParallelFacetCut {
    moduleName: string;
    facetAddress: string;
    action: DiamondCutActionType;
    functionSelectors: string[];
}
export interface ParallelDeploymentResult {
    moduleName: string;
    address: string;
    deploymentTime: number;
    gasUsed: BigNumber;
    costInEth: string;
    error?: string;
}
export interface ParallelPromptResult {
    shouldProceed: boolean;
    finalCuts: ParallelFacetCut[];
    userResponses: Map<string, boolean>;
}
export interface ParallelModuleGroup {
    moduleName: string;
    cuts: ParallelFacetCut[];
    validationResult?: ParallelValidationResult;
    deploymentResult?: ParallelDeploymentResult;
}
export interface ParallelProcessingContext {
    startTime: number;
    moduleGroups: Map<string, ParallelModuleGroup>;
    validationResults: ParallelValidationResult[];
    deploymentResults: Map<string, ParallelDeploymentResult>;
    errors: string[];
    warnings: string[];
}
export interface ParallelDeploymentConfig {
    enabled: boolean;
    maxConcurrentDeployments?: number;
    timeoutPerModule?: number;
    returnFundsToMain?: boolean;
    minFundingAmount?: string;
}
export interface ParallelizationConfig {
    enabled: boolean;
    maxThreads: number;
    strategy: 'pre-validation' | 'queue-based' | 'batch-prompting';
    parallelDeployment?: ParallelDeploymentConfig;
    validationConcurrency?: number;
    timeoutPerModule?: number;
    retryAttempts?: number;
    infoProcessing?: {
        minBatchSize?: number;
        maxBatchSize?: number;
        maxConcurrentBatches?: number;
        adaptiveBatching?: boolean;
        selectorBatchSize?: number;
        processingTimeout?: number;
        retryDelay?: number;
    };
}
export declare const DEFAULT_INFO_PROCESSING_CONFIG: {
    readonly minBatchSize: 5;
    readonly maxBatchSize: 50;
    readonly maxConcurrentBatches: 3;
    readonly adaptiveBatching: true;
    readonly selectorBatchSize: 20;
    readonly processingTimeout: 30000;
    readonly retryDelay: 1000;
};
//# sourceMappingURL=parallelTypes.d.ts.map