import { EventEmitter } from '../../../stencil-public-runtime';
import { AjaxFn, ClassNames, FuseOptions, IChoicesProps, IChoicesMethods, ItemFilterFn, NoResultsTextFn, NoChoicesTextFn, AddItemTextFn, MaxItemTextFn, SortFn, OnInit, OnCreateTemplates, UniqueItemText, ValueCompareFunction, CustomAddItemText } from './interfaces';
export declare class Choices implements IChoicesProps, IChoicesMethods {
    /** Initial value of the Choices instance. */
    readonly value: string;
    /** Name attribute used when submitting the field in a form. */
    readonly name: string;
    /** Initial list of items to populate the component with. */
    readonly items: Array<any>;
    /** Available choices; can be an array or a string (e.g. data source). */
    readonly choices: Array<any> | string;
    /** Maximum number of choices to render in the list at once. */
    readonly renderChoiceLimit: number;
    /** Maximum number of items that can be selected. */
    readonly maxItemCount: number;
    /** Whether new items can be added by the user. */
    readonly addItems: boolean;
    /** Whether items can be removed by the user. */
    readonly removeItems: boolean;
    /** Whether to show a remove button on each selected item. */
    readonly removeItemButton: boolean;
    /** Whether selected items can be edited in place. */
    readonly editItems: boolean;
    /** Whether duplicate items are allowed. */
    readonly duplicateItemsAllowed: boolean;
    /** Delimiter used when parsing or joining item values (e.g. for paste). */
    readonly delimiter: string;
    /** Whether pasting values to create items is allowed. */
    readonly paste: boolean;
    /** Whether the search input is shown. */
    readonly showSearch: boolean;
    /** Whether search filters the available choices. */
    readonly searchChoices: boolean;
    /** Fields used when searching choices (array of field names or a string). */
    readonly searchFields: Array<string> | string;
    /** Minimum number of characters before search is triggered. */
    readonly searchFloor: number;
    /** Maximum number of search results to display. */
    readonly searchResultLimit: number;
    /** Position of the dropdown relative to the input. */
    readonly position: 'auto' | 'top' | 'bottom';
    /** Whether to reset scroll position when opening the dropdown. */
    readonly resetScrollPosition: boolean;
    /** Whether available choices should be sorted. */
    readonly shouldSort: boolean;
    /** Whether selected items should be sorted. */
    readonly shouldSortItems: boolean;
    /** Custom sorting function for choices and/or items. */
    readonly sorter: SortFn;
    /** Placeholder configuration or text for the input. */
    readonly placeholder: boolean | string;
    /** Placeholder text shown inside the search input. */
    readonly searchPlaceholderValue: string;
    /** Text to prepend to each item’s value on output. */
    readonly prependValue: string;
    /** Text to append to each item’s value on output. */
    readonly appendValue: string;
    /** When to render selected choices (always or only when needed). */
    readonly renderSelectedChoices: 'always' | 'auto';
    /** Text shown while data or choices are loading. */
    readonly loadingText: string;
    /** Text or function used when no search results are found. */
    readonly noResultsText: string | NoResultsTextFn;
    /** Text or function used when there are no choices to show. */
    readonly noChoicesText: string | NoChoicesTextFn;
    /** Text shown on an item when it is selectable (kept as empty string here). */
    readonly itemSelectText: '';
    /** Text or function for the “add item” prompt. */
    readonly addItemText: string | AddItemTextFn;
    /** Text or function used when the max item count is reached. */
    readonly maxItemText: string | MaxItemTextFn;
    /** Text configuration for duplicate/unique item errors. */
    readonly uniqueItemText: UniqueItemText;
    /** Custom CSS class names mapping for internal elements. */
    readonly classNames: ClassNames;
    /** Fuse.js options for fuzzy searching choices. */
    readonly fuseOptions: FuseOptions;
    /** Filter used to validate items before they are added. */
    readonly addItemFilter: string | RegExp | ItemFilterFn;
    /** Configuration for customizing the “add item” text. */
    readonly customAddItemText: CustomAddItemText;
    /** Callback function invoked when the Choices instance is initialized. */
    readonly callbackOnInit: OnInit;
    /** Callback used to create or override internal templates. */
    readonly callbackOnCreateTemplates: OnCreateTemplates;
    /** Custom function for comparing item/choice values. */
    readonly valueComparer: ValueCompareFunction;
    /** If true, shows the select in an error state. */
    readonly error: boolean;
    /** Label text shown above the select field. */
    readonly label: string;
    /** Helper text shown below the select field. */
    readonly caption: string;
    /** If true, the select is disabled and not interactive. */
    readonly disabled: boolean;
    /** Whether selecting a value is required. */
    readonly required: boolean;
    /** Placeholder text shown when no option is selected. */
    readonly placeholderValue: string;
    /** Fired when an option is selected. */
    ifxSelect: EventEmitter<CustomEvent>;
    /** Fired when the input / search value changes. */
    ifxInput: EventEmitter<CustomEvent>;
    /** List of available options (array or string source). */
    options: any[] | string;
    /** Size of the select component (e.g. medium / 40px). */
    readonly size: string;
    selectedOption: any | null;
    optionIsSelected: boolean;
    /** If true, shows a button to clear the current selection. */
    readonly showClearButton: boolean;
    private resizeObserver;
    private previousOptions;
    private readonly root;
    private choice;
    private element;
    watchDisabled(newValue: boolean): void;
    /** Clears the current selection and closes the dropdown if not disabled. */
    clearSelection(): Promise<void>;
    private clearSelectField;
    /** Handles a selection change, updates state, and closes the dropdown. */
    handleChange(): Promise<void>;
    /** Highlights a specific item in the dropdown. */
    highlightItem(item: HTMLElement, runEvent?: boolean): Promise<this>;
    /** Removes highlight from a specific item. */
    unhighlightItem(item: HTMLElement): Promise<this>;
    /** Highlights all items. */
    highlightAll(): Promise<this>;
    /** Removes highlight from all items. */
    unhighlightAll(): Promise<this>;
    /** Removes active items that match a given value. */
    removeActiveItemsByValue(value: string): Promise<this>;
    /** Removes all active items, optionally excluding one by ID. */
    removeActiveItems(excludedId?: number): Promise<this>;
    /** Removes all currently highlighted items. */
    removeHighlightedItems(runEvent?: boolean): Promise<this>;
    /** Opens the dropdown, optionally focusing the input. */
    showDropdown(focusInput?: boolean): Promise<this>;
    /** Closes the dropdown, optionally blurring the input. */
    hideDropdown(blurInput?: boolean): Promise<this>;
    /** Gets the current value(s); returns raw value or full item list. */
    getValue(valueOnly?: boolean): Promise<string | Array<string>>;
    /** Sets the current value(s) programmatically. */
    setValue(args: Array<any>): Promise<this>;
    /** Selects choices that match the given value or values. */
    setChoiceByValue(value: string | Array<string>): Promise<this>;
    /** Sets the available choices from an array or JSON string. */
    setChoices(choices: any[] | string, value: string, label: string, replaceChoices?: boolean): Promise<this>;
    /** Removes all available choices from the dropdown. */
    clearChoices(): Promise<this>;
    /** Clears the internal Choices.js store. */
    clearStore(): Promise<this>;
    /** Clears the text input value. */
    clearInput(): Promise<this>;
    /** Performs an AJAX request using the provided function. */
    ajax(fn: AjaxFn): Promise<this>;
    /** Shows or hides the delete icon depending on component width and settings. */
    handleDeleteIcon(): Promise<void>;
    private handleCloseButton;
    protected componentWillLoad(): void;
    protected componentWillUpdate(): void;
    private isEqual;
    private addResizeObserver;
    protected componentDidLoad(): Promise<void>;
    protected componentDidUpdate(): void;
    protected disconnectedCallback(): void;
    private handleWrapperClick;
    protected render(): any;
    private toggleDropdown;
    private closeDropdown;
    handleOutsideClick(event: MouseEvent): void;
    private handleKeyDown;
    private getSizeClass;
    private init;
    private addEventListenersToHandleCustomFocusAndActiveState;
    private addSearchEventListener;
    private destroy;
    private getPreSelected;
    private setPreSelected;
    private createSelectOptions;
}
