import { ActionTypes, CreateNewDatasetSuccessPayload, MapStateActions, ReceiveMapConfigPayload, VisStateActions, SetLoadingIndicatorPayload } from '@kepler.gl/actions';
import { Layer } from '@kepler.gl/layers';
import KeplerGLSchema, { Merger, PostMergerPayload, VisState } from '@kepler.gl/schemas';
import { Filter, InteractionConfig, AnimationConfig, FilterAnimationConfig, Editor } from '@kepler.gl/types';
import { Loader } from '@loaders.gl/loader-utils';
import { Datasets } from '@kepler.gl/table';
import { PayloadAction } from '@reduxjs/toolkit';
export declare const defaultInteractionConfig: InteractionConfig;
export declare const DEFAULT_ANIMATION_CONFIG: AnimationConfig;
export declare const DEFAULT_EDITOR: Editor;
/**
 * Default initial `visState`
 * @memberof visStateUpdaters
 * @constant
 * @public
 */
export declare const INITIAL_VIS_STATE: VisState;
export declare const ACTION_TASK_FIT_BOUNDS: any;
export declare const ACTION_TASK_ADD_NOTIFICATION: any;
type UpdateStateWithLayerAndDataType = {
    layers: Layer[];
    layerData: any[];
};
/**
 * Update state with updated layer and layerData
 *
 */
export declare function updateStateWithLayerAndData<S extends UpdateStateWithLayerAndDataType>(state: S, { layerData, layer, idx }: {
    layerData?: any;
    layer: Layer;
    idx: number;
}): S;
export declare function updateStateOnLayerVisibilityChange<S extends VisState>(state: S, layer: Layer): S;
/**
 * Apply layer config
 * @memberof visStateUpdaters
 * @returns nextState
 */
export declare function applyLayerConfigUpdater(state: VisState, action: VisStateActions.ApplyLayerConfigUpdaterAction): VisState;
/**
 * Update layer base config: dataId, label, column, isVisible
 * @memberof visStateUpdaters
 * @returns nextState
 */
export declare function layerConfigChangeUpdater(state: VisState, action: VisStateActions.LayerConfigChangeUpdaterAction): VisState;
export declare function layerAnimationChangeUpdater<S extends VisState>(state: S, action: any): S;
/**
 * Update layerId, isVisible, splitMapId
 * handles two cases:
 * 1) toggle the visibility of local SplitMap layer (visState.splitMap.layers)
 * 2) toggle the visibility of global layer (visState.layers)

 * @memberof visStateUpdaters
 * @returns nextState
 */
export declare function layerToggleVisibilityUpdater(state: VisState, action: VisStateActions.LayerToggleVisibilityUpdaterAction): VisState;
/**
 * Updates isValid flag of a layer.
 * Updates isVisible based on the value of isValid.
 * Triggers update of data for the layer in order to get errors again during next update iteration.
 * @memberof visStateUpdaters
 * @returns nextState
 */
export declare function layerSetIsValidUpdater(state: VisState, action: VisStateActions.LayerSetIsValidUpdaterAction): VisState;
/**
 * Update layer base config: dataId, label, column, isVisible
 * @memberof visStateUpdaters
 * @returns nextState
 */
export declare function layerTextLabelChangeUpdater(state: VisState, action: VisStateActions.LayerTextLabelChangeUpdaterAction): VisState;
/**
 * Update layer config dataId
 * @memberof visStateUpdaters
 * @returns nextState
 */
export declare function layerDataIdChangeUpdater(state: VisState, action: {
    oldLayer: Layer;
    newConfig: {
        dataId: string;
    };
}): VisState;
export declare function setInitialLayerConfig(layer: any, datasets: any, layerClasses: any): Layer;
/**
 * Update layer type. Previews layer config will be copied if applicable.
 * @memberof visStateUpdaters
 * @public
 */
export declare function layerTypeChangeUpdater(state: VisState, action: VisStateActions.LayerTypeChangeUpdaterAction): VisState;
/**
 * Update layer visual channel
 * @memberof visStateUpdaters
 * @returns {Object} nextState
 * @public
 */
