import { Construct } from "constructs";
import { FunctionProps } from "aws-cdk-lib/aws-lambda";
import { CachePolicy } from "aws-cdk-lib/aws-cloudfront";
import { Distribution } from "./Distribution.js";
import { SsrFunction } from "./SsrFunction.js";
import { EdgeFunction } from "./EdgeFunction.js";
import { SsrSite, SsrSiteProps } from "./SsrSite.js";
import { Size } from "./util/size.js";
export interface NextjsSiteProps extends Omit<SsrSiteProps, "nodejs"> {
    imageOptimization?: {
        /**
         * The amount of memory in MB allocated for image optimization function.
         * @default 1024 MB
         * @example
         * ```js
         * memorySize: "512 MB",
         * ```
         */
        memorySize?: number | Size;
    };
    /**
     * The number of server functions to keep warm. This option is only supported for the regional mode.
     * @default Server function is not kept warm
     */
    warm?: number;
    cdk?: SsrSiteProps["cdk"] & {
        revalidation?: Pick<FunctionProps, "vpc" | "vpcSubnets">;
    };
}
/**
 * The `NextjsSite` construct is a higher level CDK construct that makes it easy to create a Next.js app.
 * @example
 * Deploys a Next.js app in the `my-next-app` directory.
 *
 * ```js
 * new NextjsSite(stack, "web", {
 *   path: "my-next-app/",
 * });
 * ```
 */
export declare class NextjsSite extends SsrSite {
    protected props: NextjsSiteProps & {
        path: Exclude<NextjsSiteProps["path"], undefined>;
        runtime: Exclude<NextjsSiteProps["runtime"], undefined>;
        timeout: Exclude<NextjsSiteProps["timeout"], undefined>;
        memorySize: Exclude<NextjsSiteProps["memorySize"], undefined>;
        waitForInvalidation: Exclude<NextjsSiteProps["waitForInvalidation"], undefined>;
    };
    constructor(scope: Construct, id: string, props?: NextjsSiteProps);
    protected createRevalidation(): void;
    protected initBuildConfig(): {
        typesPath: string;
        serverBuildOutputFile: string;
        clientBuildOutputDir: string;
        clientBuildVersionedSubDir: string;
        clientBuildS3KeyPrefix: string;
        prerenderedBuildOutputDir: string;
        prerenderedBuildS3KeyPrefix: string;
    };
    protected createFunctionForRegional(): SsrFunction;
    protected createFunctionForEdge(): EdgeFunction;
    private createImageOptimizationFunction;
    private createWarmer;
    protected createCloudFrontDistributionForRegional(): Distribution;
    protected createCloudFrontDistributionForEdge(): Distribution;
    protected buildServerCachePolicy(): CachePolicy;
    private buildImageBehavior;
    protected generateBuildId(): string;
    getConstructMetadata(): {
        data: {
            mode: "placeholder" | "deployed";
            path: string;
            customDomainUrl: string | undefined;
            url: string | undefined;
            edge: boolean | undefined;
            server: string;
            secrets: string[];
        };
        type: "NextjsSite";
    };
}
