type ColorFn = (text: string | number) => string;
declare const color: {
    dim: ColorFn;
    red: ColorFn;
    bold: ColorFn;
    blue: ColorFn;
    cyan: ColorFn;
    gray: ColorFn;
    black: ColorFn;
    green: ColorFn;
    white: ColorFn;
    reset: ColorFn;
    yellow: ColorFn;
    magenta: ColorFn;
    underline: ColorFn;
    strikethrough: ColorFn;
};

declare const LOG_TYPES: {
    error: {
        readonly label: string;
        level: "error";
    };
    warn: {
        readonly label: string;
        level: "warn";
    };
    info: {
        readonly label: string;
        level: "info";
    };
    start: {
        readonly label: string;
        level: "info";
    };
    ready: {
        readonly label: string;
        level: "info";
    };
    success: {
        readonly label: string;
        level: "info";
    };
    log: {
        level: "info";
    };
    debug: {
        readonly label: string;
        level: "verbose";
    };
};

type LogLevel = 'silent' | 'error' | 'warn' | 'info' | 'log' | 'verbose';
type LogMessage = unknown;
interface LogType {
    label?: string;
    level: LogLevel;
    color?: ColorFn;
}
type LogFunction = (message?: LogMessage, ...args: unknown[]) => void;
interface Options {
    /**
     * Controls which log levels are emitted.
     * @default 'info'
     */
    level?: LogLevel;
    /**
     * Prepends a fixed prefix to every log message.
     * @default undefined
     */
    prefix?: string;
    /**
     * Overrides the console used by this logger instance.
     * @default globalThis.console
     */
    console?: Pick<Console, 'log' | 'warn' | 'error'>;
    /**
     * Aligns continuation lines of multi-line messages to the first line's
     * content column (label + prefix). Error object stacks keep their original
     * top-aligned formatting.
     * @default false
     */
    alignMultiline?: boolean;
}
type LogMethods = keyof typeof LOG_TYPES;
type Logger = Record<LogMethods, LogFunction> & {
    greet: (message: string) => void;
    level: LogLevel;
    readonly options: Options;
    override: (customLogger: Partial<Record<LogMethods, LogFunction>>) => void;
};

declare const createLogger: (options?: Options) => Logger;

declare const logger: Logger;

export { color, createLogger, logger };
export type { LogFunction, LogLevel, LogMessage, LogType, Logger, Options };
