import * as React from 'react'; export type PanelPosition = 'only' | 'first' | 'last'; export interface AppShellContextValue { /** Whether the shell is in connected (joined-edge) mode */ connected: boolean; /** Number of visible Panel children */ panelCount: number; /** Get the position of a panel by its index among visible panels */ getPanelPosition: (index: number) => PanelPosition; } declare const AppShellContext: React.Context; /** * Read AppShell layout context. Returns null when used outside AppShell.Root. */ declare function useAppShell(): AppShellContextValue | null; declare const AppShellProvider: React.Provider; /** * Internal context for passing the panel index from Panel to Content. * Content reads this to determine its position in connected mode. */ declare const PanelIndexContext: React.Context; /** * Per-panel layout state provided by Root. Replaces cloneElement style injection. * Panel reads this to self-manage visibility, mobile sizing, and ARIA attributes. */ export interface PanelLayoutInfo { /** Whether this panel is visible (false = hidden overflow panel or non-expanded sibling) */ visible: boolean; /** How hidden desktop panels should leave layout. Animated keeps the flex item in-flow briefly. */ collapseMode?: 'animated' | 'removed'; /** Whether we're in mobile viewport */ isMobile: boolean; /** Internal: fade only an explicitly selected mobile panel, never initial layout. */ mobileArrival?: boolean; /** ARIA tab ID for tabpanel association (set when mobile tab bar is active) */ tabId?: string; /** ARIA panel ID for tabpanel role (set when mobile tab bar is active) */ panelId?: string; /** Whether Root owns panel sizing, such as through ResizablePanel */ sizeManagedByRoot?: boolean; /** Root-owned expansion override */ expanded?: boolean; /** Root-owned expansion change callback */ onExpandedChange?: (expanded: boolean) => void; } declare const PanelLayoutContext: React.Context; export interface PanelExpansionInfo { expanded: boolean; onExpandedChange?: (expanded: boolean) => void; } declare const PanelExpansionContext: React.Context; declare function usePanelExpansion(): PanelExpansionInfo | null; export { AppShellContext, AppShellProvider, PanelExpansionContext, PanelIndexContext, PanelLayoutContext, useAppShell, usePanelExpansion, };