/**
 * Log a notify level log.
 * @param args - rest parameter syntax (...args), allows function to accept indefinite number of args as an array of log messages(strings/objects).
 * Provide args separated by commas. No need to stringify objects. Console will do that
 */
export function notify(...args: any[]): void;
/**
 * Log a fatal level log.
 * @param args - rest parameter syntax (...args), allows function to accept indefinite number of args as an array of log messages(strings/objects).
 * Provide args separated by commas. No need to stringify objects. Console will do that
 */
export function fatal(...args: any[]): void;
/**
 * Log a error level log.
 * @param args - rest parameter syntax (...args), allows function to accept indefinite number of args as an array of log messages(strings/objects).
 * Provide args separated by commas. No need to stringify objects. Console will do that
 */
export function error(...args: any[]): void;
/**
 * Log a warn level log.
 * @param args - rest parameter syntax (...args), allows function to accept indefinite number of args as an array of log messages(strings/objects).
 * Provide args separated by commas. No need to stringify objects. Console will do that
 */
export function warn(...args: any[]): void;
/**
 * Log an info level log.
 * @param args - rest parameter syntax (...args), allows function to accept indefinite number of args as an array of log messages(strings/objects).
 * Provide args separated by commas. No need to stringify objects. Console will do that
 */
export function info(...args: any[]): void;
/**
 * Log a debug level log.
 * @param args - rest parameter syntax (...args), allows function to accept indefinite number of args as an array of log messages(strings/objects).
 * Provide args separated by commas. No need to stringify objects. Console will do that
 */
export function debug(...args: any[]): void;
/**
 * Log a trace level log.
 * @param args - rest parameter syntax (...args), allows function to accept indefinite number of args as an array of log messages(strings/objects).
 * Provide args separated by commas. No need to stringify objects. Console will do that
 */
export function trace(...args: any[]): void;
export let logLevel: any;
export function loggerWithTag(tag: any, conditional: any, logger?: any): {
    notify: (...args: any[]) => any;
    fatal: (...args: any[]) => any;
    error: (...args: any[]) => any;
    warn: (...args: any[]) => any;
    info: (...args: any[]) => any;
    debug: (...args: any[]) => any;
    trace: (...args: any[]) => any;
};
export function suppressLogging(callback: any): void;
/**
 * Get the log settings from the settings file.
 * If the settings file doesn't exist (during install) check for command or env vars, if there aren't
 * any, use default values.
 */
export function initLogSettings(forceInit?: boolean): void;
export function logCustomLevel(level: any, output: any, options: any, ...args: any[]): void;
export function closeLogFile(): void;
export function createLogger({ path: logFilePath, level: logLevel, stdStreams: logToStdstreams, rotation, isExternalInstance, writeToLog, component, }: {
    path: any;
    level: any;
    stdStreams: any;
    rotation: any;
    isExternalInstance: any;
    writeToLog: any;
    component: any;
}): HarperLogger;
/**
 * Check if the current log level is at or below the given level.
 * @param level
 * @return {boolean}
 */
export function logsAtLevel(level: any): boolean;
export function setMainLogger(logger: any): void;
export function setLogLevel(level: any): void;
export namespace OUTPUTS {
    let STDOUT: string;
    let STDERR: string;
}
export function AuthAuditLog(username: any, status: any, type: any, originatingIp: any, requestMethod: any, path: any): void;
export class AuthAuditLog {
    constructor(username: any, status: any, type: any, originatingIp: any, requestMethod: any, path: any);
    username: any;
    status: any;
    type: any;
    originating_ip: any;
    request_method: any;
    path: any;
}
declare function updateLogSettings(): Promise<void>;
/**
 * This converts an error to a human readable string. This follows the convention of standard console logging
 * of printing the error as "ErrorClassName: message". Strangely, this is _not_ how Error.prototype.toString
 * behaves, so this normalizes to match the bevahior of the console rather than default toString.
 * @param error
 * @return {string|string}
 */
export function errorToString(error: any): string | string;
/**
 * We call this if stdio is not functional
 */
export function disableStdio(): void;
declare const HarperLogger_base: {
    new (stdout: NodeJS.WritableStream, stderr?: NodeJS.WritableStream, ignoreErrors?: boolean): import("node:console").Console;
    new (options: import("node:console").ConsoleOptions): import("node:console").Console;
    prototype: import("node:console").Console;
};
declare class HarperLogger extends HarperLogger_base {
    constructor(streams: any, level: any);
    level: any;
    fatal(...args: any[]): void;
    notify(...args: any[]): void;
    withTag(tag: any): {
        notify: (...args: any[]) => any;
        fatal: (...args: any[]) => any;
        error: (...args: any[]) => any;
        warn: (...args: any[]) => any;
        info: (...args: any[]) => any;
        debug: (...args: any[]) => any;
        trace: (...args: any[]) => any;
    };
    forComponent(_name: any): this;
    hasComponent(_name: any): boolean;
}
export declare function getLogFilePath(): any;
export declare function forComponent(name: any, isExternal: any): any;
export declare namespace externalLogger {
    function notify(...args: any[]): void;
    function fatal(...args: any[]): void;
    function error(...args: any[]): void;
    function warn(...args: any[]): void;
    function info(...args: any[]): void;
    function debug(...args: any[]): void;
    function trace(...args: any[]): void;
    function withTag(tag: any): any;
    function loggerWithTag(tag: any): any;
    function forComponent(name: any): any;
}
export { updateLogSettings as start, updateLogSettings as startOnMainThread };
