import { ILoggerService } from "./i-logger-service";
/**
 * A class that helps with printing relevant information
 */
export declare class LoggerService implements ILoggerService {
    /**
     * 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;
    /**
     * 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
     * @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(prefix);
    /**
     * 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[];
}
