import { SmzTreeSourceTransform } from '../../modules/smz-trees/models/tree-state';
import { SmzBuilderUtilities } from '../common/smz-builder-utilities';
import { SmzDataSourceTreeBuilder } from './data-source-tree-builder';
import { TreeNode } from 'primeng/api';
export declare class SmzPropertyBasedDataSourceTreeBuilder<TBuilder> extends SmzBuilderUtilities<SmzPropertyBasedDataSourceTreeBuilder<TBuilder>> {
    private _content;
    private _dataSourceBuilder;
    protected that: this;
    private _config;
    constructor(_content: SmzTreeSourceTransform, _dataSourceBuilder: SmzDataSourceTreeBuilder<TBuilder>);
    addRootRelation(type: string): SmzPropertyBasedDataSourceTreeBuilder<TBuilder>;
    setLabelProperty(property: string): SmzPropertyBasedDataSourceTreeBuilder<TBuilder>;
    setKeyProperty(property: string): SmzPropertyBasedDataSourceTreeBuilder<TBuilder>;
    includeData(): SmzPropertyBasedDataSourceTreeBuilder<TBuilder>;
    addRelation(property: string, type: string): SmzPropertyBasedDataSourceTreeBuilder<TBuilder>;
    addConditionalRootRelation<TNodeData>(getTypeCallback: (node: TNodeData) => string): SmzPropertyBasedDataSourceTreeBuilder<TBuilder>;
    addConditionalRelation<TNodeData>(property: string, getTypeCallback: (node: TNodeData) => string, alsoApplyToRoot?: boolean): SmzPropertyBasedDataSourceTreeBuilder<TBuilder>;
    get dataSource(): SmzDataSourceTreeBuilder<TBuilder>;
}
export interface SmzTreePropertyBasedConfig {
    labelProperty: string;
    keyProperty: string;
    includeData: boolean;
    nodes: {
        property: string;
        type: string;
        getTypeCallback: (node: TreeNode) => string;
    }[];
}
