import React, { ReactNode } from "react";
/**
 * Represents a submenu item in a {@link SidebarItem}.
 */
export interface SidebarSubmenuItem {
    /** Name of the submenu item */
    displayName: string;
    /** Link or URL the submenu item navigates to */
    link: string;
    /** Icon associated with the submenu item */
    icon?: string;
}
/**
 * Represents a resource displayed in the sidebar.
 */
export interface SidebarItem {
    /** Display name for UI purposes */
    displayName?: string;
    /** Link associated with the resource */
    link?: string;
    /** Icon for the resource */
    icon?: string;
    /** List of sidebar submenu items under this resource */
    sidebarSubmenuItems?: SidebarSubmenuItem[];
}
/**
 * Context type providing state and actions for {@link SidebarItem}.
 */
export interface SidebarItemsContextType {
    /** Array of sidebar items currently available */
    sidebarItems: SidebarItem[];
    /** Adds a new resource to the sidebar */
    addSidebarItem: (item: SidebarItem) => void;
    /** Removes a resource from the sidebar by name */
    removeSidebarItem: (name: string) => void;
    /** Initializes the sidebar with a given set of items */
    initSidebarItems: (items: SidebarItem[]) => void;
}
/** Props for the {@link SidebarItemsProvider} component. */
interface SidebarItemsProviderProps {
    children: ReactNode;
    initialSidebarItems?: SidebarItem[];
}
/**
 * Provider component that manages the sidebar items and exposes
 * methods to add, remove, or initialize them via context.
 *
 * @param children - React nodes that can access the sidebar resource context.
 * @param initialSidebarItems - initial items for the sidebar.
 */
export declare function SidebarItemsProvider({ children, initialSidebarItems }: SidebarItemsProviderProps): React.JSX.Element;
/**
 * Hook to access the sidebar items context.
 *
 * @throws Error if used outside of a SidebarResourceProvider.
 * @returns Sidebar items context with state and actions.
 */
export declare function useSidebarItems(): SidebarItemsContextType;
export {};