export declare function layerVisualChannelChangeUpdater(state: VisState, action: VisStateActions.LayerVisualChannelConfigChangeUpdaterAction): VisState;
/**
 * Update layer `visConfig`
 * @memberof visStateUpdaters
 * @public
 */
export declare function layerVisConfigChangeUpdater(state: VisState, action: VisStateActions.LayerVisConfigChangeUpdaterAction): VisState;
/**
 * Reset animation config current time to a specified value
 * @memberof visStateUpdaters
 * @public
 *
 */
export declare const setLayerAnimationTimeUpdater: <S extends VisState>(state: S, { value }: VisStateActions.SetLayerAnimationTimeUpdaterAction) => S;
/**
 * Update filter property
 * @memberof visStateUpdaters
 * @public
 */
export declare function setFilterAnimationTimeUpdater(state: VisState, action: VisStateActions.SetFilterAnimationTimeUpdaterAction): VisState;
/**
 * Update filter animation window
 * @memberof visStateUpdaters
 * @public
 */
export declare function setFilterAnimationWindowUpdater<S extends VisState>(state: S, { id, animationWindow }: VisStateActions.SetFilterAnimationWindowUpdaterAction): S;
export declare function applyFilterConfigUpdater(state: VisState, action: VisStateActions.ApplyFilterConfigUpdaterAction): VisState;
/**
 * Update filter property
 * @memberof visStateUpdaters
 * @public
 */
export declare function setFilterUpdater<S extends VisState>(state: S, action: VisStateActions.SetFilterUpdaterAction): S;
/**
 * Set the property of a filter plot
 * @memberof visStateUpdaters
 * @public
 */
export declare const setFilterPlotUpdater: (state: VisState, { idx, newProp }: VisStateActions.SetFilterPlotUpdaterAction) => VisState;
/**
 * Add a new filter
 * @memberof visStateUpdaters
 * @public
 */
export declare const addFilterUpdater: (state: VisState, action: VisStateActions.AddFilterUpdaterAction) => VisState;
/**
 * Create or update a filter
 * @memberof visStateUpdaters
 * @public
 */
export declare const createOrUpdateFilterUpdater: (state: VisState, action: VisStateActions.CreateOrUpdateFilterUpdaterAction) => VisState;
/**
 * Set layer color palette ui state
 * @memberof visStateUpdaters
 */
export declare const layerColorUIChangeUpdater: (state: VisState, { oldLayer, prop, newConfig }: VisStateActions.LayerColorUIChangeUpdaterAction) => VisState;
/**
 * Start and end filter animation
 * @memberof visStateUpdaters
 * @public
 */
export declare const toggleFilterAnimationUpdater: (state: VisState, action: VisStateActions.ToggleFilterAnimationUpdaterAction) => VisState;
export declare function isFilterAnimationConfig(config: AnimationConfig | FilterAnimationConfig): boolean;
export declare function setAnimationConfigUpdater(state: VisState, action: VisStateActions.SetAnimationConfigUpdaterAction): VisState;
/**
 * @memberof visStateUpdaters
 * @public
 */
export declare const toggleLayerAnimationUpdater: (state: VisState, action: VisStateActions.ToggleLayerAnimationUpdaterAction) => VisState;
/**
 * Hide and show layer animation control
 * @memberof visStateUpdaters
 * @public
 */
export declare const toggleLayerAnimationControlUpdater: (state: VisState) => VisState;
/**
 * Change filter animation speed
 * @memberof visStateUpdaters
 * @public
 */
export declare const updateFilterAnimationSpeedUpdater: (state: VisState, action: VisStateActions.UpdateFilterAnimationSpeedUpdaterAction) => VisState;
/**
 * Update animation speed with the vertical speed slider
 * @memberof visStateUpdaters
 * @public
 *
 */
export declare const updateLayerAnimationSpeedUpdater: (state: VisState, { speed }: VisStateActions.UpdateLayerAnimationSpeedUpdaterAction) => VisState;
/**
 * Show larger time filter at bottom for time playback (apply to time filter only)
 * @memberof visStateUpdaters
 * @public
 */
