/**
 * NiceIconEditor.tsx — SVG icon editor integrated with @nice2dev/icons.
 *
 * Features:
 * - SVG icon creation and editing (paths, shapes)
 * - Grid-aligned design (24×24, 32×32, 48×48 grids)
 * - Outline/filled style variants
 * - Stroke width and cap adjustments
 * - Export to SVG, React component, PNG (multiple sizes)
 * - Icon set management
 * - Preview on different backgrounds
 */
import React from "react";
export interface IconEditorProps {
    /** Initial SVG content. */
    initialSvg?: string;
    /** Grid size in px. Default: 24. */
    gridSize?: number;
    /** Called on save with SVG string. */
    onSave?: (svg: string) => void;
    /** Called on export. */
    onExport?: (data: IconExportResult) => void;
    /** CSS class. */
    className?: string;
}
export interface IconConfig {
    viewBox: number;
    strokeWidth: number;
    strokeLinecap: "butt" | "round" | "square";
    strokeLinejoin: "miter" | "round" | "bevel";
    fill: string;
    stroke: string;
    variant: "outline" | "filled" | "duotone";
}
export interface IconShape {
    id: string;
    type: "path" | "circle" | "rect" | "line" | "polyline" | "polygon";
    d?: string;
    cx?: number;
    cy?: number;
    r?: number;
    x?: number;
    y?: number;
    width?: number;
    height?: number;
    x1?: number;
    y1?: number;
    x2?: number;
    y2?: number;
    points?: string;
    fill?: string;
    stroke?: string;
    strokeWidth?: number;
}
export interface IconExportResult {
    svg: string;
    reactComponent: string;
    pngSizes: Map<number, Blob>;
}
export type IconVariant = "outline" | "filled" | "duotone";
export interface IconEditorApi {
    config: IconConfig;
    setConfig: React.Dispatch<React.SetStateAction<IconConfig>>;
    shapes: IconShape[];
    setShapes: React.Dispatch<React.SetStateAction<IconShape[]>>;
    selectedId: string | null;
    setSelectedId: React.Dispatch<React.SetStateAction<string | null>>;
    tool: "select" | "path" | "circle" | "rect" | "line";
    setTool: React.Dispatch<React.SetStateAction<"select" | "path" | "circle" | "rect" | "line">>;
    addShape: (shape: Omit<IconShape, "id">) => void;
    updateShape: (id: string, updates: Partial<IconShape>) => void;
    deleteShape: (id: string) => void;
    toSvg: () => string;
    toReactComponent: (name: string) => string;
}
export declare function useIconEditor(initialSvg?: string): IconEditorApi;
/** SVG icon editor with grid, snap, and export capabilities. */
export declare const NiceIconEditor: React.FC<IconEditorProps>;
export default NiceIconEditor;
