import * as _angular_core from '@angular/core';
import { Signal } from '@angular/core';
import { Tree as Tree$1 } from 'primeng/tree';
import { TreeNode, MenuItem } from 'primeng/api';
export { TreeNode } from 'primeng/api';
import { MTIcon } from '@masterteam/icons';
import { Directionality } from '@angular/cdk/bidi';
import { TranslocoService } from '@jsverse/transloco';

/**
 * Defines an action button for tree nodes
 */
interface TreeAction {
    icon?: MTIcon | undefined;
    severity?: 'info' | 'success' | 'warn' | 'danger' | 'secondary' | 'contrast' | 'help' | 'primary';
    variant?: 'text' | 'outlined' | undefined;
    size?: 'small' | 'large' | undefined;
    label?: string;
    tooltip?: string;
    hidden?: (node: any) => boolean;
    action: (node: any) => void;
    loading?: boolean | ((node: any) => boolean);
}
/**
 * Defines a context menu action for tree nodes
 */
interface TreeContextMenuAction {
    icon?: MTIcon | undefined;
    label: string;
    action: (node: any) => void;
}
/**
 * Tree action types - all possible events from tree component
 */
type TreeActionType = 'selectionChange' | 'nodeSelect' | 'nodeUnselect' | 'nodeExpand' | 'nodeCollapse';
/**
 * Tree action event interface - unified event structure for all tree actions
 */
interface TreeActionEvent {
    action: TreeActionType;
    data: any;
}

declare class Tree {
    transloco: TranslocoService;
    dir: Directionality | null;
    readonly primeTree: Signal<Tree$1 | undefined>;
    readonly value: _angular_core.InputSignal<TreeNode<any>[]>;
    readonly selection: _angular_core.ModelSignal<TreeNode<any> | TreeNode<any>[] | null | undefined>;
    readonly selectionMode: _angular_core.InputSignal<"single" | "multiple" | "checkbox" | undefined>;
    readonly nodeIcon: _angular_core.InputSignal<MTIcon | undefined>;
    readonly propagateSelectionUp: _angular_core.InputSignal<boolean>;
    readonly propagateSelectionDown: _angular_core.InputSignal<boolean>;
    readonly checkAllChildren: _angular_core.InputSignal<boolean>;
    readonly loading: _angular_core.InputSignal<boolean>;
    readonly emptyMessage: _angular_core.InputSignal<string>;
    readonly checkAllLabel: _angular_core.InputSignal<string>;
    readonly filterPlaceholder: _angular_core.InputSignal<string>;
    readonly dataKey: _angular_core.InputSignal<"key">;
    readonly filter: _angular_core.InputSignal<boolean>;
    readonly filterMode: _angular_core.InputSignal<"lenient" | "strict">;
    readonly styleClass: _angular_core.InputSignal<string>;
    readonly style: _angular_core.InputSignal<Record<string, string> | undefined>;
    readonly pInputs: _angular_core.InputSignal<Partial<Tree$1> | undefined>;
    readonly nodeActions: _angular_core.InputSignal<TreeAction[]>;
    readonly nodeContextmenuActions: _angular_core.InputSignal<TreeContextMenuAction[]>;
    readonly contextMenuSelection: _angular_core.ModelSignal<TreeNode<any> | null>;
    readonly contextMenuItems: Signal<MenuItem[]>;
    readonly action: _angular_core.OutputEmitterRef<TreeActionEvent>;
    CheckAllValue: _angular_core.WritableSignal<boolean>;
    readonly treeValue: Signal<TreeNode[]>;
    constructor();
    private isProcessingBatchSelection;
    onSelectionChange(event: TreeNode | TreeNode[] | null): void;
    onNodeSelect(event: {
        node: TreeNode;
    }): void;
    onNodeUnselect(event: {
        node: TreeNode;
    }): void;
    onNodeExpand(event: {
        node: TreeNode;
    }): void;
    onNodeCollapse(event: {
        node: TreeNode;
    }): void;
    onContextMenuSelect(event: TreeNode): void;
    getCheckAllValue(event: any): void;
    toggleNodeSelection(node: TreeNode, event: MouseEvent): void;
    handleCheckedNodes(): void;
    resolveActionLoading(action: TreeAction, node: any): boolean | undefined;
    nodeAction(action: TreeAction, node: any): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<Tree, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<Tree, "mt-tree", never, { "value": { "alias": "value"; "required": true; "isSignal": true; }; "selection": { "alias": "selection"; "required": false; "isSignal": true; }; "selectionMode": { "alias": "selectionMode"; "required": false; "isSignal": true; }; "nodeIcon": { "alias": "nodeIcon"; "required": false; "isSignal": true; }; "propagateSelectionUp": { "alias": "propagateSelectionUp"; "required": false; "isSignal": true; }; "propagateSelectionDown": { "alias": "propagateSelectionDown"; "required": false; "isSignal": true; }; "checkAllChildren": { "alias": "checkAllChildren"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "checkAllLabel": { "alias": "checkAllLabel"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "dataKey": { "alias": "dataKey"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterMode": { "alias": "filterMode"; "required": false; "isSignal": true; }; "styleClass": { "alias": "styleClass"; "required": false; "isSignal": true; }; "style": { "alias": "style"; "required": false; "isSignal": true; }; "pInputs": { "alias": "pInputs"; "required": false; "isSignal": true; }; "nodeActions": { "alias": "nodeActions"; "required": false; "isSignal": true; }; "nodeContextmenuActions": { "alias": "nodeContextmenuActions"; "required": false; "isSignal": true; }; "contextMenuSelection": { "alias": "contextMenuSelection"; "required": false; "isSignal": true; }; }, { "selection": "selectionChange"; "contextMenuSelection": "contextMenuSelectionChange"; "action": "action"; }, never, never, true, never>;
}

export { Tree };
export type { TreeAction, TreeActionEvent, TreeActionType, TreeContextMenuAction };
