import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
import type { MenuItem } from '@jbrowse/core/ui';
export interface TreeTrackNode {
    name: string;
    id: string;
    trackId: string;
    conf: AnyConfigurationModel;
    checked: boolean;
    children: TreeNode[];
    type: 'track';
}
export interface TreeCategoryNode {
    name: string;
    id: string;
    isOpenByDefault: boolean;
    children: TreeNode[];
    type: 'category';
}
export type TreeNode = TreeTrackNode | TreeCategoryNode;
export declare function generateHierarchy({ model, trackConfs, extra, noCategories, menuItems, }: {
    model: {
        filterText: string;
        activeSortTrackNames: boolean;
        activeSortCategories: boolean;
        collapsed: Map<string | number, boolean>;
        view?: {
            tracks: {
                configuration: AnyConfigurationModel;
            }[];
        };
    };
    noCategories?: boolean;
    menuItems?: MenuItem[];
    trackConfs: AnyConfigurationModel[];
    extra?: string;
}): TreeNode[];
