import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { FormControl, FormGroup, NgForm, ValidatorFn } from '@angular/forms';
import { MatFormFieldAppearance } from '@angular/material/form-field';
import { MatInput } from '@angular/material/input';
import { MatSelect, MatSelectChange } from '@angular/material/select';
import { MatTooltip } from '@angular/material/tooltip';
import { SdItemDefDefDirective, SdLabelDefDirective, SdViewDefDirective } from '@sd-angular/core/forms/directives';
import { ISdFormConfiguration, SdCustomValidator, SdFormControl, SdSearch, SdSelectionData } from '@sd-angular/core/forms/models';
import { SdSize } from '@sd-angular/core/utilities/models';
import { BehaviorSubject, Observable } from 'rxjs';
import * as i0 from "@angular/core";
export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
    #private;
    private ref;
    private formConfig;
    autoId?: string;
    set _autoId(val: string | undefined | null);
    set input(input: MatInput);
    select?: MatSelect;
    set name(val: string | undefined);
    appearance: MatFormFieldAppearance;
    hideInlineError: boolean;
    set _hideInlineError(val: boolean | '');
    formControl: SdFormControl;
    inputControl: FormControl<string | null>;
    size?: SdSize;
    set form(val: NgForm | FormGroup | undefined | null);
    label?: string;
    set _label(val: string | undefined);
    helperText?: string;
    set _helperText(val: string | undefined);
    placeholder?: string;
    display?: Observable<string>;
    set model(value: boolean | number | string | (number | string)[] | undefined | null);
    set items(items: undefined | null | any[] | SdSearch);
    valueField: string;
    displayField: string;
    disabledField: string;
    cacheChecksum: any;
    loading$: BehaviorSubject<boolean>;
    required: boolean;
    set _required(val: boolean | '' | undefined | null);
    set _validator(value: SdCustomValidator | undefined);
    inlineError?: string;
    set _inlineError(val: string);
    set disabled(val: boolean | '' | undefined | null);
    viewed: boolean;
    set _viewed(val: boolean | '' | undefined | null);
    viewedText?: Observable<string>;
    hyperlink?: string | null;
    multiple: boolean;
    set _multiple(val: boolean | '' | undefined | null);
    limit: number;
    filtered: boolean;
    itemDef?: SdItemDefDefDirective;
    modelChange: EventEmitter<any>;
    sdChange: EventEmitter<any>;
    sdSelection: EventEmitter<SdSelectionData<any>>;
    selectedItems?: Observable<any[]>;
    filteredItems?: Observable<any[]>;
    allSelected: boolean;
    sdLabelDef?: SdLabelDefDirective;
    sdViewDef?: SdViewDefDirective;
    isFocused: boolean;
    tooltip?: string;
    constructor(ref: ChangeDetectorRef, formConfig: ISdFormConfiguration);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    customInlineErrorValidator(): ValidatorFn;
    onSelectionChange: (change: MatSelectChange) => void;
    reValidate: () => void;
    clear: ($event?: any) => void;
    onClick: () => void;
    focus: () => void;
    onOpenedChange: (isOpened: boolean) => void;
    onOptionChange: (tooltip: MatTooltip) => void;
    trackBy: (index: number, item: any) => any;
    static ɵfac: i0.ɵɵFactoryDeclaration<SdSelect, [null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<SdSelect, "sd-select", never, { "_autoId": { "alias": "autoId"; "required": false; }; "name": { "alias": "name"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "_hideInlineError": { "alias": "hideInlineError"; "required": false; }; "size": { "alias": "size"; "required": false; }; "form": { "alias": "form"; "required": false; }; "_label": { "alias": "label"; "required": false; }; "_helperText": { "alias": "helperText"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "model": { "alias": "model"; "required": false; }; "items": { "alias": "items"; "required": false; }; "valueField": { "alias": "valueField"; "required": true; }; "displayField": { "alias": "displayField"; "required": true; }; "disabledField": { "alias": "disabledField"; "required": false; }; "cacheChecksum": { "alias": "cacheChecksum"; "required": false; }; "_required": { "alias": "required"; "required": false; }; "_validator": { "alias": "validator"; "required": false; }; "_inlineError": { "alias": "inlineError"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "_viewed": { "alias": "viewed"; "required": false; }; "hyperlink": { "alias": "hyperlink"; "required": false; }; "_multiple": { "alias": "multiple"; "required": false; }; "limit": { "alias": "limit"; "required": false; }; }, { "modelChange": "modelChange"; "sdChange": "sdChange"; "sdSelection": "sdSelection"; }, ["itemDef", "sdLabelDef", "sdViewDef"], never, true, never>;
}
