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;
};
export type LoggerStickyState = {
    globalStickyLines: {
        id: string;
        content: string;
    }[];
    prevStickyLines: number;
};
export declare class Logger {
    #private;
    disableSticky: boolean;
    constructor(context?: LoggerContext);
    panic(message: string | Error, ...args: any[]): never;
    panicOnContentError(message: string | Error, ...args: any[]): never;
    info(message: string, ...args: any[]): void;
    infoTime(timingId: symbol | string, message: string, ...args: any[]): {
        message: string;
        timeMs: number;
    } | undefined;
    success(message: string, ...args: any[]): void;
    logSticky(id: string, message: string, ...args: any[]): void;
    successTime(timingId: symbol | string, message: string, ...args: any[]): {
        message: string;
        timeMs: number;
    } | undefined;
    warn(message: string, ...args: any[]): void;
    warnProd(message: string, ...args: any[]): void;
    error(message: string, ...args: any[]): void;
    contentError(message: string, ...args: any[]): void;
    verbose(message: string, ...args: any[]): void;
    verboseTime(timingId: symbol | string, message: string, ...args: any[]): {
        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;
    setStickyState({ globalStickyLines, prevStickyLines, }: {
        globalStickyLines: {
            id: string;
            content: string;
        }[];
        prevStickyLines: number;
    }): void;
    getStickyState(): {
        globalStickyLines: {
            id: string;
            content: string;
        }[];
        prevStickyLines: number;
    };
    printSticky(): void;
    clearSticky(): void;
    isInteractive(): boolean;
    warnForRealFile(message: string, relativePath: string, fs: ContentFs, ...args: any[]): Promise<void>;
    patchConsole(): void;
    static getLogLevel(method: (typeof monkeyPatchedMethods)[number]): LogLevel;
}
export declare const logger: Logger;
declare const monkeyPatchedMethods: readonly ["log", "warn", "error", "info", "debug", "trace", "dir", "table", "assert"];
export {};
//# sourceMappingURL=logger.d.ts.map