import { type ConfigureMenuItem } from "./ConfigureMenu";
import type { HarnessOption } from "../models/harness";
import { type InteractionModeOption } from "./InteractionModePicker";
export interface ComposerToolbarProps {
    readonly disabled: boolean;
    readonly isSubmitting: boolean;
    readonly canSend: boolean;
    readonly onSend: () => void;
    readonly showHarnessSelector: boolean;
    readonly harness?: HarnessOption;
    readonly onHarnessChange: (harness: HarnessOption) => void;
    readonly showInteractionModePicker: boolean;
    readonly interactionMode?: InteractionModeOption;
    readonly onInteractionModeChange: (mode: InteractionModeOption) => void;
    readonly showModelSelector: boolean;
    readonly modelId?: string;
    readonly onModelChange: (id: string) => void;
    readonly showWorkspace: boolean;
    readonly workspaceCount: number;
    /** Pre-built workspace editor content for the popover. */
    readonly workspaceContent: React.ReactNode;
    /**
     * When provided, clicking the workspace icon invokes this callback
     * directly instead of opening the popover. Used when there is only
     * one possible action (e.g. desktop with zero entries → native folder
     * dialog) so the user skips the redundant intermediate menu.
     */
    readonly onWorkspaceDirectAction?: () => void;
    readonly showAttach: boolean;
    readonly attachmentCount: number;
    readonly onAttachClick: () => void;
    readonly configureItems: readonly ConfigureMenuItem[];
    readonly configOpen: boolean;
    readonly onConfigOpenChange: (open: boolean) => void;
    readonly configActivePanel: string | null;
    readonly onConfigActivePanelChange: (panel: string | null) => void;
    /** Render the picker content for a given configure panel id. */
    readonly renderConfigPanel: (itemId: string) => React.ReactNode;
}
/**
 * Composer toolbar — Zone 3 of the SessionComposer.
 *
 * Layout follows a two-group pattern inspired by Cursor's compact approach:
 *
 * **Left group (primary state):** Interaction Mode, Model Selector
 * **Right group (secondary actions, icon-only):** Workspace, Attach, Configure, Send
 *
 * Primary state indicators retain text labels (users glance at mode and model
 * frequently). Secondary actions use icon-only buttons with tooltips and
 * aria-labels — they are actions triggered occasionally, not state to monitor.
 *
 * This separation follows Fitts's Law (related actions clustered near Send),
 * Gestalt proximity (left = "what," right = "do"), and Nielsen H8 (minimal
 * visual weight for secondary controls).
 */
export declare function ComposerToolbar({ disabled, isSubmitting, canSend, onSend, showAttach, attachmentCount, onAttachClick, showWorkspace, workspaceCount, workspaceContent, onWorkspaceDirectAction, configureItems, configOpen, onConfigOpenChange, configActivePanel, onConfigActivePanelChange, renderConfigPanel, showHarnessSelector, harness, onHarnessChange, showInteractionModePicker, interactionMode, onInteractionModeChange, showModelSelector, modelId, onModelChange, }: ComposerToolbarProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=ComposerToolbar.d.ts.map