import type { Format } from 'logform';
import type { Logger } from 'winston';
import type TransportStream from 'winston-transport';
/**
 * Log formats provided by the util package.
 */
export declare const logFormat: {
    kibana: Format;
    local: Format;
};
/**
 * Mute all logger output created by the SAP Cloud SDK Logger. This also applies to future loggers created. Useful for tests.
 */
export declare function muteLoggers(): void;
/**
 * Unmute all logger output created by the SAP Cloud SDK Logger. This also applies to future loggers created. Useful for tests.
 */
export declare function unmuteLoggers(): void;
/**
 * Default logger for the SAP Cloud SDK for unhandled exceptions.
 */
export declare const cloudSdkExceptionLogger: Logger;
/**
 * Disable logging of exceptions. Enabled by default.
 */
export declare function disableExceptionLogger(): void;
/**
 * Enable logging of exceptions. Enabled by default.
 */
export declare function enableExceptionLogger(): void;
/**
 * Create a logger for the given message context, if available.
 *
 * Usage:
 * To create a logger in your module, it is recommended to pass a module identifier that will be logged as `messageContext` for all messages from this logger:
 * `const logger = createLogger('my-module');`. Not setting any module identifier will retrieve the default logger.
 * Use this logger throughout your module. If the module is spread over multiple files, you can retrieve the logger instance by calling the `createLogger` function with the respective module identifier.
 * There will always be only one instance of a logger per module identifier.
 * You can pass any custom data that you want to be logged in addition by passing an object instead. You can change the default logging level (`INFO`) using the `level` key in the object.
 * In those cases, provide the `messageContext` as a key in the object:
 * ```
 * const logger = createLogger({
 *   messageContext: 'my-module',
 *   myCustomKey: 'my-custom-data',
 *   level: 'debug'
 * });
 * ```
 * You will find these information under the _custom_fields_ key in your Cloud Foundry logs.
 *
 * To retrieve a logger after its creation use {@link getLogger}.
 * If you want to change the log level of a logger use {@link setLogLevel}.
 * @param messageContext - Either a key for the message context of all messages produced by the logger or an object with additional keys to set in the message.
 * @returns A newly created or an already existing logger for the given context.
 */
export declare function createLogger(messageContext?: string | (MessageContextObj & LoggerOptions)): Logger;
/**
 * Get logger for a given message context, if available.
 * @param messageContext - A key for the message context of all messages produced by the logger.
 * @returns The logger for the given messageContext if it was created before.
 */
export declare function getLogger(messageContext?: string): Logger | undefined;
/**
 * Change the log level of a logger based on its message context.
 * e.g., to set the log level for the destination accessor module of the SDK to _debug_, simply call `setLogLevel('debug', 'destination-accessor')`.
 * @param level - Level to set the logger to. Use an empty string '' as level to unset context level.
 * @param messageContextOrLogger - Message context of the logger to change the log level for or the logger itself.
 */
export declare function setLogLevel(level: LogLevel | '', messageContextOrLogger?: string | Logger): void;
/**
 * Change the global log level of the container which will set default level for all active loggers.
 * e.g., to set the global log level call `setGlobalLogLevel('debug')`.
 * @param level - The log level to set the global log level to.
 */
export declare function setGlobalLogLevel(level: LogLevel): void;
/**
 * Get the global log level of the container.
 * @returns The global log level, or `undefined` when not defined.
 */
export declare function getGlobalLogLevel(): string | undefined;
/**
 * Change the global transport of the container which will set default transport for all active loggers.
 * e.g., to set the global transport call `setGlobalTransports(httpTransport)`.
 * @param customTransports - The transport to set the global transport to. Both single transport and an array with multiple transports are supported.
 */
export declare function setGlobalTransports(customTransports: TransportStream | TransportStream[]): void;
/**
 * Change the log format of a logger based on its message context.
 * e.g., to set the log format for the destination accessor module of the SDK to `local`, simply call `setLogFormat(logFormat.local, 'destination-accessor')`.
 * @param format - Format to set the logger to. Use `logFormat` to get the pre-defined log formats or use a custom log format.
 * @param messageContextOrLogger - Message context of the logger to change the log level for or the logger itself.
 */
export declare function setLogFormat(format: Format, messageContextOrLogger?: string | Logger): void;
/**
 * Change the global log format of the container which will set default format for all active loggers.
 * e.g., to set the global log format to `local` call `setGlobalLogLevel(logFormat.local)` or use a custom log format.
 * @param format - The log format to set the global log format to.
 */
export declare function setGlobalLogFormat(format: Format): void;
/**
 * Get the global log format of the container.
 * @returns The global log format, or `undefined` when not defined.
 */
export declare function getGlobalLogFormat(): Format | undefined;
/**
 * Potentially sensitive keys will be matched case-insensitive and as substrings.
 * Matches will be replaced with a placeholder string.
 * @param input - The record to be sanitized.
 * @param replacementString - The placeholder string.
 * @param sensitiveKeys - The list of keys to be replaced. This overrides the default list.
 * @returns The sanitized copy of the input record.
 */
export declare function sanitizeRecord<T = any>(input: Record<string, T>, replacementString?: string, sensitiveKeys?: string[]): Record<string, T>;
/**
 * Reset all the custom log levels for loggers and message context.
 */
export declare function resetCustomLogLevels(): void;
/**
 * Reset all the custom log formats for loggers and message context.
 */
export declare function resetCustomLogFormats(): void;
/**
 * Npm log levels used for the SAP Cloud SDK logger.
 */
export type LogLevel = 'error' | 'warn' | 'info' | 'verbose' | 'debug' | 'silly';
/**
 * Configurable logger options.
 */
export interface LoggerOptions {
    /**
     * The log level of the logger.
     */
    level?: LogLevel;
}
/**
 * Log message context for a logger with additional custom data.
 */
export interface MessageContextObj {
    /**
     * Name of the message context.
     */
    messageContext?: string;
    [key: string]: any;
}
