import { FlatTreeControl } from '@angular/cdk/tree';
import { ChangeDetectorRef, EventEmitter, Injector, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { MatTreeFlatDataSource, MatTreeFlattener } from '@angular/material/tree';
import { AbstractControl, ControlValueAccessor, NgControl } from '@angular/forms';
import { TranslateService } from '@ngx-translate/core';
import { FlatTreeConfigModel } from '../../models/components/flat-tree-config.model';
import { FlatTreeNodeModel } from '../../models/components/flat-tree-node.model';
import { ValidatorService } from '../../services/validator.service';
import { CdkVirtualScrollViewport } from '@angular/cdk/scrolling';
import * as i0 from "@angular/core";
export declare class CvaFlatTreeComponent implements ControlValueAccessor, OnInit, OnChanges {
    private translateService;
    private injector;
    private cdr;
    label: string;
    searchPlaceholder: string;
    required: boolean;
    value: any[];
    valueObjRef: Map<any, FlatTreeNodeModel>;
    multiple: boolean;
    disabled: boolean | undefined;
    isView: (() => boolean) | boolean;
    isDisplayChooseTreeOnly: boolean;
    isHideCheckbox: boolean;
    isCollapseSelected: boolean;
    selectedLabelTitle: string;
    /** height of tree view */
    viewHeight: number;
    /** height of node view */
    itemSize: number;
    paddingLeft: number;
    ignoreCountValue: any[];
    percentOfLabelOutside: number;
    treeConfig?: FlatTreeConfigModel;
    isSearchOutSide: boolean;
    searchTextOutSide: string;
    errorMessages: Map<string, (e?: any) => string>;
    fullDatasource: FlatTreeNodeModel[];
    searchText: string;
    filterDatasource: FlatTreeNodeModel[];
    treeControl: FlatTreeControl<FlatTreeNodeModel>;
    treeFlattener: MatTreeFlattener<FlatTreeNodeModel, FlatTreeNodeModel>;
    dataSource: MatTreeFlatDataSource<FlatTreeNodeModel, FlatTreeNodeModel>;
    fullDataTreeControl: FlatTreeControl<FlatTreeNodeModel>;
    fullDataTreeFlattener: MatTreeFlattener<FlatTreeNodeModel, FlatTreeNodeModel>;
    fullDataDataSource: MatTreeFlatDataSource<FlatTreeNodeModel, FlatTreeNodeModel>;
    selectedTreeControl: FlatTreeControl<FlatTreeNodeModel>;
    selectedTreeFlattener: MatTreeFlattener<FlatTreeNodeModel, FlatTreeNodeModel>;
    selectedDataSource: MatTreeFlatDataSource<FlatTreeNodeModel, FlatTreeNodeModel>;
    selectedFullDataSource: FlatTreeNodeModel[];
    selectedFullValues: Map<any, any>;
    selectionChange: EventEmitter<any>;
    onNodeClick: EventEmitter<FlatTreeNodeModel>;
    nodeClicked: FlatTreeNodeModel | undefined;
    isFormControl: boolean;
    /**
     * Khi true: tree chỉ dùng cho navigation (click → emit event).
     * Skip toàn bộ check/uncheck/writeValue logic để tối ưu với dataset lớn.
     */
    isNavigationOnly: boolean;
    formControl: AbstractControl | undefined;
    mapIndexes: Map<any, any>;
    chooseVirtualScroll?: CdkVirtualScrollViewport;
    selectedVirtualScroll?: CdkVirtualScrollViewport;
    constructor(translateService: TranslateService, injector: Injector, cdr: ChangeDetectorRef, ngControl: NgControl);
    get NsValidator(): typeof ValidatorService;
    setSelectedNode(): void;
    setDataSourceOrigin(): void;
    ngOnInit(): void;
    getDisplayInputFunc(node: FlatTreeNodeModel): boolean;
    getDisabledInputFunc(node: FlatTreeNodeModel): boolean;
    checkDisabledNode(node: FlatTreeNodeModel): boolean;
    callValidator(): void;
    checkRequired(isRequired: boolean | (() => boolean)): boolean;
    checkIsView(isView: boolean | (() => boolean)): boolean;
    ngOnChanges(simpleChanges: SimpleChanges): void;
    transformer: (node: FlatTreeNodeModel, level: number) => FlatTreeNodeModel;
    propagateChange: (_: any) => void;
    propagateTouched: () => void;
    registerOnChange(fn: any): void;
    registerOnTouched(fn: any): void;
    writeValue(obj: any): void;
    updateSelectedTree(): void;
    checkedDefaultValue(): void;
    getAllChildNode(treeControl: FlatTreeControl<FlatTreeNodeModel>, node: FlatTreeNodeModel): FlatTreeNodeModel[];
    updateSelectAll(childrenNode?: FlatTreeNodeModel[]): void;
    checkParentNode(checked: boolean, node: FlatTreeNodeModel, isSelectedChange?: boolean): void;
    selectedTreeChange(node: FlatTreeNodeModel): void;
    checkLeafNode(checked: boolean, node: FlatTreeNodeModel, isSelectedChange?: boolean): void;
    getRootNode(node: FlatTreeNodeModel): FlatTreeNodeModel | null;
    toggleTreeControl(treeControl: FlatTreeControl<FlatTreeNodeModel>, node: FlatTreeNodeModel): void;
    toggleSelectedTree(node?: FlatTreeNodeModel): void;
    onChangeSearchText(): void;
    getDisplayTreeDataSource(dataOrigin: FlatTreeNodeModel[], copiedData: FlatTreeNodeModel[], valueSet?: Set<any>): void;
    getCheckedSelectedTreeDataSource(dataOrigin: FlatTreeNodeModel[], copiedData: FlatTreeNodeModel[]): any[];
    expandTreeDataSource(treeControl: FlatTreeControl<FlatTreeNodeModel>, expandProperty: 'isExpanded' | 'isFilterExpanded'): void;
    onLeafNodeClick(node: FlatTreeNodeModel): void;
    onParentNodeClick(node: FlatTreeNodeModel): void;
    toggleNodeCheck(node: FlatTreeNodeModel, checked: boolean): void;
    getTotalSelected(nodes: FlatTreeNodeModel[], valueSet?: Set<any>): number;
    private _getLevel;
    private _isExpandable;
    private _getChildren;
    static ɵfac: i0.ɵɵFactoryDeclaration<CvaFlatTreeComponent, [null, null, null, { optional: true; self: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CvaFlatTreeComponent, "cva-flat-tree", never, { "label": { "alias": "label"; "required": false; }; "searchPlaceholder": { "alias": "searchPlaceholder"; "required": false; }; "required": { "alias": "required"; "required": false; }; "value": { "alias": "value"; "required": false; }; "multiple": { "alias": "multiple"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "isView": { "alias": "isView"; "required": false; }; "isDisplayChooseTreeOnly": { "alias": "isDisplayChooseTreeOnly"; "required": false; }; "isHideCheckbox": { "alias": "isHideCheckbox"; "required": false; }; "isCollapseSelected": { "alias": "isCollapseSelected"; "required": false; }; "selectedLabelTitle": { "alias": "selectedLabelTitle"; "required": false; }; "viewHeight": { "alias": "viewHeight"; "required": false; }; "itemSize": { "alias": "itemSize"; "required": false; }; "ignoreCountValue": { "alias": "ignoreCountValue"; "required": false; }; "percentOfLabelOutside": { "alias": "percentOfLabelOutside"; "required": false; }; "treeConfig": { "alias": "treeConfig"; "required": false; }; "isSearchOutSide": { "alias": "isSearchOutSide"; "required": false; }; "searchTextOutSide": { "alias": "searchTextOutSide"; "required": false; }; "errorMessages": { "alias": "errorMessages"; "required": false; }; "fullDatasource": { "alias": "fullDatasource"; "required": false; }; "nodeClicked": { "alias": "nodeClicked"; "required": false; }; "isFormControl": { "alias": "isFormControl"; "required": false; }; "isNavigationOnly": { "alias": "isNavigationOnly"; "required": false; }; }, { "selectionChange": "selectionChange"; "onNodeClick": "onNodeClick"; }, never, never, false, never>;
}
