import { ElementRef, EventEmitter, OnInit, QueryList, SimpleChanges } from "@angular/core";
import { BehaviorSubject } from "rxjs";
import { DxcSelectHelper } from "./dxc-select.helper";
import { Option } from "./interfaces/option.interface";
import { OptionGroup } from "./interfaces/optionGroup.interface";
import { SelectService } from "./services/select.service";
import { VisualOptionFocus } from "./interfaces/visualFocus.interface";
import { ControlValueAccessor } from "@angular/forms";
import * as i0 from "@angular/core";
interface SelectProperties {
    label: string;
    name: string;
    value: string | string[];
    placeholder: string;
    helperText: string;
    searchable: boolean;
    multiple: boolean;
    optional: boolean;
    disabled: boolean;
    error: string;
    margin: Object | string;
    size: string;
    options: Option[] | OptionGroup[];
    tabIndex: number;
}
export declare class DxcSelectComponent implements OnInit, ControlValueAccessor {
    private helper;
    service: SelectService;
    private ref;
    className: any;
    label: string;
    name: string;
    value: string | string[];
    helperText: string;
    get searchable(): boolean;
    set searchable(value: boolean);
    private _searchable;
    get disabled(): boolean;
    set disabled(value: boolean);
    private _disabled;
    get multiple(): boolean;
    set multiple(value: boolean);
    private _multiple;
    get optional(): boolean;
    set optional(value: boolean);
    private _optional;
    error: string;
    placeholder: string;
    margin: Object | string;
    tabIndex: number;
    size: string;
    options: Option[] | OptionGroup[];
    defaultInputs: BehaviorSubject<SelectProperties>;
    onChange: EventEmitter<any>;
    onBlur: EventEmitter<any>;
    id: string;
    optionsListId: string;
    selectLabelId: string;
    isOpened: boolean;
    inputValue: string;
    isInputVisible: boolean;
    controlled: boolean;
    focusedOption: VisualOptionFocus;
    optionalOption: Option;
    formValues: string | string[];
    activeDescendant: string;
    isDirty: boolean;
    isNotSelectable: boolean;
    containerRef: ElementRef;
    optionsRef: ElementRef;
    inputRef: ElementRef;
    optionGroupRef: QueryList<ElementRef>;
    clickout(event: any): void;
    constructor(helper: DxcSelectHelper, service: SelectService, ref: ElementRef);
    onTouched: () => void;
    onChangeRegister: (val: any) => void;
    writeValue(val: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnInit(): void;
    private setActiveDescendantAttr;
    handleOptionMouseDown(event: any): void;
    handleOptionClick(option: any, event: any): void;
    handleOnFocusOut(): void;
    focusContainer(event: any, isOptionClicked: boolean): void;
    labelClick(event: any): void;
    removeSelectedValues(event: any): void;
    isValueSelected: (value: any) => boolean;
    isFocused: (indexGroup: any, indexOption: any) => boolean;
    setDefaultValues(): void;
    findOptionByValue(value: any): any;
    private findOption;
    handleSelectOpen(): void;
    private handleScrollSelected;
    private setFocusSelectedOption;
    private setFocusSelectedOptionGroup;
    private scrollByIndex;
    handleOnChangeInput(value: any): void;
    handlePropagation(event: any): void;
    handleClearInput(event: any): void;
    private setInputValue;
    private showInput;
    handleBlurInput(): void;
    private setPlaceholderOptional;
    setPlaceholder(): any;
    handleOnKeyDown(event: any): void;
    private setActualSelectedFocus;
    handleEnterKey(event: any): void;
    setInitialFocusOption(): void;
    hasOptional(): boolean;
    private isRequired;
    clickNotSelectable(): void;
    setDisplayValueContainer(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<DxcSelectComponent, [null, { self: true; }, null]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<DxcSelectComponent, "dxc-select", never, { "label": "label"; "name": "name"; "value": "value"; "helperText": "helperText"; "searchable": "searchable"; "disabled": "disabled"; "multiple": "multiple"; "optional": "optional"; "error": "error"; "placeholder": "placeholder"; "margin": "margin"; "tabIndex": "tabIndex"; "size": "size"; "options": "options"; }, { "onChange": "onChange"; "onBlur": "onBlur"; }, never, never>;
}
export {};
//# sourceMappingURL=dxc-select.component.d.ts.map