import { default as React, ComponentPropsWithoutRef } from 'react';
import { SidebarState } from './main-sidebar-context';
import { LinkComponent } from '../../types/link-component';
export type NavLink = {
    name: string;
    url: string;
    icon?: React.ReactNode;
    isActive?: boolean;
    variant?: 'default' | 'featured';
    tooltipMsg?: string;
    /** @deprecated Sidebar nav items now render flush; this option is accepted but ignored. */
    indent?: boolean;
};
type ItemStyleOptions = {
    isActive?: boolean;
    isCollapsed?: boolean;
    isFeatured?: boolean;
};
/**
 * Shared classes for any sidebar nav row element (anchor, button, custom).
 * Apply directly to the interactive element so `asChild` and custom slotted
 * elements (e.g. router Links) all receive the same styling without relying
 * on `[&>a]:` child selectors.
 */
export declare const navItemClasses: ({ isActive, isCollapsed, isFeatured }?: ItemStyleOptions) => string;
export type MainSidebarNavLinkProps = Omit<ComponentPropsWithoutRef<'li'>, 'children'> & {
    link?: NavLink;
    isActive?: boolean;
    state?: SidebarState;
    children?: React.ReactNode;
    /** Override the Provider-level LinkComponent for this row. Defaults to `<a>` when neither is set. */
    LinkComponent?: LinkComponent;
    /**
     * When true, render `children` as the interactive element.
     * Use for `<button>` items or custom router Links. Item classes are forwarded
     * to the slotted element. `link.url` and `LinkComponent` are ignored; other
     * `link` presentation fields still apply when supplied.
     */
    asChild?: boolean;
};
export declare function MainSidebarNavLink({ link, state: stateProp, children, isActive, className, LinkComponent: LinkProp, asChild, ...props }: MainSidebarNavLinkProps): import("react/jsx-runtime").JSX.Element;
export {};
