import { AfterViewInit, ChangeDetectorRef, EventEmitter, OnDestroy, OnInit } from '@angular/core';
import { 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 { IFormConfiguration, SdFormControl, SdLabelDefDirective, SdViewDefDirective } from '@sd-angular/core/common';
import { Observable, Subject } from 'rxjs';
import { SdSelectDisplayDefDirective } from './select-display-def.directive';
export declare class SdSelect implements OnInit, AfterViewInit, OnDestroy {
    #private;
    private ref;
    private formConfig;
    set input(input: MatInput);
    select: MatSelect;
    set name(val: string);
    appearance: MatFormFieldAppearance;
    disableErrorMessage: boolean;
    set _disableErrorMessage(val: boolean | '');
    formControl: SdFormControl;
    searchTerm$: Subject<string>;
    size: 'sm' | 'lg';
    set form(val: NgForm | FormGroup);
    qcId: string;
    label: string;
    set _label(val: string);
    placeholder: string;
    display: Observable<string>;
    set model(value: undefined | boolean | number | string | (number | string)[]);
    set items(items: undefined | any[] | SearchFunc);
    valueField: string;
    displayField: string;
    cacheChecksum: any;
    loading: boolean;
    isRequired: boolean;
    set required(val: boolean | '');
    set validator(validator: (value: any) => string | Promise<string>);
    inlineError: string;
    set _inlineError(val: string);
    set disabled(val: boolean | '');
    multiple: boolean;
    set _multiple(val: boolean | '');
    limit: number;
    filtered: boolean;
    set _filtered(val: boolean | '');
    selectDisplayDef: SdSelectDisplayDefDirective;
    selectAll: boolean;
    set _selectAll(val: boolean | '');
    copyTooltip: MatTooltip;
    copyable: boolean;
    set _copyable(val: boolean | '');
    copied: boolean;
    copyText: ((value: string | string[], items: any[]) => string) | string;
    modelChange: EventEmitter<any>;
    sdChange: EventEmitter<any>;
    sdSelection: EventEmitter<{
        value: any | any[];
        item?: any;
        items?: any[];
    }>;
    selectedItems: Observable<any[]>;
    filteredItems: Observable<any[]>;
    allSelected: boolean;
    sdLabelDef: SdLabelDefDirective;
    sdView: SdViewDefDirective;
    isFocused: boolean;
    tooltip: string;
    constructor(ref: ChangeDetectorRef, formConfig: IFormConfiguration);
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    customInlineErrorValidator(): ValidatorFn;
    onSelectionChange: (change: MatSelectChange) => void;
    onSelectAll(): void;
    reValidate: () => void;
    clear: ($event?: any) => void;
    onClick: () => void;
    focus: () => void;
    onOpenedChange: (isOpened: boolean) => void;
    onOptionChange: (tooltip: MatTooltip) => void;
    trackByKey: (index: any, item: any) => any;
    onCopyText: (event: MouseEvent) => void;
}
declare type SearchFunc = (searchText?: any, isFormValue?: boolean) => Promise<any[]>;
export {};
