import type { SvgFilter } from './vectorSvgFilters';
export type VTool = "pointer" | "rect" | "roundrect" | "ellipse" | "line" | "arrow" | "polygon" | "star" | "pen" | "text";
export interface VShape {
    id: string;
    type: "rect" | "roundrect" | "ellipse" | "line" | "polyline" | "text" | "polygon" | "star" | "arrow";
    x: number;
    y: number;
    w: number;
    h: number;
    x2?: number;
    y2?: number;
    points?: {
        x: number;
        y: number;
    }[];
    fill: string;
    stroke: string;
    strokeWidth: number;
    opacity: number;
    text?: string;
    fontSize?: number;
    fontFamily?: string;
    rotation: number;
    rx?: number;
    sides?: number;
    innerRadius?: number;
    filters?: SvgFilter[];
}
export interface HistEntry {
    shapes: VShape[];
}
export declare const sid: () => string;
export declare const cloneShapes: (s: VShape[]) => VShape[];
export declare const downloadBlob: (blob: Blob, name: string) => void;
export declare const TOOLS: {
    id: VTool;
    icon: string;
    label: string;
    key: string;
}[];
export declare const FONTS: string[];
/** Generate polygon points string for n-sided regular polygon */
export declare function polygonPoints(cx: number, cy: number, r: number, sides: number, rotation: number): string;
/** Generate star points string */
export declare function starPoints(cx: number, cy: number, outerR: number, innerR: number, points: number, rotation: number): string;
/** Snap a value to grid */
export declare function snapToGrid(val: number, gridSize: number): number;
