import { type Component } from "@earendil-works/pi-tui"; import type { SessionsController, SyncPiNameResult } from "../app/controller.js"; import { type SessionsTheme } from "./theme.js"; import { type PickerItem } from "./two-column-picker.js"; import { type NewFormContext, type NewFormSubmission } from "./new-form.js"; export interface SessionDialogInput { title: string; cwd?: string; group: string; additionalCwds?: string[]; worktree?: { branch: string; }; } export interface SessionsViewActions { attachOutsideTmux?: (tmuxSession: string) => void | Promise; switchInsideTmux?: (tmuxSession: string) => void | Promise; restart?: (sessionId: string) => unknown; restartNew?: (sessionId: string) => unknown; restartAll?: () => unknown; deleteSession?: (sessionId: string) => void | Promise; closeSubagents?: (sessionId: string) => void | Promise; discardWorktree?: (sessionId: string) => void | Promise; finishWorktree?: (sessionId: string) => void | Promise; createSession?: (input: NewFormSubmission) => unknown; forkSession?: (sourceSessionId: string, input: Omit) => unknown; changeGroup?: (sessionId: string, group: string) => unknown; renameSession?: (sessionId: string, title: string) => unknown; syncPiName?: (sessionId: string) => SyncPiNameResult | Promise; renameGroup?: (from: string, to: string) => unknown; reorderSelected?: (delta: -1 | 1) => unknown; acknowledge?: () => unknown; newFormContext?: () => NewFormContext; skills?: () => PickerItem[] | Promise; applySkills?: (items: PickerItem[]) => void | Promise; skillPoolDir?: () => string | undefined; skillPoolDirExtraCount?: () => number; saveSkillPoolDir?: (dir: string) => PickerItem[] | Promise; mcpServers?: () => PickerItem[] | Promise; applyMcpServers?: (items: PickerItem[]) => void | Promise; sendMessage?: (tmuxSession: string, message: string) => unknown; copy?: (text: string) => void; skillCount?: (cwd: string) => number | undefined; now?: () => number; terminalRows?: () => number; } export declare class SessionsView implements Component { private controller; private stop; private actions; private theme?; private mode; private filterDraft; private newForm; private repoPicker; private repoPickerTarget; private forkForm; private moveGroupForm; private renameDraft; private renameError; private renameSessionForm; private renameGroupForm; private sendDraft; private sendError; private picker; private message; private flash; private detailsExpanded; private pendingRestart; private pickerSaveId; private deleteTargetId; private sendTargetId; private renameGroupFrom; private returnAfterRenameTmuxSession; private busy; private deleting; private finishTargetId; private finishing; constructor(controller: SessionsController, stop: () => void, actions?: SessionsViewActions, theme?: SessionsTheme | undefined); setTheme(theme: SessionsTheme): void; handleInput(data: string): void; render(width: number): string[]; invalidate(): void; openRenameForTmuxSession(tmuxSession: string): boolean; private startFilter; private startNewDialog; private startForkDialog; private startGroupDialog; private startRenameSessionDialog; private startRenameGroupDialog; private startSendDialog; private startPicker; private openPicker; private attachSelected; private attachSession; private reorderSelected; private syncPiNameSelected; private restartSelected; private confirmRestartSelected; private confirmRestartAll; private startDeleteDialog; private startFinishDialog; private handleDeleteInput; private handleFinishInput; private clearPendingRestart; private flashMessage; private clearFlash; private clearExpiredFlash; private handlePickerInput; private handleSkillPoolInput; private applyPickerSelection; private handleFormInput; private handleNewFormInput; private startRepoPicker; private handleRepoPickerInput; private applyRepoPickerSelection; private submitForkDialog; private submitGroupDialog; private submitRenameSessionDialog; private submitRenameGroupDialog; private submitSendDialog; private runAction; private renderRestartDialog; private renderDeleteDialog; private renderFinishDialog; private subagentTargets; private renderNewForm; private renderSessionDialog; private renderGroupDialog; private renderRenameSessionDialog; private renderRenameGroupDialog; private handleFilterInput; private handleRenameInput; private clearRenamePrompt; private renameTargetTitle; private handleSendInput; private clearSendPrompt; private sendTargetTitle; }