/**
 * Generic build adapter.
 *
 * Handles any JS framework by:
 * 1. Installing dependencies
 * 2. Running the project's build script
 * 3. Copying the build output to the output directory
 *
 * This is the fallback for frameworks without a specific adapter,
 * and is also the base logic that specific adapters build on.
 */
import type { BuildAdapter } from './types.ts';
import type { MonorepoContext } from '../detect/monorepo.ts';
/**
 * Install dependencies using the detected package manager.
 */
export declare function installDependencies(projectDir: string, packageManager: string, logger: {
    debug: (...args: unknown[]) => void;
    warn?: (...args: unknown[]) => void;
}): Promise<void>;
export declare function copyRuntimeManifests(projectDir: string, outputDir: string, runtimeDependencies?: string[], packageManager?: string): void;
export declare function runBuildCommand(projectDir: string, buildCommand: string, packageManager: string, buildEnv?: Record<string, string>, logger?: {
    debug: (...args: unknown[]) => void;
}, extraBinDirs?: string[]): Promise<{
    stdout: string;
    stderr: string;
}>;
/**
 * Recursively copy the monorepo tree from `monorepo.root` into
 * `outputDir`, excluding directories that must never ship (or that
 * would explode upload size: every nested `node_modules`, the VCS dir,
 * agent dotfiles, dev env files).
 *
 * Build artifacts already live inside the tree at their natural
 * paths (e.g. `<root>/apps/web/dist/`); this single pass picks them
 * up along with every workspace package's source. The deploy zip
 * filter (`cmd/cloud/deploy/upload.ts`) re-applies the same
 * exclusions defensively so anything new we drop in here (e.g. a
 * staging `.agentuity/` sibling) doesn't slip through either.
 */
export declare function copyMonorepoTree(monorepo: MonorepoContext, outputDir: string, logger: {
    debug: (...args: unknown[]) => void;
}): void;
export declare const genericAdapter: BuildAdapter;
//# sourceMappingURL=generic.d.ts.map