import { ActiveMapTool, ICommand, IMapView, ReduxThunkedAction, UnitOfMeasure, ILayerInfo } from "../api/common";
import { QueryMapFeaturesResponse } from '../api/contracts/query';
import { IQueryMapFeaturesOptions } from '../api/request-builder';
import { ActionType } from '../constants/actions';
import { IMapSetBusyCountAction, IMapSetBaseLayerAction, IMapSetScaleAction, IMapSetMouseCoordinatesAction, IMapSetLayerTransparencyAction, IMapSetViewSizeUnitsAction, IMapPreviousViewAction, IMapNextViewAction, ISetActiveMapToolAction, ISetActiveMapAction, ISetManualFeatureTooltipsEnabledAction, ISetFeatureTooltipsEnabledAction, IMapSetViewRotationAction, IMapSetViewRotationEnabledAction, IShowSelectedFeatureAction, IMapSetSelectionAction, IMapResizedAction, IAddedLayerAction, IRemoveLayerAction, ISetLayerIndexAction, ISetLayerOpacityAction, ISetLayerVisibilityAction, ISetMapLayerVectorStyle, IAddMapLayerBusyWorkerAction, IRemoveMapLayerBusyWorkerAction, IAddClientSelectedFeatureAction, IClearClientSelectionAction, ISetHeatmapLayerBlurAction, ISetHeatmapLayerRadiusAction, IEnableSelectDragPanAction } from './defs';
import { IVectorLayerStyle, VectorStyleSource } from '../api/ol-style-contracts';
import { ClientSelectionFeature } from "../api/contracts/common";
/**
 * @hidden Exported just to be unit testable
 */
export declare function combineSelections(oldRes: QueryMapFeaturesResponse | undefined, newRes: QueryMapFeaturesResponse): QueryMapFeaturesResponse;
/**
 * Options for map querying
 *
 * @export
 * @interface QueryMapFeatureActionOptions
 */
export interface QueryMapFeatureActionOptions {
    /**
     * The main set of map querying options
     *
     * @type {IQueryMapFeaturesOptions}
     * @memberof QueryMapFeatureActionOptions
     */
    options: IQueryMapFeaturesOptions;
    /**
     * If true, the selection changes will be appended to the current selection set. False otherwise
     *
     * @type {boolean}
     * @memberof QueryMapFeatureActionOptions
     */
    append?: boolean;
    /**
     * An optional callback to invoke on successful operation
     *
     * @memberof QueryMapFeatureActionOptions
     */
    callback?: (res: QueryMapFeaturesResponse) => void;
    /**
     * An optional callback to invoke on failure
     *
     * @memberof QueryMapFeatureActionOptions
     */
    errBack?: (err: any) => void;
}
/**
 * Queries map features
 *
 * @export
 * @param {string} mapName The name of the current runtime map
 * @param {QueryMapFeatureActionOptions} opts query options
 * @returns {ReduxThunkedAction}
 */
export declare function queryMapFeatures(mapName: string, opts: QueryMapFeatureActionOptions): ReduxThunkedAction;
/**
 * Sets the current map view.
 *
 * NOTE: Subscribing components are not guaranteed to receive every new view change sent by
 * calling this method. For purposes of optimization, views passed in that are "close enough"
 * to the current view are not dispatched to subscribing components.
 *
 * @export
 * @param {IMapView} view The map view to set
 * @returns {ReduxThunkedAction}
 */
export declare function setCurrentView(view: IMapView): ReduxThunkedAction;
/**
 * Sends a map resized notification
 *
 * @export
 * @param {number} width
 * @param {number} height
 * @returns {IMapResizedAction}
 */
export declare function mapResized(width: number, height: number): IMapResizedAction;
/**
 * Sets the selection set for the given map
 *
 * @param mapName
 * @param selectionSet
 * @returns
 *
 * @since 0.14 Fixed up the type of selectionSet parameter
 */
export declare function setSelection(mapName: string, selectionSet: QueryMapFeaturesResponse | undefined): IMapSetSelectionAction;
/**
 * Invokes the specified command
 *
 * @export
 * @param {ICommand} cmd
 * @param {*} [parameters]
 * @returns {ReduxThunkedAction}
 */
export declare function invokeCommand(cmd: ICommand, parameters?: any): ReduxThunkedAction;
/**
 * Sets the busy count of the viewer. A value greater than zero signifies that the viewer is currently
 * busy performing various actions (eg. Loading/Rendering the current map image)
 *
 * @export
 * @param {number} busyCount The current busy count
 * @returns {IMapSetBusyCountAction}
 */
