import { type ReactNode } from "react"; /** * The surface-owned sections of the session shell. Every slot is optional: a * surface without a workspace switcher, workspace navigation or footer simply * leaves them out and the shell keeps its layout. */ export type SessionShellSlots = Readonly<{ /** The workspace switcher under the brand row (or under the window controls). */ switcher?: ReactNode; /** Primary navigation after "New session" (inbox, workspace shortcuts). */ primaryNav?: ReactNode; /** * The phone drawer's "Workspace" tab. Without it, phones show the sessions * list alone, with no tabs. */ mobileWorkspacePanel?: ReactNode; /** Pinned under the rail's scroll viewport: account menu, offers. */ railFooter?: ReactNode; /** Notices across the top of the canvas, under the top strip. */ canvasBanners?: ReactNode; }>; export declare const SessionShellSlotsContext: import("react").Context>; /** Supplies the slots to a rail rendered outside `SessionShell` (previews, fixtures). */ export declare function SessionShellSlotsProvider({ slots, children, }: { slots: SessionShellSlots; children: ReactNode; }): import("react").JSX.Element; /** * The top of the main rail: a brand row (the mark and the "Opengeni" wordmark) * and, under it, the workspace picker at full rail width. Its spacing matches * the settings rail's top (12px, 32px brand row, 12px gap) so switching * between the two rails doesn't jump. The collapse toggle sits at the right end * of the brand row; collapsed, only the mark stays, with the expand toggle * under it. In the macOS app the row holds just the toggle beside the window * controls. */ export declare function RailHeader({ showSwitcher }: { showSwitcher?: boolean; }): import("react").JSX.Element; /** "New session" followed by the surface's own primary navigation. */ export declare function PrimaryNav(): import("react").JSX.Element;