import { NodeFileTraceReasons } from "@vercel/nft";
import { ABTest, OriginRequestApiHandlerManifest, OriginRequestDefaultHandlerManifest, OriginRequestImageHandlerManifest, RoutesManifest, UrlRewriteList } from "../types";
import { Job } from "@vercel/nft/out/node-file-trace";
import { BasicInvalidationUrlGroup } from "./lib/invalidation/invalidationUrlGroup";
export declare const DEFAULT_LAMBDA_CODE_DIR = "default-lambda";
export declare const API_LAMBDA_CODE_DIR = "api-lambda";
export declare const IMAGE_LAMBDA_CODE_DIR = "image-lambda";
export declare const ASSETS_DIR = "assets";
export declare const DEFAULT_BUILD_ID = "shared-storage";
declare type BuildOptions = {
    args?: string[];
    cwd?: string;
    env?: {
        [key: string]: unknown;
    };
    cmd?: string;
    useServerlessTraceTarget?: boolean;
    logLambdaExecutionTimes?: boolean;
    domainRedirects?: {
        [key: string]: string;
    };
    minifyHandlers?: boolean;
    enableHTTPCompression?: boolean;
    handler?: string;
    authentication?: {
        username: string;
        password: string;
    } | undefined;
    resolve?: (id: string, parent: string, job: Job, cjsResolve: boolean) => Promise<string | string[]>;
    baseDir?: string;
    canonicalHostname?: string;
    distributionId: string;
    urlRewrites?: UrlRewriteList;
    enableDebugMode?: boolean;
    invalidationUrlGroups?: BasicInvalidationUrlGroup[];
    notFoundPageMark?: string;
    permanentStaticPages?: string[];
    sentry?: {
        dsn?: string;
        tracesSampleRate: number;
    };
    abTests?: ABTest[];
    enableRemoteInvalidation?: boolean;
};
declare class Builder {
    nextConfigDir: string;
    nextStaticDir: string;
    dotNextDir: string;
    serverlessDir: string;
    outputDir: string;
    buildOptions: BuildOptions;
    constructor(nextConfigDir: string, outputDir: string, buildOptions?: BuildOptions, nextStaticDir?: string);
    readPublicFiles(): Promise<string[]>;
    readPagesManifest(): Promise<{
        [key: string]: string;
    }>;
    copyLambdaHandlerDependencies(fileList: string[], reasons: NodeFileTraceReasons, handlerDirectory: string, base: string): Promise<void>[];
    isPrerenderedJSFile(prerenderManifest: any, relativePageFile: string): boolean;
    processAndCopyRoutesManifest(source: string, destination: string): Promise<void>;
    processAndCopyHandler(handlerType: "api-handler" | "default-handler" | "image-handler", destination: string, shouldMinify: boolean): Promise<void>;
    buildDefaultLambda(buildManifest: OriginRequestDefaultHandlerManifest): Promise<void[]>;
    buildApiLambda(apiBuildManifest: OriginRequestApiHandlerManifest): Promise<void[]>;
    copyChunks(handlerDir: string): Promise<void>;
    copyJSFiles(handlerDir: string): Promise<void>;
    buildImageLambda(buildManifest: OriginRequestImageHandlerManifest): Promise<void[]>;
    prepareBuildManifests(): Promise<{
        defaultBuildManifest: OriginRequestDefaultHandlerManifest;
        apiBuildManifest: OriginRequestApiHandlerManifest;
        imageBuildManifest: OriginRequestImageHandlerManifest;
    }>;
    buildStaticAssets(defaultBuildManifest: OriginRequestDefaultHandlerManifest, routesManifest: RoutesManifest): Promise<void[]>;
    cleanupDotNext(): Promise<void>;
    build(debugMode?: boolean): Promise<void>;
    normalizeDomainRedirects(domainRedirects: {
        [key: string]: string;
    }): void;
    buildDynamicDataAssets(defaultBuildManifest: OriginRequestDefaultHandlerManifest, routesManifest: RoutesManifest): Promise<void>;
    buildPermanentStaticPages(defaultBuildManifest: OriginRequestDefaultHandlerManifest, routesManifest: RoutesManifest): Promise<void>;
}
export default Builder;
