import type { LayerExtension } from "@vertigis/arcgis-extensions/mapping/LayerExtension";
import type { SublayerExtension } from "@vertigis/arcgis-extensions/mapping/SublayerExtension";
/**
 * Well known connection points for topological editing.
 */
export interface TopologyConnections {
    /**
     * Enable connections to an edge, defaults to true.
     */
    edge?: boolean;
    /**
     * Enable connections to vertices, defaults to allow all connections.
     */
    vertices?: boolean;
}
/**
 * Configuration for topology destinations.
 */
export interface TopologyDestinationProperties {
    /**
     * The destination layer or sublayer extension.
     */
    destination: LayerExtension | SublayerExtension;
}
/**
 * Maps topology source layers to destination layers to be considered.
 */
export interface TopologySourceMapping {
    /**
     * Types of topology connections to be considered for this source.
     */
    connections?: TopologyConnections;
    /**
     * The topology destinations, if not provided all destinations will be
     * considered.
     */
    destinations?: TopologyDestinationProperties[];
    /**
     * The topology source. If omitted the configuration will be applied to all
     * existing sources.
     */
    source?: LayerExtension | SublayerExtension;
}
/**
 * Configuration for topological editing and sketching.
 */
export interface TopologyProperties {
    /**
     * Configuration for topology sources.
     */
    sourceMappings?: TopologySourceMapping[];
    /**
     * A multiplier of the distance tolerance associated with the map's spatial
     * reference, which will be used to calculate a 'coincident distance'
     * threshold. Geometries that fall within the coincident distance of each
     * other will qualify as 'coincident' and will be affected by editing
     * operations while topological editing is enabled.
     *
     * Eg. Maps using the Web Mercator spatial reference (WKID 102100) have a
     * tolerance distance of 0.0001 meters; a coincidentRadius multiplier value
     * of 20 means geometries within 0.002 meters of each other would be
     * considered 'coincident.'.
     *
     * Defaults to 20.
     */
    coincidentRadius?: number;
}
