import type { IElementRef, OnCreate, OnDestroy } from '@melodicdev/core';
import type { Size } from '../../../types/index.js';
import type { SelectOption } from './select.types.js';
/**
 * ml-select - Custom select/dropdown component
 *
 * @example
 * ```html
 * <ml-select
 *   label="Country"
 *   placeholder="Select a country"
 *   .options=${[
 *     { value: 'us', label: 'United States' },
 *     { value: 'ca', label: 'Canada' },
 *     { value: 'mx', label: 'Mexico' }
 *   ]}
 * ></ml-select>
 *
 * <ml-select
 *   label="Countries"
 *   placeholder="Select countries"
 *   multiple
 *   .values=${['us', 'ca']}
 *   .options=${[
 *     { value: 'us', label: 'United States' },
 *     { value: 'ca', label: 'Canada' },
 *     { value: 'mx', label: 'Mexico' }
 *   ]}
 * ></ml-select>
 * ```
 *
 * @fires ml:change - Emitted when selection changes
 * @fires ml:open - Emitted when dropdown opens
 * @fires ml:close - Emitted when dropdown closes
 */
export declare class SelectComponent implements IElementRef, OnCreate, OnDestroy {
    elementRef: HTMLElement;
    /** Label text */
    label: string;
    /** Placeholder text when no selection */
    placeholder: string;
    /** Hint text shown below select */
    hint: string;
    /** Error message (shows error state when set) */
    error: string;
    /** Select size */
    size: Size;
    /** Disable the select */
    disabled: boolean;
    /** Mark as required */
    required: boolean;
    /** Enable multi-select mode */
    multiple: boolean;
    /** Currently selected value */
    value: string;
    /** Currently selected values (multi-select) */
    values: string[];
    /** Available options */
    options: SelectOption[];
    /** Search query for inline filtering */
    search: string;
    /** Whether dropdown is open */
    isOpen: boolean;
    /** Currently focused option index for keyboard navigation */
    focusedIndex: number;
    /** Bound event handlers for cleanup */
    private readonly _handleKeyDown;
    private readonly _handlePopoverToggle;
    private _handleScroll;
    private _lastCloseTime;
    private _syncingValues;
    onCreate(): void;
    onDestroy(): void;
    onPropertyChange(name: string): void;
    /** Get the currently selected option */
    get selectedOption(): SelectOption | undefined;
    /** Get the currently selected options (multi-select) */
    get selectedOptions(): SelectOption[];
    /** Get display text for trigger */
    get displayText(): string;
    get filteredOptions(): SelectOption[];
    get hasValue(): boolean;
    /** Toggle dropdown open/close */
    toggle: () => void;
    /** Open the dropdown */
    open: () => void;
    /** Close the dropdown */
    close: () => void;
    /** Select an option */
    selectOption: (option: SelectOption) => void;
    /** Toggle a value in multi-select mode */
    private toggleOption;
    /** Handle click on option */
    handleOptionClick: (event: Event, option: SelectOption) => void;
    handleTagRemove: (event: Event, value: string) => void;
    handleSearchInput: (event: Event) => void;
    handleSearchClick: (event: Event) => void;
    /** Handle popover toggle events (open/close via Popover API) */
    private onPopoverToggle;
    /** Position the dropdown relative to the trigger using fixed positioning */
    private positionDropdown;
    /** Close dropdown when any ancestor scrolls */
    private addScrollListener;
    private removeScrollListener;
    private getDropdownEl;
    /** Handle keyboard navigation */
    private onKeyDown;
    /** Move focus to next enabled option */
    private focusNextOption;
    /** Move focus to previous enabled option */
    private focusPreviousOption;
    /** Find first enabled option index */
    private findFirstEnabledIndex;
    /** Find last enabled option index */
    private findLastEnabledIndex;
    private getInitialFocusIndex;
    private getActiveOptions;
    private updateValues;
    private areValuesEqual;
}
//# sourceMappingURL=select.component.d.ts.map