import { default as React } from 'react';
type Point = {
    x: number;
    y: number;
    lineWidth: number;
};
type Stroke = Point[];
export default function useDrawing(props: {
    isDisabled?: boolean;
    invertMask: boolean;
    maskUpload?: any[];
    lineWidth: number;
    translatePos: {
        current: {
            x: number;
            y: number;
        };
    };
    onSave: (imageData: {
        mask: string | null;
        img: string;
    }) => void;
}): {
    canvasRef: React.RefObject<HTMLCanvasElement>;
    overlayCanvasRef: React.RefObject<HTMLCanvasElement>;
    offscreenCanvasRef: React.MutableRefObject<any>;
    cursorRef: React.RefObject<HTMLDivElement>;
    strokesRef: React.MutableRefObject<Stroke[]>;
    currentStroke: React.MutableRefObject<Point[]>;
    isDrawing: React.MutableRefObject<boolean>;
    mouseDownState: React.MutableRefObject<boolean>;
    handleMouseDown: () => void;
    handleMouseUp: () => void;
    autoScale: React.MutableRefObject<number>;
    baseScale: React.MutableRefObject<number>;
    maskStorkeRef: React.MutableRefObject<Stroke[]>;
    isLoadingMaskRef: React.MutableRefObject<boolean>;
    creatOffscreenCanvas: () => void;
    setMaskStrokes: (strokes: Stroke[]) => void;
    fitView: () => void;
    setStrokes: (strokes: Stroke[]) => void;
    resetCanvas: () => void;
    draw: (e: React.MouseEvent<HTMLCanvasElement>) => void;
    getTransformLineWidth: (w?: number) => number;
    getTransformedPoint: (offsetX: number, offsetY: number) => {
        x: number;
        y: number;
    };
    drawStroke: (ctx: CanvasRenderingContext2D, stroke: Stroke | Point[], options: {
        lineWidth?: number;
        color: string;
        compositeOperation: "source-over" | "destination-out";
    }) => void;
    startDrawing: (e: React.MouseEvent<HTMLCanvasElement>) => void;
    endDrawing: (e: React.MouseEvent<HTMLCanvasElement>) => void;
    handleMouseMove: (e: React.MouseEvent<HTMLCanvasElement>) => void;
    handleMouseLeave: () => void;
    handleMouseEnter: (e: React.MouseEvent<HTMLCanvasElement>) => void;
    saveImage: () => void;
    generateMask: () => string | null;
    generateImage: () => string;
    setTransform: () => void;
    clearOverlayCanvas: () => void;
    clearCanvas: () => void;
};
export {};
