import React, { CSSProperties, DetailedHTMLProps } from 'react';
import { OnDragHandler, OnDragEndHandler, OnResizeHandler, OnRotateHandler, OnDragStartHandler, OnResizeStartHandler, OnResizeEndHandler, OnRotateStartHandler, OnRotateEndHandler } from '../types';
export interface ResizableBoxProps extends Omit, HTMLDivElement>, 'onDrag' | 'onDragEnd' | 'onResize' | 'onResizeEnd' | 'onRotate' | 'onRotateEnd'> {
/**
* The width of the box.
*/
width: number;
/**
* The height of the box.
*/
height: number;
/**
* The left position of the box.
*/
left: number;
/**
* The top position of the box.
*/
top: number;
/**
* The rotation of the box in degrees.
*/
rotationDeg?: number;
/**
* The scale to use for dragging and resizing the box. Defaults to 1.
*/
scale?: number;
/**
* The color of the box.
*/
color?: CSSProperties['color'];
/**
* Whether the box is draggable.
*/
draggable?: boolean;
/**
* Whether to show the drag handler.
*/
dragHandler?: boolean;
/**
* Custom styles for the drag handler.
*/
dragHandlerStyles?: CSSProperties;
/**
* The absolute position of the drag handler in degrees.
* If relativeHandlers is true, the position is measured relative to the box vertical axis.
*/
dragHandlerDeg?: number;
/**
* Whether the box is resizable.
*/
resizable?: boolean;
/**
* Custom styles for the resize handlers.
*/
resizeHandlerStyles?: CSSProperties;
/**
* The aspect ratio of the box.
*/
aspectRatio?: boolean | number;
/**
* Whether the box is rotatable.
*/
rotatable?: boolean;
/**
* Custom styles for the rotate handler.
*/
rotateHandlerStyles?: CSSProperties;
/**
* The snap angle in degrees.
*/
snapAngle?: number | boolean;
/**
* The absolute position of the rotate handler in degrees.
* If relativeHandlers is true, the position is measured relative to the box vertical axis.
*/
rotateHandlerDeg?: number;
/**
* The minimum width of the box.
*/
minWidth?: number;
/**
* The minimum height of the box.
*/
minHeight?: number;
/**
* The offset between the move and rotate handlers to the edges of the box.
*/
handlersOffset?: number;
/**
* The minimum distance where all the handlers will start to space out.
*
* If the width or height of the box is less than this value, the handlers will
* keep the distance as if the box where this value.
*/
handlersSpaceOut?: number;
/**
* Whether the handlers are relative to the box vertical axis.
* Defaults to true.
*/
relativeHandlers?: boolean;
/**
* The callback fired when the box starts to be dragged.
*/
onDragStart?: OnDragStartHandler;
/**
* The callback fired when the box is being dragged.
*/
onDrag?: OnDragHandler;
/**
* The callback fired when the box stops being dragged.
*/
onDragEnd?: OnDragEndHandler;
/**
* The callback fired when the box starts to be resized.
*/
onResizeStart?: OnResizeStartHandler;
/**
* The callback fired when the box is being resized.
*/
onResize?: OnResizeHandler;
/**
* The callback fired when the box stops being resized.
*/
onResizeEnd?: OnResizeEndHandler;
/**
* The callback fired when the box starts to be rotated.
*/
onRotateStart?: OnRotateStartHandler;
/**
* The callback fired when the box is being rotated.
*/
onRotate?: OnRotateHandler;
/**
* The callback fired when the box stops being rotated.
*/
onRotateEnd?: OnRotateEndHandler;
}
export declare const ResizableBox: (props: ResizableBoxProps) => React.JSX.Element;