export declare const setFilterViewUpdater: (state: VisState, action: VisStateActions.SetFilterViewUpdaterAction) => {
    filters: Filter[];
    mapInfo: import("@kepler.gl/types").MapInfo;
    layers: Layer[];
    layerData: any[];
    layerToBeMerged: any[];
    layerOrder: string[];
    effects: import("@kepler.gl/types").Effect[];
    effectOrder: string[];
    filterToBeMerged: any[];
    datasets: Datasets;
    editingDataset: string | undefined;
    interactionConfig: InteractionConfig;
    interactionToBeMerged: any;
    layerBlending: string;
    overlayBlending?: string;
    hoverInfo: any;
    clicked: any;
    mousePos: any;
    maxDefaultTooltips: number;
    layerClasses: import("@kepler.gl/layers").LayerClassesType;
    animationConfig: AnimationConfig;
    editor: Editor;
    splitMaps: import("@kepler.gl/types").SplitMap[];
    splitMapsToBeMerged: import("@kepler.gl/types").SplitMap[];
    fileLoading: import("@kepler.gl/types").FileLoading | false;
    fileLoadingProgress: import("@kepler.gl/types").FileLoadingProgress;
    loadingIndicatorValue: number;
    loaders: Loader[];
    loadOptions: object;
    initialState?: Partial<VisState>;
    mergers: import("@kepler.gl/schemas").VisStateMergers<any>;
    schema: typeof KeplerGLSchema;
    preserveLayerOrder?: string[];
    preserveFilterOrder?: string[];
    preserveDatasetOrder?: string[];
    isMergingDatasets: {
        [datasetId: string]: boolean;
    };
};
/**
 * Toggles filter feature visibility
 * @memberof visStateUpdaters
 */
export declare const toggleFilterFeatureUpdater: (state: VisState, action: VisStateActions.ToggleFilterFeatureUpdaterAction) => VisState;
/**
 * Remove a filter
 * @memberof visStateUpdaters
 * @public
 */
export declare const removeFilterUpdater: (state: VisState, action: VisStateActions.RemoveFilterUpdaterAction) => VisState;
/**
 * Add a new layer
 * @memberof visStateUpdaters
 * @public
 */
export declare const addLayerUpdater: (state: VisState, action: VisStateActions.AddLayerUpdaterAction) => VisState;
/**
 * remove layer
 * @memberof visStateUpdaters
 * @public
 */
export declare function removeLayerUpdater<T extends VisState>(state: T, { id }: VisStateActions.RemoveLayerUpdaterAction): T;
/**
 * Reorder layer
 * @memberof visStateUpdaters
 * @public
 */
export declare const reorderLayerUpdater: (state: VisState, { order }: VisStateActions.ReorderLayerUpdaterAction) => VisState;
/**
 * duplicate layer
 * @memberof visStateUpdaters
 * @public
 */
export declare const duplicateLayerUpdater: (state: VisState, { id }: VisStateActions.DuplicateLayerUpdaterAction) => VisState;
/**
 * Add a new effect
 * @memberof visStateUpdaters
 * @public
 */
export declare const addEffectUpdater: (state: VisState, action: VisStateActions.AddEffectUpdaterAction) => VisState;
/**
 * remove effect
 * @memberof visStateUpdaters
 * @public
 */
export declare const removeEffectUpdater: (state: VisState, { id }: VisStateActions.RemoveEffectUpdaterAction) => VisState;
/**
 * Reorder effect
 * @memberof visStateUpdaters
 * @public
 */
export declare const reorderEffectUpdater: (state: VisState, { order }: VisStateActions.ReorderEffectUpdaterAction) => VisState;
/**
 * Update effect
 * @memberof visStateUpdaters
 * @public
 */
export declare const updateEffectUpdater: (state: VisState, { id, props }: VisStateActions.UpdateEffectUpdaterAction) => VisState;
/**
 * Remove a dataset and all layers, filters, tooltip configs that based on it
 * @memberof visStateUpdaters
 * @public
 */
