/**
 * useVectorEditor — extracted logic + state for VectorEditor.
 * Keeps every useState / useRef / useCallback / useEffect in a single hook
 * so the component file is pure layout.
 */
import type { VTool, VShape } from "./vectorEditorTypes";
export interface UseVectorEditorOptions {
    artW: number;
    artH: number;
    onSaveToLibrary?: (dataUrl: string, name: string, mimeType: string) => void;
}
export declare function useVectorEditor({ artW, artH, onSaveToLibrary }: UseVectorEditorOptions): {
    readonly shapes: VShape[];
    readonly selId: string | null;
    readonly tool: VTool;
    readonly fillCol: string;
    readonly strokeCol: string;
    readonly strokeW: number;
    readonly fontSize: number;
    readonly fontFamily: string;
    readonly shapeOpacity: number;
    readonly cornerRadius: number;
    readonly polygonSides: number;
    readonly starPoints2: number;
    readonly starInnerRatio: number;
    readonly zoom: number;
    readonly px: number;
    readonly py: number;
    readonly dlgSvg: boolean;
    readonly svgText: string;
    readonly snapGrid: boolean;
    readonly gridSize: number;
    readonly hasClipboard: boolean;
    readonly boolSecondShape: string | null;
    readonly selShape: VShape | null;
    readonly setTool: import("react").Dispatch<import("react").SetStateAction<VTool>>;
    readonly setFillCol: import("react").Dispatch<import("react").SetStateAction<string>>;
    readonly setStrokeCol: import("react").Dispatch<import("react").SetStateAction<string>>;
    readonly setStrokeW: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setFontSize: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setFontFamily: import("react").Dispatch<import("react").SetStateAction<string>>;
    readonly setShapeOpacity: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setCornerRadius: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setPolygonSides: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setStarPoints2: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setStarInnerRatio: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setZoom: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setDlgSvg: import("react").Dispatch<import("react").SetStateAction<boolean>>;
    readonly setSvgText: import("react").Dispatch<import("react").SetStateAction<string>>;
    readonly setSnapGrid: import("react").Dispatch<import("react").SetStateAction<boolean>>;
    readonly setGridSize: import("react").Dispatch<import("react").SetStateAction<number>>;
    readonly setSelId: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    readonly setBoolSecondShape: import("react").Dispatch<import("react").SetStateAction<string | null>>;
    readonly boxRef: import("react").RefObject<HTMLDivElement>;
    readonly fInp: import("react").RefObject<HTMLInputElement>;
    readonly onDown: (e: React.MouseEvent<SVGSVGElement>) => void;
    readonly onMove: (e: React.MouseEvent<SVGSVGElement>) => void;
    readonly onUp: () => void;
    readonly onWheel: (e: React.WheelEvent) => void;
    readonly onDblClick: () => void;
    readonly undo: () => void;
    readonly redo: () => void;
    readonly deleteShape: () => void;
    readonly bringToFront: () => void;
    readonly sendToBack: () => void;
    readonly updateSel: (patch: Partial<VShape>) => void;
    readonly copyShape: () => void;
    readonly pasteShape: () => void;
    readonly duplicateShape: () => void;
    readonly flipH: () => void;
    readonly flipV: () => void;
    readonly alignShapes: (mode: "left" | "center" | "right" | "top" | "middle" | "bottom") => void;
    readonly unionShapes: () => void;
    readonly subtractShapes: () => void;
    readonly intersectShapes: () => void;
    readonly excludeShapes: () => void;
    readonly outlineStroke: () => void;
    readonly importSVGString: (raw: string) => void;
    readonly openFile: (file: File) => Promise<void>;
    readonly newCanvas: () => void;
    readonly exportSVG: () => void;
    readonly exportPNG: () => void;
    readonly exportJPG: () => void;
    readonly exportWebP: () => void;
    readonly exportBMP: () => void;
    readonly switchTool: (newTool: VTool) => void;
    readonly saveToLibrary: () => void;
};
/** Return type for sub-component props */
export type VectorEditorAPI = ReturnType<typeof useVectorEditor>;
