import * as Blockly from "blockly";
interface MatrixDisplayProps {
    cellWidth: number;
    cellHeight: number;
    cellLabel: string;
    cellHorizontalMargin: number;
    cellVerticalMargin: number;
    cornerRadius: number;
    cellStroke?: string;
    cellFill?: string;
    padLeft?: number;
    scale?: number;
}
export declare abstract class FieldMatrix extends Blockly.Field {
    protected cells: SVGRectElement[][];
    protected matrixSvg: SVGSVGElement;
    private keyDownBinding;
    private blurBinding;
    protected selected: [x: number, y: number] | undefined;
    protected abstract numMatrixCols: number;
    protected abstract numMatrixRows: number;
    protected abstract clearSelectionOnBlur: boolean;
    protected forceFocusVisible: boolean;
    protected returnEphemeralFocusFn: Blockly.ReturnEphemeralFocus | undefined;
    protected createMatrixDisplay({ cellWidth, cellHeight, cellLabel, cellHorizontalMargin, cellVerticalMargin, cornerRadius, cellFill, cellStroke, padLeft, scale }: MatrixDisplayProps): void;
    protected handleArrowUp(x: number, y: number): void;
    protected handleArrowDown(x: number, y: number): void;
    protected handleArrowLeft(x: number, y: number): void;
    protected handleArrowRight(x: number, y: number): void;
    private addKeyDownHandler;
    private addBlurHandler;
    protected focusCell(x: number, y: number): void;
    private setCellSelection;
    protected clearCellSelection(): void;
    private setFocusIndicator;
    protected clearFocusIndicator(): void;
    protected addKeyboardFocusHandlers(): void;
    protected attachEventHandlersToMatrix(): void;
    protected returnEphemeralFocus(): void;
    protected removeKeyboardFocusHandlers(): void;
    protected getCellId: (x: number, y: number) => string;
    protected abstract attachPointerEventHandlersToCell(x: number, y: number, cellRect: SVGElement): void;
    protected abstract useTwoToneFocusIndicator(x: number, y: number): boolean;
    protected abstract toggleCell(x: number, y: number, value?: boolean): void;
    protected abstract getCellToggled(x: number, y: number): boolean;
}
export {};
