import { JGOF } from "../engine/formats/JGOF";
import { AdHocFormat } from "../engine/formats/AdHocFormat";
import { GobanConfig } from "../GobanBase";
import { GobanEngine } from "../engine";
import { MoveTree } from "../engine/MoveTree";
import { MoveTreePenMarks } from "../engine/MoveTree";
import { MessageID } from "../engine/messages";
import { Goban, GobanMetrics, GobanSelectedThemes } from "./Goban";
export interface CanvasRendererGobanConfig extends GobanConfig {
    board_div?: HTMLElement;
    title_div?: HTMLElement;
    move_tree_container?: HTMLElement;
    last_move_opacity?: number;
}
interface ViewPortInterface {
    offset_x: number;
    offset_y: number;
    minx: number;
    miny: number;
    maxx: number;
    maxy: number;
}
export interface GobanCanvasInterface {
    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_bindCanvasEvents(canvas: HTMLCanvasElement): 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 GobanCanvas extends Goban implements GobanCanvasInterface {
    engine: GobanEngine;
    private board;
    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 shadow_layer?;
    private shadow_ctx?;
    private handleShiftKey;
    private last_move_opacity;
    move_tree_container?: HTMLElement;
    private move_tree_inner_container?;
    private move_tree_canvas?;
    private __borders_initialized;
    private autoplaying_puzzle_move;
    private byoyomi_label;
    private ctx;
    private current_pen_mark?;
    private labeling_mode?;
    private last_label_position;
    private last_pen_position?;
    protected metrics: GobanMetrics;
    private drawing_enabled;
    private pen_ctx?;
    private pen_layer?;
    protected title_div?: HTMLElement;
    private themes;
    private theme_black;
    private theme_black_stones;
    private theme_black_text_color;
    private theme_blank_text_color;
    private theme_board;
    private theme_faded_line_color;
    private theme_faded_star_color;
    private theme_line_color;
    private theme_star_color;
    private theme_stone_radius;
    private theme_white;
    private theme_white_stones;
    private theme_white_text_color;
    constructor(config: CanvasRendererGobanConfig, preloaded_data?: AdHocFormat | JGOF);
    setLastMoveOpacity(opacity: number): void;
    enablePen(): void;
    disablePen(): void;
    destroy(): void;
    private detachShadowLayer;
    private attachShadowLayer;
    private detachPenCanvas;
    private attachPenCanvas;
    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 __drawSquare;
    private drawingHash;
    redraw(force_clear?: boolean): void;
    showMessage(message_id_or_error: MessageID, parameters?: {
        [key: string]: any;
    }, timeout?: number): void;
    clearMessage(): void;
    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_bindCanvasEvents(canvas: HTMLCanvasElement): void;
    protected computeThemeStoneRadius(): number;
    move_tree_drawStone(ctx: CanvasRenderingContext2D, node: MoveTree, active_path_number: number, viewport: ViewPortInterface): void;
    move_tree_drawRecursive(ctx: CanvasRenderingContext2D, node: MoveTree, active_path_number: number, viewport: ViewPortInterface): void;
    move_tree_hilightNode(ctx: CanvasRenderingContext2D, node: MoveTree, color: string, viewport: ViewPortInterface): void;
    move_tree_drawPath(ctx: CanvasRenderingContext2D, node: MoveTree, viewport: ViewPortInterface): void;
    move_tree_drawIsoBranchTo(ctx: CanvasRenderingContext2D, from_node: MoveTree, to_node: MoveTree, viewport: ViewPortInterface): void;
    move_tree_recursiveDrawPath(ctx: CanvasRenderingContext2D, node: MoveTree, viewport: ViewPortInterface): void;
}
export {};
