/**
 * @license
 * Copyright 2019 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ConstantProvider } from '../common/constants.js';
import type { BottomRow } from '../measurables/bottom_row.js';
import type { Row } from '../measurables/row.js';
import type { TopRow } from '../measurables/top_row.js';
import type { HighlightConstantProvider, InsideCorner, JaggedTeeth, Notch, OutsideCorner, PuzzleTab, StartHat } from './highlight_constants.js';
import type { RenderInfo } from './info.js';
import type { InlineInput } from './measurables/inline_input.js';
/**
 * An object that adds highlights to a block based on the given rendering
 * information.
 *
 * Highlighting is interesting because the highlights do not fully enclose the
 * block.  Instead, they are positioned based on a light source in the top left.
 * This means that rendering highlights requires exact information about the
 * position of each part of the block.  The resulting paths are not continuous
 * or closed paths.  The highlights for tabs and notches are loosely based on
 * tab and notch shapes, but are not exactly the same.
 */
export declare class Highlighter {
    info_: RenderInfo;
    steps_: string;
    inlineSteps_: string;
    RTL_: boolean;
    constants_: ConstantProvider;
    highlightConstants_: HighlightConstantProvider;
    private readonly highlightOffset;
    outsideCornerPaths_: OutsideCorner;
    insideCornerPaths_: InsideCorner;
    puzzleTabPaths_: PuzzleTab;
    notchPaths_: Notch;
    startPaths_: StartHat;
    jaggedTeethPaths_: JaggedTeeth;
    /**
     * @param info An object containing all information needed to render this
     *     block.
     */
    constructor(info: RenderInfo);
    /**
     * Get the steps for the highlight path.
     *
     * @returns The steps for the highlight path.
     */
    getPath(): string;
    /**
     * Add a highlight to the top corner of a block.
     *
     * @param row The top row of the block.
     */
    drawTopCorner(row: TopRow): void;
    /**
     * Add a highlight on a jagged edge for a collapsed block.
     *
     * @param row  The row to highlight.
     */
    drawJaggedEdge_(row: Row): void;
    /**
     * Add a highlight on a value input.
     *
     * @param row The row the input belongs to.
     */
    drawValueInput(row: Row): void;
    /**
     * Add a highlight on a statement input.
     *
     * @param row The row to highlight.
     */
    drawStatementInput(row: Row): void;
    /**
     * Add a highlight on the right side of a row.
     *
     * @param row The row to highlight.
     */
    drawRightSideRow(row: Row): void;
    /**
     * Add a highlight to the bottom row.
     *
     * @param row The row to highlight.
     */
    drawBottomRow(row: BottomRow): void;
    /**
     * Draw the highlight on the left side of the block.
     */
    drawLeft(): void;
    /**
     * Add a highlight to an inline input.
     *
     * @param input The input to highlight.
     */
    drawInlineInput(input: InlineInput): void;
}
//# sourceMappingURL=highlighter.d.ts.map