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): void;
    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 renameTargetPath;
    private _focused;
    get focused(): boolean;
    set focused(value: boolean);
    private buildBaseLayout;
    constructor(currentSessionsLoader: SessionsLoader, allSessionsLoader: SessionsLoader, onSelect: (sessionPath: string) => void, onCancel: () => void, onExit: () => void, requestRender: () => void, options?: {
        renameSession?: (sessionPath: string, currentName: string | undefined) => Promise<void>;
        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[];
    }, currentSessionFilePath?: 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