import { CloudFormationClient } from '@aws-sdk/client-cloudformation';
import type { RuntimeConfig } from '../../utils/types/runtime.config';
/**
 * Error thrown when Infrastructure stack outputs cannot be resolved.
 */
export declare class InfraOutputsError extends Error {
    readonly stackName: string;
    readonly details?: string | undefined;
    constructor(message: string, stackName: string, details?: string | undefined);
}
/**
 * Utility class to read CloudFormation stack outputs from the Infrastructure stack.
 *
 * Used to retrieve exported values from the Infra stack for consumption by the Runtime stack.
 *
 * @example
 * ```typescript
 * // Without AWS profile (uses default credentials chain)
 * const resolver = new InfraOutputsResolver('dev', config);
 * const outputs = await resolver.getOutputs();
 *
 * // With explicit AWS profile
 * const resolver = new InfraOutputsResolver('dev', config, 'my-aws-profile');
 * const outputs = await resolver.getOutputs();
 *
 * console.log('Bucket name:', outputs.StaticBucketName);
 * console.log('Distribution ID:', outputs.CloudFrontDistributionId);
 * ```
 */
export declare class InfraOutputsResolver {
    private readonly client;
    private readonly stage;
    private readonly config;
    private readonly stackName;
    private readonly awsProfile?;
    /**
     * Creates a new InfraOutputsResolver instance.
     *
     * @param client
     * @param stage - Deployment stage (dev, staging, prod)
     * @param stackName
     * @param config - Runtime CLI configuration
     * @param awsProfile - Optional AWS profile name for credentials
     */
    constructor(client: CloudFormationClient, stage: string, config: RuntimeConfig, stackName: string, awsProfile?: string | undefined);
    /**
     * Retrieves all outputs from the Infrastructure stack as a key-value map.
     *
     * @returns Promise that resolves to a map of output keys to output values
     * @throws {InfraOutputsError} If the stack does not exist or has no outputs
     *
     * @example
     * ```typescript
     * const resolver = new InfraOutputsResolver('dev', config, 'my-aws-profile');
     * const outputs = await resolver.getOutputs();
     *
     * // Access specific outputs
     * const bucketName = outputs.StaticBucketName;
     * const tableName = outputs.SeoTableName;
     * ```
     */
    getOutputs(): Promise<Record<string, string>>;
    /**
     * Gets the AWS region from the stage configuration.
     *
     * @returns AWS region string
     * @throws Error if stage configuration is not found
     *
     * @private
     */
    private getRegion;
}
