import { JsonMap } from '@salesforce/ts-types';
import { Logger } from '../logger';
/**
 * Renders schema properties.  By default, this is simply an identity transform.  Subclasses may provide more
 * interesting decorations of each values, such as ANSI coloring.
 */
export declare class SchemaPropertyRenderer {
    /**
     * Renders a name.
     *
     * @param name The name value to render.
     */
    renderName(name: string): string;
    /**
     * Renders a title.
     *
     * @param title The title value to render.
     */
    renderTitle(title: string): string;
    /**
     * Renders a description.
     *
     * @param description The description value to render.
     */
    renderDescription(description: string): string;
    /**
     * Renders a type.
     *
     * @param propertyType The type value to render.
     */
    renderType(propertyType: string): string;
}
/**
 * Prints a JSON schema in a human-friendly format.
 *
 * ```
 * import chalk from 'chalk';
 * class MyPropertyRenderer extends SchemaPropertyRenderer {
 *   renderName(name) { return chalk.bold.blue(name); }
 * }
 *
 * const printer = new SchemaPrinter(logger, schema, new MyPropertyRenderer());
 * printer.getLines().forEach(console.log);
 * ```
 */
export declare class SchemaPrinter {
    private schema;
    private propertyRenderer;
    private logger;
    private lines;
    /**
     * Constructs a new `SchemaPrinter`.
     *
     * @param logger The logger to use when emitting the printed schema.
     * @param schema The schema to print.
     * @param propertyRenderer The property renderer.
     */
    constructor(logger: Logger, schema: JsonMap, propertyRenderer?: SchemaPropertyRenderer);
    /**
     * Gets a read-only array of ready-to-display lines.
     */
    getLines(): readonly string[];
    /**
     * Gets a ready-to-display line by index.
     *
     * @param index The line index to get.
     */
    getLine(index: number): string;
    /**
     * Prints the accumulated set of schema lines as info log lines to the logger.
     */
    print(): void;
    private addFn;
    private parseProperty;
}
