import type { CommandInstance } from "vorpal";
type AnyMessagesFn = (message?: any, ...optionalParams: any[]) => void;
type StringMessagesFn = (message?: string, ...optionalParams: string[]) => void;
type AnyMessageFn = (message?: any) => void;
type StringMessageFn = (message?: string) => void;
type StringMessageSpreadFn = (...message: string[]) => void;
type AnyMessageSpreadFn = (...message: any[]) => void;
type SomeKindOfLogFn = AnyMessagesFn | StringMessagesFn | AnyMessageFn | StringMessageFn | StringMessageSpreadFn | AnyMessageSpreadFn;
type HasSomeKindOfLogMethod = {
    log: SomeKindOfLogFn;
};
/**
 * Something that has a .log method taking a string argument.
 *
 * null and undefined will fall back to console.log.
 */
export type LoggerCmdInstance = CommandInstance | Console | HasSomeKindOfLogMethod | null | undefined;
type LinesArgItem = string | number | boolean | Date | RegExp | null | undefined;
type LinesArg = LinesArgItem | LinesArgItem[];
/**
 * Logs multiple lines using the log method of the provided {@link LoggerCmdInstance}.
 *
 * Line items that are `null` or `undefined` are logged as empty lines.
 *
 * @param cmd - The logger instance to use. If `null` or `undefined`, `console` will be used.
 *
 * @example
 * ```ts
 * logLines(cmd, "line 1", "line 2", null, "line 3");
 * logLines(cmd, ...linesArray); // arrays can be spread into the function
 * logLines(cmd, linesArray); // but it will flatten the plain array for convenience
 * ```
 */
export declare function logLines(cmd?: LoggerCmdInstance, ...lines: LinesArg[]): void;
/**
 * Logs an error message using the log method of the provided {@link LoggerCmdInstance}.
 *
 * Line items that are `null` or `undefined` are logged as empty lines.
 *
 * @example
 * ```ts
 * logError(cmd, "Message");
 * logError(cmd, "Message", "Additional message");
 * logError(cmd, "Message", "Additional message", "Another additional message line");
 * logError(cmd, "Message", ...additionalMessages); // arrays can be spread into the function
 * logError(cmd, "Message", additionalMessages); // but it will flatten the plain array for convenience
 * ```
 */
export declare const logError: (cmd: LoggerCmdInstance, message: string, ...additionalMessages: LinesArg[]) => void;
/**
 * Logs a warning message using the log method of the provided {@link LoggerCmdInstance}.
 *
 * Line items that are `null` or `undefined` are logged as empty lines.
 *
 * @example
 * ```ts
 * logWarning(cmd, "Message");
 * logWarning(cmd, "Message", "Additional message");
 * logWarning(cmd, "Message", "Additional message", "Another additional message line");
 * logWarning(cmd, "Message", ...additionalMessages); // arrays can be spread into the function
 * logWarning(cmd, "Message", additionalMessages); // but it will flatten the plain array for convenience
 * ```
 */
export declare const logWarning: (cmd: LoggerCmdInstance, message: string, ...additionalMessages: LinesArg[]) => void;
export {};
