/**
 * Deploy lifecycle hooks (`config.hooks`): `beforeBuild` / `afterBuild` /
 * `beforeDeploy` / `afterDeploy`. Each hook is either a shell command (string,
 * run on the deploying machine) or an async function called with the config.
 * Mirrors Forge/Envoyer-style deploy hooks, but they run locally around the
 * `cloud deploy` lifecycle (server-side steps belong in `site.deployScript`).
 */
import type { CloudConfig } from '@ts-cloud/core';
export type LifecycleHook = string | ((config: CloudConfig) => void | Promise<void>) | undefined;
export type HookName = 'beforeBuild' | 'afterBuild' | 'beforeDeploy' | 'afterDeploy';
export interface HookLogger {
    step?: (message: string) => void;
    error?: (message: string) => void;
}
/**
 * Run a single lifecycle hook. A string is executed as a shell command (inherits
 * stdio, runs in `cwd`); a function is awaited. Throws if a string hook exits
 * non-zero so the caller can abort the deploy. No-op when the hook is unset.
 */
export declare function runHook(hook: LifecycleHook, config: CloudConfig, name: HookName, logger?: HookLogger, cwd?: string): Promise<void>;
/**
 * Run a named hook from `config.hooks`, returning false if a string hook fails
 * (so the deploy command can stop). Logs the failure via `logger.error`.
 */
export declare function runConfigHook(config: CloudConfig, name: HookName, logger?: HookLogger, cwd?: string): Promise<boolean>;
