import React from "react";
import { AddGridIndicesParams, BRUSH_PATTERN_ELEMENT, BrushTool, CanvasBrushChangeHandler, CanvasDataChangeHandler, CanvasGridChangeHandler, CanvasHoverPixelChangeHandler, CanvasInfoChangeHandler, CanvasStrokeEndHandler, DeleteGridIndicesParams, DottingData, ImageDownloadOptions, LayerChangeHandler, LayerProps, PixelModifyItem } from "./Canvas/types";
export interface DottingProps {
    width: number | string;
    height: number | string;
    style?: React.CSSProperties;
    gridStrokeColor?: string;
    gridStrokeWidth?: number;
    isGridVisible?: boolean;
    backgroundColor?: string;
    initLayers?: Array<LayerProps>;
    isPanZoomable?: boolean;
    isGridFixed?: boolean;
    brushTool?: BrushTool;
    brushColor?: string;
    indicatorData?: Array<PixelModifyItem>;
    isInteractionApplicable?: boolean;
    isDrawingEnabled?: boolean;
    gridSquareLength?: number;
    defaultPixelColor?: string;
    minScale?: number;
    maxScale?: number;
    initAutoScale?: boolean;
    resizeUnit?: number;
    zoomSensitivity?: number;
    maxColumnCount?: number;
    minColumnCount?: number;
    maxRowCount?: number;
    minRowCount?: number;
}
export interface DottingRef {
    clear: () => void;
    colorPixels: (data: Array<PixelModifyItem>) => void;
    erasePixels: (data: Array<{
        rowIndex: number;
        columnIndex: number;
    }>) => void;
    downloadImage: (options: ImageDownloadOptions) => void;
    setIndicatorPixels: (data: Array<PixelModifyItem>) => void;
    undo: () => void;
    redo: () => void;
    setData: (data: Array<Array<PixelModifyItem>>) => void;
    addGridIndices: ({ rowIndices, columnIndices, data, layerId, isLocalChange, }: AddGridIndicesParams) => void;
    deleteGridIndices: ({ rowIndices, columnIndices, layerId, isLocalChange, }: DeleteGridIndicesParams) => void;
    changeBrushColor: (color: string) => void;
    changeBrushTool: (tool: BrushTool) => void;
    changeBrushPattern: (pattern: Array<Array<BRUSH_PATTERN_ELEMENT>>) => void;
    addLayer: (layerId: string, insertPosition: number, data?: Array<Array<PixelModifyItem>>) => void;
    removeLayer: (layerId: string) => void;
    changeLayerPosition: (layerId: string, insertPosition: number) => void;
    showLayer: (layerId: string) => void;
    hideLayer: (layerId: string) => void;
    isolateLayer: (layerId: string) => void;
    showAllLayers: () => void;
    setCurrentLayer: (layerId: string) => void;
    reorderLayersByIds: (layerIds: Array<string>) => void;
    addDataChangeListener: (listener: CanvasDataChangeHandler) => void;
    removeDataChangeListener: (listener: CanvasDataChangeHandler) => void;
    addGridChangeListener: (listener: CanvasGridChangeHandler) => void;
    removeGridChangeListener: (listener: CanvasGridChangeHandler) => void;
    addBrushChangeListener: (listener: CanvasBrushChangeHandler) => void;
    removeBrushChangeListener: (listener: CanvasBrushChangeHandler) => void;
    addStrokeEndListener: (listener: CanvasStrokeEndHandler) => void;
    removeStrokeEndListener: (listener: CanvasStrokeEndHandler) => void;
    addHoverPixelChangeListener: (listener: CanvasHoverPixelChangeHandler) => void;
    removeHoverPixelChangeListener: (listener: CanvasHoverPixelChangeHandler) => void;
    addLayerChangeEventListener: (listener: LayerChangeHandler) => void;
    removeLayerChangeEventListener: (listener: LayerChangeHandler) => void;
    addCanvasInfoChangeEventListener: (listener: CanvasInfoChangeHandler) => void;
    removeCanvasInfoChangeEventListener: (listener: CanvasInfoChangeHandler) => void;
    addCanvasElementEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;
    removeCanvasElementEventListener: (type: string, listener: EventListenerOrEventListenerObject) => void;
    getLayers: () => Array<{
        id: string;
        data: DottingData;
    }>;
    getLayersAsArray: () => Array<{
        id: string;
        data: Array<Array<PixelModifyItem>>;
    }>;
    setLayers: (layers: Array<LayerProps>) => void;
    onMouseDown: (e: {
        offsetX: number;
        offsetY: number;
    }) => void;
    onMouseMove: (e: {
        offsetX: number;
        offsetY: number;
    }) => void;
    onMouseUp: (e: {
        offsetX: number;
        offsetY: number;
    }) => void;
    getForegroundCanvas: () => HTMLCanvasElement | null;
    getBackgroundCanvas: () => HTMLCanvasElement | null;
    convertWorldPosToCanvasOffset: (x: any, y: any) => {
        x: number;
        y: number;
    };
}
declare const Dotting: React.ForwardRefExoticComponent<DottingProps & React.RefAttributes<DottingRef>>;
export default Dotting;
