import { GenesisElement } from '@genesislcap/web-core';
import type { AgentConfig } from '../../config/config';
import type { AgentPickerMode } from '../../main/main.types';
import { AGENT_PICKER_AUTO_VALUE } from './agent-picker.constants';
export { AGENT_PICKER_AUTO_VALUE };
/**
 * User-facing agent picker rendered above the chat input.
 *
 * Renders `Auto` plus each top-level agent that has `manualSelection.enabled`.
 * Sub-agents and non-selectable specialists are excluded. Hidden when fewer
 * than two agents are configured or none are manually selectable.
 *
 * @fires agent-pinned - Fired when the user changes selection with the
 *   agent name or `null` for Auto. detail: `string | null`
 *
 * @beta
 */
export declare class AgentPicker extends GenesisElement {
    /** Design-system tag prefix, e.g. `'rapid'` for `rapid-segmented-control`. */
    designSystemPrefix: string;
    /** Picker variant, sourced from the assistant's `chatConfig.agentPicker`. */
    mode: AgentPickerMode;
    /** Top-level agents passed to the assistant. */
    agents: AgentConfig[];
    /** Currently pinned agent name, or `null` for Auto. */
    pinnedAgentName: string | null;
    /** @internal — set via the template `${ref(...)}` binding. */
    segmentedRowEl?: HTMLElement;
    /**
     * @internal — true when the segmented row's content overflows its container.
     * Drives the fallback to `select` rendering. Only meaningful when
     * `mode === 'segmented-control'`.
     */
    overflowing: boolean;
    private resizeObserver?;
    /** Top-level agents that opted in to manual selection. */
    get selectableAgents(): AgentConfig[];
    /** Whether the picker should render at all. */
    get visible(): boolean;
    /**
     * The variant actually rendered: `'select'` if user-configured or if the
     * segmented row currently overflows; `'segmented-control'` otherwise.
     */
    get effectiveMode(): 'select' | 'segmented-control';
    connectedCallback(): void;
    disconnectedCallback(): void;
    /**
     * Re-measure when agents change — newly added selectable agents may push the
     * segmented row past the container's width.
     */
    agentsChanged(): void;
    modeChanged(): void;
    /**
     * Measures whether the segmented row's natural content width exceeds the
     * container's visible width. Bails when the row isn't currently rendered
     * (e.g. when `mode !== 'segmented-control'`).
     */
    private measureOverflow;
    selectAgent(name: string | null): void;
    /**
     * Maps a value from the segmented-control or select (which uses
     * {@link AGENT_PICKER_AUTO_VALUE} for Auto) back to the `string | null` form
     * expected by `selectAgent`.
     */
    selectByValue(value: string): void;
    /** Current pinned agent name as a value the segmented-control / select can bind to. */
    get currentValue(): string;
}
//# sourceMappingURL=agent-picker.d.ts.map