import { RGBColor, LayerGroup, MapStyles, InputStyle, VisibleLayerGroups } from '@kepler.gl/types';
import { ActionTypes, ReceiveMapConfigPayload, KeplerGlInitPayload, MapStyleActions } from '@kepler.gl/actions';
export type MapboxStyleUrl = string;
export type MapStyle = {
    styleType: string;
    visibleLayerGroups: VisibleLayerGroups;
    topLayerGroups: VisibleLayerGroups;
    mapStyles: MapStyles;
    mapboxApiAccessToken: string | null;
    mapboxApiUrl: string;
    mapStylesReplaceDefault: boolean;
    inputStyle: InputStyle;
    threeDBuildingColor: RGBColor;
    backgroundColor: RGBColor;
    custom3DBuildingColor: boolean;
    bottomMapStyle: any;
    topMapStyle: any;
    initialState?: MapStyle;
    isLoading: {
        [key: string]: boolean;
    };
};
export declare const getDefaultMapStyles: (cdnUrl: string) => {};
/**
 * Default initial `mapStyle`
 * @memberof mapStyleUpdaters
 * @constant
 * @property styleType - Default: `'dark'`
 * @property visibleLayerGroups - Default: `{}`
 * @property topLayerGroups - Default: `{}`
 * @property mapStyles - mapping from style key to style object
 * @property mapboxApiAccessToken - Default: `null`
 * @Property mapboxApiUrl - Default null
 * @Property mapStylesReplaceDefault - Default: `false`
 * @property inputStyle - Default: `{}`
 * @property threeDBuildingColor - Default: `[r, g, b]`
 * @property backgroundColor - Default: `[r, g, b]`
 * @public
 */
export declare const INITIAL_MAP_STYLE: MapStyle;
interface GetMapStylesParam {
    styleType: string;
    visibleLayerGroups: {
        [id: string]: LayerGroup | boolean;
    };
    topLayerGroups: {
        [id: string]: LayerGroup | boolean;
    };
    mapStyles: {
        [id: string]: any;
    };
}
/**
 * Create two map styles from preset map style, one for top map one for bottom
 *
 * @param {string} styleType - current map style
 * @param {Object} visibleLayerGroups - visible layers of bottom map
 * @param {Object} topLayerGroups - visible layers of top map
 * @param {Object} mapStyles - a dictionary of all map styles
 * @returns {Object} bottomMapStyle | topMapStyle | isRaster
 */
export declare function getMapStyles({ styleType, visibleLayerGroups, topLayerGroups, mapStyles }: GetMapStylesParam): {
    bottomMapStyle?: undefined;
    topMapStyle?: undefined;
    editable?: undefined;
} | {
    bottomMapStyle: any;
    topMapStyle: {
        layers: any;
    } | null;
    editable: number;
};
/**
 * @memberof mapStyleUpdaters
 * @public
 */
export declare const requestMapStylesUpdater: (state: MapStyle, { payload: { mapStyles, onSuccess } }: MapStyleActions.RequestMapStylesUpdaterAction) => MapStyle;
/**
 * Propagate `mapStyle` reducer with `mapboxApiAccessToken` and `mapStylesReplaceDefault`.
 * if mapStylesReplaceDefault is true mapStyles is emptied; loadMapStylesUpdater() will
 * populate mapStyles.
 *
 * @memberof mapStyleUpdaters
 * @public
 */
export declare const initMapStyleUpdater: (state: MapStyle, { payload }: {
    type?: typeof ActionTypes.INIT;
    payload: KeplerGlInitPayload;
}) => MapStyle;
/**
 * Update `visibleLayerGroups`to change layer group visibility
 * @memberof mapStyleUpdaters
 * @public
 */
export declare const mapConfigChangeUpdater: (state: MapStyle, action: MapStyleActions.MapConfigChangeUpdaterAction) => MapStyle;
/**
 * Change to another map style. The selected style should already been loaded into `mapStyle.mapStyles`
 * @memberof mapStyleUpdaters
 * @public
 */
