import { PassThrough, Transform } from "stream";
/** The directory to write the data and log files to. */
export declare const TMP_DIR: string;
/**
 * A helper class to easier mock output in unit tests.
 */
declare class StdWritable extends PassThrough {
    private std;
    constructor(std: NodeJS.WriteStream);
    get rows(): number;
    get columns(): number;
    set rows(rows: number);
    set columns(columns: number);
}
/**
 * A helper class to write messages to a log file.
 */
declare class FileLogWritable extends Transform {
    constructor();
    pipeToNewLogFile(key: string): () => Promise<void>;
}
/** Use instead of process.stdout. */
export declare const stdout: StdWritable;
/** Use instead of process.stderr. */
export declare const stderr: StdWritable;
/** The messages are also logged to this stream. By default, they are swallowed.
 * The caller may pipe it to a file if needed.*/
export declare const stdlog: FileLogWritable;
/**
 * Logs erasable (or persistent) progress message prepended with the timestamp.
 * The unique lines of the message are also written to the file log.
 */
export declare function progress(...lines: string[]): void;
export declare namespace progress {
    var unlogged: (...lines: string[]) => void;
    var clear: () => void;
    var done: () => void;
}
/**
 * Clears the progress and prints the raw message to console and to log file.
 */
export declare function print(msg: string): void;
export declare namespace print {
    var section: (msg: string) => void;
}
/**
 * Same as print(), but prepends the current date and time. The message is also
 * written to the log file.
 */
export declare function log(...lines: string[]): void;
export declare namespace log {
    var warning: (...lines: string[]) => void;
    var error: (...lines: string[]) => void;
    var shellCmd: ({ comment, cmd, input, isError, }: {
        comment: string;
        cmd: string;
        input: string | null;
        isError?: boolean;
    }) => void;
}
export {};
//# sourceMappingURL=logging.d.ts.map