import { type Component, type Focusable } from "@earendil-works/pi-tui";
import { KeybindingsManager } from "../../../core/keybindings.ts";
import type { SessionInfo } from "../../../core/session-manager.ts";
import { type NameFilter, type SortMode } from "./session-selector-search.ts";
/**
 * Custom session list component with multi-line items and search
 */
export declare class SessionList implements Component, Focusable {
    getSelectedSessionPath(): string | undefined;
    private allSessions;
    private filteredSessions;
    private selectedIndex;
    private searchInput;
    private showCwd;
    private sortMode;
    private nameFilter;
    private keybindings;
    private showPath;
    private confirmingDeletePath;
    private currentSessionCanonicalPath?;
    onSelect?: (sessionPath: string) => void;
    onCancel?: () => void;
    onExit: () => void;
    onToggleScope?: () => void;
    onToggleSort?: () => void;
    onToggleNameFilter?: () => void;
    onTogglePath?: (showPath: boolean) => void;
    onDeleteConfirmationChange?: (path: string | null) => void;
    onDeleteSession?: (sessionPath: string) => Promise<void>;
    onRenameSession?: (sessionPath: string) => void;
    onError?: (message: string) => void;
    private maxVisible;
    private _focused;
    get focused(): boolean;
    set focused(value: boolean);
    constructor(sessions: SessionInfo[], showCwd: boolean, sortMode: SortMode, nameFilter: NameFilter, keybindings: KeybindingsManager, currentSessionFilePath?: string);
    setSortMode(sortMode: SortMode): void;
    setNameFilter(nameFilter: NameFilter): void;
    setSessions(sessions: SessionInfo[], showCwd: boolean): void;
    private filterSessions;
    private setConfirmingDeletePath;
    private startDeleteConfirmationForSelectedSession;
    private isCurrentSessionPath;
    invalidate(): void;
    render(width: number): string[];
    private buildTreePrefix;
    handleInput(keyData: string): void;
}
//# sourceMappingURL=session-selector-list.d.ts.map