/**
 * Internal loggers are used by the library itself. It allows us to log
 * on a few key points, which is useful when troubleshooting why
 * things don't work as one expects.
 *
 * By default the internal provider logs at Error (so nothing will
 * be shown unless there is an error in setup e.g.).
 */
export interface InternalLogger {
    trace: (msg: () => string) => void;
    debug: (msg: () => string) => void;
    info: (msg: () => string) => void;
    warn: (msg: () => string, error?: Error) => void;
    error: (msg: () => string, error?: Error) => void;
}
/**
 * Internal log level (note: do NOT use LogLevel, or we get circular loading issues!)
 */
export declare enum InternalLogLevel {
    Trace = 0,
    Debug = 1,
    Info = 2,
    Warn = 3,
    Error = 4
}
/**
 * Internal logger, this is NOT for end users. Instead this is used to enable logging for typescript-logging itself in case of problems.
 *
 * @param name Name of logger
 */
export declare function getInternalLogger(name: string): InternalLogger;
/**
 * Can be used to change the *internal* logging of the library.
 * Has no effect on end user logging.
 *
 * As such should normally not be used by end users.
 */
export declare const INTERNAL_LOGGING_SETTINGS: {
    /**
     * Changes the log level for the internal logging (for all new and existing loggers)
     * @param level New log level
     */
    setInternalLogLevel: (level: InternalLogLevel) => void;
    /**
     * Changes where messages are written to for all new and existing loggers),
     * by default they are written to the console.
     * @param fnOutput Function to write messages to
     */
    setOutput: (fnOutput: (msg: string) => void) => void;
    /**
     * Resets the log level and output back to defaults (level to error and writing to console)
     * for all new and existing loggers.
     */
    reset: () => void;
};
//# sourceMappingURL=InternalLogger.d.ts.map