import { JGOF, JGOFNumericPlayerColor } from "../engine/formats/JGOF";
import { AdHocFormat } from "../engine/formats/AdHocFormat";
import { GobanConfig } from "../GobanBase";
import { GobanEngine } from "../engine";
import { MoveTree } from "../engine/MoveTree";
import { GobanTheme } from "./themes";
import { MoveTreePenMarks } from "../engine/MoveTree";
import { MessageID } from "../engine/messages";
import { Goban, GobanMetrics, GobanSelectedThemes } from "./Goban";
import { ColoredCircle } from "./InteractiveBase";
export interface SVGRendererGobanConfig extends GobanConfig {
    board_div?: HTMLElement;
    title_div?: HTMLElement;
    move_tree_container?: HTMLElement;
    last_move_opacity?: number;
}
interface MoveTreeViewPortInterface {
    offset_x: number;
    offset_y: number;
    minx: number;
    miny: number;
    maxx: number;
    maxy: number;
}
interface GobanSVGInterface {
    engine: GobanEngine;
    move_tree_container?: HTMLElement;
    clearAnalysisDrawing(): void;
    drawPenMarks(pen_marks: MoveTreePenMarks): void;
    enablePen(): void;
    disablePen(): void;
    setByoYomiLabel(label: string): void;
    setLastMoveOpacity(opacity: number): void;
    move_tree_bindEvents(svg: SVGElement): void;
    move_tree_redraw(no_warp?: boolean): void;
    setMoveTreeContainer(container: HTMLElement): void;
    showMessage(message_id_or_error: MessageID, parameters?: {
        [key: string]: any;
    }, timeout?: number): void;
    clearMessage(): void;
    drawSquare(i: number, j: number): void;
    destroy(): void;
}
export declare class SVGRenderer extends Goban implements GobanSVGInterface {
    engine: GobanEngine;
    private svg;
    private svg_defs;
    private __set_board_height;
    private __set_board_width;
    private ready_to_draw;
    private message_div?;
    private message_td?;
    private message_text?;
    private message_timeout?;
    private handleShiftKey;
    private lines_layer?;
    private coordinate_labels_layer?;
    private grid;
    grid_layer?: SVGGraphicsElement;
    private cells;
    shadow_grid: Array<Array<SVGElement | undefined>>;
    shadow_layer?: SVGGraphicsElement;
    private pen_layer?;
    private last_move_opacity;
    move_tree_container?: HTMLElement;
    private move_tree_inner_container?;
    private move_tree_svg?;
    private move_tree_svg_defs?;
    private autoplaying_puzzle_move;
    private byoyomi_label;
    private current_pen_mark?;
    private labeling_mode?;
    private last_label_position;
    private last_pen_position?;
    metrics: GobanMetrics;
    private drawing_enabled;
    protected title_div?: HTMLElement;
    event_layer?: HTMLDivElement;
    private themes;
    theme_black: GobanTheme;
    private theme_black_stones;
    theme_black_text_color: string;
    private theme_blank_text_color;
    private theme_board;
    theme_faded_line_color: string;
    theme_faded_star_color: string;
    private theme_line_color;
    private theme_star_color;
    private theme_stone_radius;
    theme_white: GobanTheme;
    private theme_white_stones;
    theme_white_text_color: string;
    constructor(config: SVGRendererGobanConfig, preloaded_data?: AdHocFormat | JGOF);
    setLastMoveOpacity(opacity: number): void;
    enablePen(): void;
    disablePen(): void;
    cell(i: number, j: number): GCell;
    clearCells(): void;
    destroy(): void;
    private detachPenLayer;
    private attachPenLayer;
    private bindPointerBindings;
    clearAnalysisDrawing(): void;
    private xy2pen;
    private pen2xy;
    private setPenStyle;
    private onPenStart;
    private onPenMove;
    drawPenMarks(pen_marks: MoveTreePenMarks): void;
    private onTap;
    private onMouseMove;
    private onMouseOut;
    protected enableDrawing(): void;
    protected disableDrawing(): void;
    setByoYomiLabel(label: string): void;
    drawSquare(i: number, j: number): void;
    private cellDraw;
    private __drawSquare;
    private drawingHash;
    private drawLines;
    private drawCoordinateLabels;
    protected computeThemeStoneRadius(): number;
    redraw(force_clear?: boolean): void;
    showMessage(message_id_or_error: MessageID, parameters?: {
        [key: string]: any;
    }, timeout?: number): void;
    clearMessage(): void;
    protected generateSvgDefs(radius: number): SVGDefsElement;
    protected setTheme(themes: GobanSelectedThemes, dont_redraw: boolean): void;
    private onLabelingStart;
    private onLabelingMove;
    protected setTitle(title: string): void;
    protected watchSelectedThemes(cb: (themes: GobanSelectedThemes) => void): {
        remove: () => any;
    };
    setMoveTreeContainer(container: HTMLElement): void;
    move_tree_redraw(no_warp?: boolean): void;
    move_tree_bindEvents(svg: SVGElement): void;
    move_tree_drawStone(svg: SVGElement, node: MoveTree, active_path_number: number, viewport: MoveTreeViewPortInterface): void;
    move_tree_drawRecursive(svg: SVGElement, node: MoveTree, active_path_number: number, viewport: MoveTreeViewPortInterface): void;
    move_tree_hilightNode(svg: SVGElement, node: MoveTree, color: string, viewport: MoveTreeViewPortInterface): void;
    move_tree_drawPath(svg: SVGElement, node: MoveTree, viewport: MoveTreeViewPortInterface): void;
    move_tree_drawIsoBranchTo(svg: SVGElement, from_node: MoveTree, to_node: MoveTree, viewport: MoveTreeViewPortInterface): void;
    move_tree_recursiveDrawPath(svg: SVGElement, node: MoveTree, viewport: MoveTreeViewPortInterface): void;
}
declare class GCell {
    renderer: SVGRenderer;
    i: number;
    j: number;
    _g?: SVGGraphicsElement;
    _transform: string;
    constructor(renderer: SVGRenderer, i: number, j: number);
    get g(): SVGGraphicsElement;
    set transform(transform: string);
    get transform(): string;
    private last_faded_lines?;
    private last_faded_star_point?;
    drawFadedIntersectionLines(draw_star_point: boolean, star_radius: number): void;
    clearFadedLines(): void;
    private last_heatmap_value?;
    private last_heatmap_rect?;
    heatmap(value: number): void;
    clearHeatmap(): void;
    private last_highlight_color?;
    private last_highlight_rect?;
    highlight(color: string): void;
    clearHighlight(): void;
    private last_circle?;
    private last_circle_fill?;
    private last_circle_radius?;
    private last_circle_stroke?;
    private last_circle_stroke_width?;
    circle(circle: ColoredCircle): void;
    clearCircle(): void;
    private last_stone?;
    private last_stone_color?;
    private last_stone_transparent?;
    private last_stone_stone?;
    private last_stone_radius?;
    private last_stone_alpha_value?;
    private last_stone_shadow?;
    stone(color: JGOFNumericPlayerColor, transparent: boolean, stone: string, radius: number, stone_alpha_value: number): void;
    clearStone(): void;
    private last_blue_move?;
    private last_blue_move_color?;
    private last_blue_move_border_width?;
    blueMove(color: string, border_width: number): void;
    clearBlueMove(): void;
    private last_removal_cross?;
    private last_removal_cross_fill?;
    private last_removal_cross_radius?;
    private last_removal_cross_opacity?;
    removalCross(fill: string, radius: number, opacity: number): void;
    clearRemovalCross(): void;
    private last_score?;
    private last_score_fill?;
    private last_score_stroke?;
    private last_score_opacity?;
    score(fill: string, stroke: string, opacity: number): void;
    clearScore(): void;
    private last_letter?;
    private last_letter_letter?;
    private last_letter_color?;
    private last_letter_font_size?;
    private last_letter_opacity?;
    private last_letter_room_for_subscript?;
    letter(letter: string, color: string, font_size: number, opacity: number, room_for_subscript: boolean): void;
    clearLetter(): void;
    private last_subscript?;
    private last_subscript_subscript?;
    private last_subscript_color?;
    private last_subscript_font_size?;
    private last_subscript_opacity?;
    private last_subscript_room_for_letter?;
    private last_subscript_room_for_sub_triangle?;
    subscript(subscript: string, color: string, font_size: number, opacity: number, room_for_letter: boolean, room_for_sub_triangle: boolean): void;
    clearSubscript(): void;
    private last_circle_symbol?;
    private last_circle_symbol_color?;
    private last_circle_symbol_opacity?;
    circleSymbol(color: string, opacity: number): void;
    clearCircleSymbol(): void;
    private last_triangle_symbol?;
    private last_triangle_symbol_color?;
    private last_triangle_symbol_opacity?;
    private last_triangle_symbol_as_subscript?;
    triangleSymbol(color: string, opacity: number, as_subscript: boolean): void;
    clearTriangleSymbol(): void;
    private last_cross_symbol?;
    private last_cross_symbol_color?;
    private last_cross_symbol_opacity?;
    crossSymbol(color: string, opacity: number): void;
    clearCrossSymbol(): void;
    private last_square_symbol?;
    private last_square_symbol_color?;
    private last_square_symbol_opacity?;
    squareSymbol(color: string, opacity: number): void;
    clearSquareSymbol(): void;
    private last_last_move?;
    private last_last_move_symbol?;
    private last_last_move_color?;
    private last_last_move_opacity?;
    lastMove(symbol: "+" | "?" | "o", color: string, opacity: number): void;
    clearLastMove(): void;
    private last_score_estimate?;
    private last_score_estimate_color?;
    private last_score_estimate_estimate?;
    scoreEstimate(color: string, estimate: number): void;
    clearScoreEstimate(): void;
}
export {};
