import { ILoggerService } from "./i-logger-service";
import { TerminalColor } from "./terminal-color";
/**
 * A class that helps with printing relevant information
 */
export declare class LoggerService implements ILoggerService {
    /**
     * The color to use for standard output
     * @type {TerminalColor}
     */
    private readonly LOG_COLOR;
    /**
     * The color to use for debug output
     * @type {TerminalColor}
     */
    private readonly DEBUG_COLOR;
    /**
     * The color to use for verbose output
     * @type {TerminalColor}
     */
    private readonly VERBOSE_COLOR;
    /**
     * The prefix to attach to debugging messages
     * @type {string}
     */
    private readonly DEBUG_PREFIX;
    /**
     * The prefix to attach to verbose messages
     * @type {string}
     */
    private readonly VERBOSE_PREFIX;
    /**
     * The prefix to attach to log messages
     * @type {string}
     */
    private readonly LOG_PREFIX;
    /**
     * The prefix to attach to log messages related to tags
     * @type {(tag: string) => string}
     */
    private readonly TAG_LOG_PREFIX;
    /**
     * The prefix to attach to verbose log messages related to tags
     * @type {(tag: string) => string}
     */
    private readonly TAG_VERBOSE_PREFIX;
    /**
     * The prefix to attach to debug log messages related to tags
     * @type {(tag: string) => string}
     */
    private readonly TAG_DEBUG_PREFIX;
    /**
     * Create a nice terminal spinner
     * @type {Ora}
     */
    private readonly spinner;
    /**
     * Whether or not the spinner is currently running
     * @type {boolean}
     */
    private spinnerIsRunning;
    /**
     * Whether or not debugging is currently active
     * @type {boolean}
     */
    private _debug;
    /**
     * Whether or not verbose output is currently active
     * @type {boolean}
     */
    private _verbose;
    /**
     * Sets whether or not debugging is active
     * @param {boolean} debug
     */
    setDebug(debug: boolean): void;
    /**
     * Sets whether or not verbose output is active
     * @param {boolean} verbose
     */
    setVerbose(verbose: boolean): void;
    /**
     * Logs the given message if debugging is activate
     * @param {T[]} messages
     * @returns {T}
     */
    debug<T>(...messages: T[]): T[];
    /**
     * Logs the given messages related to the given tag, if debug output is active
     * @param {string} tag
     * @param {T} messages
     * @returns {T[]}
     */
    debugTag<T>(tag: string, ...messages: T[]): T[];
    /**
     * Logs the given messages
     * @param {T} messages
     * @returns {T[]}
     */
    log<T>(...messages: T[]): T[];
    /**
     * Logs the given messages, if verbose output is active
     * @param {T} messages
     * @returns {T[]}
     */
    verbose<T>(...messages: T[]): T[];
    /**
     * Pads a prefix to nicely align text inside the console
     * @param {string} prefix
     * @returns {string}
     */
    private padPrefix;
    /**
     * Logs messages related to the given tag
     * @param {string} tag
     * @param {T} messages
     * @returns {T[]}
     */
    logTag<T>(tag: string, ...messages: T[]): T[];
    /**
     * Logs the given messages related to the given tag, if verbose output is active
     * @param {string} tag
     * @param {T} messages
     * @returns {T[]}
     */
    verboseTag<T>(tag: string, ...messages: T[]): T[];
    /**
     * Logs the given message with a nice terminal spinner
     * @param {string} message
     * @param {TerminalColor} [color]
     * @returns {string}
     */
    logWithSpinner(message: string, color?: TerminalColor): string;
    /**
     * Logs the given message with a nice terminal spinner if debug output is active
     * @param {string} message
     * @returns {string}
     */
    debugWithSpinner(message: string): string;
    /**
     * Logs the given message with a nice terminal spinner if verbose output is active
     * @param {string} message
     * @returns {string}
     */
    verboseWithSpinner(message: string): string;
    /**
     * Clears the running terminal spinner, if any is running
     * @param {string} [message]
     * @returns {string?}
     */
    clearSpinner(message?: string): string | undefined;
}