export declare function setBusyCount(busyCount: number): IMapSetBusyCountAction;
/**
 * Set the given external base layer as the active base layer
 *
 * @export
 * @param {string} mapName The name of the current runtime map
 * @param {string} layerName The name of the external base layer to set as active
 * @returns
 */
export declare function setBaseLayer(mapName: string, layerName: string): IMapSetBaseLayerAction;
/**
 * Sets the view scale
 *
 * @export
 * @param {string} mapName The name of the current runtime map
 * @param {number} scale The scale to set
 * @returns
 */
export declare function setScale(mapName: string, scale: number): IMapSetScaleAction;
/**
 * Sets the current mouse coordinates
 *
 * @export
 * @param {string} mapName The name of the current runtime map
 * @param {*} coord The current mouse coordinates
 * @returns
 */
export declare function setMouseCoordinates(mapName: string, coord: any): IMapSetMouseCoordinatesAction;
/**
 * Set the transparency for the given OL layer
 *
 * @export
 * @param {string} mapName The name of the current runtime map
 * @param {string} layerName The name of the OL layer
 * @param {number} opacity A value between 0 and 1. 1 - Fully Opaque, 0 - Fully Transparent
 * @returns
 */
export declare function setLayerTransparency(mapName: string, layerName: string, opacity: number): IMapSetLayerTransparencyAction;
/**
 * Sets the units for the map view size display
 *
 * @export
 * @param {UnitOfMeasure} unit
 * @returns {IMapSetViewSizeUnitsAction}
 */
export declare function setViewSizeUnits(unit: UnitOfMeasure): IMapSetViewSizeUnitsAction;
/**
 * Goes back to the previous view on the navigation stack
 *
 * @export
 * @param {string} mapName The name of the current runtime map
 * @returns
 */
export declare function previousView(mapName: string): IMapPreviousViewAction;
/**
 * Goes to the next view on the navigation stack
 *
 * @export
 * @param {string} mapName The name of the current runtime amp
 * @returns
 */
export declare function nextView(mapName: string): IMapNextViewAction;
/**
 * Sets the active map tool
 *
 * @export
 * @param {ActiveMapTool} tool The active map tool command
 * @returns
 */
export declare function setActiveTool(tool: ActiveMapTool): ISetActiveMapToolAction;
/**
 * Sets the active runtime map
 *
 * @export
 * @param {string} mapName The name of the runtime map to set as active
 * @returns
 */
export declare function setActiveMap(mapName: string): ISetActiveMapAction;
/**
 * Sets whether feature tooltips (aka. Map Tips) are enabled
 *
 * @export
 * @param {boolean} enabled
 * @returns
 */
export declare function setFeatureTooltipsEnabled(enabled: boolean): ISetFeatureTooltipsEnabledAction;
/**
 * Sets whether the select tool can pan while dragging
 *
 * @param enabled
 * @since 0.14.2
 */
export declare function enableSelectDragPan(enabled: boolean): IEnableSelectDragPanAction;
/**
 * Sets whether manual feature tooltips (aka. Map Tips) are enabled
 *
 * @export
 * @param {boolean} enabled
 * @returns
 */
export declare function setManualFeatureTooltipsEnabled(enabled: boolean): ISetManualFeatureTooltipsEnabledAction;
/**
 * Sets the rotation of the current view
 *
 * @export
 * @param {number} rotation
 * @returns
 */
export declare function setViewRotation(rotation: number): IMapSetViewRotationAction;
/**
 * Sets whether view rotation is enabled or not
 *
 * @export
 * @param {boolean} enabled
 */
export declare function setViewRotationEnabled(enabled: boolean): IMapSetViewRotationEnabledAction;
/**
 * Shows the selected feature on the map
 *
 * @export
 * @param {string} mapName
 * @param {string} layerId
 * @param {string} selectionKey
 * @returns {IShowSelectedFeatureAction}
 */
export declare function showSelectedFeature(mapName: string, layerId: string, selectionKey: string): IShowSelectedFeatureAction;
/**
 * NOTE: Dispatching this action does not add the layer to the map. This is a means to notify others
 * that a new layer has been added. It is expected to be dispatched by any component that is managing
 * layers
 *
 * @export
 * @param {string} mapName
 * @param {ILayerInfo} layer
 * @param {IVectorLayerStyle} [defaultStyle]
 * @returns {IAddedLayerAction}
 * @since 0.13
 * @since 0.14 defaultStyle argument changed to IVectorLayerStyle
 */
