export declare enum LogLevel {
    terse = 0,
    normal = 1,
    requestTime = 2,
    verbose = 3
}
export declare enum Msg {
    Err = "Err",
    Info = "Info",
    Perf = "Perf"
}
export interface Logger {
    close(): void;
    hasLevel(level: LogLevel): boolean;
    loggingEnabled(): boolean;
    perftrc(s: string): void;
    info(s: string): void;
    err(s: string): void;
    startGroup(): void;
    endGroup(): void;
    msg(s: string, type?: Msg): void;
    getLogFileName(): string | undefined;
}
export declare class FileLogger implements Logger {
    private readonly logFilename;
    private readonly traceToConsole;
    private readonly level;
    private fd;
    private seq;
    private inGroup;
    private firstInGroup;
    constructor(logFilename: string, traceToConsole: boolean, level: LogLevel);
    close(): void;
    getLogFileName(): string;
    perftrc(s: string): void;
    info(s: string): void;
    err(s: string): void;
    startGroup(): void;
    endGroup(): void;
    loggingEnabled(): boolean;
    hasLevel(level: LogLevel): boolean;
    msg(s: string, type?: Msg): void;
    private get canWrite();
    private write;
}
export declare class NoopLogger implements Logger {
    close(): void;
    hasLevel(_level: LogLevel): boolean;
    loggingEnabled(): boolean;
    perftrc(_s: string): void;
    info(_s: string): void;
    err(_s: string): void;
    startGroup(): void;
    endGroup(): void;
    msg(_s: string, _type?: Msg | undefined): void;
    getLogFileName(): string | undefined;
}
