import { InstructionsOptions, RendererContract } from '../Contracts';
/**
 * The API to render instructions wrapped inside a box
 */
export declare class Instructions {
    private testing;
    private state;
    /**
     * Renderer to use for rendering instructions
     */
    private renderer?;
    /**
     * Line of the widest line inside instructions content
     */
    private widestLineLength;
    /**
     * Number of white spaces on the left of the box
     */
    private leftPadding;
    /**
     * Number of white spaces on the right of the box
     */
    private rightPadding;
    /**
     * Number of empty lines at the top
     */
    private paddingTop;
    /**
     * Number of empty lines at the bottom
     */
    private paddingBottom;
    /**
     * Reference to the colors
     */
    private colors;
    /**
     * Options
     */
    options: InstructionsOptions;
    constructor(options?: Partial<InstructionsOptions>, testing?: boolean);
    /**
     * Returns the renderer for rendering the messages
     */
    private getRenderer;
    /**
     * Repeats text for given number of times
     */
    private repeat;
    /**
     * Adds dim transformation
     */
    private dim;
    /**
     * Wraps content inside the left and right vertical lines
     */
    private wrapInVerticalLines;
    /**
     * Returns the top line for the box
     */
    private getTopLine;
    /**
     * Returns the bottom line for the box
     */
    private getBottomLine;
    /**
     * Decorates the instruction line by wrapping it inside the box
     * lines
     */
    private getContentLine;
    /**
     * Returns the heading line with the border bottom
     */
    private getHeading;
    /**
     * Returns node for a empty line
     */
    private getEmptyLineNode;
    /**
     * Returns instructions lines with the padding
     */
    private getLinesWithPadding;
    /**
     * Define a custom renderer. Logs to "stdout" and "stderr"
     * by default
     */
    useRenderer(renderer: RendererContract): this;
    /**
     * Define heading for instructions
     */
    heading(text: string): this;
    /**
     * Add new instruction. Each instruction is rendered
     * in a new line inside a box
     */
    add(text: string): this;
    /**
     * Render instructions
     */
    render(): void;
}
