import { AppSharedState } from './state.models'; import { AppSpecificAction, AppSpecificReducerMap } from './state.models.reducer'; /** * Creates a reducer function for a specific application state that combines core and application-specific reducers. * * @template ApplicationSpecificState - The type of the application-specific state, must extend AppSharedState * @param appSpecificReducerMap - A Map containing application-specific action types and their corresponding reducer functions * @returns A reducer function compatible with React's useReducer hook that handles both core and application-specific state updates * * @example * ```typescript * const appReducers = new Map([ * ['CUSTOM_ACTION', (state, action) => ({ ...state, custom: action.payload })] * ]); * const reducer = reducerForSpecificApp(appReducers); * ``` * * @remarks * The returned reducer handles: * - Core state actions (layers, places, periods, styles, etc.) * - Map-related actions (view changes, layer management, etc.) * - MapSet-related actions (sync, mode changes, etc.) * - Application-specific actions defined in the appSpecificReducerMap * * @throws {Error} When an unknown action type is dispatched */ export declare const reducerForSpecificApp: (appSpecificReducerMap: AppSpecificReducerMap) => (currentState: ApplicationSpecificState, action: AppSpecificAction) => ApplicationSpecificState;