import type { CDKMetadata, RuntimeWebConfig } from '../../../lib/runtime-web/types';
/**
 * CDK execution pipeline for Runtime Web Core.
 *
 * **ARCHITECTURE NOTE**: This file is in `src/infra/` because it:
 * - Imports from `@infra/*` (CDK constructs, stacks)
 * - Uses `aws-cdk-lib` (build-time only)
 * - Synthesizes CloudFormation templates (local execution only)
 * - NEVER runs in Lambda or browser
 *
 * Handles CloudFormation template synthesis from microservice definitions.
 * Creates CDK App, infrastructure stack (S3, CloudFront, DynamoDB), and
 * runtime stack (Lambda functions, API Gateway) based on the configuration.
 *
 * **Execution Flow**:
 * 1. Create CDK App instance
 * 2. Create RuntimeInfraStack for S3/CloudFront/DynamoDB
 * 3. Create RuntimeWebStack for Lambda/API Gateway
 * 4. Call app.synth() to synthesize CloudFormation
 *
 * **Requirements**: REQ-06, REQ-11
 */
export declare class CDKPipeline {
    private readonly logger;
    /**
     * Execute CDK pipeline for infrastructure synthesis.
     *
     * Creates CDK App and stacks based on the configuration, then synthesizes
     * CloudFormation templates. The infrastructure configuration is required
     * for CDK context execution.
     *
     * @param config - Runtime Web configuration with infrastructure options
     * @param context - CDK environment context with metadata
     *
     * @example
     * ```typescript
     * const pipeline = new CDKPipeline();
     * await pipeline.execute(config, {
     *   type: 'cdk',
     *   metadata: {
     *     account: '123456789012',
     *     region: 'us-east-1',
     *     cdkVersion: '2.100.0',
     *     nodeVersion: '18.17.0'
     *   }
     * });
     * ```
     */
    execute(config: RuntimeWebConfig, context: {
        type: 'cdk';
        metadata: CDKMetadata;
    }): Promise<void>;
    /**
     * Create CDK App instance.
     *
     * Creates the root CDK App that will contain all stacks.
     *
     * @returns CDK App instance
     * @private
     */
    private createCDKApp;
    /**
     * Create infrastructure stack for S3, CloudFront, and DynamoDB.
     *
     * Creates the RuntimeInfraStack with all the foundational AWS resources
     * needed for the application (storage, CDN, database).
     *
     * @param app - CDK App instance
     * @param config - Runtime Web configuration
     * @param infraOptions - Infrastructure configuration
     * @returns RuntimeInfraStack instance
     * @private
     */
    private createInfraStack;
    /**
     * Create runtime stack for Lambda functions and API Gateway.
     *
     * Creates the RuntimeWebStack with all the Lambda functions and API Gateway
     * based on the microservice definitions. This stack depends on the
     * infrastructure stack for shared resources.
     *
     * @param app - CDK App instance
     * @param config - Runtime configuration
     * @param infraOptions - Infrastructure configuration
     * @param infraStack - Infrastructure stack instance
     * @returns RuntimeWebStack instance or undefined if no microservices
     * @private
     */
    private createRuntimeWebStack;
    /**
     * Creates and configures the runtime stack for the specified application and environment.
     *
     * This method initializes a runtime stack based on the provided configuration, infrastructure options,
     * and associated infrastructure stack. If no microservices are defined in the configuration, the method
     * skips stack creation and returns undefined.
     *
     * @param {App} app - The application instance where the runtime stack will be created.
     * @param {RuntimeWebConfig} config - Configuration details for the runtime stack such as service name, stage, and registered microservices.
     * @param {InfraOptions} infraOptions - Infrastructure-specific options like memory size, timeout, and other lambda settings.
     * @param {RuntimeInfraStack} infraStack - The infrastructure stack that the runtime stack will depend on.
     * @return {any|undefined} The created runtime stack instance or undefined if no microservices are defined.
     * @throws {Error} If stack creation fails, an error is logged, and an exception is thrown with the failure details.
     */
    private createRuntimeStack;
    /**
     * Synthesize CDK App to CloudFormation templates.
     *
     * Calls app.synth() to generate CloudFormation templates from the
     * defined stacks. This is the final step that produces the deployable
     * infrastructure code.
     *
     * @param app - CDK App instance with stacks
     * @private
     */
    private synthesizeApp;
    /**
     * Get RuntimeWebStack class.
     *
     * Returns the RuntimeWebStack class for creating runtime stacks
     * with microservice support.
     *
     * @returns RuntimeWebStack class constructor
     * @private
     */
    private getRuntimeWebStackClass;
    /**
     * Retrieves the RuntimeStack class type.
     *
     * @return {typeof RuntimeStack} The class type of RuntimeStack.
     */
    private getRuntimeStackClass;
}
