import { type ComponentType, type ReactElement } from "react";
import { type ListProps } from "../list/List.js";
import { type RecursiveItem, type RecursiveItemKeyOptions, type RenderRecursiveItemsProps } from "../utils/RenderRecursively.js";
import { type NavigationItem, type NavigationRenderData } from "./types.js";
/**
 * The default implementation for the nav item keys. It will attempt to set the
 * key in the following order:
 * - `href` if it exists and has length
 * - `children` if it's a string and has length
 * - default {@link getRecursiveItemKey} behavior of `${depth}-${index}`
 *
 * @since 6.0.0
 */
export declare function getRecursiveNavItemKey<Item extends NavigationItem = NavigationItem>(options: RecursiveItemKeyOptions<Item>): string;
/**
 * @since 6.0.0
 */
export interface NavigationProps<Item extends NavigationItem = NavigationItem, Data extends NavigationRenderData = NavigationRenderData> extends Omit<ListProps, "children"> {
    data: Data;
    items: readonly RecursiveItem<Item>[];
    /** @see {@link DefaultNavigationRenderer} */
    render?: ComponentType<RenderRecursiveItemsProps<Item, Data>>;
    /** @see {@link getRecursiveNavItemKey} */
    getItemKey?(options: RecursiveItemKeyOptions<Item>): string;
}
/**
 * **Client Component**
 *
 * @since 6.0.0
 */
export declare function Navigation<Item extends NavigationItem, Data extends NavigationRenderData>(props: NavigationProps<Item, Data>): ReactElement;
