import type { ConfigData } from "../types/index.js";
import type { App } from "@gjsify/rolldown-plugin-gjsify";
import type { RolldownOutput } from "rolldown";
export declare class BuildAction {
    readonly configData: ConfigData;
    constructor(configData?: ConfigData);
    /** Library mode */
    buildLibrary(): Promise<RolldownOutput[]>;
    /**
     * Parse the `--globals` value into { autoMode, extras }.
     * - `auto`             → { autoMode: true, extras: '' }
     * - `auto,dom`         → { autoMode: true, extras: 'dom' }
     * - `auto,dom,fetch`   → { autoMode: true, extras: 'dom,fetch' }
     * - `dom,fetch`        → { autoMode: false, extras: 'dom,fetch' }
     * - `none` / ``        → { autoMode: false, extras: '' }
     * - `undefined`        → { autoMode: true, extras: '' }  (default)
     */
    private parseGlobalsValue;
    /**
     * Resolve the `--globals` CLI list into a pre-computed inject stub path
     * that the orchestrator appends to its input list. Only runs for
     * `--app gjs` — Node and browser builds rely on native globals.
     *
     * Used only for the explicit-only path (no `auto` token in the value).
     * The auto path is handled in `buildApp` via the iterative multi-pass build.
     */
    private resolveGlobalsInject;
    /**
     * Post-processing: prepend the resolved shebang line and mark the
     * output executable. Only runs for GJS app builds with a single outfile.
     * The shebang plugin in `@gjsify/rolldown-plugin-gjsify` already injects
     * during bundling — this hook is the safety net for anything that
     * bypassed the plugin (e.g. user-supplied banners that out-ordered it),
     * plus the chmod.
     */
    private applyShebang;
    /** Application mode */
    buildApp(app?: App): Promise<RolldownOutput[]>;
    start(buildType?: {
        library?: boolean;
        app?: App;
    }): Promise<RolldownOutput[]>;
}
