import { Container, type Focusable } from "@earendil-works/pi-tui"; import { KeybindingsManager } from "../../../core/keybindings.ts"; import type { SessionInfo } from "../../../core/session-manager.ts"; import { SessionList } from "./session-selector-list.ts"; import type { SessionsLoader } from "./session-selector-types.ts"; /** * Component that renders a session selector */ export declare class SessionSelectorComponent extends Container implements Focusable { handleInput(data: string): boolean; private canRename; private sessionList; private header; private keybindings; private scope; private sortMode; private nameFilter; private currentSessions; private allSessions; private currentSessionsLoader; private allSessionsLoader; private onCancel; private requestRender; private renameSession?; private currentLoading; private allLoading; private allLoadSeq; private disposed; private mode; private renameInput; private renameTarget; private _focused; get focused(): boolean; set focused(value: boolean); private buildBaseLayout; constructor(currentSessionsLoader: SessionsLoader, allSessionsLoader: SessionsLoader, onSelect: (session: SessionInfo) => void, onCancel: () => void, onExit: () => void, requestRender: () => void, options?: { renameSession?: (session: SessionInfo, currentName: string | undefined) => Promise; deleteSession?: (sessionId: string) => Promise; showRenameHint?: boolean; keybindings?: KeybindingsManager; /** * Rows to display in the first rendered frame before the async loader * resolves (e.g. cheap in-memory live workflow runs). Seeding lets the * selector mount and stay interactive while durable/on-disk rows load, * and keeps live rows visible if the loader later errors. */ initialSessions?: SessionInfo[]; }, currentSession?: { id: string; directory: string; }); private loadCurrentSessions; private enterRenameMode; private exitRenameMode; private confirmRename; private loadScope; private toggleSortMode; private toggleNameFilter; private refreshSessionsAfterMutation; private toggleScope; getSessionList(): SessionList; /** * Mark the selector closed so any in-flight or late-resolving loads are * ignored (stale-result guard) and status timeouts are cleared. Idempotent; * safe to call from close/select/cancel/dispose paths. */ dispose(): void; } //# sourceMappingURL=session-selector.d.ts.map