import type { ContentFs } from '../../fs/content-fs.js';
import { LogLevel } from './formatter.js';
export type LoggerContext = {
    email?: string;
    subject?: string;
    ipAddress?: string;
    userAgent?: string;
    method?: string;
    pathname?: string;
    statusCode?: number;
    teams?: string[];
    apiFunction?: string;
    requestHandlerId?: string;
};
type LoggerOptions = {
    context?: LoggerContext;
    allowInteractive?: boolean;
    minLogLevel?: LogLevel;
};
export declare class Logger {
    #private;
    constructor({ context, allowInteractive, minLogLevel }?: LoggerOptions);
    shouldLog(level: LogLevel): boolean;
    info(message: string, ...args: unknown[]): void;
    infoTime(timingId: symbol | string, message: string, ...args: unknown[]): {
        message: string;
        timeMs: number;
    } | undefined;
    success(message: string, ...args: unknown[]): void;
    logInFooter(id: string, message: string, ...args: unknown[]): void;
    successTime(timingId: symbol | string, message: string, ...args: unknown[]): {
        message: string;
        timeMs: number;
    } | undefined;
    warn(message: string, ...args: unknown[]): void;
    warnProd(message: string, ...args: unknown[]): void;
    error(message: string, ...args: unknown[]): void;
    contentError(message: string, ...args: unknown[]): void;
    verbose(message: string, ...args: unknown[]): void;
    verboseTime(timingId: symbol | string, message: string, ...args: unknown[]): {
        message: string;
        timeMs: number;
    } | undefined;
    httpTime(timingId: symbol | string): {
        message: string;
        timeMs: number;
    } | undefined;
    startTiming(label?: string): symbol | string;
    updateContext(context: Partial<LoggerContext>): void;
    clearAllTimeouts(): void;
    isInteractive(): boolean;
    warnForRealFile(message: string, relativePath: string, fs: ContentFs, ...args: unknown[]): void;
}
export declare const logger: Logger;
export {};
//# sourceMappingURL=logger.d.ts.map