import type { FeatureJson } from "@vertigis/arcgis-extensions/json/FeatureJson.js";
import type { SymbolJson } from "@vertigis/arcgis-extensions/json/SymbolJson.js";
import type { ViewpointJson } from "@vertigis/arcgis-extensions/json/ViewpointJson.js";
import type { ItemRef } from "../common/ItemRef.js";
import type { MapModelProperties as CommonMapModelProperties } from "../common/MapModelProperties.js";
import type { ComponentModelProperties } from "./ComponentModelProperties.js";
import type { SnappingProperties } from "./SnappingProperties.js";
import type { TopologyProperties } from "./TopologyProperties.js";
/**
 * Direction in which the layer-comparison bar can slide.
 */
export type LayerComparisonDirection = "horizontal" | "vertical";
/**
 * The position of the label relative to the slider bar.
 */
export type LayerComparisonLabelPosition = "start" | "center" | "end";
/**
 * Properties for configuring a MapModel.
 */
export interface MapModelProperties extends CommonMapModelProperties, ComponentModelProperties {
    /**
     * The symbology for the map's context menu marker.
     */
    contextMarkerSymbol?: Symbol | SymbolJson;
    /**
     * Whether or not group layer children and sublayers are included in
     * leading/trailing layers selection. The default is false.
     */
    layerComparisonFlattenLayers?: boolean;
    /**
     * The direction in which the layer-comparison bar slides. 'horizontal'
     * positions the leading layers on the left and trailing layers on the
     * right; 'vertical' positions the leading layers on the top and the
     * trailing layers on the bottom.
     */
    layerComparisonDirection?: LayerComparisonDirection;
    /**
     * Whether or not the layer-comparison tool is active on the map.
     */
    layerComparisonIsActive?: boolean;
    /**
     * Whether or not the leading and trailing layers are configurable from the
     * label buttons on the map. The default is true.
     */
    layerComparisonIsConfigurable?: boolean;
    /**
     * The position of the label relative to the slider bar. The default is
     * "start".
     */
    layerComparisonLabelPosition?: LayerComparisonLabelPosition;
    /**
     * Layers used within the map's layer-comparison tool, positioned on the
     * left if the layer-comparison orientation is 'horizontal' or on the top if
     * the layer-comparison orientation is 'vertical'.
     */
    leadingLayers?: ItemRef[];
    /**
     * The label shown on the map for the leading layers, when the
     * layer-comparison tool is active.
     */
    leadingLayersLabel?: string;
    /**
     * The markup graphics currently present on the map. This property is only
     * serialized to saved projects.
     */
    markupGraphics?: FeatureJson[];
    /**
     * Whether or not to pulse new features that are dynamically added to the
     * map's stream layers. The default is false.
     */
    pulseNewStreamFeatures?: boolean;
    /**
     * Specify the configuration to be used for snapping during drawing and
     * editing when enabled.
     */
    snappingConfiguration?: SnappingProperties;
    /**
     * Specify the configuration to be used for topology during drawing and
     * editing, when enabled.
     */
    topologyConfiguration?: TopologyProperties;
    /**
     * Layers used within the map's layer-comparison tool, positioned on the
     * right if the layer-comparison orientation is 'horizontal' or on the
     * bottom if the layer-comparison orientation is 'vertical'.
     */
    trailingLayers?: ItemRef[];
    /**
     * The label shown on the map for the trailing layers, when the
     * layer-comparison tool is active.
     */
    trailingLayersLabel?: string;
    /**
     * The viewpoint of the map. This property is only serialized to saved
     * projects.
     */
    viewpoint?: ViewpointJson;
}
