/**
 * Progress indicator returned by {@link LoggerPort.step}. Backed by `ora` in
 * the default adapter. Call exactly one of `succeed` / `fail` / `warn` to
 * close the spinner.
 */
export interface Spinner {
    /** Stop the spinner with a red failure mark and the given message. */
    fail(text: string): void;
    /** Stop the spinner with a green check and the given message. */
    succeed(text: string): void;
    /** Stop the spinner with a yellow warning mark and the given message. */
    warn(text: string): void;
}
/**
 * Port for writing user-facing progress output during a deploy run.
 *
 * Implementations decide whether to write to the terminal (interactive CLI),
 * to a file for CI logs, or to a silent sink for tests. The business logic in
 * `DeployService` depends only on this interface, never on `chalk` / `ora`.
 */
export interface LoggerPort {
    /** Print an error-level message. Does not throw. */
    error(message: string): void;
    /** Print a prominent section header (e.g. before starting a phase). */
    header(title: string): void;
    /** Print an informational message. */
    info(message: string): void;
    /**
     * Append a structured entry to the log file about a caught error.
     * `context` identifies where the error came from; `error` is pretty-printed.
     */
    logError(context: string, error: unknown): void;
    /** Absolute path to the log file the logger is currently writing to. */
    logFilePath: string;
    /**
     * Start a spinner with `label` and return it. The caller is responsible for
     * closing it via `succeed` / `fail` / `warn`.
     */
    step(label: string): Spinner;
    /** Print a success-level message. */
    success(message: string): void;
    /** Print a warning-level message. */
    warn(message: string): void;
}
