import type { RuntimeConfig } from '../../utils/types/runtime.config';
import type { ValidationLogger } from '../utils/validation-logger';
import { DeploymentValidationErrorResult } from '../utils/deployment-validation-errors';
/**
 * Resource conflict check result
 */
export interface ResourceConflict {
    resourceType: 'S3Bucket' | 'IAMRole' | 'DynamoDBTable';
    resourceName: string;
    existsInAws: boolean;
    ownedByThisStack: boolean;
    ownerStackName?: string;
    errorMessage: string;
}
/**
 * Result of resource conflict validation
 */
export interface ResourceConflictValidationResult extends DeploymentValidationErrorResult {
    valid: boolean;
    conflicts: ResourceConflict[];
    checkedResources: number;
}
/**
 * Options for resource conflict validation
 */
export interface ResourceConflictValidationOptions {
    stage: string;
    config: RuntimeConfig;
    enableSeo?: boolean;
}
/**
 * Validates that AWS resources don't conflict with existing resources before CDK deployment.
 *
 * This validator checks for resource naming conflicts BEFORE CloudFormation attempts deployment,
 * providing clear, actionable error messages instead of cryptic CloudFormation errors.
 *
 * Checks:
 * - S3 buckets (globally unique names)
 * - IAM roles (account-unique names)
 * - DynamoDB tables (region-unique names)
 *
 * @example
 * ```typescript
 * const validator = new ResourceConflictValidator('dev', config, logger, 'my-profile');
 * const result = await validator.validate({ stage: 'dev', config, enableSeo: true });
 *
 * if (!result.valid) {
 *   for (const error of result.errors) {
 *     console.error(error.title);
 *     console.error(error.troubleshooting);
 *   }
 * }
 * ```
 */
export declare class ResourceConflictValidator {
    private readonly stage;
    private readonly config;
    private readonly logger?;
    private readonly awsProfile?;
    private readonly s3Client;
    private readonly iamClient;
    private readonly dynamoClient;
    private readonly region;
    constructor(stage: string, config: RuntimeConfig, logger?: ValidationLogger | undefined, awsProfile?: string | undefined);
    /**
     * Validates all resources for conflicts before deployment
     */
    validate(options: ResourceConflictValidationOptions): Promise<ResourceConflictValidationResult>;
    /**
     * Checks if an S3 bucket exists and if it's owned by the expected stack
     */
    private checkS3Bucket;
    /**
     * Checks if an IAM role exists and if it's owned by the expected stack
     */
    private checkIamRole;
    /**
     * Checks for DynamoDB table conflicts
     * Note: DynamoDB tables in CDK often use generated names, so we check common patterns
     */
    private checkDynamoDbTable;
    /**
     * Creates a detailed error for S3 bucket conflicts
     */
    private createBucketConflictError;
    /**
     * Creates a detailed error for IAM role conflicts
     */
    private createRoleConflictError;
    /**
     * Creates a detailed error for DynamoDB table conflicts
     */
    private createTableConflictError;
    /**
     * Gets AWS credentials based on profile or environment
     */
    private getCredentials;
    /**
     * Gets the AWS region from stage configuration
     */
    private getRegion;
    /**
     * Generates region signature (e.g., 'us-east-1' -> 'ue1')
     * Mirrors the logic in RuntimeInfraStack.getRegionSignature()
     */
    private getRegionSignature;
}
