/**
 * @typedef {Object} ModifyEventItem
 * @property {olFeature<import('ol/geom/Geometry').default>} features
 */
/**
 * @typedef {import('ngeo/CustomEvent').default<ModifyEventItem>} ModifyEvent
 */
/**
 * @typedef {Object} Options
 * @property {import('ol/events/condition').Condition} [condition] From ol/interaction/Modify.Options.
 * @property {import('ol/events/condition').Condition} [deleteCondition] From ol/interaction/Modify.Options.
 * @property {import('ol/events/condition').Condition} [insertVertexCondition] From ol/interaction/Modify.Options.
 * @property {number} [pixelTolerance=10] From ol/interaction/Modify.Options.
 * @property {import('ol/style/Style').StyleLike} [style] From ol/interaction/Modify.Options.
 * @property {import('ol/source/Vector').default<unknown>} [source] From ol/interaction/Modify.Options.
 * @property {import('ol/Collection').default<import('ol/Feature').default<import('ol/geom/Geometry').default>>} [features] From ol/interaction/Modify.Options.
 * @property {boolean} [wrapX=false] From ol/interaction/Modify.Options.
 * @property {number} [nbPoints=64] The number of points in the circle.
 */
/**
 * This interaction combines multiple kind of feature modification interactions
 * in order to be able to modify vector features depending on their geometry
 * type. The different kind of interactions supported are:
 *
 * - `ol.interaction.Modify`
 * - `ngeo.interaction.ModifyCircle`
 * - `ngeo.interaction.ModifyRectangle`
 *
 * This interaction receives a collection of features. Its job is to listen
 * to added/removed features to and from it and add them in the proper
 * collection that is uniquely used for each inner interaction. Those inner
 * interactions follow the `active` property of this interaction, i.e. when
 * this interaction is activated, so do the inner interactions. Since they will
 * never share the same feature, they don't collide with one an other.
 *
 * @hidden
 */
export default class _default extends olInteractionInteraction {
    /**
     * @param {Options} options Options.
     */
    constructor(options: Options);
    /**
     * @type {import('ol/Collection').default<olFeature<import('ol/geom/Geometry').default>>}
     * @private
     */
    private features_;
    /**
     * @type {import('ol/events').EventsKey[]}
     * @private
     */
    private listenerKeys_;
    /**
     * @type {import('ol/interaction/Interaction').default[]}
     * @private
     */
    private interactions_;
    /**
     * @type {import('ol/Collection').default<olFeature<import('ol/geom/Geometry').default>>}
     * @private
     */
    private otherFeatures_;
    /**
     * @type {import('ol/Collection').default<olFeature<import('ol/geom/Geometry').default>>}
     * @private
     */
    private circleFeatures_;
    /**
     * @type {import('ol/Collection').default<olFeature<import('ol/geom/Geometry').default>>}
     * @private
     */
    private rectangleFeatures_;
    /**
     * Toggle interactions.
     *
     * @private
     */
    private setState_;
    /**
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleFeaturesAdd_;
    /**
     * @param {Event|import('ol/events/Event').default} evt Event.
     * @private
     */
    private handleFeaturesRemove_;
    /**
     * @param {olFeature<import('ol/geom/Geometry').default>} feature Feature.
     * @private
     */
    private addFeature_;
    /**
     * @param {olFeature<import('ol/geom/Geometry').default>} feature Feature.
     * @private
     */
    private removeFeature_;
    /**
     * @param {olFeature<import('ol/geom/Geometry').default>} feature Feature.
     * @returns {import('ol/Collection').default<olFeature<import('ol/geom/Geometry').default>>} Collection of features for
     *    this feature.
     * @private
     */
    private getFeatureCollection_;
}
export type ModifyEventItem = {
    features: olFeature<import("ol/geom/Geometry").default>;
};
export type ModifyEvent = import("ngeo/CustomEvent").default<ModifyEventItem>;
export type Options = {
    /**
     * From ol/interaction/Modify.Options.
     */
    condition?: import("ol/events/condition").Condition;
    /**
     * From ol/interaction/Modify.Options.
     */
    deleteCondition?: import("ol/events/condition").Condition;
    /**
     * From ol/interaction/Modify.Options.
     */
    insertVertexCondition?: import("ol/events/condition").Condition;
    /**
     * From ol/interaction/Modify.Options.
     */
    pixelTolerance?: number;
    /**
     * From ol/interaction/Modify.Options.
     */
    style?: import("ol/style/Style").StyleLike;
    /**
     * From ol/interaction/Modify.Options.
     */
    source?: import("ol/source/Vector").default<unknown>;
    /**
     * From ol/interaction/Modify.Options.
     */
    features?: import("ol/Collection").default<import("ol/Feature").default<import("ol/geom/Geometry").default>>;
    /**
     * From ol/interaction/Modify.Options.
     */
    wrapX?: boolean;
    /**
     * The number of points in the circle.
     */
    nbPoints?: number;
};
import olInteractionInteraction from 'ol/interaction/Interaction';
import olFeature from 'ol/Feature';
