import { AfterContentChecked, AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, QueryList, TemplateRef } from '@angular/core';
import { ControlValueAccessor } from '@angular/forms';
import { Subscription } from 'rxjs';
import { TableService } from '../data-table/data-table.service';
import { TemplateNameDirective } from '../data-table/shared';
import { SelectService } from './select.service';
export declare class SelectChange {
    source: SelectComponent;
    value: any;
    constructor(source: SelectComponent, value: any);
}
export declare class SelectComponent implements AfterContentChecked, AfterContentInit, ControlValueAccessor {
    selectService: SelectService;
    tableService: TableService;
    el: ElementRef;
    private cd;
    overlayOpen: boolean;
    anchorWidth: any;
    _options: any[];
    selectOptionsToDisplay: any[];
    selectedOption: any;
    finalOption: any;
    selectedItemUpdated: boolean;
    value: any;
    filterValue: string;
    _selection: any;
    selectionKeys: any;
    preventPropagation: boolean;
    optionTemplate: TemplateRef<any>;
    selectedOptionTemplate: TemplateRef<any>;
    /** @prop set the scroll height of the overlay | '' */
    scrollHeight: string;
    /** @prop set the placeholder for the select */
    placeholder: string;
    /** @prop passes in the data table row index */
    tableRowIndex: number;
    /** @prop set which key to show as the option label | '' */
    optionLabel: string;
    /** @prop show the filter search | false */
    filter: boolean;
    /** @prop set which key or keys the filter will use, filtering by multiple keys example: '[name, id]' | 'label' */
    filterBy: string | string[];
    /** @prop set how the string should be filtered | 'contains' */
    filterMode: string;
    /** @prop set the filter search placeholder | '' */
    filterPlaceholder: string;
    /** @prop set the aria-label on the filter input | '' */
    ariaFilterLabel: string;
    /** @prop dataKey can be used to find selected options from multi-select, otherwise findIndex will run */
    dataKey: string;
    /** @prop message to show when filter returns null | 'No Results Found' */
    noResultsMessage: string;
    /** @prop set the height in px of each select option */
    selectItemSize: number;
    /** @prop add optional css class to the overlay | null */
    overlayClass: string;
    /** @prop add search icon on the filter search input | true */
    hasSearchIcon: boolean;
    /** @prop set the select item options */
    options: any[];
    /** @prop sets the selection from multi-select */
    selection: any;
    /** @prop set the inline style of the select button | null */
    buttonStyle: Object;
    /** @prop Optional CSS button class name | '' */
    buttonClass: string;
    /** @prop Optional CSS class on each select option */
    optionClass: string;
    /** @prop Set the default value for the select | '' */
    defaultValue: string;
    /** @prop Disable the Select Component | false */
    disabled: boolean;
    /** @prop Set ID for Select Component | null */
    id: string;
    /** @prop Optional prop to know if user is able to select multiple options | false */
    isMulti: boolean;
    /** @prop Optional prop to to set the setTimeout duration for closing the panel | false */
    closeDuration: number;
    /** @prop emitter to fire the select option value change  */
    handleChange: EventEmitter<any>;
    /** @prop emitter to fire after showing the overlay select options panel */
    handleShow: EventEmitter<any>;
    /**@prop emit function when multi-checked selection changes */
    selectionChange: EventEmitter<any>;
    /**@prop emit function when row is checked */
    rowCheck: EventEmitter<any>;
    /**@prop emit funciton when row is unchecked */
    rowUncheck: EventEmitter<any>;
    /**@prop emit function when the filter value changes */
    filterValueChange: EventEmitter<any>;
    originButton: any;
    filterViewChild: ElementRef;
    templates: QueryList<TemplateNameDirective>;
    /** Handles keyboard events when the selected is open. */
    _handleOpenKeydown: (event: any) => void;
    findPrevOption(index: any): any;
    findNextOption(index: any): any;
    makeSelectOptions(option: any[], label: string): any;
    updateSelectedItem(item: any): any;
    findSelectOption(item: any, options: any[]): any;
    findSelectOptionIndex(item: any, options: any[]): number;
    onFilter(event: any): void;
    startFilter(): void;
    resetFilter(): void;
    onSelectItemClick(event: any): void;
    private forceSelectItem;
    selectItem(_event: any, option: any): void;
    isSelected(rowData: any): boolean;
    toggleRowWithCheckbox(rowData: any): void;
    updateSelectionKeys(): void;
    constructor(selectService: SelectService, tableService: TableService, el: ElementRef, cd: ChangeDetectorRef);
    ngAfterContentChecked(): void;
    ngAfterContentInit(): void;
    toggle: () => void;
    open: () => void;
    close: () => void;
    onModelChange: Function;
    onModelTouched: Function;
    writeValue(value: any): void;
    registerOnChange(fn: Function): void;
    registerOnTouched(fn: Function): void;
    setDisabledState(isDisabled: boolean): void;
    private _setAnchorWidth;
}
export declare class SelectItemComponent {
    sc: SelectComponent;
    option: any;
    optionClass: any;
    selected: boolean;
    selectItemSize: number;
    template: TemplateRef<any>;
    handleClick: EventEmitter<any>;
    constructor(sc: SelectComponent);
    onSelectOptionClick(_event: Event): void;
}
export declare class SelectCheckboxComponent implements OnInit, OnDestroy {
    sc: SelectComponent;
    selectService: SelectService;
    data: any;
    label: string;
    className: string;
    id: string;
    checkStatus: boolean;
    subscription: Subscription;
    constructor(sc: SelectComponent, selectService: SelectService);
    ngOnInit(): void;
    handleClick(_event: Event): void;
    changeCheck(event: any): void;
    ngOnDestroy(): void;
}