export declare function mapLayerAdded(mapName: string, layer: ILayerInfo, defaultStyle?: IVectorLayerStyle): IAddedLayerAction;
/**
 * An action that signals the externa layers for the given map name is ready. This action
 * is only dispatched when there is no external layers to initially add
 *
 * @param mapName
 * @since 0.14
 */
export declare function externalLayersReady(mapName: string): {
    type: ActionType;
    payload: {
        mapName: string;
    };
};
/**
 * Removes a given external layer for the given map
 *
 * @export
 * @param {string} mapName
 * @param {string} layerName
 * @returns {IRemoveLayerAction}
 * @since 0.13
 */
export declare function removeMapLayer(mapName: string, layerName: string): IRemoveLayerAction;
/**
 * Sets the display order index for the given external layer for the given map
 *
 * @export
 * @param {string} mapName
 * @param {string} layerName
 * @param {number} index
 * @returns {ISetLayerIndexAction}
 * @since 0.13
 */
export declare function setMapLayerIndex(mapName: string, layerName: string, index: number): ISetLayerIndexAction;
/**
 * Sets the opacity for the given external layer for the given map
 *
 * @export
 * @param {string} mapName
 * @param {string} layerName
 * @param {number} opacity
 * @returns {ISetLayerOpacityAction}
 * @since 0.13
 */
export declare function setMapLayerOpacity(mapName: string, layerName: string, opacity: number): ISetLayerOpacityAction;
/**
 * Sets the heatmap blur for the given external heatmap layer for the given map
 *
 * @param mapName
 * @param layerName
 * @param blur
 */
export declare function setHeatmapLayerBlur(mapName: string, layerName: string, blur: number): ISetHeatmapLayerBlurAction;
/**
 * Sets the heatmap radius for the given external heatmap layer for the given map
 *
 * @param mapName
 * @param layerName
 * @param radius
 */
export declare function setHeatmapLayerRadius(mapName: string, layerName: string, radius: number): ISetHeatmapLayerRadiusAction;
/**
 * Sets the visibility for the given external layer for the given map
 *
 * @export
 * @param {string} mapName
 * @param {string} layerName
 * @param {boolean} visible
 * @returns {ISetLayerVisibilityAction}
 * @since 0.13
 */
export declare function setMapLayerVisibility(mapName: string, layerName: string, visible: boolean): ISetLayerVisibilityAction;
/**
 * Sets the vector style for the given external layer for the given map
 *
 * @export
 * @param {string} mapName
 * @param {string} layerName
 * @param {IVectorLayerStyle} style
 * @param {VectorStyleSource} which
 * @returns {ISetMapLayerVectorStyle}
 * @since 0.13
 * @since 0.14 style and which arguments changed to IVectorLayerStyle
 */
export declare function setMapLayerVectorStyle(mapName: string, layerName: string, style: IVectorLayerStyle, which: VectorStyleSource): ISetMapLayerVectorStyle;
/**
 * Adds a busy worker for the given external layer for the given map
 *
 * @export
 * @param {string} mapName
 * @param {string} layerName
 * @returns {IAddMapLayerBusyWorkerAction}
 * @since 0.13
 */
export declare function addMapLayerBusyWorker(mapName: string, layerName: string): IAddMapLayerBusyWorkerAction;
/**
 * Removes a busy worker for the given external layer for the given map
 *
 * @export
 * @param {string} mapName
 * @param {string} layerName
 * @returns {IRemoveMapLayerBusyWorkerAction}
 * @since 0.13
 */
export declare function removeMapLayerBusyWorker(mapName: string, layerName: string): IRemoveMapLayerBusyWorkerAction;
/**
 * Adds a feature to the client selection set for the given map
 *
 * @param mapName
 * @param layerName
 * @param feature
 * @returns
 * @since 0.14
 */
export declare function addClientSelectedFeature(mapName: string, layerName: string, feature: ClientSelectionFeature): IAddClientSelectedFeatureAction;
/**
 * Clears the client selection set for the given map
 *
 * @param mapName
 * @since 0.14
 */
export declare function clearClientSelection(mapName: string): IClearClientSelectionAction;
