import * as _angular_core from '@angular/core';
import { EventEmitter, TemplateRef } from '@angular/core';
import * as i4 from '@acorex/cdk/common';
import { AXClickEvent, NXComponent, AXExpandToggleIcons, AXValueChangedEvent } from '@acorex/cdk/common';
import { AXPlatform } from '@acorex/core/platform';
import * as i3 from '@angular/common';
import * as i5 from '@acorex/components/decorators';
import * as i6 from '@acorex/components/check-box';
import * as i7 from '@acorex/components/form';
import * as i8 from '@angular/forms';
import * as i9 from '@acorex/components/tooltip';
import * as i10 from '@acorex/components/loading';

declare class AXTreeItemClickBaseEventLegacy extends AXClickEvent {
    nativeElement: any;
}
type AXTreeViewSelectionBehaviorLegacy = 'autoExpand' | 'cascade' | 'indeterminate';
type AXTreeViewExpandBehaviorLegacy = 'click' | 'dbClick' | 'defult';
type AXTreeViewOperationMethodLegacy = 'expand' | 'active' | 'visible' | 'disabled';
type AXTreeViewLookLegacy = 'with-line' | 'defult';
type AXTreeViewSelectionScopeLegacy = 'all' | 'parent' | 'children';
declare abstract class AXTreeViewBaseLegacy {
    abstract getChildren(item: unknown): unknown[];
    abstract hasChildren(item: unknown): boolean;
    abstract itemTemplate: any;
    abstract disableField(): string;
    abstract childrenField(): string;
    abstract valueField(): string;
    abstract activeField(): string;
    abstract hasChildField(): string;
    abstract tooltipField(): string;
    abstract showEmptyNodeMassage(): boolean;
    abstract expandOn(): AXTreeViewExpandBehaviorLegacy;
    abstract focusNodeEnabled(): boolean;
    abstract toggleIcons(): {
        expanded: string;
        collapsed: string;
    } | null;
    abstract itemsPromise: boolean;
    abstract itemsSignal(): unknown[];
    abstract fetchData(item: unknown): void;
    abstract setNodeLoading(value: unknown, loading: boolean): void;
    abstract handleUnActiveNode(items: unknown[]): void;
    abstract onCollapsedChanged: EventEmitter<{
        component: any;
        data: unknown;
        nativeElement: any;
    }>;
    abstract onNodeClick: EventEmitter<{
        component: any;
        data: unknown;
        nativeElement: any;
    }>;
    abstract onNodedbClick: EventEmitter<{
        component: any;
        data: unknown;
        nativeElement: any;
    }>;
}

