import { type SidebarNode } from "../../types.js";
export interface SidebarState {
    nodes: SidebarNode[];
    expandedNodes: Set<string>;
    pinnedNodePath: SidebarNode[];
    maxDepth: number;
    searchTerm: string;
    searchResults: SidebarNode[];
    isSearching: boolean;
    activeSearchIndex: number;
    activeNodeId?: string;
    isStatusFilterEnabled: boolean;
}
export declare const initialSidebarState: SidebarState;
export declare enum SidebarActionType {
    SET_NODES = "SET_NODES",
    TOGGLE_NODE = "TOGGLE_NODE",
    OPEN_NODE = "OPEN_NODE",
    CLOSE_NODE = "CLOSE_NODE",
    TOGGLE_PIN = "TOGGLE_PIN",
    OPEN_LEVEL = "OPEN_LEVEL",
    CHANGE_SEARCH_TERM = "CHANGE_SEARCH_TERM",
    SET_SEARCH_RESULTS = "SET_SEARCH_RESULTS",
    SET_IS_SEARCHING = "SET_IS_SEARCHING",
    NEXT_SEARCH_RESULT = "NEXT_SEARCH_RESULT",
    PREVIOUS_SEARCH_RESULT = "PREVIOUS_SEARCH_RESULT",
    SYNC_ACTIVE_NODE_ID = "SYNC_ACTIVE_NODE_ID",
    TOGGLE_STATUS_FILTER = "TOGGLE_STATUS_FILTER",
    SET_FLATTENED_NODES = "SET_FLATTENED_NODES",
    SET_PINNED_NODE_PATH = "SET_PINNED_NODE_PATH",
    SET_EXPANDED_NODES = "SET_EXPANDED_NODES"
}
interface SetNodesAction {
    type: SidebarActionType.SET_NODES;
    payload: SidebarNode[];
}
interface ToggleNodeAction {
    type: SidebarActionType.TOGGLE_NODE;
    payload: string;
}
interface OpenNodeAction {
    type: SidebarActionType.OPEN_NODE;
    payload: string;
}
interface CloseNodeAction {
    type: SidebarActionType.CLOSE_NODE;
    payload: string;
}
interface TogglePinAction {
    type: SidebarActionType.TOGGLE_PIN;
    payload: string;
}
interface OpenLevelAction {
    type: SidebarActionType.OPEN_LEVEL;
    payload: number;
}
interface ChangeSearchTermAction {
    type: SidebarActionType.CHANGE_SEARCH_TERM;
    payload: string;
}
interface SetSearchResultsAction {
    type: SidebarActionType.SET_SEARCH_RESULTS;
    payload: SidebarNode[];
}
interface SetIsSearchingAction {
    type: SidebarActionType.SET_IS_SEARCHING;
    payload: boolean;
}
interface NextSearchResultAction {
    type: SidebarActionType.NEXT_SEARCH_RESULT;
}
interface PreviousSearchResultAction {
    type: SidebarActionType.PREVIOUS_SEARCH_RESULT;
}
interface SyncActiveNodeIdAction {
    type: SidebarActionType.SYNC_ACTIVE_NODE_ID;
    payload: string | undefined;
}
interface ToggleStatusFilterAction {
    type: SidebarActionType.TOGGLE_STATUS_FILTER;
}
interface SetPinnedNodePathAction {
    type: SidebarActionType.SET_PINNED_NODE_PATH;
    payload: SidebarNode[];
}
interface SetExpandedNodesAction {
    type: SidebarActionType.SET_EXPANDED_NODES;
    payload: Set<string>;
}
export type SidebarAction = SetNodesAction | ToggleNodeAction | OpenNodeAction | CloseNodeAction | TogglePinAction | OpenLevelAction | ChangeSearchTermAction | SetSearchResultsAction | SetIsSearchingAction | NextSearchResultAction | PreviousSearchResultAction | SyncActiveNodeIdAction | ToggleStatusFilterAction | SetPinnedNodePathAction | SetExpandedNodesAction;
export declare const sidebarReducer: (state: SidebarState | undefined, action: SidebarAction) => SidebarState;
export {};
//# sourceMappingURL=sidebar-reducer.d.ts.map