import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { ControlValueAccessor, FormControl, ValidatorFn } from '@angular/forms';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { MatFormFieldAppearance } from '@angular/material/form-field';
import { DisplayDensity, ISelectOption } from '@metad/ocap-angular/core';
import { DisplayBehaviour } from '@metad/ocap-core';
import * as i0 from "@angular/core";
export declare class NgmMatSelectComponent implements OnInit, OnChanges, ControlValueAccessor {
    #private;
    _isSelectComponent: boolean;
    appearance: MatFormFieldAppearance;
    displayBehaviour: DisplayBehaviour | string;
    displayDensity: DisplayDensity | string;
    label: string;
    placeholder: string;
    validators: ValidatorFn | ValidatorFn[] | null;
    readonly selectOptions: import("@angular/core").InputSignal<ISelectOption<unknown>[]>;
    get multiple(): boolean;
    set multiple(value: boolean | string);
    private _multiple;
    get virtualScroll(): boolean | string;
    set virtualScroll(value: boolean | string);
    private _virtualScroll;
    readonly loading: import("@angular/core").InputSignal<boolean>;
    virtualScrollItemSize: number;
    formControl: FormControl<string | string[] | ISelectOption<unknown>>;
    readonly selectionSignal: {
        (): string[];
        set(value: string[]): void;
        update(fn: (value: string[]) => string[]): void;
        select(value: string): void;
        deselect(value: string): void;
        clear(): void;
    };
    readonly selectedValues: import("@angular/core").Signal<string[]>;
    get highlight(): string;
    get isNotInitial(): string | number | ISelectOption<unknown>;
    readonly _selectOptions$: import("rxjs").Observable<ISelectOption<unknown>[]>;
    readonly options$: import("rxjs").Observable<ISelectOption<unknown>[]>;
    onChange: (input: any) => void;
    onTouched: () => void;
    constructor();
    ngOnInit(): void;
    ngOnChanges({ displayDensity, validators }: SimpleChanges): void;
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    trackBy(i: number, item: ISelectOption): unknown;
    displayWith(value: any): any;
    private _updateLabel;
    isSelect(option: ISelectOption): boolean;
    onSelect(event: MatCheckboxChange, option: ISelectOption): void;
    clear(): void;
    getErrorMessage(): string;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgmMatSelectComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NgmMatSelectComponent, "ngm-mat-select", never, { "disabled": { "alias": "disabled"; "required": false; }; "disableRipple": { "alias": "disableRipple"; "required": false; }; "color": { "alias": "color"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "displayBehaviour": { "alias": "displayBehaviour"; "required": false; }; "displayDensity": { "alias": "displayDensity"; "required": false; }; "label": { "alias": "label"; "required": false; }; "placeholder": { "alias": "placeholder"; "required": false; }; "validators": { "alias": "validators"; "required": false; }; "selectOptions": { "alias": "selectOptions"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}
export declare function selectionModel<T>(): {
    (): T[];
    set(value: T[]): void;
    update(fn: (value: T[]) => T[]): void;
    select(value: T): void;
    deselect(value: T): void;
    clear(): void;
};
