import { EventEmitter } from '../../../stencil-public-runtime';
import type { HTMLStencilElement } from '../../../stencil-public-runtime';
import { IListItem } from './form-select-filter.interface';
import { DigiUtilKeydownHandlerCustomEvent } from '../../../components';
import { FormSelectFilterValidation } from './form-select-validation.enum';
/**
 * @slot empty-search-result - Innehåll som visas om sökningen inte ger några resultat.
 * @swedishName Väljare med sök
 */
export declare class FormSelectFilter {
    hostElement: HTMLStencilElement;
    isOpen: boolean;
    focusListItemIndex: number;
    focusInList: boolean;
    _afListItems: IListItem[];
    _filteredResult: IListItem[];
    _selectedItems: IListItem[];
    private _toggleButton;
    private _submitButton;
    private _searchQuery;
    /**
     * En valfri beskrivningstext.
     * @en An optional description text.
     */
    afDescription: string;
    /**
     * Inaktiverar valideringen
     * @en Disables the validation.
     */
    afDisableValidation: boolean;
    /**
     * Sätter väljarens validering
     * @en Set select validation
     */
    afValidation: FormSelectFilterValidation;
    /**
     * Sätter valideringstexten.
     * @en Sets the validation text.
     */
    afValidationText: string;
    /**
     * Sätt attributet till "true" om fältet är obligatoriskt.
     * @en Set it to "true" if field is required.
     */
    afRequired: boolean;
    /**
     * Sätter text för afRequired.
     * @en Set text for afRequired.
     */
    afRequiredText: string;
    /**
     * Normalt betonas ett obligatoriskt fält visuellt och semantiskt.
     * Detta vänder på det och betonar fältet om det inte krävs.
     * Ställ in detta till sant om ditt formulär innehåller fler obligatoriska fält än inte.
     * @en Normally a required field is visually and semantically emphasized.
     * This flips that and emphasizes the field if it is not required.
     * Set this to true if your form contains more required fields than not.
     */
    afAnnounceIfOptional: boolean;
    /**
     * Sätter text för afAnnounceIfOptional.
     * @en Set text for afAnnounceIfOptional.
     */
    afAnnounceIfOptionalText: string;
    /**
     * Sorterar listan i alfabetisk ordning.
     * @en Sort the list in alphabetical order.
     */
    sortAlphabetically: boolean;
    /**
     * @ignore
     */
    value: IListItem[];
    onValueChanged(value: IListItem[]): void;
    /**
     * Sätts till true om det ska gå att välja flera val från listan.
     * @en Set to true if you should be able to choose multiple items from the list.
     */
    afMultipleItems: boolean;
    /**
     * Lista med val.
     * @en List with option.
     */
    afListItems: string | IListItem[];
    handleListItems(): void;
    /**
     * Prefixet för alla komponentens olika interna 'id'-attribut på dropdowns, filterlistor etc. Ex. 'my-cool-id' genererar 'my-cool-id-filter-list', 'my-cool-id-dropdown-menu' och så vidare. Ges inget värde så genereras ett slumpmässigt.
     * @en Prefix for all id attributes inside the component. Example: 'my-cool-id' generates 'my-cool-id-filter-list', 'my-cool-id-dropdown-menu' and so on. Defaults to random string.
     */
    afId: string;
    /**
     * Texten till label för knappen
     * @en Set the label text for filter button text
     */
    afFilterButtonTextLabel: string;
    /**
     * Texten i filterknappen
     * @en Set the filter button text
     */
    afFilterButtonText: string;
    /**
     * Texten som visas när man gjort fler än ett val. Använd {count} för att läsa ut antalet val
     * @en Text that is shown in button when user has selected multiple choices. Use {count} to display number of items.
     */
    afFilterButtonTextMultipleValues: string;
    /**
     * Texten i submitknappen
     * @en Set the submit button text
     */
    afSubmitButtonText: string;
    /**
     * Skärmläsartext för submitknappen
     * @en Set the submit button aria-label text
     */
    afSubmitButtonTextAriaLabel: string;
    /**
     * Texten i rensaknappen
     * @en Set the reset button text
     */
    afResetButtonText: string;
    /**
     * Skärmläsartext för resetknappen
     * @en Set the reset button aria-label text
     */
    afResetButtonTextAriaLabel: string;
    /**
     * Döljer rensaknappen när värdet sätts till true
     * @en Hides the reset button when set to true
     */
    afHideResetButton: boolean;
    /**
     * Justera dropdown från höger till vänster
     * @en Align dropdown from right to left
     */
    afAlignRight: boolean;
    /**
     * Label till sökfältet i filterlistan.
     * @en Label for the search-field in filter-list.
     */
    afName: string;
    /**
     * Text som visas när sökningen inte ger några resultat.
     * @en Text that is shown the the search gives no result.
     */
    afEmptySearchMessage: string;
    /**
     * Sätter attributet 'aria-describedby' på filterknappen
     * @en Input aria-describedby attribute on filter button
     */
    afFilterButtonAriaDescribedby: string;
    afOnFocusout: EventEmitter;
    /**
     * Vid uppdatering av filtret
     * @en At filter submit
     */
    afOnSubmitFilters: EventEmitter<any[]>;
    /**
     * När filtret stängs utan att valda alternativ bekräftats
     * @en When the filter is closed without confirming the selected options
     */
    afOnFilterClosed: EventEmitter;
    /**
     * Vid reset av filtret
     * @en At filter reset
     */
    afOnResetFilters: EventEmitter;
    /**
     * När ett eller flera filter väljs
     * @en When a filter is changed
     */
    afOnSelect: EventEmitter<any[]>;
    /**
     * När en söksträng ändras
     * @en When a search query is changed.
     */
    afOnQueryChanged: EventEmitter<string>;
    /**
     * Funktion för att rensa valda värden från komponenten
     * @en Function for clearing selected values from component
     */
    afMReset(): Promise<void>;
    /**
     * Funktion för att stänga dropdownen
     * @en Function for closing the dropdown
     */
    afMCloseDropdown(): Promise<void>;
    clickHandler(e: MouseEvent): void;
    focusoutHandler(e: FocusEvent): void;
    debounce(func: any, timeout?: number): (...args: any[]) => void;
    setClosed(focusToggleButton?: boolean): void;
    setScroll(scrollY: number): void;
    setOpen(): void;
    giveItemsValueIfNoneExist(): void;
    sortListAlphabetically(): void;
    toggleDropdown(): void;
    inputItem(identifier: any, index: any): HTMLInputElement;
    emitFilterClosedEvent(): void;
    componentWillLoad(): void;
    setFocusItem(): void;
    setFocusSearch(): void;
    incrementFocusItem(): void;
    decrementFocusItem(): void;
    downHandler(e: DigiUtilKeydownHandlerCustomEvent<KeyboardEvent>): void;
    upHandler(e: DigiUtilKeydownHandlerCustomEvent<KeyboardEvent>): void;
    homeHandler(e: DigiUtilKeydownHandlerCustomEvent<KeyboardEvent>): void;
    endHandler(e: DigiUtilKeydownHandlerCustomEvent<KeyboardEvent>): void;
    enterHandler(e: DigiUtilKeydownHandlerCustomEvent<KeyboardEvent>): void;
    spaceHandler(e: DigiUtilKeydownHandlerCustomEvent<KeyboardEvent>): void;
    escHandler(): void;
    tabHandler(): void;
    shiftHandler(): void;
    filterResults(): void;
    inputSearchKeyboardHandler(e: KeyboardEvent): void;
    inputSearchInputHandler(e: InputEvent): void;
    resetSelectItems(close?: boolean): void;
    selectItemHandler(item: IListItem): void;
    isSelected(textValue: string): boolean;
    get cssModifiers(): {
        'digi-form-select-filter--open': boolean;
        'digi-form-select-filter--neutral': boolean;
        'digi-form-select-filter--success': boolean;
        'digi-form-select-filter--warning': boolean;
        'digi-form-select-filter--error': boolean;
    };
    get cssModifiersToggleButtonIndicator(): {
        'digi-form-select-filter__toggle-button-indicator--active': boolean;
    };
    get cssModifiersToggleButtonWrapper(): {
        'digi-form-select-filter__toggle-button-wrapper--activated': boolean;
    };
    buttonText(isAriaLabel: boolean): string;
    get renderButtonLabel(): string;
    get ariaLabel(): string;
    get showNeutralValue(): boolean;
    showValidation(): boolean;
    renderEmptyStateBox(): any;
    render(): any;
}
