import type { RuntimeConfig } from '../../utils/types/runtime.config';
import { DeploymentValidationOptions } from '../../bin/validators/deployment-validator';
/**
 * Utility class to detect if CloudFormation stacks exist.
 *
 * Used to determine if this is a first deployment (Infra stack does not exist)
 * or a subsequent deployment (Infra stack already exists).
 *
 * @example
 * ```typescript
 * // Without AWS profile (uses default credentials chain)
 * const detector = new StackExistenceDetector('dev', config);
 *
 * // With explicit AWS profile
 * const detector = new StackExistenceDetector('dev', config, 'my-aws-profile');
 *
 * const isFirstDeploy = !(await detector.infraStackExists(options));
 * if (isFirstDeploy) {
 *   console.log('First deployment detected');
 * }
 * ```
 */
export declare class StackExistenceDetector {
    private readonly stage;
    private readonly config;
    private readonly awsProfile?;
    private readonly client;
    /**
     * Creates a new StackExistenceDetector instance.
     *
     * @param stage - Deployment stage (dev, staging, prod)
     * @param config - Runtime CLI configuration
     * @param awsProfile - Optional AWS profile name for credentials
     */
    constructor(stage: string, config: RuntimeConfig, awsProfile?: string | undefined);
    /**
     * Checks if the Infrastructure stack exists for the current stage.
     *
     * @returns Promise that resolves to true if the Infra stack exists, false otherwise
     *
     * @example
     * ```typescript
     * const detector = new StackExistenceDetector('dev', config, 'my-aws-profile');
     * const exists = await detector.infraStackExists(options);
     * console.log(`Infra stack exists: ${exists}`);
     * ```
     */
    infraStackExists(options: DeploymentValidationOptions): Promise<boolean>;
    /**
     * Checks if the Runtime stack exists for the current stage.
     *
     * @returns Promise that resolves to true if the Runtime stack exists, false otherwise
     *
     * @example
     * ```typescript
     * const detector = new StackExistenceDetector('dev', config, 'my-aws-profile');
     * const exists = await detector.runtimeStackExists(options);
     * console.log(`Runtime stack exists: ${exists}`);
     * ```
     */
    runtimeStackExists(options: DeploymentValidationOptions): Promise<boolean>;
    /**
     * Checks if a CloudFormation stack exists by name.
     *
     * @param stackName - Name of the CloudFormation stack to check
     * @returns Promise that resolves to true if the stack exists, false otherwise
     * @throws Error if there's a permission error or network issue (not ValidationError)
     *
     * @private
     */
    private stackExists;
    /**
     * Gets the AWS region from the stage configuration.
     *
     * @returns AWS region string
     * @throws Error if stage configuration is not found
     *
     * @private
     */
    private getRegion;
}
