/**
 * @license
 * Copyright 2022-2026 Greg Lauckhart <greg@lauckhart.com>
 * SPDX-License-Identifier: Apache-2.0
 */
import { Progress } from "../util/progress.js";
import { Graph } from "./graph.js";
import { Project } from "./project.js";
import { TypescriptContext } from "./typescript/context.js";
export declare enum Target {
    clean = "clean",
    types = "types",
    esm = "esm",
    cjs = "cjs"
}
export interface Options {
    targets?: Target[];
    clean?: boolean;
    graph?: Graph;
    tsgo?: boolean;
}
/**
 * High-level build coordination.
 *
 * Warning: This class is intended for command line use and will process.exit if things go wrong.
 */
export declare class ProjectBuilder {
    #private;
    private options;
    unconditional: boolean;
    tsContext?: TypescriptContext;
    graph?: Graph;
    tsgo?: boolean;
    /**
     * When true, type checking has already been performed by a batched tsgo -b invocation.  {@link #doBuild} skips
     * TypescriptContext calls and instead does CJS .d.ts copy + API SHA for the pre-emitted declarations.
     */
    typesPrebuilt: boolean;
    /**
     * Execute all enqueued work with a concurrency limit and clear the queue.
     */
    flushWork(): Promise<void>;
    constructor(options?: Options);
    get hasClean(): boolean | undefined;
    clearClean(): void;
    hasTargets(): boolean | undefined;
    hasTarget(target: Target): boolean;
    configure(project: Project): Promise<void>;
    build(project: Project, progress?: Progress): Promise<void>;
}
//# sourceMappingURL=project-builder.d.ts.map