interface Point { x: number; y: number; } interface Shape { draw(ctx: CanvasRenderingContext2D): void; containsPoint(point: Point): boolean; getNearestEditPoint(mousePosition: Point): Point | null; } export declare class CanvasEditor { canvas: HTMLCanvasElement; ctx: CanvasRenderingContext2D; shapes: Shape[]; selectedShape: Shape | null; mousePosition: Point; draggingPoint: Point | null; private leafletMap; constructor(canvas: HTMLCanvasElement, leafletMap?: L.Map); disableLeafletDrag(): void; enableLeafletDrag(): void; addShape(shape: Shape): void; removeShape(shape: Shape): void; redraw(): void; private handleMouseDown; private handleMouseMove; private handleMouseUp; } export declare class EditableRectangle implements Shape { points: Point[]; constructor(x: number, y: number, width: number, height: number); draw(ctx: CanvasRenderingContext2D): void; containsPoint(point: Point): boolean; getNearestEditPoint(mousePosition: Point): Point | null; } export {};