export declare function removeDatasetUpdater<T extends VisState>(state: T, action: VisStateActions.RemoveDatasetUpdaterAction): T;
/**
 * update layer blending mode
 * @memberof visStateUpdaters
 * @public
 */
export declare const updateLayerBlendingUpdater: (state: VisState, action: VisStateActions.UpdateLayerBlendingUpdaterAction) => VisState;
/**
 * update overlay blending mode
 * @memberof visStateUpdaters
 * @public
 */
export declare const updateOverlayBlendingUpdater: (state: VisState, action: VisStateActions.UpdateOverlayBlendingUpdaterAction) => VisState;
/**
 * Display dataset table in a modal
 * @memberof visStateUpdaters
 * @public
 */
export declare const showDatasetTableUpdater: (state: VisState, action: VisStateActions.ShowDatasetTableUpdaterAction) => VisState;
/**
 * Add custom color for datasets and layers
 * @memberof visStateUpdaters
 * @public
 */
export declare const updateTableColorUpdater: (state: VisState, action: VisStateActions.UpdateDatasetColorUpdater) => VisState;
/**
 * reset visState to initial State
 * @memberof visStateUpdaters
 * @public
 */
export declare const resetMapConfigUpdater: (state: VisState) => VisState;
/**
 * Propagate `visState` reducer with a new configuration. Current config will be override.
 * @memberof visStateUpdaters
 * @public
 */
export declare const receiveMapConfigUpdater: (state: VisState, { payload: { config, options } }: {
    type?: typeof ActionTypes.RECEIVE_MAP_CONFIG;
    payload: ReceiveMapConfigPayload;
}) => VisState;
/**
 * Trigger layer hover event with hovered object
 * @memberof visStateUpdaters
 * @public
 */
export declare const layerHoverUpdater: (state: VisState, action: VisStateActions.OnLayerHoverUpdaterAction) => VisState;
/**
 * Update `interactionConfig`
 * @memberof visStateUpdaters
 * @public
 */
export declare function interactionConfigChangeUpdater(state: VisState, action: VisStateActions.InteractionConfigChangeUpdaterAction): VisState;
/**
 * Trigger layer click event with clicked object
 * @memberof visStateUpdaters
 * @public
 */
export declare const layerClickUpdater: (state: VisState, action: VisStateActions.OnLayerClickUpdaterAction) => VisState;
/**
 * Trigger map click event, unselect clicked object
 * @memberof visStateUpdaters
 * @public
 */
export declare const mapClickUpdater: (state: VisState, action: VisStateActions.OnMapClickUpdaterAction) => VisState;
/**
 * Trigger map move event
 * @memberof visStateUpdaters
 * @public
 */
export declare const mouseMoveUpdater: (state: VisState, { evt }: VisStateActions.OnMouseMoveUpdaterAction) => VisState;
/**
 * Toggle visibility of a layer for a split map
 * @memberof visStateUpdaters
 * @public
 */
export declare const toggleSplitMapUpdater: (state: VisState, action: MapStateActions.ToggleSplitMapUpdaterAction) => VisState;
/**
 * Toggle visibility of a layer in a split map
 * @memberof visStateUpdaters
 * @public
 */
export declare const toggleLayerForMapUpdater: (state: VisState, { mapIndex, layerId }: VisStateActions.ToggleLayerForMapUpdaterAction) => VisState;
/**
 * Add new dataset to `visState`, with option to load a map config along with the datasets
 * @memberof visStateUpdaters
 * @public
 */
export declare const updateVisDataUpdater: (state: VisState, action: VisStateActions.UpdateVisDataUpdaterAction) => VisState;
export declare const createNewDatasetSuccessUpdater: (state: VisState, action: PayloadAction<CreateNewDatasetSuccessPayload>) => VisState;
/**
 * Add new dataset to `visState`, with option to load a map config along with the datasets
 */
export declare function applyMergersUpdater(state: VisState, action: {
    mergers: Merger<any>[];
    postMergerPayload: PostMergerPayload;
}): VisState;
/**
 * Rename an existing dataset in `visState`
 * @memberof visStateUpdaters
 * @public
 */
