import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import { FlatTreeControl } from '@angular/cdk/tree';
import { ElementRef, EventEmitter } from '@angular/core';
import { ControlValueAccessor, FormControl } from '@angular/forms';
import { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete';
import { MatCheckboxChange } from '@angular/material/checkbox';
import { DisplayDensity, ISelectOption, NgmAppearance } from '@metad/ocap-angular/core';
import { DataSettings, Dimension, DisplayBehaviour, FilterSelectionType, FlatTreeNode, IDimensionMember, IMember, ISlicer, TreeNodeInterface } from '@metad/ocap-core';
import { BehaviorSubject } from 'rxjs';
import { ControlOptions } from '../types';
import * as i0 from "@angular/core";
export interface SmartFilterOptions extends ControlOptions {
    maxTagCount?: number;
    autoActiveFirst?: boolean;
    initialLevel?: number;
}
export interface SmartFilterState {
    options: SmartFilterOptions;
}
export declare class NgmSmartFilterComponent implements ControlValueAccessor {
    private smartFilterService;
    private _dialog;
    private _viewContainerRef;
    private _dataSettings;
    get dataSettings(): DataSettings;
    set dataSettings(value: DataSettings);
    private _dimension;
    get dimension(): Dimension;
    set dimension(value: Dimension);
    private _options;
    get options(): SmartFilterOptions;
    set options(value: SmartFilterOptions);
    get slicer(): ISlicer;
    set slicer(value: ISlicer);
    readonly slicer$: BehaviorSubject<ISlicer>;
    members: import("@angular/core").WritableSignal<IMember[]>;
    private _appearance;
    get appearance(): NgmAppearance;
    set appearance(value: NgmAppearance);
    get displayDensity(): string;
    set displayDensity(value: string);
    readonly displayDensity$: import("@angular/core").WritableSignal<DisplayDensity>;
    get disabled(): boolean;
    set disabled(value: boolean | string);
    private disabled$;
    loadingChanging: EventEmitter<boolean>;
    cdkVirtualScrollViewPort: CdkVirtualScrollViewport;
    searchInput: ElementRef<HTMLInputElement>;
    get multiple(): boolean;
    get hierarchy(): string;
    set hierarchy(value: string);
    /**
     * Compatible with `displayDensity` and `appearance.displayDensity`
     */
    readonly _displayDensity: import("@angular/core").Signal<DisplayDensity>;
    get displayBehaviour(): DisplayBehaviour;
    get searchHighlight(): any;
    virtualScrollItemSize: number;
    treeNodePaddingIndent: number;
    private transformer;
    treeControl: FlatTreeControl<FlatTreeNode<any>, FlatTreeNode<any>>;
    private treeFlattener;
    private dataSource;
    readonly selectOptions$: import("rxjs").Observable<FlatTreeNode<any>[]>;
    private readonly entityType;
    readonly options$: import("rxjs").Observable<SmartFilterOptions>;
    readonly property: import("@angular/core").Signal<import("@metad/ocap-core").Property>;
    readonly hierarchies: import("@angular/core").Signal<import("@metad/ocap-core").PropertyHierarchy[]>;
    readonly label: import("@angular/core").Signal<string>;
    readonly placeholder$: import("rxjs").Observable<string>;
    readonly selectionType$: import("rxjs").Observable<FilterSelectionType>;
    readonly multiple$: import("rxjs").Observable<boolean>;
    readonly maxTagCount: import("@angular/core").Signal<number>;
    readonly autoActiveFirst$: import("rxjs").Observable<boolean>;
    readonly members$: import("rxjs").Observable<{
        key: string;
        value: import("@metad/ocap-core").PrimitiveType;
        caption: string;
    }[]>;
    readonly loading$: BehaviorSubject<boolean>;
    readonly membersSignal: import("@angular/core").Signal<{
        key: string;
        value: import("@metad/ocap-core").PrimitiveType;
        caption: string;
    }[]>;
    readonly isNotInitial: import("@angular/core").Signal<boolean>;
    restChips: import("@angular/core").WritableSignal<string[]>;
    readonly chips$: import("rxjs").Observable<ISelectOption<string>[]>;
    readonly membersTree$: import("rxjs").Observable<TreeNodeInterface<IDimensionMember>[]>;
    valueControl: FormControl<any>;
    selectable: boolean;
    removable: boolean;
    addOnBlur: boolean;
    readonly filteredOptions$: import("rxjs").Observable<FlatTreeNode<any>[]>;
    readonly separatorKeysCodes: number[];
    onChange: (input: ISlicer) => any;
    private loadingSub;
    private serviceSub;
    private slicerSub;
    private _treeNodesSub;
    constructor();
    writeValue(obj: any): void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    setDisabledState?(isDisabled: boolean): void;
    trackBy(index: number, item: IMember): string;
    trackByKey(index: number, item: FlatTreeNode<any>): string;
    trackByName(index: any, item: any): any;
    displayWithCaption(member: FlatTreeNode<unknown>): string;
    isSelected(option: FlatTreeNode<unknown>): boolean;
    onCheckboxChange(event: MatCheckboxChange, option: FlatTreeNode<any>): void;
    removeMember({ key }: IMember): void;
    clearMembers(): void;
    selectMember(event: MatAutocompleteSelectedEvent): void;
    onMemberSelect({ event, member }: {
        event: MatCheckboxChange;
        member: IMember;
    }): void;
    toggleMember(member: IMember): void;
    openValueHelp(event: any): Promise<void>;
    onAutocompleteOpened(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgmSmartFilterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NgmSmartFilterComponent, "ngm-smart-filter", never, { "dataSettings": { "alias": "dataSettings"; "required": false; }; "dimension": { "alias": "dimension"; "required": false; }; "options": { "alias": "options"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "displayDensity": { "alias": "displayDensity"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; }, { "loadingChanging": "loadingChanging"; }, never, ["[ngmPrefix]", "[ngmSuffix]"], true, never>;
}
