import { SidebarDefinition, WorkspaceDefinition } from "../../config/types";
export interface NavigationPanelLogicContextValues {
    sidebars: SidebarDefinition[];
    openSidebars: string[];
    pinnedSidebars: string[];
    lockedSidebars: string[];
    sidebarStacks: string[][];
    showLabels: boolean;
    visibleWorkspaces: WorkspaceDefinition[];
    workspaceId: string;
    isMobile: boolean;
}
export interface NavigationPanelLogicHandlers {
    onToggleSidebar: (sidebarId: string, options?: {
        forceClose?: boolean;
    }) => void;
    onOpenSidebar: (sidebarId: string) => void;
    onTogglePin: (sidebarId: string) => void;
    onToggleLock: (sidebarId: string) => void;
    onStack: (sidebarId: string, targetId: string, position: "after" | "before") => void;
    onUnstack: (sidebarId: string) => void;
    onWorkspaceClick: (targetWorkspaceId: string, options?: {
        skipNavigationHistory?: boolean;
    }) => void;
    onToggleLabels: () => void;
    onReorderPinnedSidebars: (pinnedSidebars: string[]) => void;
    onIconDragStart: (e: React.DragEvent<HTMLElement>, sidebarId: string) => void;
    onIconDragOver: (e: React.DragEvent<HTMLElement>, sidebarId: string) => void;
    onIconDragLeave: () => void;
    onIconDrop: (e: React.DragEvent<HTMLElement>, targetSidebarId: string) => void;
}
export declare function useNavigationPanelLogic(): {
    contextValues: NavigationPanelLogicContextValues | null;
    handlers: {
        onToggleSidebar: (sidebarId: string, options?: {
            forceClose?: boolean;
        }) => void;
        onOpenSidebar: (sidebarId: string) => void;
        onTogglePin: (sidebarId: string) => void;
        onToggleLock: (sidebarId: string) => void;
        onStack: (sourceId: string, targetId: string, position: "before" | "after") => void;
        onUnstack: (sidebarId: string) => void;
        onWorkspaceClick: (targetWorkspaceId: string, options?: {
            skipNavigationHistory?: boolean;
        }) => void;
        onToggleLabels: () => void;
        onReorderPinnedSidebars: (pinnedSidebars: string[]) => void;
        onIconDragStart: (e: React.DragEvent<HTMLElement>, sidebarId: string) => void;
        onIconDragOver: (e: React.DragEvent<HTMLElement>, sidebarId: string) => void;
        onIconDragLeave: () => void;
        onIconDrop: (e: React.DragEvent<HTMLElement>, targetSidebarId: string) => void;
    };
    dragOverId: string | null;
    getVisibleItems: (sidebars: SidebarDefinition[]) => SidebarDefinition[];
};
