import { type OutputStyle } from '@williamthorsen/nmr-core'; export interface PackageHookStatus { packageName: string; packageDir: string; isPrivate: boolean; prepublishOnly: string | undefined; action: 'ok' | 'missing' | 'fixed' | 'would-fix'; } export interface EnsurePrepublishHooksResult { packages: PackageHookStatus[]; hasFailures: boolean; } export declare const DEFAULT_HOOK = "npm run build"; /** * Check (and optionally fix) whether all publishable workspace packages * have a `prepublishOnly` script. */ export declare function ensurePrepublishHooks(monorepoRoot: string, options: { fix: boolean; dryRun: boolean; command?: string; }): EnsurePrepublishHooksResult; /** * Reports one line per publishable package and closes with what the run came to. Private packages appear in * neither: they publish nothing, so a `prepublishOnly` is not theirs to carry. * * Every line goes to stdout, a failure's included, and the exit code is what carries a failure. A report split * across two streams leaves no reader holding the whole list. */ export declare function reportPrepublishHooks(result: EnsurePrepublishHooksResult, hookCommand: string, style: OutputStyle): void;