import { type ReactNode } from "react"; export { RailTrailingMetadata } from "./session-row-content.js"; import { type SessionFocusTarget } from "../../lib/session-focus.js"; import type { RailSession as Session } from "../../lib/session-list-entry.js"; /** Composer / sessions-index entry — real link so Cmd/Ctrl-click opens a new tab. */ export declare function NewSessionLink(props: { className?: string | undefined; "aria-label"?: string | undefined; channelId?: string | null | undefined; children: ReactNode; }): import("react").JSX.Element; type PinFn = (session: Session, pinned: boolean, restoreFocusTo?: SessionFocusTarget) => Promise; type ArchiveFn = (session: Session, archived: boolean, restoreFocusTo?: SessionFocusTarget) => Promise; export declare function SessionList(): import("react").JSX.Element; /** * The two common row actions stay one click away on desktop. Keyboard focus * reveals the same controls as hover; right-click still opens the complete * context menu owned by SessionRow. */ export declare function RowQuickActions({ session, onPin, onArchive, }: { session: Session; onPin: PinFn; onArchive: ArchiveFn; }): import("react").JSX.Element | null; /** * Collapsed-rail stand-in for the list: a Sessions icon carrying a count badge * of running sessions; clicking expands the rail to reveal the full list. */ export declare function CollapsedSessionsButton(): import("react").JSX.Element; /** Only "still running" (or a box still shutting down) is worth stopping the chat and retrying for. */ export declare function isStillRunningDeleteRefusal(error: unknown): boolean;