import { AfterContentInit, ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, QueryList, TemplateRef } from '@angular/core';
import { PrimeTemplate, TreeNode } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import { Nullable } from 'primeng/ts-helpers';
import { Subscription } from 'rxjs';
import { OrganizationChartNodeCollapseEvent, OrganizationChartNodeExpandEvent, OrganizationChartNodeSelectEvent, OrganizationChartNodeUnSelectEvent } from './organizationchart.interface';
import { OrganizationChartStyle } from './style/organizationchartstyle';
import * as i0 from "@angular/core";
import * as i1 from "primeng/api";
export declare class OrganizationChartNode implements OnDestroy {
    cd: ChangeDetectorRef;
    node: TreeNode<any> | undefined;
    root: boolean | undefined;
    first: boolean | undefined;
    last: boolean | undefined;
    collapsible: boolean | undefined;
    chart: OrganizationChart;
    subscription: Subscription;
    constructor(chart: OrganizationChart, cd: ChangeDetectorRef);
    get leaf(): boolean | undefined;
    get colspan(): number;
    getChildStyle(node: TreeNode<any>): {
        visibility: string;
    };
    onNodeClick(event: Event, node: TreeNode): void;
    toggleNode(event: Event, node: TreeNode): void;
    isSelected(): boolean;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationChartNode, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationChartNode, "[pOrganizationChartNode]", never, { "node": { "alias": "node"; "required": false; }; "root": { "alias": "root"; "required": false; }; "first": { "alias": "first"; "required": false; }; "last": { "alias": "last"; "required": false; }; "collapsible": { "alias": "collapsible"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_root: unknown;
    static ngAcceptInputType_first: unknown;
    static ngAcceptInputType_last: unknown;
    static ngAcceptInputType_collapsible: unknown;
}
/**
 * OrganizationChart visualizes hierarchical organization data.
 * @group Components
 */
export declare class OrganizationChart extends BaseComponent implements AfterContentInit {
    el: ElementRef;
    cd: ChangeDetectorRef;
    /**
     * An array of nested TreeNodes.
     * @group Props
     */
    value: TreeNode[] | undefined;
    /**
     * Inline style of the component.
     * @group Props
     */
    style: {
        [klass: string]: any;
    } | null | undefined;
    /**
     * Style class of the component.
     * @group Props
     */
    styleClass: string | undefined;
    /**
     * Defines the selection mode.
     * @group Props
     */
    selectionMode: 'single' | 'multiple' | null | undefined;
    /**
     * Whether the nodes can be expanded or toggled.
     * @group Props
     */
    collapsible: boolean | undefined;
    /**
     * Whether the space allocated by a node is preserved when hidden.
     * @group Props
     */
    preserveSpace: boolean;
    /**
     * A single treenode instance or an array to refer to the selections.
     * @group Props
     */
    get selection(): any;
    set selection(val: any);
    /**
     * Callback to invoke on selection change.
     * @param {*} any - selected value.
     * @group Emits
     */
    selectionChange: EventEmitter<any>;
    /**
     * Callback to invoke when a node is selected.
     * @param {OrganizationChartNodeSelectEvent} event - custom node select event.
     * @group Emits
     */
    onNodeSelect: EventEmitter<OrganizationChartNodeSelectEvent>;
    /**
     * Callback to invoke when a node is unselected.
     * @param {OrganizationChartNodeUnSelectEvent} event - custom node unselect event.
     * @group Emits
     */
    onNodeUnselect: EventEmitter<OrganizationChartNodeUnSelectEvent>;
    /**
     * Callback to invoke when a node is expanded.
     * @param {OrganizationChartNodeExpandEvent} event - custom node expand event.
     * @group Emits
     */
    onNodeExpand: EventEmitter<OrganizationChartNodeExpandEvent>;
    /**
     * Callback to invoke when a node is collapsed.
     * @param {OrganizationChartNodeCollapseEvent} event - custom node collapse event.
     * @group Emits
     */
    onNodeCollapse: EventEmitter<OrganizationChartNodeCollapseEvent>;
    templates: Nullable<QueryList<PrimeTemplate>>;
    togglerIconTemplate: TemplateRef<any> | undefined;
    templateMap: any;
    _togglerIconTemplate: Nullable<TemplateRef<any>>;
    private selectionSource;
    _selection: any;
    initialized: Nullable<boolean>;
    selectionSource$: import("rxjs").Observable<any>;
    _componentStyle: OrganizationChartStyle;
    constructor(el: ElementRef, cd: ChangeDetectorRef);
    get root(): TreeNode<any> | null;
    ngAfterContentInit(): void;
    getTemplateForNode(node: TreeNode): TemplateRef<any> | null;
    onNodeClick(event: Event, node: TreeNode): void;
    findIndexInSelection(node: TreeNode): number;
    isSelected(node: TreeNode): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationChart, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<OrganizationChart, "p-organizationChart, p-organization-chart, p-organizationchart", never, { "value": { "alias": "value"; "required": false; }; "style": { "alias": "style"; "required": false; }; "styleClass": { "alias": "styleClass"; "required": false; }; "selectionMode": { "alias": "selectionMode"; "required": false; }; "collapsible": { "alias": "collapsible"; "required": false; }; "preserveSpace": { "alias": "preserveSpace"; "required": false; }; "selection": { "alias": "selection"; "required": false; }; }, { "selectionChange": "selectionChange"; "onNodeSelect": "onNodeSelect"; "onNodeUnselect": "onNodeUnselect"; "onNodeExpand": "onNodeExpand"; "onNodeCollapse": "onNodeCollapse"; }, ["togglerIconTemplate", "templates"], never, true, never>;
    static ngAcceptInputType_collapsible: unknown;
    static ngAcceptInputType_preserveSpace: unknown;
}
export declare class OrganizationChartModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<OrganizationChartModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<OrganizationChartModule, never, [typeof OrganizationChart, typeof OrganizationChartNode, typeof i1.SharedModule], [typeof OrganizationChart, typeof OrganizationChartNode, typeof i1.SharedModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<OrganizationChartModule>;
}
