import { SelectPassThrough, SelectChangeEvent, SelectFilterEvent, SelectLazyLoadEvent, SelectItemTemplateContext, SelectGroupTemplateContext, SelectLoaderTemplateContext, SelectSelectedItemTemplateContext, SelectHeaderTemplateContext, SelectFilterTemplateContext, SelectIconTemplateContext, SelectFilterOptions } from 'primeng/types/select';
export * from 'primeng/types/select';
import * as _angular_core from '@angular/core';
import { AfterViewInit, AfterViewChecked, ElementRef, TemplateRef } from '@angular/core';
import { MotionOptions } from '@primeuix/motion';
import * as i2 from 'primeng/api';
import { FilterService, ScrollerOptions, OverlayOptions, FilterMatchModeType } from 'primeng/api';
import { BaseInput } from 'primeng/baseinput';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { Overlay } from 'primeng/overlay';
import { Scroller } from 'primeng/scroller';
import { Nullable } from 'primeng/ts-helpers';
import { CSSProperties, AppendTo } from 'primeng/types/shared';
import { TooltipPosition } from 'primeng/types/tooltip';
import { BaseStyle } from 'primeng/base';

/**
 *
 * Select also known as Select, is used to choose an item from a collection of options.
 *
 * [Live Demo](https://www.primeng.org/select/)
 *
 * @module selectstyle
 *
 */
declare enum SelectClasses {
    /**
     * Class name of the root element
     */
    root = "p-select",
    /**
     * Class name of the label element
     */
    label = "p-select-label",
    /**
     * Class name of the clear icon element
     */
    clearIcon = "p-select-clear-icon",
    /**
     * Class name of the dropdown element
     */
    dropdown = "p-select-dropdown",
    /**
     * Class name of the loadingicon element
     */
    loadingIcon = "p-select-loading-icon",
    /**
     * Class name of the dropdown icon element
     */
    dropdownIcon = "p-select-dropdown-icon",
    /**
     * Class name of the overlay element
     */
    overlay = "p-select-overlay",
    /**
     * Class name of the header element
     */
    header = "p-select-header",
    /**
     * Class name of the filter element
     */
    pcFilter = "p-select-filter",
    /**
     * Class name of the list container element
     */
    listContainer = "p-select-list-container",
    /**
     * Class name of the list element
     */
    list = "p-select-list",
    /**
     * Class name of the option group element
     */
    optionGroup = "p-select-option-group",
    /**
     * Class name of the option group label element
     */
    optionGroupLabel = "p-select-option-group-label",
    /**
     * Class name of the option element
     */
    option = "p-select-option",
    /**
     * Class name of the option label element
     */
    optionLabel = "p-select-option-label",
    /**
     * Class name of the option check icon element
     */
    optionCheckIcon = "p-select-option-check-icon",
    /**
     * Class name of the option blank icon element
     */
    optionBlankIcon = "p-select-option-blank-icon",
    /**
     * Class name of the empty message element
     */
    emptyMessage = "p-select-empty-message"
}
declare class SelectStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-disabled': any;
            'p-invalid': any;
            'p-variant-filled': boolean;
            'p-focus': any;
            'p-inputwrapper-filled': any;
            'p-inputwrapper-focus': any;
            'p-select-open': any;
            'p-select-fluid': any;
            'p-select-sm p-inputfield-sm': boolean;
            'p-select-lg p-inputfield-lg': boolean;
        })[];
        label: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-placeholder': any;
            'p-select-label-empty': boolean;
        })[];
        clearIcon: string;
        dropdown: string;
        loadingIcon: string;
        dropdownIcon: string;
        overlay: string;
        header: string;
        pcFilter: string;
        listContainer: string;
        list: string;
        optionGroup: string;
        optionGroupLabel: string;
        option: ({ instance }: {
            instance: any;
        }) => (string | {
            'p-select-option-selected': any;
            'p-disabled': any;
            'p-focus': any;
        })[];
        optionLabel: string;
        optionCheckIcon: string;
        optionBlankIcon: string;
        emptyMessage: string;
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectStyle, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<SelectStyle>;
}
interface SelectStyle extends BaseStyle {
}

declare const SELECT_VALUE_ACCESSOR: any;
/**
 * Select is used to choose an item from a collection of options.
 * @group Components
 */
