import 'reflect-metadata';
import { z } from 'zod';
import { EnvConfigPurews } from '@worktif/purews';
import { Maybe } from '@worktif/utils';
/**
 * Represents the schema for the environment configuration.
 * Validates all required and optional environment variables with sensible defaults.
 */
export declare const envConfigPureCdkSchema: z.ZodObject<{
    core: z.ZodObject<{
        STAGE: z.ZodOptional<z.ZodNullable<z.ZodDefault<z.ZodString>>>;
        STACK_NAME: z.ZodDefault<z.ZodString>;
        AWS_REGION: z.ZodDefault<z.ZodString>;
    }, z.core.$strip>;
    runtime: z.ZodObject<{
        RUNTIME_WEB_RENDER_MODE: z.ZodDefault<z.ZodEnum<{
            "lambda-shell": "lambda-shell";
            "unix-shell": "unix-shell";
        }>>;
    }, z.core.$strip>;
    aws: z.ZodObject<{
        resources: z.ZodObject<{
            dynamoDb: z.ZodObject<{
                tables: z.ZodObject<{
                    DYNAMO_DB_SEO_ENGINE_TABLE: z.ZodOptional<z.ZodString>;
                    AWS_DYNAMODB_SEO_TABLE: z.ZodOptional<z.ZodString>;
                }, z.core.$strip>;
            }, z.core.$strip>;
            s3Bucket: z.ZodObject<{
                STATIC_S3_BUCKET_NAME: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>;
            cloudfront: z.ZodOptional<z.ZodObject<{
                CLOUDFRONT_DISTRIBUTION_ID: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
        }, z.core.$strip>;
    }, z.core.$strip>;
    browsers: z.ZodOptional<z.ZodObject<{
        react: z.ZodOptional<z.ZodObject<{
            PURE_ENV_STAGE: z.ZodOptional<z.ZodString>;
            PURE_ENV_ROUTE_STAGE: z.ZodOptional<z.ZodString>;
            PURE_ENV_AWS_REGION: z.ZodOptional<z.ZodString>;
            PURE_ENV_API: z.ZodOptional<z.ZodString>;
            PURE_ENV_BINARY_API: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * Enum representing the stages of a website deployment.
 *
 * This enum is typically used to differentiate between the production
 * and staging environments of a website.
 *
 * Enum Members:
 * - `Prod`: Represents the production environment.
 * - `Staging`: Represents the staging environment.
 */
export declare enum WebsiteStage {
    Prod = "prod",
    Staging = "staging"
}
/**
 * Validates whether the given website stage is valid or not.
 *
 * @param {WebsiteStage} stage - The website stage to be validated.
 * @returns {boolean} - True if the stage is valid; otherwise, false.
 */
export declare function validateWebsiteStage(stage: WebsiteStage): boolean;
/**
 * A class representing the environment configuration for an application.
 *
 * This class is responsible for retrieving environment variable values,
 * validating them using a schema, and storing them as properties for use
 * within the application. It includes configurations for AWS, DynamoDB,
 * and React-related parameters, among others.
 *
 * Usage of this class assumes all required environment variables are set
 * and validation passes during initialization.
 */
export declare class EnvConfigRuntime extends EnvConfigPurews {
    awsRuntime: EnvConfigPurews['aws'] & {
        s3Bucket: {
            staticBucket: string;
        };
        dynamoDb: {
            tables: {
                seoEngine: string;
                seoTable: string;
            };
        };
    };
    /**
     * Represents the local directory path where build artifacts are stored.
     * This variable contains a string that specifies the directory
     * relative to the local file system. It is used to organize and
     * locate build outputs during the build process.
     */
    readonly localBuildDir: Maybe<string>;
    /**
     * Runtime configuration for serverless rendering rendering mode.
     * Determines whether Lambda returns full HTML documents (lambda-shell)
     * or just body content for Unix/NGINX wrapping (unix-shell).
     */
    runtime: {
        renderMode: 'lambda-shell' | 'unix-shell';
    };
    react: {
        stage: string;
        routeStage: string;
        awsRegion: string;
        api: string;
        apiBinary: string;
    };
    constructor(support?: boolean);
    /**
     * Retrieves the Lambda environment configuration formatted correctly for CDK.
     * Returns all required Lambda environment variables as a flat key-value object.
     *
     * @return {Record<string, string>} An object representing the Lambda environment configuration.
     */
    getLambdaEnvironment(): Record<string, string>;
    /**
     * Declares and returns the resource name concatenated with the current environment stage.
     *
     * @param {string} resourceName - The base name of the resource to declare.
     * @return {string} The fully declared resource name with the environment stage appended.
     */
    declareResourceName(resourceName: string): string;
}
