import type { PayloadAction } from '@reduxjs/toolkit';
import type { Route } from '../lib/router/Route';
export interface RoutesState {
    /**
     * The routes in the application. Keyed by the route path, value is the route.
     */
    routes: {
        [path: string]: Route;
    };
    /**
     * The route filters in the application. That is remove routes from routes.
     */
    routeFilters: ((route: Route) => Route | null)[];
}
declare const routesSlice: import("@reduxjs/toolkit").Slice<RoutesState, {
    /**
     * Adds or updates a route in the state.
     */
    setRoute(state: import("immer").WritableDraft<RoutesState>, action: PayloadAction<Route>): void;
    /**
     * Adds a route filter function to the routeFilters array in the state.
     *
     * The filter functions can be used elsewhere in the application to filter
     * routes based on certain conditions.
     */
    setRouteFilter(state: import("immer").WritableDraft<RoutesState>, action: PayloadAction<(route: Route) => Route | null>): void;
}, "routes", "routes", import("@reduxjs/toolkit").SliceSelectors<RoutesState>>;
export declare const setRoute: import("@reduxjs/toolkit").ActionCreatorWithPayload<Route, "routes/setRoute">, setRouteFilter: import("@reduxjs/toolkit").ActionCreatorWithPayload<(route: Route) => Route | null, "routes/setRouteFilter">;
export { routesSlice };
declare const _default: import("redux").Reducer<RoutesState>;
export default _default;
