import { type ChoiceOption } from './choice-list'; type PopupPosition = { x: number; y: number; }; export interface SelectControllerState { readonly host: HTMLElement; readonly generatedId: string; readonly options: T[]; readonly searchable: boolean; readonly isLoading: boolean; readonly isDisabled: boolean; readonly preferredIndex: number; readonly popupAlign: 'start' | 'end'; open: boolean; activeIndex: number; searchTerm: string; focusRingVisible: boolean; position: PopupPosition; positionReady: boolean; selectOption(option: T): void; } /** * Shared single/multiple Select interaction controller. * * Decorated Stencil state and scalar/array selection remain in each component; * this controller owns only popup lifecycle, focus, positioning, typeahead, * and listbox keyboard traversal. Anchored placement is delegated to * `AnchoredPositionController`; only the choice-cell measurement stays here. */ export declare class SelectController { private readonly state; private triggerEl; private popupEl; private searchEl; private typeahead; private typeaheadTimer; private outsideHandler; private readonly position; constructor(state: SelectControllerState); get activeOptionId(): string | undefined; setTriggerElement: (element: HTMLButtonElement | null) => void; setPopupElement: (element: HTMLDivElement | null) => void; setSearchElement: (element: HTMLInputElement | null) => void; connect(): void; disconnect(): void; setFocus(): void; optionsChanged(): void; loadingChanged(): void; positionChanged(): void; openChanged(open: boolean): void; searchChanged(): void; activeIndexChanged(): void; openPopup(focusVisible: boolean, edge?: 'first' | 'last'): void; closePopup(restoreFocus?: boolean): void; focusSearchOrTrigger(): void; handleTriggerKeyDown: (event: KeyboardEvent) => void; handleListKeyDown: (event: KeyboardEvent) => void; private isTypeaheadKey; private handleTypeahead; private scrollActiveOptionIntoView; private bindPopupListeners; private unbindPopupListeners; private cancelPositionRetry; private schedulePositionUpdate; private updatePosition; } export {}; //# sourceMappingURL=select-controller.d.ts.map