export declare const mapStyleChangeUpdater: (state: MapStyle, { payload: { styleType, onSuccess } }: MapStyleActions.MapStyleChangeUpdaterAction) => MapStyle;
/**
 * Callback when load map style success
 * @memberof mapStyleUpdaters
 * @public
 */
export declare const loadMapStylesUpdater: (state: MapStyle, action: MapStyleActions.LoadMapStylesUpdaterAction) => MapStyle;
/**
 * Callback when load map style error
 * @memberof mapStyleUpdaters
 * @public
 */
export declare const loadMapStyleErrUpdater: (state: MapStyle, { payload: { ids, error } }: MapStyleActions.LoadMapStyleErrUpdaterAction) => MapStyle;
/**
 * Load map style object when pass in saved map config
 * @memberof mapStyleUpdaters
 * @param state `mapStyle`
 * @param action
 * @param action.payload saved map config `{mapStyle, visState, mapState}`
 * @returns nextState or `react-pam` tasks to load map style object
 */
export declare const receiveMapConfigUpdater: (state: MapStyle, { payload: { config } }: {
    type?: typeof ActionTypes.RECEIVE_MAP_CONFIG;
    payload: ReceiveMapConfigPayload;
}) => MapStyle;
/**
 * Reset map style config to initial state
 * @memberof mapStyleUpdaters
 * @param state `mapStyle`
 * @returns nextState
 * @public
 */
export declare const resetMapConfigMapStyleUpdater: (state: MapStyle) => MapStyle;
/**
 * Callback when a custom map style object is received
 * @memberof mapStyleUpdaters
 * @public
 */
export declare const loadCustomMapStyleUpdater: (state: MapStyle, { payload: { icon, style, error } }: MapStyleActions.LoadCustomMapStyleUpdaterAction) => MapStyle;
/**
 * Input a custom map style object
 * @memberof mapStyleUpdaters
 * @public
 */
export declare const inputMapStyleUpdater: (state: MapStyle, { payload: { inputStyle, mapState } }: MapStyleActions.InputMapStyleUpdaterAction) => MapStyle;
/**
 * Add map style from user input to reducer and set it to current style
 * This action is called when user click confirm after putting in a valid style url in the custom map style dialog.
 * It should not be called from outside kepler.gl without a valid `inputStyle` in the `mapStyle` reducer.
 * @memberof mapStyleUpdaters
 */
export declare const addCustomMapStyleUpdater: (state: MapStyle) => MapStyle;
/**
 * Edit map style from user input to reducer.
 * This action is called when user clicks confirm after editing an existing custom style in the custom map style dialog.
 * It should not be called from outside kepler.gl without a valid `inputStyle` in the `mapStyle` reducer.
 * @memberof mapStyleUpdaters
 */
export declare const editCustomMapStyleUpdater: (state: MapStyle) => MapStyle;
/**
 * Remove a custom map style from `state.mapStyle.mapStyles`.
 * @memberof mapStyleUpdaters
 */
export declare const removeCustomMapStyleUpdater: (state: MapStyle, action: MapStyleActions.RemoveCustomMapStyleUpdaterAction) => MapStyle;
/**
 * Updates 3d building color
 * @memberof mapStyleUpdaters
 */
export declare const set3dBuildingColorUpdater: (state: MapStyle, { payload: color }: MapStyleActions.Set3dBuildingColorUpdaterAction) => MapStyle;
/**
 * Updates background color
 * @memberof mapStyleUpdaters
 */
export declare const setBackgroundColorUpdater: (state: MapStyle, { payload: color }: MapStyleActions.SetBackgroundColorUpdaterAction) => MapStyle;
/**
 * Return the initial input style
 * @return Object
 */
export declare function getInitialInputStyle(): InputStyle;
export {};
