import type { Agent } from "../services/agentService";
import { type AgentPanesLayout, type PaneId } from "./agentPanesTypes";
export interface UseAgentPanesOptions {
    /** localStorageService key (will be prefixed). Defaults to the tabbed
     *  Agents UI key. Pass a different key to keep view-scoped layouts
     *  separate (e.g. `${AGENT_PANES_LAYOUT_STORAGE_KEY}.workspace`). */
    storageKey?: string;
    /** When true, on first load (no stored layout) reads the legacy
     *  `editor.activeAgentId` key and synthesizes a single-pane layout from it.
     *  Default false: secondary views start with a single overview pane. */
    migrateLegacy?: boolean;
}
export interface UseAgentPanesResult {
    layout: AgentPanesLayout;
    focusedPaneId: PaneId;
    /** Map of agentId -> ordered list of pane ids that show that agent. */
    panesByAgentId: Map<string, PaneId[]>;
    /** Set of agent ids visible in any pane. */
    visibleAgentIds: Set<string>;
    /** The agent currently shown in the focused pane (if any). */
    focusedAgentId: string | null;
    setFocusedPane: (paneId: PaneId) => void;
    showAgentInFocusedPane: (agentId: string) => void;
    showProfileSelectorInFocusedPane: () => void;
    showOverviewInFocusedPane: () => void;
    splitPane: (sourcePaneId: PaneId, 
    /** Agent to put in the new pane. Pass `null` to create an empty pane
     *  showing the Create-New profile selector (so the user can fill it). */
    agentId: string | null, direction: "right" | "down") => void;
    closePane: (paneId: PaneId) => void;
    closeAgentEverywhere: (agentId: string) => void;
    pruneMissingAgents: (existingAgentIds: Iterable<string>) => void;
}
export declare function useAgentPanes(_agents: Agent[], options?: UseAgentPanesOptions): UseAgentPanesResult;
