import { ElementRef, EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core';
import { Observable } from 'rxjs';
import { QdBreakpointService } from '../core/services/breakpoint.service';
import { QdTableEmptyStateService } from '../table/services/empty-state.service';
import { QdTableFillingColumn } from '../table/model/table-config.interface';
import { QdTableFillingWidthService } from '../table/services/filling-width.service';
import { QdTreeGroupService } from './services/tree-group.service';
import { QdTableResponsiveRowService } from '../table/services/responsive-row.service';
import { QdTableStoreService } from '../table/store/table-store.service';
import { QdTreeConfig } from './model/tree-config.interface';
import { QdTreeData } from './model/tree-data.interface';
import { QdTreeRowsService } from './services/tree-rows.service';
import { QdTableRecentSecondaryAction } from '../table/model/table-data.interface';
import * as i0 from "@angular/core";
/**
 * The **QdTree** allows to visualize hierarchical data.
 */
export declare class QdTreeComponent<T extends string> implements OnInit, OnChanges, OnDestroy {
    private element;
    private readonly tableStoreService;
    private readonly groupService;
    private readonly treeRowService;
    private readonly emptyStateService;
    private readonly responsiveRowService;
    private readonly fillingWidthService;
    private readonly breakpointService;
    /**
     * Configuration of the tree table. The generic type specifies the column definition. <br />
     *
     * **Usage:**
     *
     * @example
     * type ColumnDefinition = 'article' | 'mass' | 'documents';
     * const treeConfig: QdTreeConfig<ColumnDefinition> = {
     *   columns: [
     *     {
     *       column: 'article',
     *       type: 'text'
     *     },
     *     {
     *       column: 'mass',
     *       type: 'integer'
     *     },
     *     {
     *       column: 'documents',
     *       type: 'boolean'
     *     }
     *   ]
     * }
     */
    config: QdTreeConfig<T>;
    /**
     * Use this input to fill the tree table with data. <br />
     * The generic type is used for the column definition. <br />
     *
     * **Usage:**
     *
     * @example
     * type ColumnDefinition = 'article' | 'mass' | 'documents';
     * const treeData: QdTreeData<ColumnDefinition> = [
     *   {
     *     article: 'article one',
     *     mass: 10,
     *     documents: true
     *   },
     *   {
     *     article: 'article two',
     *     mass: 20,
     *     documents: false
     *   }
     * ]
     */
    data: QdTreeData<T>;
    /**
     * A static test ID for integration tests can be set. <br />
     * The value for the HTML attribute [data-test-id].
     */
    testId: string;
    /**
     * The event is triggered when the no contents are present. <br />
     * The `emptyStateView` must be enabled in the table configuration.
     */
    emptyStateActionOutput: EventEmitter<any>;
    /**
     * Emits an event when an secondary action is triggered. The return value contains the row-specific data. <br />
     * `secondaryActions` must be defined in the table configuration.
     *
     * * @returns EventEmitter with generic type: QdTableRecentSecondaryAction
     */
    secondaryActionOutput: EventEmitter<QdTableRecentSecondaryAction<T>>;
    get dataTestId(): string;
    data$: Observable<QdTreeData<T>>;
    hasData$: Observable<boolean>;
    hasEmptyStateView$: Observable<boolean>;
    private _table$;
    private _breakpointSubscription?;
    private _emptyStateActionServiceSubscription?;
    private _recentSecondaryActionsSubscription?;
    get whichColumnFillsWidth(): QdTableFillingColumn;
    constructor(element: ElementRef, tableStoreService: QdTableStoreService<T>, groupService: QdTreeGroupService<T>, treeRowService: QdTreeRowsService<T>, emptyStateService: QdTableEmptyStateService, responsiveRowService: QdTableResponsiveRowService<T>, fillingWidthService: QdTableFillingWidthService<T>, breakpointService: QdBreakpointService);
    ngOnInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    ngOnDestroy(): void;
    private validateConfig;
    private initializeGroupService;
    private initializeTreeRowsService;
    private initializeResponsiveRowService;
    private initializeFillingWidthService;
    private initializeEmptyStateService;
    private checkForChanges;
    private initializeSecondaryActions;
    static ɵfac: i0.ɵɵFactoryDeclaration<QdTreeComponent<any>, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<QdTreeComponent<any>, "qd-tree", never, { "config": { "alias": "config"; "required": false; }; "data": { "alias": "data"; "required": false; }; "testId": { "alias": "data-test-id"; "required": false; }; }, { "emptyStateActionOutput": "emptyStateActionOutput"; "secondaryActionOutput": "secondaryActionOutput"; }, never, never, false, never>;
}
//# sourceMappingURL=tree.component.d.ts.map