export declare function renameDatasetUpdater(state: VisState, action: VisStateActions.RenameDatasetUpdaterAction): VisState;
/**
 * Update Dataset props (label, color, meta). Do not use to update data or any related properties
 * @memberof visStateUpdaters
 * @public
 */
export declare function updateDatasetPropsUpdater(state: VisState, action: VisStateActions.UpdateDatasetPropsUpdaterAction): VisState;
/**
 * When a user clicks on the specific map closing icon
 * the application will close the selected map
 * and will merge the remaining one with the global state
 * TODO: i think in the future this action should be called merge map layers with global settings
 * @param {Object} state `visState`
 * @param {Object} action action
 * @returns {Object} nextState
 */
export declare function closeSpecificMapAtIndex<S extends VisState>(state: S, action: MapStateActions.ToggleSplitMapUpdaterAction): S;
/**
 * Trigger file loading dispatch `addDataToMap` if succeed, or `loadFilesErr` if failed
 * @memberof visStateUpdaters
 * @public
 */
export declare const loadFilesUpdater: (state: VisState, action: VisStateActions.LoadFilesUpdaterAction) => VisState;
/**
 * Sucessfully loaded one file, move on to the next one
 * @memberof visStateUpdaters
 * @public
 */
export declare function loadFileStepSuccessUpdater(state: VisState, action: VisStateActions.LoadFileStepSuccessAction): VisState;
/**
 *
 * @memberof visStateUpdaters
 * @public
 */
export declare function loadNextFileUpdater(state: VisState): VisState;
export declare function makeLoadFileTask(file: any, fileCache: any, loaders?: Loader[], loadOptions?: {}): any;
/**
 *
 * @memberof visStateUpdaters
 * @public
 */
export declare function processFileContentUpdater(state: VisState, action: VisStateActions.ProcessFileContentUpdaterAction): VisState;
export declare function parseProgress(prevProgress: {} | undefined, progress: any): {
    percent?: undefined;
} | {
    percent: any;
};
/**
 * gets called with payload = AsyncGenerator<???>
 * @memberof visStateUpdaters
 * @public
 */
export declare const nextFileBatchUpdater: (state: VisState, { payload: { gen, fileName, progress, accumulated, onFinish } }: VisStateActions.NextFileBatchUpdaterAction) => VisState;
/**
 * Trigger loading file error
 * @memberof visStateUpdaters
 * @public
 */
export declare const loadFilesErrUpdater: (state: VisState, { error, fileName }: VisStateActions.LoadFilesErrUpdaterAction) => VisState;
/**
 * When select dataset for export, apply cpu filter to selected dataset
 * @memberof visStateUpdaters
 * @public
 */
export declare const applyCPUFilterUpdater: (state: VisState, { dataId }: VisStateActions.ApplyCPUFilterUpdaterAction) => VisState;
/**
 * User input to update the info of the map
 * @memberof visStateUpdaters
 * @public
 */
export declare const setMapInfoUpdater: (state: VisState, action: VisStateActions.SetMapInfoUpdaterAction) => VisState;
/**
 * Helper function to update All layer domain and layer data of state
 */
export declare function addDefaultLayers(state: VisState, datasets: Datasets): {
    state: VisState;
    newLayers: Layer[];
};
/**
 * helper function to find default tooltips
 * @param {Object} state
 * @param {Object} dataset
 * @returns {Object} nextState
 */
export declare function addDefaultTooltips(state: any, dataset: any): any;
export declare function initialFileLoadingProgress(file: any, index: any): {
    [x: number]: {
        percent: number;
        message: string;
        fileName: any;
        error: null;
    };
};
export declare function updateFileLoadingProgressUpdater(state: any, { fileName, progress }: {
    fileName: any;
    progress: any;
}): any;
/**
 * Helper function to update layer domains for an array of datasets
 */
export declare function updateAllLayerDomainData<S extends VisState>(state: S, dataId: string | string[], updatedFilter?: Filter): S;
export declare function updateAnimationDomain<S extends VisState>(state: S): S;
/**
 * Update the status of the editor
 * @memberof visStateUpdaters
 */
