import { DataNode, DataTree } from '../../types/data-structures';
import { BreadcrumbNode, ClickEvent, FlattenedImageListNode } from './image-list-types';
/**
 * Builds a stable identity string for a DataNode based on its obj (T|P|K).
 * Returns `undefined` when the node has no usable obj identity.
 * Used as the selection key so that selection survives navigation.
 */
export declare const getNodeObjKey: (node: DataNode) => string | undefined;
export declare const createFlattenedNode: (node: DataNode, index: number, level?: number, parentPath?: string) => FlattenedImageListNode;
export declare const findOriginalNode: (node: FlattenedImageListNode) => DataNode;
export declare const findFirstLeaf: (node: DataNode) => DataNode | null;
export declare const getNavigationNodeIcon: (node: DataNode) => string;
export declare const createNavigationImageNode: (node: DataNode) => DataNode;
export declare const createBreadcrumbData: (pathSegments: string[], title?: string) => DataTree;
export declare const createBreadcrumbClickHandler: (navigationStackLength: number, navigateBack: () => void) => (e: React.MouseEvent | React.KeyboardEvent, node: BreadcrumbNode) => void;
export declare const focusImageItem: (itemId: number | string) => void;
export declare const getNextItemIndex: (currentIndex: number, totalItems: number) => number;
export declare const getPreviousItemIndex: (currentIndex: number, totalItems: number) => number;
export declare const handleArrowNavigation: (direction: "left" | "right" | "up" | "down", currentNodeId: number | string, flattenedData: FlattenedImageListNode[], columns?: number) => void;
export declare const createKeyDownHandler: (navigateBack: () => void, handleClick: (node: FlattenedImageListNode, ev: ClickEvent) => void, flattenedData: FlattenedImageListNode[], columns?: number, onClick?: (node: DataNode) => void) => (node: FlattenedImageListNode, ev: React.KeyboardEvent) => void;
/**
 * Creates a keyboard handler for strip navigation modes (v-strip, h-strip).
 * Navigates linearly through items using arrow keys appropriate to orientation.
 */
export declare const createStripKeyDownHandler: (orientation: "vertical" | "horizontal", itemCount: number, onActivate: (index: number) => void, onEscape?: () => void) => (ev: React.KeyboardEvent, currentIndex: number) => void;
/**
 * Creates a keyboard handler for menu navigation mode.
 * Supports linear navigation, accordion expand/collapse, and item activation.
 */
export declare const createMenuKeyDownHandler: (itemCount: number, focusItem: (index: number) => void, onActivate: (index: number) => void, onExpandCollapse?: (index: number, expand: boolean) => void, isExpanded?: (index: number) => boolean, hasChildren?: (index: number) => boolean) => (ev: React.KeyboardEvent, currentIndex: number) => void;
//# sourceMappingURL=image-list-utils.d.ts.map