/**
 * @license
 * Copyright 2022-2026 Greg Lauckhart <greg@lauckhart.com>
 * SPDX-License-Identifier: Apache-2.0
 */
import { Format } from "esbuild";
import { Package } from "../util/package.js";
export declare const BUILD_INFO_LOCATION = "build/info.json";
export declare const COMPILED_CONFIG_PATH = "build/build.config.js";
export interface BuildInformation {
    /**
     * Time of last build.  Compared to source files to determine whether build is dirty.
     */
    timestamp?: string;
}
export declare class Project {
    #private;
    pkg: Package;
    constructor(source?: Package | string);
    buildSource(format: Format): Promise<void>;
    buildTests(format: Format): Promise<void>;
    clean(): Promise<void>;
    get hasDeclarations(): boolean;
    recordBuildInfo(info: BuildInformation): Promise<void>;
    configure(): Promise<Project.Config | undefined>;
    /**
     * Copy files into dist for supported formats.
     */
    copyToDist(source: string, dest: string): Promise<void>;
}
export declare namespace Project {
    interface Context {
        project: Project;
    }
    interface Config {
        startup?: (context: Context) => Promise<void>;
        before?: (context: Context) => Promise<void>;
        after?: (context: Context) => Promise<void>;
    }
}
//# sourceMappingURL=project.d.ts.map