import { SelectionModel } from '@angular/cdk/collections';
import { FlatTreeControl } from '@angular/cdk/tree';
import { AfterViewInit, ElementRef, EventEmitter, Injector, OnDestroy, OnInit, TemplateRef } from '@angular/core';
import { Observable, Subscription } from 'rxjs';
import { ServiceResponse } from '../../interfaces/service-response.interface';
import { OTreeComponentStateService } from '../../services/state/o-tree-component-state.service';
import { OTreePermissions } from '../../types/o-tree-permissions.type';
import { OTreeFlatNode } from '../../types/tree-flat-node.type';
import { OFormComponent } from '../form/o-form.component';
import { AbstractOServiceComponent } from '../o-service-component.class';
import { OTreeDao } from './o-tree-dao.service';
import { OTreeDataSource } from './o-tree.datasource';
import type { OTreeNodeComponent } from './tree-node/tree-node.component';
import { OPermissions } from '../../types/o-permissions.type';
import { SQLOrder } from '../../types/sql-order.type';
import { OQueryDataArgs } from '../../types/query-data-args.type';
import { MatPaginator } from '@angular/material/paginator';
import { OTreeComponentStateClass } from '../../services/state/o-tree-component-state.class';
import { OQueryParams } from '../../types/query-params.type';
import * as i0 from "@angular/core";
export declare const DEFAULT_INPUTS_O_TREE: string[];
export declare const DEFAULT_OUTPUTS_O_TREE: string[];
export declare class OTreeComponent extends AbstractOServiceComponent<OTreeComponentStateService> implements OnInit, OnDestroy, AfterViewInit {
    injector: Injector;
    getLevel: (node: OTreeFlatNode) => number;
    isExpandable: (node: OTreeFlatNode) => boolean;
    getChildren: (node: OTreeFlatNode) => any;
    getTreeNodeChildren(node: OTreeFlatNode): any;
    getRecursiveChildrenNode(node: OTreeFlatNode): any;
    getComponentFilter(existingFilter?: any): any;
    hasChild: (_: number, _nodeData: OTreeFlatNode) => boolean;
    hasNoContent: (_: number, _nodeData: OTreeFlatNode) => boolean;
    hasLoadMore: (node: OTreeFlatNode) => boolean;
    onLoadMore(event: Event, node: OTreeFlatNode): void;
    isLastChildAndHasMore(node: OTreeFlatNode): boolean;
    dataSource: OTreeDataSource;
    refreshButton: boolean;
    deleteButton: boolean;
    showButtonsText: boolean;
    visibleColumns: string;
    separator: string;
    parentColumn: string;
    sortColumn: string;
    selectAllCheckboxVisible: boolean;
    selectAllCheckbox: boolean;
    recursive: boolean;
    protected _quickFilter: boolean;
    paginationControls: boolean;
    quickFilterColumns: string;
    selectedNode: OTreeFlatNode;
    childreNodes: OTreeFlatNode[];
    nodesArray: OTreeFlatNode[];
    ancestors: any[];
    onNodeSelected: EventEmitter<any>;
    onNodeExpanded: EventEmitter<any>;
    onNodeCollapsed: EventEmitter<any>;
    onLoadNextLevel: EventEmitter<any>;
    onNodeClick: EventEmitter<any>;
    rootTitle: string;
    rootNodes: OTreeFlatNode[];
    daoTree: OTreeDao;
    leafNodeTemplate: TemplateRef<any>;
    parentNodeTemplate: TemplateRef<any>;
    treeFlattener: any;
    treeControl: FlatTreeControl<OTreeFlatNode, OTreeFlatNode>;
    matpaginator: MatPaginator;
    set nodeTemplate(value: TemplateRef<any>);
    treeNode: OTreeNodeComponent;
    protected permissions: OTreePermissions;
    protected actionsPermissions: OPermissions[];
    protected visibleColumnsArray: string[];
    enabledDeleteButton: boolean;
    protected subscription: Subscription;
    route: string;
    sortColumnArray: SQLOrder[];
    get showTreeMenuButton(): boolean;
    constructor(injector: Injector, elRef: ElementRef, form: OFormComponent);
    ngOnInit(): void;
    initialize(): void;
    protected initializeDao(): void;
    initializeParams(): void;
    get state(): OTreeComponentStateClass;
    ngAfterViewInit(): void;
    ngOnDestroy(): void;
    registerTreeNode(oTreeNode: OTreeNodeComponent): void;
    checkboxClicked(event: Event): void;
    leafNodeClicked(event: Event, node: OTreeFlatNode): void;
    parentNodeClicked(event: Event, node: OTreeFlatNode): void;
    protected nodeClicked(node: OTreeFlatNode, event: Event): void;
    isRootNode(node: OTreeFlatNode): boolean;
    onClickToggleButton(event: Event, node: any): void;
    toggleNode(node: OTreeFlatNode, expand: boolean): void;
    private updateAsyncTree;
    todoLeafItemSelectionToggle(node: OTreeFlatNode): void;
    todoItemSelectionToggle(node: OTreeFlatNode): void;
    descendantsAllSelected(node: OTreeFlatNode): boolean;
    descendantsPartiallySelected(node: OTreeFlatNode): boolean;
    protected setTreeControl(): void;
    protected setDatasource(): void;
    getParentNodes(node: OTreeFlatNode, index: number, tree: OTreeFlatNode[]): OTreeFlatNode[];
    filterData(value?: string, loadMore?: boolean): void;
    expandNodesWithNodes(treeData: OTreeFlatNode[]): void;
    getDataArray(): any[];
    setDataArray(data: any): void;
    transformer: (node: any, level: number, parentNode?: any) => OTreeFlatNode;
    onSelectCheckboxChange(visible: boolean): void;
    protected sort(array: OTreeFlatNode[]): void;
    protected getItemText(item: any): string;
    getItemKey(item: any): string;
    protected filterByQuickFilterColumns(item: any, quickfilter: string): boolean;
    add(e?: Event): void;
    protected getNodeId(item: any, parentNode: any): string;
    protected navigateToViewDetail(node: OTreeFlatNode): void;
    isSelectedNode(node: OTreeFlatNode): boolean;
    onItemDetailClick(node: OTreeFlatNode): void;
    get selection(): SelectionModel<any>;
    getSelectedItems(): any[];
    parseSortColumn(): void;
    getQueryArguments(filter: object, ovrrArgs?: OQueryDataArgs): OQueryParams;
    private shouldBeRoot;
    protected createTreeNode(flatNode: OTreeFlatNode): any;
    protected getFlatNodeIdentifier(flatNode: OTreeFlatNode): string;
    private addChildToParent;
    addParentToRootIfNoGrandparentSelected(parent: OTreeFlatNode, parentKey: string, selectedKeys: Set<string>, nodeMap: Map<string, any>, rootNodes: any[]): void;
    private ensureNodeInMap;
    private getSelectedNodeKeys;
    getSelectedFlatNodes(): OTreeFlatNode[];
    getParentNode(node: any): OTreeFlatNode;
    reloadData(clearSelectedItems?: boolean): void;
    getLogicalLevel(node: OTreeFlatNode): number;
    hasFakeRoot(): boolean;
    childQueryData(flatNode: OTreeFlatNode): Observable<ServiceResponse> | Observable<any>;
    static ɵfac: i0.ɵɵFactoryDeclaration<OTreeComponent, [null, null, { optional: true; }]>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OTreeComponent, "o-tree", never, { "oattr": { "alias": "attr"; "required": false; }; "service": { "alias": "service"; "required": false; }; "entity": { "alias": "entity"; "required": false; }; "columns": { "alias": "columns"; "required": false; }; "keys": { "alias": "keys"; "required": false; }; "parentKeys": { "alias": "parent-keys"; "required": false; }; "queryMethod": { "alias": "query-method"; "required": false; }; "insertButton": { "alias": "insert-button"; "required": false; }; "refreshButton": { "alias": "refresh-button"; "required": false; }; "deleteButton": { "alias": "delete-button"; "required": false; }; "visibleColumns": { "alias": "visible-columns"; "required": false; }; "selectAllCheckbox": { "alias": "select-all-checkbox"; "required": false; }; "separator": { "alias": "separator"; "required": false; }; "parentColumn": { "alias": "parent-column"; "required": false; }; "sortColumn": { "alias": "sort-column"; "required": false; }; "selectAllCheckboxVisible": { "alias": "select-all-checkbox-visible"; "required": false; }; "filterCaseSensitive": { "alias": "filter-case-sensitive"; "required": false; }; "quickFilter": { "alias": "quick-filter"; "required": false; }; "quickFilterPlaceholder": { "alias": "quick-filter-placeholder"; "required": false; }; "quickFilterColumns": { "alias": "quick-filter-columns"; "required": false; }; "detailMode": { "alias": "detail-mode"; "required": false; }; "detailFormRoute": { "alias": "detail-form-route"; "required": false; }; "showButtonsText": { "alias": "show-buttons-text"; "required": false; }; "rootTitle": { "alias": "root-title"; "required": false; }; "recursive": { "alias": "recursive"; "required": false; }; "route": { "alias": "route"; "required": false; }; }, { "onNodeSelected": "onNodeSelected"; "onNodeExpanded": "onNodeExpanded"; "onNodeCollapsed": "onNodeCollapsed"; "onLoadNextLevel": "onLoadNextLevel"; "onDataLoaded": "onDataLoaded"; "onNodeClick": "onNodeClick"; }, ["leafNodeTemplate", "parentNodeTemplate", "nodeTemplate", "treeNode"], ["[o-tree-button]"], true, never>;
}