declare class AXTreeViewItemLegacyComponent extends NXComponent {
    #private;
    constructor();
    treeView: AXTreeViewBaseLegacy;
    item: _angular_core.InputSignal<unknown>;
    isExpanded: _angular_core.ModelSignal<boolean>;
    isActive: _angular_core.ModelSignal<boolean>;
    isLoading: _angular_core.InputSignal<boolean>;
    executorChanges: _angular_core.InputSignal<AXTreeViewOperationMethodLegacy>;
    protected platformService: AXPlatform;
    protected arrowIcon: _angular_core.Signal<string>;
    protected handleArrowNodeClick(): void;
    protected handleTextClick(): void;
    protected handleTextDbClick(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewItemLegacyComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewItemLegacyComponent, "ax-tree-view-item-legacy", never, { "item": { "alias": "item"; "required": false; "isSignal": true; }; "isExpanded": { "alias": "isExpanded"; "required": false; "isSignal": true; }; "isActive": { "alias": "isActive"; "required": false; "isSignal": true; }; "isLoading": { "alias": "isLoading"; "required": false; "isSignal": true; }; "executorChanges": { "alias": "executorChanges"; "required": false; "isSignal": true; }; }, { "isExpanded": "isExpandedChange"; "isActive": "isActiveChange"; }, never, ["ax-check-box", "ax-prefix", "ax-text", "ax-suffix", "*"], true, never>;
}

declare class AXTreeViewLegacyComponent extends NXComponent {
    #private;
    /** @ignore */
    private get __hostClass();
    itemsSignal: _angular_core.WritableSignal<unknown[]>;
    itemsPromise: any;
    items: _angular_core.InputSignal<unknown[] | ((selectedItemId?: string | number) => unknown[] | Promise<unknown[]>)>;
    protected get resolvedItems(): unknown[];
    showCheckbox: _angular_core.InputSignal<boolean>;
    hasCheckboxField: _angular_core.InputSignal<string>;
    selectionMode: _angular_core.InputSignal<"single" | "multiple">;
    selectionBehavior: _angular_core.InputSignal<AXTreeViewSelectionBehaviorLegacy>;
    selectionScope: _angular_core.InputSignal<AXTreeViewSelectionScopeLegacy>;
    focusNodeEnabled: _angular_core.InputSignal<boolean>;
    valueField: _angular_core.InputSignal<string>;
    textField: _angular_core.InputSignal<string>;
    visibleField: _angular_core.InputSignal<string>;
    disableField: _angular_core.InputSignal<string>;
    hasChildField: _angular_core.InputSignal<string>;
    selectedField: _angular_core.InputSignal<string>;
    expandedField: _angular_core.InputSignal<string>;
    tooltipField: _angular_core.InputSignal<string>;
    childrenField: _angular_core.InputSignal<string>;
    activeField: _angular_core.InputSignal<string>;
    indeterminateField: _angular_core.InputSignal<string>;
    parentField: _angular_core.InputSignal<string>;
    iconField: _angular_core.InputSignal<string>;
    toggleIcons: _angular_core.InputSignal<AXExpandToggleIcons>;
    look: _angular_core.InputSignal<AXTreeViewLookLegacy>;
    showEmptyNodeMassage: _angular_core.InputSignal<boolean>;
    onSelectionChanged: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEventLegacy>;
    onItemSelectedChanged: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEventLegacy>;
    onNodeClick: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEventLegacy>;
    onCollapsedChanged: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEventLegacy>;
    onNodedbClick: _angular_core.OutputEmitterRef<AXTreeItemClickBaseEventLegacy>;
    executorChanges: _angular_core.WritableSignal<AXTreeViewOperationMethodLegacy>;
    itemTemplate?: TemplateRef<unknown>;
    emptyTemplate?: TemplateRef<unknown>;
    protected platformService: AXPlatform;
    expandOn: _angular_core.InputSignal<AXTreeViewExpandBehaviorLegacy>;
    protected handleNodeSelectionClick(event: AXValueChangedEvent, item: unknown): void;
    /**
     *
     * auto expand
     *
     */
    private toggleExpand;
    /**
     *
     * expand and change value parent change
     *
     */
    private expandAndToggleSelection;
    private applySelectionToChildren;
    /**
     *
     * indeterminate logic
     *
     */
    private updateParentSelection;
    private findParent;
    /**
     *
     * find node selected true for emit Selections
     *
     */
    private findSelectedNodes;
    /**
     *
     * find for emit Selections single mode
     *
     */
    private handleUnSelectNode;
    /**
     *
     * lazy load logic
     *
     */
    fetchData(selectedNode?: unknown): void;
    private findNode;
    /**
     *
     * emit when arrow click
     *
     */
    protected handleNodeExpandClick(node: AXTreeItemClickBaseEventLegacy): void;
    handleUnActiveNode(unActiveSource: unknown[]): void;
    private loadingState;
    protected isNodeLoading(nodeId: string | number): boolean;
    setNodeLoading(nodeId: string | number, isLoading: boolean): void;
    executeOnTreeNode(node: unknown, operation: AXTreeViewOperationMethodLegacy, value: boolean): void;
    refresh(): void;
    setNodeExpandAndChildren(valueFields: (number | string)[], value: boolean): Promise<void>;
    private findNodesByValueField;
    private expandNodeAndAllChildren;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewLegacyComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXTreeViewLegacyComponent, "ax-tree-view-legacy", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "showCheckbox": { "alias": "showCheckbox"; "required": false; "isSignal": true; }; "hasCheckboxField": { "alias": "hasCheckboxField"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "selectionBehavior": { "alias": "selectionBehavior"; "required": false; "isSignal": true; }; "selectionScope": { "alias": "selectionScope"; "required": false; "isSignal": true; }; "focusNodeEnabled": { "alias": "focusNodeEnabled"; "required": false; "isSignal": true; }; "valueField": { "alias": "valueField"; "required": false; "isSignal": true; }; "textField": { "alias": "textField"; "required": false; "isSignal": true; }; "visibleField": { "alias": "visibleField"; "required": false; "isSignal": true; }; "disableField": { "alias": "disableField"; "required": false; "isSignal": true; }; "hasChildField": { "alias": "hasChildField"; "required": false; "isSignal": true; }; "selectedField": { "alias": "selectedField"; "required": false; "isSignal": true; }; "expandedField": { "alias": "expandedField"; "required": false; "isSignal": true; }; "tooltipField": { "alias": "tooltipField"; "required": false; "isSignal": true; }; "childrenField": { "alias": "childrenField"; "required": false; "isSignal": true; }; "activeField": { "alias": "activeField"; "required": false; "isSignal": true; }; "indeterminateField": { "alias": "indeterminateField"; "required": false; "isSignal": true; }; "parentField": { "alias": "parentField"; "required": false; "isSignal": true; }; "iconField": { "alias": "iconField"; "required": false; "isSignal": true; }; "toggleIcons": { "alias": "toggleIcons"; "required": false; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; "showEmptyNodeMassage": { "alias": "showEmptyNodeMassage"; "required": false; "isSignal": true; }; "itemTemplate": { "alias": "itemTemplate"; "required": false; }; "emptyTemplate": { "alias": "emptyTemplate"; "required": false; }; "expandOn": { "alias": "expandOn"; "required": false; "isSignal": true; }; }, { "onSelectionChanged": "onSelectionChanged"; "onItemSelectedChanged": "onItemSelectedChanged"; "onNodeClick": "onNodeClick"; "onCollapsedChanged": "onCollapsedChanged"; "onNodedbClick": "onNodedbClick"; }, never, never, true, never>;
}

declare class AXTreeViewLegacyModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXTreeViewLegacyModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<AXTreeViewLegacyModule, never, [typeof AXTreeViewLegacyComponent, typeof AXTreeViewItemLegacyComponent, typeof i3.CommonModule, typeof i4.AXCommonModule, typeof i5.AXDecoratorModule, typeof i6.AXCheckBoxModule, typeof i7.AXFormModule, typeof i8.FormsModule, typeof i9.AXTooltipModule, typeof i10.AXLoadingModule], [typeof AXTreeViewLegacyComponent, typeof AXTreeViewItemLegacyComponent]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<AXTreeViewLegacyModule>;
}

export { AXTreeItemClickBaseEventLegacy, AXTreeViewBaseLegacy, AXTreeViewItemLegacyComponent, AXTreeViewLegacyComponent, AXTreeViewLegacyModule };
export type { AXTreeViewExpandBehaviorLegacy, AXTreeViewLookLegacy, AXTreeViewOperationMethodLegacy, AXTreeViewSelectionBehaviorLegacy, AXTreeViewSelectionScopeLegacy };
