import type { PropertyValues, TemplateResult } from "lit"; import { XmField } from "../field/index.js"; import "../primitives/index.js"; import type { SelectOption } from "../select/index.js"; import type { XmOverlay } from "../overlay/index.js"; /** * @fires change - Fired on commit with the new value in `detail`. * @fires input - Fired on each edit with the current value in `detail`. */ export declare class XmAutocomplete extends XmField { static styles: CSSStyleSheet[]; /** Shared option model — `{ label, value, disabled? }` (AD-8a). */ options: SelectOption[]; /** Native placeholder shown when the query is empty. */ placeholder: string; protected _open: boolean; protected _query: string; protected _activeIndex: number; protected _selectedValue: string | number | null; protected _input: HTMLInputElement | null; protected _overlay: XmOverlay | null; connectedCallback(): void; protected willUpdate(changed: PropertyValues): void; private _resolveSeed; /** Typed primitive read for consumers; the inherited string `value` stays in sync for xm-form / ElementInternals. */ get selectedValue(): string | number | null; private get _filtered(); private get _enabledIndexes(); private _onDocPointerDown; private _openList; private _closeList; private _onOverlayClose; disconnectedCallback(): void; protected updated(changed: PropertyValues): void; private _onInput; private _commitSelection; private _selectActive; private _onKeydown; private _nextEnabled; protected renderControl(): TemplateResult; private _renderOption; /** Wrap the matched substring in a highlight mark. The mark carries BOTH a coral ink AND an underline so the cue survives grayscale (NFR-15 — color is never the sole carrier). */ private _highlight; private _renderEmpty; } declare global { interface HTMLElementTagNameMap { "xm-autocomplete": XmAutocomplete; } }