import { Writable } from 'stream';
export type SyncSectionRunner = (logger: LogReporter) => void;
export type AsyncSectionRunner = (logger: LogReporter) => Promise<void>;
export declare enum CarotColor {
    White = 0,
    Green = 1,
    Blue = 2,
    Yellow = 3,
    Red = 4
}
export interface LogReporterOptions {
    stdout?: Writable;
    level?: number;
}
export declare const SINGLE_LINE_CHAR = "\u00B7";
export interface PlatformLogging {
    start?: (what: string) => string;
    end?: (what: string) => string;
    debug?: (message: string) => string;
    info?: (message: string) => string;
    warning?: (message: string) => string;
    error?: (message: string) => string;
}
export declare class LogReporter {
    private options?;
    stdout: Writable;
    level: number;
    indent: number;
    constructor(options?: LogReporterOptions | undefined);
    runSectionSync(title: string, runner: SyncSectionRunner): void;
    runSection(title: string, runner: AsyncSectionRunner): Promise<void>;
    beginSection(title: string): {
        start: number;
        title: string;
    };
    endSection({ title, start }: {
        title: string;
        start: number;
    }): void;
    reportHeader(message: string): void;
    reportDryrun(message: string): void;
    reportInfo(message: string): void;
    reportWarning(message: string, important?: boolean): void;
    reportError(message: string, important?: boolean): void;
    private formatPrefix;
    private formatIndent;
    writeLine(message: string): void;
}