export declare const setEditorModeUpdater: (state: VisState, { mode }: VisStateActions.SetEditorModeUpdaterAction) => VisState;
/**
 * Update editor features
 * @memberof visStateUpdaters
 */
export declare function setFeaturesUpdater(state: VisState, { features }: VisStateActions.SetFeaturesUpdaterAction): VisState;
/**
 * Set the current selected feature
 * @memberof uiStateUpdaters
 */
export declare const setSelectedFeatureUpdater: (state: VisState, { feature, selectionContext }: VisStateActions.SetSelectedFeatureUpdaterAction) => VisState;
/**
 * Delete existing feature from filters
 * @memberof visStateUpdaters
 */
export declare function deleteFeatureUpdater(state: VisState, { feature }: VisStateActions.DeleteFeatureUpdaterAction): VisState;
/**
 * Toggle feature as layer filter
 * @memberof visStateUpdaters
 */
export declare function setPolygonFilterLayerUpdater(state: VisState, payload: VisStateActions.SetPolygonFilterLayerUpdaterAction): VisState;
/**
 * @memberof visStateUpdaters
 * @public
 */
export declare function sortTableColumnUpdater(state: VisState, { dataId, column, mode }: VisStateActions.SortTableColumnUpdaterAction): VisState;
/**
 * @memberof visStateUpdaters
 * @public
 */
export declare function pinTableColumnUpdater(state: VisState, { dataId, column }: VisStateActions.PinTableColumnUpdaterAction): VisState;
/**
 * Copy column content as strings
 * @memberof visStateUpdaters
 * @public
 */
export declare function copyTableColumnUpdater(state: VisState, { dataId, column }: VisStateActions.CopyTableColumnUpdaterAction): VisState;
/**
 * Set display format from columns from user selection
 * @memberof visStateUpdaters
 * @public
 */
export declare function setColumnDisplayFormatUpdater(state: VisState, { dataId, formats }: VisStateActions.SetColumnDisplayFormatUpdaterAction): VisState;
/**
 * Update editor
 */
export declare function toggleEditorVisibilityUpdater(state: VisState, action: VisStateActions.ToggleEditorVisibilityUpdaterAction): VisState;
export declare function setFilterAnimationTimeConfigUpdater(state: VisState, { idx, config }: VisStateActions.SetFilterAnimationTimeConfigAction): VisState;
/**
 * Update editor
 */
export declare function setLayerAnimationTimeConfigUpdater(state: VisState, { config }: VisStateActions.SetLayerAnimationTimeConfigAction): VisState;
/**
 * Update editor
 */
export declare function layerFilteredItemsChangeUpdater<S extends VisState>(state: S, action: VisStateActions.LayerFilteredItemsChangeAction): S;
/**
 * Update WMS feature info and pin tooltip
 */
export declare function wmsFeatureInfoUpdater<S extends VisState>(state: S, action: VisStateActions.WMSFeatureInfoAction): S;
export declare function syncTimeFilterWithLayerTimelineUpdater<S extends VisState>(state: S, action: VisStateActions.SyncTimeFilterWithLayerTimelineAction): S;
export declare function setTimeFilterTimelineModeUpdater<S extends VisState>(state: S, action: VisStateActions.setTimeFilterSyncTimelineModeAction): S;
/**
 * Update state of the loading indicator.
 * @memberof visStateUpdaters
 * @param state visState
 * @param action
 * @param action.payload Payload with change of number of active loading actions.
 * @returns nextState
 * @public
 */
export declare const setLoadingIndicatorUpdater: (state: VisState, { payload: { change } }: {
    payload: SetLoadingIndicatorPayload;
}) => VisState;
export declare function prepareStateForDatasetReplace<T extends VisState>(state: T, dataId: string, dataIdToUse: string): T;
export declare function replaceDatasetDepsInState<T extends VisState>(state: T, { dataId, dataIdToUse }: {
    dataId: string;
    dataIdToUse: string;
}): T;
export {};
