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 { ISelectOption, NgmAppearance, NgmOcapCoreService } from '@metad/ocap-angular/core';
import { DataSettings, Dimension, DisplayBehaviour, FilterSelectionType, FlatTreeNode, IDimensionMember, IMember, ISlicer, TimeRange, TreeNodeInterface } from '@metad/ocap-core';
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 _cdr;
    coreService: NgmOcapCoreService;
    readonly i18nSelection: import("@angular/core").Signal<any>;
    readonly label: import("@angular/core").InputSignal<string>;
    readonly dataSettings: import("@angular/core").InputSignal<DataSettings>;
    readonly dimension: import("@angular/core").InputSignal<Dimension>;
    readonly options: import("@angular/core").InputSignal<SmartFilterOptions>;
    members: import("@angular/core").WritableSignal<IMember[]>;
    readonly appearance: import("@angular/core").InputSignal<NgmAppearance>;
    readonly displayDensity: import("@angular/core").InputSignal<string>;
    readonly disabled: import("@angular/core").InputSignalWithTransform<boolean, string | boolean>;
    readonly _disabled: import("@angular/core").ModelSignal<boolean>;
    loadingChanging: EventEmitter<boolean>;
    cdkVirtualScrollViewPort: CdkVirtualScrollViewport;
    searchInput: ElementRef<HTMLInputElement>;
    readonly disabled$: import("@angular/core").Signal<boolean>;
    readonly slicerSignal: import("@angular/core").WritableSignal<ISlicer>;
    readonly hierarchy: import("@angular/core").ModelSignal<string>;
    /**
     * Compatible with `displayDensity` and `appearance.displayDensity`
     */
    readonly _displayDensity: import("@angular/core").Signal<string>;
    readonly displayBehaviour: import("@angular/core").ModelSignal<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 _dimension: import("@angular/core").Signal<{
        hierarchy: string;
        level: string;
        displayBehaviour: DisplayBehaviour;
        dimension?: string;
        members?: import("@metad/ocap-core").Member[];
        caption?: string;
        name?: string;
        memberCaption?: string;
        zeroSuppression?: boolean;
        unbookedData?: boolean;
        displayHierarchy?: boolean;
        properties?: string[];
        parameter?: string;
        exclude?: boolean;
        order?: import("@metad/ocap-core").OrderDirection;
    }>;
    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 maxTagCount: import("@angular/core").Signal<number>;
    readonly autoActiveFirst$: import("rxjs").Observable<boolean>;
    readonly selectionType: import("@angular/core").Signal<FilterSelectionType>;
    readonly isSingleRange: import("@angular/core").Signal<boolean>;
    readonly multiple: import("@angular/core").Signal<boolean>;
    readonly isCalendar: import("@angular/core").Signal<boolean>;
    readonly dateVariables: import("@metad/ocap-angular/core").DateVariable[];
    readonly isTimeRangesSlicer: import("@angular/core").Signal<boolean>;
    readonly slicerLabel: import("@angular/core").Signal<string>;
    readonly members$: import("rxjs").Observable<{
        key: string;
        value: import("@metad/ocap-core").PrimitiveType;
        caption: string;
    }[]>;
    readonly loading$: import("rxjs").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;
    toggleMember(member: IMember): void;
    openValueHelp(): Promise<void>;
    onAutocompleteOpened(): void;
    /**
     * Open dialog for create dynamic date ranges of dimension
     *
     * @param property property of dimension
     * @param variable dynamic time variable
     */
    openDynamicDateHelp(variable?: TimeRange): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgmSmartFilterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NgmSmartFilterComponent, "ngm-smart-filter", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "dataSettings": { "alias": "dataSettings"; "required": false; "isSignal": true; }; "dimension": { "alias": "dimension"; "required": false; "isSignal": true; }; "options": { "alias": "options"; "required": false; "isSignal": true; }; "appearance": { "alias": "appearance"; "required": false; "isSignal": true; }; "displayDensity": { "alias": "displayDensity"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "_disabled": { "alias": "_disabled"; "required": false; "isSignal": true; }; "hierarchy": { "alias": "hierarchy"; "required": false; "isSignal": true; }; "displayBehaviour": { "alias": "displayBehaviour"; "required": false; "isSignal": true; }; }, { "_disabled": "_disabledChange"; "loadingChanging": "loadingChanging"; "hierarchy": "hierarchyChange"; "displayBehaviour": "displayBehaviourChange"; }, never, ["[ngmPrefix]", "[ngmSuffix]"], true, never>;
}
