import { TreeNode } from 'primeng/api';
import { SmzTreeMenuItem } from '../../modules/smz-trees/models/tree-menu-item';
import { SmzTreeState } from '../../modules/smz-trees/models/tree-state';
import { SmzTreeToolbarButton } from '../../modules/smz-trees/models/tree-toolbar-button';
import { SmzDataSourceTreeBuilder } from './data-source-tree-builder';
import { SmzBuilderUtilities } from '../common/smz-builder-utilities';
import { SmzTreeNode } from '../../modules/smz-trees/models/tree-node';
export declare class SmzTreeBuilder {
    _state: SmzTreeState;
    constructor();
    debugMode(): SmzTreeBuilder;
    menu(): SmzTreeMenuBuilder;
    hideHeader(): SmzTreeBuilder;
    setTitle(title: string): SmzTreeBuilder;
    toolbar(type: 'rounded-outlined' | 'rounded-filled' | 'rounded-borderless' | 'square-outlined' | 'square-filled' | 'square-borderless'): SmzTreeToolbarBuilder;
    emptyFeedback(): SmzTreeEmptyFeedbackBuilder;
    dragAndDrop(): SmzTreeDragAndDropBuilder;
    setSelection(mode: 'single' | 'multiple' | 'checkbox', propagateUp?: boolean, propagateDown?: boolean): SmzTreeBuilder;
    disableInitialNodeExpansion(): SmzTreeBuilder;
    setLoadingIcon(icon: string): SmzTreeBuilder;
    enableFilter(): SmzTreeBuilder;
    setFilterPlaceholder(text: string): SmzTreeBuilder;
    setFilterStyleClass(styleClass: string): SmzTreeBuilder;
    useSincronization(): SmzTreeBuilder;
    dataSource(): SmzDataSourceTreeBuilder<SmzTreeBuilder>;
    build(): SmzTreeState;
}
export declare class SmzTreeToolbarBuilder {
    _treeBuilder: SmzTreeBuilder;
    constructor(_treeBuilder: SmzTreeBuilder);
    setAlignment(alignment: 'start' | 'end'): SmzTreeToolbarBuilder;
    useTreeExpandButtons(expandLabel?: string, collapseLabel?: string): SmzTreeToolbarBuilder;
    buttons(): SmzTreeToolbarButtonCollectionBuilder;
    get tree(): SmzTreeBuilder;
}
export declare class SmzTreeToolbarButtonCollectionBuilder {
    private _toolbarBuilder;
    constructor(_toolbarBuilder: SmzTreeToolbarBuilder);
    button(label: string, icon?: string): SmzTreeToolbarButtonBuilder;
    get toolbar(): SmzTreeToolbarBuilder;
}
export declare class SmzTreeToolbarButtonBuilder {
    private _buttonsCollection;
    private _button;
    constructor(_buttonsCollection: SmzTreeToolbarButtonCollectionBuilder, _button: SmzTreeToolbarButton);
    setCallback(callback: (event: MouseEvent, items: TreeNode[], nodes: TreeNode[]) => void): SmzTreeToolbarButtonBuilder;
    setTooltip(tooltip: string): SmzTreeToolbarButtonBuilder;
    setColor(color: 'secondary' | 'success' | 'info' | 'warning' | 'help' | 'danger'): SmzTreeToolbarButtonBuilder;
    get buttons(): SmzTreeToolbarButtonCollectionBuilder;
}
export declare class SmzTreeEmptyFeedbackBuilder {
    _treeBuilder: SmzTreeBuilder;
    constructor(_treeBuilder: SmzTreeBuilder);
    setMessage(message: string): SmzTreeEmptyFeedbackBuilder;
    setExtraInfo(message: string): SmzTreeEmptyFeedbackBuilder;
    setImage(path: string): SmzTreeEmptyFeedbackBuilder;
    setButtonLabel(label: string): SmzTreeEmptyFeedbackBuilder;
    setButtonCallback(callback: (event?: MouseEvent) => void): SmzTreeEmptyFeedbackBuilder;
    useTreeEmptyMessage(): SmzTreeEmptyFeedbackBuilder;
    get tree(): SmzTreeBuilder;
}
export declare class SmzTreeDragAndDropBuilder {
    _treeBuilder: SmzTreeBuilder;
    constructor(_treeBuilder: SmzTreeBuilder);
    canDrag(type: string): SmzTreeDropBuilder;
    get tree(): SmzTreeBuilder;
}
export declare class SmzTreeMenuBuilder extends SmzBuilderUtilities<SmzTreeMenuBuilder> {
    _treeBuilder: SmzTreeBuilder;
    protected that: this;
    constructor(_treeBuilder: SmzTreeBuilder);
    withInlineMenu(icon?: string, severity?: 'primary' | 'secondary' | 'success' | 'info' | 'warning' | 'help' | 'danger'): SmzTreeMenuBuilder;
    withContextMenu(): SmzTreeMenuBuilder;
    setExplicitTypes(types: string[]): SmzTreeMenuBuilder;
    withDynamicItems(callback: (_: SmzTreeDynamicMenuBuilder, node: SmzTreeNode<unknown>) => SmzTreeMenuItem[]): SmzTreeMenuBuilder;
    caption(label: string, icon?: string): SmzTreeMenuItemBuilder;
    separator(): SmzTreeMenuBuilder;
    item(label: string, icon?: string): SmzTreeMenuItemBuilder;
    get tree(): SmzTreeBuilder;
}
export declare class SmzTreeMenuItemBuilder extends SmzBuilderUtilities<SmzTreeMenuItemBuilder> {
    _menuBuilder: SmzTreeMenuBuilder;
    private _parent;
    private _item;
    protected that: this;
    constructor(_menuBuilder: SmzTreeMenuBuilder, _parent: SmzTreeMenuItemBuilder, _item: SmzTreeMenuItem);
    setCallback<T>(callback: (item: T) => void): SmzTreeMenuItemBuilder;
    setTooltip(tooltip: string): SmzTreeMenuItemBuilder;
    hideForTypes(...params: string[]): SmzTreeMenuItemBuilder;
    showForTypes(...params: string[]): SmzTreeMenuItemBuilder;
    item(label: string, icon?: string): SmzTreeMenuItemBuilder;
    get parent(): SmzTreeMenuItemBuilder;
    get menu(): SmzTreeMenuBuilder;
}
export declare class SmzTreeDynamicMenuBuilder extends SmzBuilderUtilities<SmzTreeDynamicMenuBuilder> {
    protected that: this;
    private _items;
    constructor();
    item(label: string, icon?: string): SmzTreeDynamicMenuItemBuilder;
    separator(): SmzTreeDynamicMenuBuilder;
    build(): SmzTreeMenuItem[];
}
export declare class SmzTreeDynamicMenuItemBuilder extends SmzBuilderUtilities<SmzTreeDynamicMenuItemBuilder> {
    private _menuBuilder;
    private _parent;
    private _item;
    protected that: this;
    constructor(_menuBuilder: SmzTreeDynamicMenuBuilder, _parent: SmzTreeDynamicMenuItemBuilder, _item: SmzTreeMenuItem);
    setCallback<T>(callback: (item: T) => void): SmzTreeDynamicMenuItemBuilder;
    setTooltip(tooltip: string): SmzTreeDynamicMenuItemBuilder;
    hideForTypes(...params: string[]): SmzTreeDynamicMenuItemBuilder;
    showForTypes(...params: string[]): SmzTreeDynamicMenuItemBuilder;
    item(label: string, icon?: string): SmzTreeDynamicMenuItemBuilder;
    get parent(): SmzTreeDynamicMenuItemBuilder;
    get menu(): SmzTreeDynamicMenuBuilder;
}
export declare class SmzTreeDropBuilder {
    private _type;
    private _parentBuilder;
    constructor(_type: string, _parentBuilder: SmzTreeDragAndDropBuilder);
    into(...types: string[]): SmzTreeDragAndDropBuilder;
}