declare class Select extends BaseInput<SelectPassThrough> implements AfterViewInit, AfterViewChecked {
    componentName: string;
    bindDirectiveInstance: Bind;
    filterService: FilterService;
    /**
     * Unique identifier of the component
     * @group Props
     */
    id: _angular_core.InputSignal<string | undefined>;
    private _internalId;
    $id: _angular_core.Signal<string>;
    /**
     * Height of the viewport in pixels, a scrollbar is defined if height of list exceeds this value.
     * @group Props
     */
    scrollHeight: _angular_core.InputSignal<string>;
    /**
     * When specified, displays an input field to filter the items on keyup.
     * @group Props
     */
    filter: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
    /**
     * Inline style of the overlay panel element.
     * @group Props
     */
    panelStyle: _angular_core.InputSignal<CSSProperties>;
    /**
     * Style class of the overlay panel element.
     * @group Props
     */
    panelStyleClass: _angular_core.InputSignal<string | undefined>;
    /**
     * When present, it specifies that the component cannot be edited.
     * @group Props
     */
    readonly: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
    /**
     * When present, custom value instead of predefined options can be entered using the editable input field.
     * @group Props
     */
    editable: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
    /**
     * Index of the element in tabbing order.
     * @group Props
     */
    tabindex: _angular_core.InputSignalWithTransform<number, unknown>;
    /**
     * Default text to display when no option is selected.
     * @group Props
     */
    placeholder: _angular_core.InputSignal<string | undefined>;
    /**
     * Icon to display in loading state.
     * @group Props
     */
    loadingIcon: _angular_core.InputSignal<string | undefined>;
    /**
     * Placeholder text to show when filter input is empty.
     * @group Props
     */
    filterPlaceholder: _angular_core.InputSignal<string | undefined>;
    /**
     * Locale to use in filtering. The default locale is the host environment's current locale.
     * @group Props
     */
    filterLocale: _angular_core.InputSignal<string | undefined>;
    /**
     * Identifier of the accessible input element.
     * @group Props
     */
    inputId: _angular_core.InputSignal<string | undefined>;
    /**
     * A property to uniquely identify a value in options.
     * @group Props
     */
    dataKey: _angular_core.InputSignal<string | undefined>;
    /**
     * When filtering is enabled, filterBy decides which field or fields (comma separated) to search against.
     * @group Props
     */
    filterBy: _angular_core.InputSignal<string | undefined>;
    /**
     * Fields used when filtering the options, defaults to optionLabel.
     * @group Props
     */
    filterFields: _angular_core.InputSignal<any[] | undefined>;
    /**
     * When present, it specifies that the component should automatically get focus on load.
     * @group Props
     */
    autofocus: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
    /**
     * Clears the filter value when hiding the select.
     * @group Props
     */
    resetFilterOnHide: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Whether the selected option will be shown with a check mark.
     * @group Props
     */
    checkmark: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Icon class of the select icon.
     * @group Props
     */
    dropdownIcon: _angular_core.InputSignal<string | undefined>;
    /**
     * Whether the select is in loading state.
     * @group Props
     */
    loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Name of the label field of an option.
     * @group Props
     */
    optionLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * Name of the value field of an option.
     * @group Props
     */
    optionValue: _angular_core.InputSignal<string | undefined>;
    /**
     * Name of the disabled field of an option.
     * @group Props
     */
    optionDisabled: _angular_core.InputSignal<string | undefined>;
    /**
     * Name of the label field of an option group.
     * @group Props
     */
    optionGroupLabel: _angular_core.InputSignal<string>;
    /**
     * Name of the options field of an option group.
     * @group Props
     */
    optionGroupChildren: _angular_core.InputSignal<string>;
    /**
     * Whether to display options as grouped when nested options are provided.
     * @group Props
     */
    group: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
    /**
     * When enabled, a clear icon is displayed to clear the value.
     * @group Props
     */
    showClear: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
    /**
     * Text to display when filtering does not return any results. Defaults to global value in i18n translation configuration.
     * @group Props
     */
    emptyFilterMessage: _angular_core.InputSignal<string>;
    /**
     * Text to display when there is no data. Defaults to global value in i18n translation configuration.
     * @group Props
     */
    emptyMessage: _angular_core.InputSignal<string>;
    /**
     * Defines if data is loaded and interacted with in lazy manner.
     * @group Props
     */
    lazy: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Whether the data should be loaded on demand during scroll.
     * @group Props
     */
    virtualScroll: _angular_core.InputSignalWithTransform<boolean | undefined, unknown>;
    /**
     * Height of an item in the list for VirtualScrolling.
     * @group Props
     */
    virtualScrollItemSize: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
    /**
     * Whether to use the scroller feature. The properties of scroller component can be used like an object in it.
     * @group Props
     */
    virtualScrollOptions: _angular_core.InputSignal<ScrollerOptions | undefined>;
    /**
     * Whether to use overlay API feature. The properties of overlay API can be used like an object in it.
     * @group Props
     */
    overlayOptions: _angular_core.InputSignal<OverlayOptions | undefined>;
    /**
     * Defines a string that labels the filter input.
     * @group Props
     */
    ariaFilterLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * Used to define a aria label attribute the current element.
     * @group Props
     */
    ariaLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * Establishes relationships between the component and label(s) where its value should be one or more element IDs.
     * @group Props
     */
    ariaLabelledBy: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines how the items are filtered.
     * @group Props
     */
    filterMatchMode: _angular_core.InputSignal<FilterMatchModeType>;
    /**
     * Advisory information to display in a tooltip on hover.
     * @group Props
     */
    tooltip: _angular_core.InputSignal<string>;
    /**
     * Position of the tooltip.
     * @group Props
     */
    tooltipPosition: _angular_core.InputSignal<TooltipPosition>;
    /**
     * Type of CSS position.
     * @group Props
     */
    tooltipPositionStyle: _angular_core.InputSignal<string>;
    /**
     * Style class of the tooltip.
     * @group Props
     */
    tooltipStyleClass: _angular_core.InputSignal<string | undefined>;
    /**
     * Fields used when filtering the options, defaults to optionLabel.
     * @group Props
     */
    focusOnHover: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Determines if the option will be selected on focus.
     * @group Props
     */
    selectOnFocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When enabled, allows multiple items to be selected.
     * @group Props
     */
    multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Whether to focus on the first visible or selected element when the overlay panel is shown.
     * @group Props
     */
    autoOptionFocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Applies focus to the filter element when the overlay is shown.
     * @group Props
     */
    autofocusFilter: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When specified, filter displays with this value.
     * @group Props
     */
    filterValue: _angular_core.InputSignal<string | null | undefined>;
    /**
     * An array of objects to display as the available options.
     * @group Props
     */
    options: _angular_core.InputSignal<any[] | null | undefined>;
    /**
     * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
     * @defaultValue 'self'
     * @group Props
     */
    appendTo: _angular_core.InputSignal<AppendTo>;
    /**
     * The motion options.
     * @group Props
     */
    motionOptions: _angular_core.InputSignal<MotionOptions | undefined>;
    /**
     * Callback to invoke when value of select changes.
     * @param {SelectChangeEvent} event - custom change event.
     * @group Emits
     */
    onChange: _angular_core.OutputEmitterRef<SelectChangeEvent>;
    /**
     * Callback to invoke when data is filtered.
     * @param {SelectFilterEvent} event - custom filter event.
     * @group Emits
     */
    onFilter: _angular_core.OutputEmitterRef<SelectFilterEvent>;
    /**
     * Callback to invoke when select gets focus.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onFocus: _angular_core.OutputEmitterRef<Event>;
    /**
     * Callback to invoke when select loses focus.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onBlur: _angular_core.OutputEmitterRef<Event>;
    /**
     * Callback to invoke when component is clicked.
     * @param {MouseEvent} event - Mouse event.
     * @group Emits
     */
    onClick: _angular_core.OutputEmitterRef<MouseEvent>;
    /**
     * Callback to invoke when select overlay gets visible.
     * @param {AnimationEvent} event - Animation event.
     * @group Emits
     */
    onShow: _angular_core.OutputEmitterRef<AnimationEvent>;
    /**
     * Callback to invoke when select overlay gets hidden.
     * @param {AnimationEvent} event - Animation event.
     * @group Emits
     */
    onHide: _angular_core.OutputEmitterRef<AnimationEvent>;
    /**
     * Callback to invoke when select clears the value.
     * @param {Event} event - Browser event.
     * @group Emits
     */
    onClear: _angular_core.OutputEmitterRef<Event>;
    /**
     * Callback to invoke in lazy mode to load new data.
     * @param {SelectLazyLoadEvent} event - Lazy load event.
     * @group Emits
     */
    onLazyLoad: _angular_core.OutputEmitterRef<SelectLazyLoadEvent>;
    _componentStyle: SelectStyle;
    filterViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    focusInputViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    editableInputViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    itemsViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    scroller: _angular_core.Signal<Scroller | undefined>;
    overlayViewChild: _angular_core.Signal<Overlay | undefined>;
    firstHiddenFocusableElementOnOverlay: _angular_core.Signal<ElementRef<any> | undefined>;
    lastHiddenFocusableElementOnOverlay: _angular_core.Signal<ElementRef<any> | undefined>;
    itemsWrapper: Nullable<HTMLDivElement>;
    $appendTo: _angular_core.Signal<AppendTo>;
    /**
     * Custom item template.
     * @group Templates
     */
    itemTemplate: _angular_core.Signal<TemplateRef<SelectItemTemplateContext<any>> | undefined>;
    /**
     * Custom group template.
     * @group Templates
     */
    groupTemplate: _angular_core.Signal<TemplateRef<SelectGroupTemplateContext<any>> | undefined>;
    /**
     * Custom loader template.
     * @group Templates
     */
    loaderTemplate: _angular_core.Signal<TemplateRef<SelectLoaderTemplateContext> | undefined>;
    /**
     * Custom selected item template.
     * @group Templates
     */
    selectedItemTemplate: _angular_core.Signal<TemplateRef<SelectSelectedItemTemplateContext<any>> | undefined>;
    /**
     * Custom header template.
     * @param {SelectHeaderTemplateContext} context - header context.
     * @group Templates
     */
    headerTemplate: _angular_core.Signal<TemplateRef<SelectHeaderTemplateContext> | undefined>;
    /**
     * Custom filter template.
     * @group Templates
     */
    filterTemplate: _angular_core.Signal<TemplateRef<SelectFilterTemplateContext> | undefined>;
    /**
     * Custom footer template.
     * @group Templates
     */
    footerTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom empty filter template.
     * @group Templates
     */
    emptyFilterTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom empty template.
     * @group Templates
     */
    emptyTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom dropdown icon template.
     * @group Templates
     */
    dropdownIconTemplate: _angular_core.Signal<TemplateRef<SelectIconTemplateContext> | undefined>;
    /**
     * Custom loading icon template.
     * @group Templates
     */
    loadingIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom clear icon template.
     * @group Templates
     */
    clearIconTemplate: _angular_core.Signal<TemplateRef<SelectIconTemplateContext> | undefined>;
    /**
     * Custom filter icon template.
     * @group Templates
     */
    filterIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom on icon template.
     * @group Templates
     */
    onIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom off icon template.
     * @group Templates
     */
    offIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom cancel icon template.
     * @group Templates
     */
    cancelIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    filterOptions: SelectFilterOptions | undefined;
    _filterValue: _angular_core.WritableSignal<any>;
    _placeholder: _angular_core.WritableSignal<string | undefined>;
    _options: _angular_core.WritableSignal<any[] | null>;
    value: any;
    hover: Nullable<boolean>;
    focused: _angular_core.WritableSignal<boolean>;
    overlayVisible: _angular_core.WritableSignal<boolean>;
    optionsChanged: Nullable<boolean>;
    panel: Nullable<HTMLDivElement>;
    dimensionsUpdated: Nullable<boolean>;
    hoveredItem: any;
    selectedOptionUpdated: Nullable<boolean>;
    searchValue: Nullable<string>;
    searchIndex: Nullable<number>;
    searchTimeout: any;
    previousSearchChar: Nullable<string>;
    currentSearchChar: Nullable<string>;
    preventModelTouched: Nullable<boolean>;
    focusedOptionIndex: _angular_core.WritableSignal<number>;
    labelId: Nullable<string>;
    listId: Nullable<string>;
    clicked: _angular_core.WritableSignal<boolean>;
    emptyMessageLabel: _angular_core.Signal<any>;
    emptyFilterMessageLabel: _angular_core.Signal<any>;
    isVisibleClearIcon: _angular_core.Signal<boolean>;
    get listLabel(): string;
    focusedOptionId: _angular_core.Signal<string | null>;
    visibleOptions: _angular_core.Signal<any>;
    label: _angular_core.Signal<any>;
    $ariaLabel: _angular_core.Signal<any>;
    $ariaMultiselectable: _angular_core.Signal<true | undefined>;
    $placeholder: _angular_core.Signal<string | undefined>;
    $required: _angular_core.Signal<"" | undefined>;
    $readonly: _angular_core.Signal<"" | undefined>;
    $disabledAttr: _angular_core.Signal<"" | undefined>;
    $tabindex: _angular_core.Signal<number>;
    filterInputValue: _angular_core.Signal<any>;
    get $ariaActivedescendant(): string | null | undefined;
    get $ariaExpanded(): boolean;
    $ariaControls: _angular_core.Signal<string | null>;
    showEmptyFilterMessage: _angular_core.Signal<any>;
    showEmptyMessage: _angular_core.Signal<any>;
    hasEmptyTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    $ariaOwns: _angular_core.Signal<string>;
    get selectedItemContext(): SelectSelectedItemTemplateContext;
    get clearIconContext(): SelectIconTemplateContext;
    get dropdownIconContext(): SelectIconTemplateContext;
    get filterTemplateContext(): SelectFilterTemplateContext;
    get defaultBuildInItemsContext(): {
        $implicit: any;
        options: {};
    };
    getBuildInItemsContext(items: any[], scrollerOptions: any): {
        $implicit: any[];
        options: any;
    };
    getLoaderContext(scrollerOptions: any): SelectLoaderTemplateContext;
    getItemSizeStyle(scrollerOptions: any): {
        height: string;
    };
    getGroupContext(optionGroup: any): SelectGroupTemplateContext;
    selectedOption: _angular_core.WritableSignal<any>;
    constructor();
    private isModelValueNotSet;
    private getAllVisibleAndNonVisibleOptions;
    onInit(): void;
    onAfterViewChecked(): void;
    flatOptions(options: any): any;
    autoUpdateModel(): void;
    onOptionSelect(event: any, option: any, isHide?: boolean, preventChange?: boolean): void;
    onOptionSelectMultiple(event: any, option: any, preventChange?: boolean): void;
    onOptionMouseEnter(event: any, index: any): void;
    updateModel(value: any, event?: any): void;
    allowModelChange(): number | false | null;
    isSelected(option: any): boolean;
    private isOptionValueEqualsModelValue;
    onAfterViewInit(): void;
    updatePlaceHolderForFloatingLabel(): void;
    updateEditableLabel(): void;
    clearEditableLabel(): void;
    getOptionIndex(index: any, scrollerOptions: any): any;
    getOptionLabel(option: any): any;
    getOptionValue(option: any): any;
    getPTItemOptions(option: any, itemOptions: any, index: number, key: string): any;
    isSelectedOptionEmpty(): boolean;
    isOptionDisabled(option: any): any;
    getOptionGroupLabel(optionGroup: any): any;
    getOptionGroupChildren(optionGroup: any): any;
    getAriaPosInset(index: any): any;
    get ariaSetSize(): any;
    /**
     * Callback to invoke on filter reset.
     * @group Method
     */
    resetFilter(): void;
    onContainerClick(event: any): void;
    isEmpty(): any;
    onEditableInput(event: Event): void;
    /**
     * Displays the panel.
     * @group Method
     */
    show(isFocus?: any): void;
    onOverlayBeforeEnter(event: any): void;
    onOverlayAfterLeave(event: any): void;
    /**
     * Hides the panel.
     * @group Method
     */
    hide(isFocus?: any): void;
    onInputFocus(event: Event): void;
    onInputBlur(event: Event): void;
    onKeyDown(event: KeyboardEvent, search?: boolean): void;
    onFilterKeyDown(event: any): void;
    onFilterBlur(event: any): void;
    onArrowDownKey(event: KeyboardEvent): void;
    changeFocusedOptionIndex(event: any, index: any): void;
    virtualScrollerDisabled: _angular_core.Signal<boolean>;
    scrollInView(index?: number): void;
    hasSelectedOption(): boolean;
    isValidSelectedOption(option: any): boolean;
    equalityKey(): string | undefined;
    findFirstFocusedOptionIndex(): any;
    findFirstOptionIndex(): any;
    findSelectedOptionIndex(): any;
    findNextOptionIndex(index: any): any;
    findPrevOptionIndex(index: any): any;
    findLastOptionIndex(): number;
    findLastFocusedOptionIndex(): any;
    isValidOption(option: any): boolean;
    isOptionGroup(option: any): any;
    isOptionFocused(index: number, scrollerOptions: any): boolean;
    trackOption(option: any, index: number): any;
    onArrowUpKey(event: KeyboardEvent, pressedInInputText?: boolean): void;
    onArrowLeftKey(event: KeyboardEvent, pressedInInputText?: boolean): void;
    onDeleteKey(event: KeyboardEvent): void;
    onHomeKey(event: any, pressedInInputText?: boolean): void;
    onEndKey(event: any, pressedInInputText?: boolean): void;
    onPageDownKey(event: KeyboardEvent): void;
    onPageUpKey(event: KeyboardEvent): void;
    onSpaceKey(event: KeyboardEvent, pressedInInputText?: boolean): void;
    onEnterKey(event: any, pressedInInput?: boolean): void;
    onEscapeKey(event: KeyboardEvent): void;
    onTabKey(event: any, pressedInInputText?: boolean): void;
    onFirstHiddenFocus(event: any): void;
    onLastHiddenFocus(event: any): void;
    hasFocusableElements(): boolean;
    onBackspaceKey(event: KeyboardEvent, pressedInInputText?: boolean): void;
    searchFields(): any[];
    searchOptions(event: any, char: any): boolean;
    isOptionMatched(option: any): any;
    onFilterInputChange(event: Event | any): void;
    applyFocus(): void;
    /**
     * Applies focus.
     * @group Method
     */
    focus(): void;
    /**
     * Clears the model.
     * @group Method
     */
    clear(event?: Event): void;
    /**
     * @override
     *
     * @see {@link BaseEditableHolder.writeControlValue}
     * Writes the value to the control.
     */
    writeControlValue(value: any, setModelValue: (value: any) => void): void;
    get containerDataP(): string;
    get labelDataP(): string;
    get dropdownIconDataP(): string;
    get overlayDataP(): string;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Select, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Select, "p-select", never, { "id": { "alias": "id"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "panelStyle": { "alias": "panelStyle"; "required": false; "isSignal": true; }; "panelStyleClass": { "alias": "panelStyleClass"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "editable": { "alias": "editable"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "loadingIcon": { "alias": "loadingIcon"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "filterLocale": { "alias": "filterLocale"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "filterBy": { "alias": "filterBy"; "required": false; "isSignal": true; }; "filterFields": { "alias": "filterFields"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "resetFilterOnHide": { "alias": "resetFilterOnHide"; "required": false; "isSignal": true; }; "checkmark": { "alias": "checkmark"; "required": false; "isSignal": true; }; "dropdownIcon": { "alias": "dropdownIcon"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; "isSignal": true; }; "optionGroupLabel": { "alias": "optionGroupLabel"; "required": false; "isSignal": true; }; "optionGroupChildren": { "alias": "optionGroupChildren"; "required": false; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "showClear": { "alias": "showClear"; "required": false; "isSignal": true; }; "emptyFilterMessage": { "alias": "emptyFilterMessage"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "lazy": { "alias": "lazy"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; "isSignal": true; }; "virtualScrollOptions": { "alias": "virtualScrollOptions"; "required": false; "isSignal": true; }; "overlayOptions": { "alias": "overlayOptions"; "required": false; "isSignal": true; }; "ariaFilterLabel": { "alias": "ariaFilterLabel"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "filterMatchMode": { "alias": "filterMatchMode"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipPosition": { "alias": "tooltipPosition"; "required": false; "isSignal": true; }; "tooltipPositionStyle": { "alias": "tooltipPositionStyle"; "required": false; "isSignal": true; }; "tooltipStyleClass": { "alias": "tooltipStyleClass"; "required": false; "isSignal": true; }; "focusOnHover": { "alias": "focusOnHover"; "required": false; "isSignal": true; }; "selectOnFocus": { "alias": "selectOnFocus"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "autoOptionFocus": { "alias": "autoOptionFocus"; "required": false; "isSignal": true; }; "autofocusFilter": { "alias": "autofocusFilter"; "required": false; "isSignal": true; }; "filterValue": { "alias": "filterValue"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "motionOptions": { "alias": "motionOptions"; "required": false; "isSignal": true; }; }, { "onChange": "onChange"; "onFilter": "onFilter"; "onFocus": "onFocus"; "onBlur": "onBlur"; "onClick": "onClick"; "onShow": "onShow"; "onHide": "onHide"; "onClear": "onClear"; "onLazyLoad": "onLazyLoad"; }, ["itemTemplate", "groupTemplate", "loaderTemplate", "selectedItemTemplate", "headerTemplate", "filterTemplate", "footerTemplate", "emptyFilterTemplate", "emptyTemplate", "dropdownIconTemplate", "loadingIconTemplate", "clearIconTemplate", "filterIconTemplate", "onIconTemplate", "offIconTemplate", "cancelIconTemplate"], never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class SelectModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SelectModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SelectModule, never, [typeof Select, typeof i2.SharedModule], [typeof Select, typeof i2.SharedModule]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<SelectModule>;
}

export { SELECT_VALUE_ACCESSOR, Select, SelectClasses, SelectModule, SelectStyle };
