/// <reference types="node" />
/// <reference types="bunyan" />
import * as bunyan from 'bunyan';
export declare abstract class Logger {
    /**
       * Returns a boolean: is the `trace` level enabled?
       * This is equivalent to `log.isTraceEnabled()` or `log.isEnabledFor(TRACE)` in log4j.
       */
    abstract trace(): boolean;
    /**
       * The first field can optionally be a "fields" object, which
       * is merged into the log record.
       * Special case to log an `Error` instance to the record.
       * This adds an `err` field with exception details
       * (including the stack) and sets `msg` to the exception
       * message or you can specify the `msg`.
       */
    abstract trace(error: Error | Buffer | Object, format?: any, ...params: any[]): void;
    /**
       * Uses `util.format` for msg formatting.
       */
    abstract trace(format: string | number, ...params: any[]): void;
    /**
    * Returns a boolean: is the `debug` level enabled?
    * This is equivalent to `log.isDebugEnabled()` or `log.isEnabledFor(DEBUG)` in log4j.
    */
    abstract debug(): boolean;
    /**
       * Special case to log an `Error` instance to the record.
       * This adds an `err` field with exception details
       * (including the stack) and sets `msg` to the exception
       * message or you can specify the `msg`.
       */
    abstract debug(error: Error | Buffer | Object, format?: any, ...params: any[]): void;
    /**
       * Uses `util.format` for msg formatting.
       */
    abstract debug(format: string | number, ...params: any[]): void;
    /**
       * Returns a boolean: is the `info` level enabled?
       * This is equivalent to `log.isInfoEnabled()` or `log.isEnabledFor(INFO)` in log4j.
       */
    abstract info(): boolean;
    /**
       * Special case to log an `Error` instance to the record.
       * This adds an `err` field with exception details
       * (including the stack) and sets `msg` to the exception
       * message or you can specify the `msg`.
       */
    abstract info(error: Error | Buffer | Object, format?: any, ...params: any[]): void;
    /**
       * Uses `util.format` for msg formatting.
       */
    abstract info(format: string | number, ...params: any[]): void;
    /**
       * Returns a boolean: is the `warn` level enabled?
       * This is equivalent to `log.isWarnEnabled()` or `log.isEnabledFor(WARN)` in log4j.
       */
    abstract warn(): boolean;
    /**
       * Special case to log an `Error` instance to the record.
       * This adds an `err` field with exception details
       * (including the stack) and sets `msg` to the exception
       * message or you can specify the `msg`.
       */
    abstract warn(error: Error | Buffer | Object, format?: any, ...params: any[]): void;
    /**
       * Uses `util.format` for msg formatting.
       */
    abstract warn(format: string | number, ...params: any[]): void;
    /**
       * Returns a boolean: is the `error` level enabled?
       * This is equivalent to `log.isErrorEnabled()` or `log.isEnabledFor(ERROR)` in log4j.
       */
    abstract error(): boolean;
    /**
       * Special case to log an `Error` instance to the record.
       * This adds an `err` field with exception details
       * (including the stack) and sets `msg` to the exception
       * message or you can specify the `msg`.
       */
    abstract error(error: Error | Buffer | Object, format?: any, ...params: any[]): void;
    /**
       * Uses `util.format` for msg formatting.
       */
    abstract error(format: string | number, ...params: any[]): void;
    /**
       * Returns a boolean: is the `fatal` level enabled?
       * This is equivalent to `log.isFatalEnabled()` or `log.isEnabledFor(FATAL)` in log4j.
       */
    abstract fatal(): boolean;
    /**
       * Special case to log an `Error` instance to the record.
       * This adds an `err` field with exception details
       * (including the stack) and sets `msg` to the exception
       * message or you can specify the `msg`.
       */
    abstract fatal(error: Error | Buffer | Object, format?: any, ...params: any[]): void;
    /**
       * Uses `util.format` for msg formatting.
       */
    abstract fatal(format: string | number, ...params: any[]): void;
}
export declare class LogManagerInternal {
    static setAppName: any;
    static getLogger: any;
    private static beSmartOnThePath(thePath);
    private static getEffectiveLevel(loggerName, streamName, configuredLevel);
    private static mkdirpSync(thePath, mode);
    private static getRedisStream(redisConfig);
    private static resolvePath(thePath);
    private streamCache;
    private appName;
    getLogger(filePath?: string): Logger;
    scheduleShutdown(): void;
    closeStreams(): void;
    setAppName(appName: string): void;
    getAppName(): string;
    getLoggerInternal(loggerPath: string): Logger;
    getStreamConfig(streamName: string, level: bunyan.LogLevel): {
        stream: bunyan.Stream;
        level: bunyan.LogLevel;
        name: any;
    } | {
        type: string;
        stream: bunyan.Stream;
        closeOnExit: boolean;
        level: bunyan.LogLevel;
    } | {
        type: string;
        level: bunyan.LogLevel;
        stream: bunyan.Stream;
    };
    getUnderlyingStream(streamName: string): bunyan.Stream;
}
export declare const LogManager: LogManagerInternal;
