import type { Theme } from "@earendil-works/pi-coding-agent"; import { type TUI } from "@earendil-works/pi-tui"; import type { FabricAgentMessageDelivery } from "../main-agent.js"; import type { FabricDashboardMessageTarget } from "./dashboard.js"; interface ModalChild { focused: boolean; handleInput(data: string): void; render(width: number): string[]; } export interface DashboardModalContent { title: string; narrowTitle: string; hint: string; render(width: number): string[]; } type PickerKind = "model" | "thinking" | "delivery" | "events" | "tools"; /** Owns transient input capture; dashboard selection and action eligibility stay outside. */ export declare class DashboardModalController { private readonly tui; private readonly theme; private active; constructor(tui: TUI, theme: Theme); openPicker(kind: PickerKind, name: string, create: (close: () => void) => ModalChild, onClose: () => void): void; openInstructions(name: string, instructions: string, onSubmit: (text: string) => void, onClose: () => void): void; openMessage(target: FabricDashboardMessageTarget, delivery: FabricAgentMessageDelivery, onSubmit: (message: string) => void, onClose: () => void): void; /** Returns true even when this input closes the modal: never leak it to navigation. */ handleInput(data: string): boolean; render(width: number, frame: (width: number, content: DashboardModalContent) => string[]): string[] | undefined; /** Disposal releases the child without running a navigation callback. */ dispose(): void; private close; private openEditor; private open; } export {}; //# sourceMappingURL=dashboard-modal-controller.d.ts.map