export default ModifyRectangle;
export type CacheItem = {
    corners: olFeature<import("ol/geom/Geometry").default>[];
};
export type ModifyParams = {
    originCoordinate: import("ol/coordinate").Coordinate;
    originPixel: import("ol/pixel").Pixel;
    siblingXPoint: import("ol/geom/Point").default;
    siblingYPoint: import("ol/geom/Point").default;
    vectorX: number[];
    vectorY: number[];
};
/**
 * Interaction for modifying feature geometries.
 *
 * @private
 * @hidden
 */
declare class ModifyRectangle extends olInteractionPointer {
    /**
     * @param {import('ol/interaction/Modify').Options} options Options.
     * @fires import('ngeo/interaction/ModifyCircleEvent').default
     */
    constructor(options: import("ol/interaction/Modify").Options);
    handleDownEvent: (evt: import("ol/MapBrowserEvent").default<unknown>) => boolean;
    handleDragEvent: (evt: import("ol/MapBrowserEvent").default<unknown>) => void;
    handleUpEvent: (evt: import("ol/MapBrowserEvent").default<unknown>) => boolean;
    /**
     * @type {boolean}
     * @private
     */
    private modified_;
    /**
     * @type {import('ol/layer/Vector').default<import('ol/source/Vector').default<import('ol/geom/Geometry').default>>}
     * @private
     */
    private vectorPoints_;
    /**
     * @type {import('ol/Collection').default<olFeature<import('ol/geom/Geometry').default>>}
     * @private
     */
    private features_;
    /**
     * The feature currently modified.
     *
     * @type {?olFeature<import('ol/geom/Geometry').default>}
     * @private
     */
    private feature_;
    /**
     * @type {Object<string, CacheItem>}
     * @private
     */
    private cache_;
    /**
     * @type {?ModifyParams}
     * @private
     */
    private params_;
    /**
     * @param {olFeature<import('ol/geom/Geometry').default>} feature Feature.
     * @private
     */
    private addFeature_;
    /**
     * @param {import('ol/MapBrowserEvent').default<unknown>} evt MapBrowserEvent
     * @private
     */
    private willModifyFeatures_;
    /**
     * @returns {ModifyParams} The initialized params
     * @private
     */
    private initializeParams_;
    /**
     * @param {olFeature<import('ol/geom/Geometry').default>} feature Feature.
     * @private
     */
    private removeFeature_;
    /**
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleFeatureAdd_;
    /**
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleFeatureRemove_;
    /**
     * @param {import('ol/MapBrowserEvent').default<unknown>} evt MapBrowserEvent.
     * @returns {boolean} Start drag sequence?
     * @private
     */
    private handleDown_;
    /**
     * @param {import('ol/MapBrowserEvent').default<unknown>} evt MapBrowserEvent.
     * @private
     */
    private handleDrag_;
    /**
     * Calculate the new position of a point as projected on a vector from origin to
     * destination.
     *
     * @param {import('ol/pixel').Pixel} origin Pixel of origin (opposite of the drag handle)
     * @param {import('ol/pixel').Pixel} destination Pixel of destination (the handle we dragged)
     * @param {import('ol/pixel').Pixel} vector The normalized vector to the point
     * @returns {import('ol/pixel').Pixel} The new pixel of the point
     * @private
     */
    private calculateNewPixel_;
    /**
     * @param {import('ol/MapBrowserEvent').default<unknown>} evt MapBrowserEvent.
     * @returns {boolean} Stop drag sequence?
     * @private
     */
    private handleUp_;
}
import olFeature from 'ol/Feature';
import olInteractionPointer from 'ol/interaction/Pointer';
