/**
 * @fileoverview OrdoJS CLI - AWS Lambda deployment adapter
 * Adapter for deploying to AWS Lambda and API Gateway
 */
import { OptimizationResults } from '../../asset-optimizer.js';
import { DeploymentAdapter, DeploymentConfig, DeploymentResult } from '../adapter-interface.js';
/**
 * AWS Lambda-specific configuration
 */
export interface AWSLambdaConfig extends DeploymentConfig {
    /**
     * AWS Lambda settings
     */
    settings?: {
        /**
         * AWS region
         */
        region?: string;
        /**
         * Lambda function name
         */
        functionName?: string;
        /**
         * Lambda memory size in MB
         */
        memorySize?: number;
        /**
         * Lambda timeout in seconds
         */
        timeout?: number;
        /**
         * Lambda runtime
         */
        runtime?: string;
        /**
         * API Gateway stage name
         */
        stageName?: string;
        /**
         * Whether to use AWS CloudFront
         */
        useCloudFront?: boolean;
        /**
         * Whether to use AWS S3 for static assets
         */
        useS3ForStaticAssets?: boolean;
        /**
         * S3 bucket name for static assets
         */
        s3BucketName?: string;
        /**
         * Whether to use AWS CloudWatch for logs
         */
        useCloudWatch?: boolean;
        /**
         * Whether to use AWS X-Ray for tracing
         */
        useXRay?: boolean;
    };
}
/**
 * AWS Lambda deployment adapter
 */
export declare class AWSLambdaAdapter implements DeploymentAdapter {
    /**
     * Adapter name
     */
    name: string;
    /**
     * Adapter description
     */
    description: string;
    /**
     * Validate AWS Lambda deployment configuration
     * @param config Deployment configuration
     * @returns Validation result
     */
    validateConfig(config: DeploymentConfig): {
        valid: boolean;
        errors?: string[];
    };
    /**
     * Prepare AWS Lambda deployment
     * @param config Deployment configuration
     * @returns Deployment result
     */
    prepareDeployment(config: DeploymentConfig): Promise<DeploymentResult>;
    /**
     * Generate Serverless Framework configuration
     * @param config AWS Lambda configuration
     * @returns Serverless Framework configuration YAML
     */
    private generateServerlessConfig;
    /**
     * Generate AWS SAM template
     * @param config AWS Lambda configuration
     * @returns AWS SAM template YAML
     */
    private generateSAMTemplate;
    /**
     * Generate AWS CloudFormation template
     * @param config AWS Lambda configuration
     * @returns AWS CloudFormation template YAML
     */
    private generateCloudFormationTemplate;
    /**
     * Generate Lambda handler
     * @param config AWS Lambda configuration
     * @returns Lambda handler JavaScript code
     */
    private generateLambdaHandler;
    /**
     * Generate package.json for Lambda
     * @param config AWS Lambda configuration
     * @returns package.json content
     */
    private generatePackageJson;
    /**
     * Generate deployment script
     * @param config AWS Lambda configuration
     * @returns Deployment script content
     */
    private generateDeployScript;
    /**
     * Get deployment instructions
     * @param config AWS Lambda configuration
     * @returns Deployment instructions
     */
    private getDeploymentInstructions;
    /**
     * Optimize assets for AWS Lambda deployment
     * @param config Deployment configuration
     * @param outputDir Output directory
     * @returns Optimization results
     */
    optimizeForDeployment(config: DeploymentConfig, outputDir: string): Promise<OptimizationResults>;
    /**
     * Get AWS Lambda-specific environment variables
     * @param config Deployment configuration
     * @returns Environment variables
     */
    getEnvironmentVariables(config: DeploymentConfig): Record<string, string>;
    /**
     * Get AWS Lambda deployment command
     * @param config Deployment configuration
     * @returns Deployment command
     */
    getDeployCommand(config: DeploymentConfig): string;
}
//# sourceMappingURL=aws-lambda-adapter.d.ts.map