import type { RuntimeConfig } from '../../utils/types/runtime.config';
import { DeploymentValidationErrorResult } from '../utils/deployment-validation-errors';
import type { ValidationLogger } from '../utils/validation-logger';
import { DeploymentValidationOptions } from '../validators/deployment-validator';
export interface DeploymentSequenceValidationResult extends DeploymentValidationErrorResult {
    valid: boolean;
    isFirstDeploy: boolean;
    infraStackExists: boolean;
    runtimeStackExists: boolean;
}
/**
 * Validates deployment sequence and dependencies
 *
 * Responsibilities:
 * - Check if this is first deployment or subsequent deployment
 * - Validate Infrastructure stack state before deployment
 * - Ensure correct deployment ordering
 * - Provide specific error messages for sequence issues
 * - Provide diagnostic logging for troubleshooting
 */
export declare class DeploymentSequenceValidator {
    private readonly stage;
    private readonly config;
    private readonly logger?;
    private readonly awsProfile?;
    private readonly detector;
    private readonly client;
    constructor(stage: string, config: RuntimeConfig, logger?: ValidationLogger | undefined, awsProfile?: string | undefined);
    /**
     * Validates a deployment sequence
     *
     * Checks:
     * - First deployment: Infrastructure stack should not exist
     * - Subsequent deployment: Infrastructure stack should exist and be in deployable state
     * - Runtime stack should not exist without Infrastructure stack
     *
     * @returns Validation result with errors, warnings, and deployment state
     */
    validate(options: DeploymentValidationOptions): Promise<DeploymentSequenceValidationResult>;
    /**
     * Gets the CloudFormation stack state
     *
     * @param stackName - Name of the CloudFormation stack
     * @returns Stack state string or null if stack doesn't exist
     * @throws Error if there's a permission error or network issue
     */
    getStackState(stackName: string): Promise<string | null>;
    /**
     * Checks if a stack is in a deployable state
     *
     * Deployable states are:
     * - CREATE_COMPLETE
     * - UPDATE_COMPLETE
     * - UPDATE_ROLLBACK_COMPLETE
     *
     * @param stackState - CloudFormation stack state
     * @returns True if stack is in a deployable state
     */
    isStackInDeployableState(stackState: string): boolean;
    /**
     * Gets the AWS region from the stage configuration
     *
     * @returns AWS region string
     * @throws Error if stage configuration is not found
     * @private
     */
    private getRegion;
}
