import type PluginManager from '@jbrowse/core/PluginManager';
import type { AnyConfigurationModel } from '@jbrowse/core/configuration';
import type { Instance } from 'mobx-state-tree';
type MaybeAnyConfigurationModel = AnyConfigurationModel | undefined;
type MaybeBoolean = boolean | undefined;
export default function stateTreeFactory(pluginManager: PluginManager): import("mobx-state-tree").IModelType<{
    id: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
    type: import("mobx-state-tree").ISimpleType<"HierarchicalTrackSelectorWidget">;
    view: import("mobx-state-tree").IMaybe<import("mobx-state-tree").IReferenceType<import("mobx-state-tree").IAnyType>>;
    faceted: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").IModelType<{
        filterText: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<string>, [undefined]>;
        showSparse: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
        showFilters: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
        showOptions: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<boolean>, [undefined]>;
        panelWidth: import("mobx-state-tree").IOptionalIType<import("mobx-state-tree").ISimpleType<number>, [undefined]>;
    }, {
        visible: Record<string, boolean>;
        useShoppingCart: boolean;
        filters: import("mobx").ObservableMap<string, string[]>;
    } & {
        setFilter(key: string, value: string[]): void;
        setPanelWidth(width: number): number;
        setUseShoppingCart(f: boolean): void;
        setFilterText(str: string): void;
        setShowSparse(f: boolean): void;
        setShowOptions(f: boolean): void;
        setShowFilters(f: boolean): void;
    } & {
        readonly allTrackConfigurations: ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
                setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                    [x: string]: any;
                } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
            } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
    } & {
        readonly rows: {
            readonly id: string;
            readonly conf: {
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
                setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                    [x: string]: any;
                } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
                    setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                        [x: string]: any;
                    } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
                } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
            } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>;
            readonly name: string;
            readonly category: string;
            readonly adapter: string;
            readonly description: string;
            readonly metadata: Record<string, unknown>;
        }[];
    } & {
        readonly filteredNonMetadataKeys: string[] | readonly ["category", "adapter", "description"];
        readonly metadataKeys: string[];
        readonly filteredMetadataKeys: string[];
        readonly fields: string[];
        readonly filteredRows: {
            readonly id: string;
            readonly conf: {
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
                setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                    [x: string]: any;
                } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
                    setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                        [x: string]: any;
                    } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
                } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
            } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>;
            readonly name: string;
            readonly category: string;
            readonly adapter: string;
            readonly description: string;
            readonly metadata: Record<string, unknown>;
        }[];
    } & {
        setVisible(args: Record<string, boolean>): void;
        afterAttach(): void;
    }, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>, [undefined]>;
}, {
    favorites: string[];
    recentlyUsed: string[];
    selection: AnyConfigurationModel[];
    sortTrackNames: MaybeBoolean;
    sortCategories: MaybeBoolean;
    collapsed: import("mobx").ObservableMap<string, boolean>;
    filterText: string;
    recentlyUsedCounter: number;
    favoritesCounter: number;
} & {
    readonly shownTrackIds: Set<string>;
    readonly selectionSet: Set<{
        [x: string]: any;
    } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
        setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
    } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>>;
    readonly favoritesSet: Set<string>;
    readonly recentlyUsedSet: Set<string>;
    readonly assemblyNames: string[];
} & {
    setSortTrackNames(val: boolean): void;
    setSortCategories(val: boolean): void;
    setSelection(elt: AnyConfigurationModel[]): void;
    addToSelection(elt: AnyConfigurationModel[]): void;
    removeFromSelection(elt: AnyConfigurationModel[]): void;
    clearSelection(): void;
    addToFavorites(trackId: string): void;
    removeFromFavorites(trackId: string): void;
    clearFavorites(): void;
    setRecentlyUsedCounter(val: number): void;
    setRecentlyUsed(str: string[]): void;
    setFavorites(str: string[]): void;
    setFavoritesCounter(val: number): void;
    addToRecentlyUsed(id: string): void;
    clearRecentlyUsed(): void;
    setView(view: unknown): void;
    toggleCategory(pathName: string): void;
    setCategoryCollapsed(pathName: string, status: boolean): void;
    expandAllCategories(): void;
    setCollapsedCategories(str: [string, boolean][]): void;
    clearFilterText(): void;
    setFilterText(newText: string): void;
} & {
    isSelected(track: AnyConfigurationModel): boolean;
    isFavorite(trackId: string): boolean;
    isRecentlyUsed(trackId: string): boolean;
    getRefSeqTrackConf(assemblyName: string): MaybeAnyConfigurationModel;
} & {
    readonly activeSortTrackNames: any;
    readonly activeSortCategories: any;
    readonly configAndSessionTrackConfigurations: ({
        [x: string]: any;
    } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
        setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
    } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
    readonly allTrackConfigurations: ({
        [x: string]: any;
    } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
        setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
    } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
    readonly allTrackConfigurationTrackIdSet: Map<any, {
        [x: string]: any;
    } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
        setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
    } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>>;
} & {
    readonly favoriteTracks: ({
        [x: string]: any;
    } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
        setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
    } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
    readonly recentlyUsedTracks: ({
        [x: string]: any;
    } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
        setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
    } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
} & {
    readonly allTracks: {
        group: any;
        tracks: ({
            [x: string]: any;
        } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
            setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                [x: string]: any;
            } & import("mobx-state-tree/dist/internal").NonEmptyObject & {
                setSubschema(slotName: string, data: Record<string, unknown>): Record<string, unknown> | ({
                    [x: string]: any;
                } & import("mobx-state-tree/dist/internal").NonEmptyObject & any & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
            } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>);
        } & import("mobx-state-tree").IStateTreeNode<import("@jbrowse/core/configuration").AnyConfigurationSchemaType>)[];
        noCategories: boolean;
        menuItems: never[];
    }[];
} & {
    readonly hierarchy: {
        name: string;
        id: string;
        isOpenByDefault: boolean;
        type: "category";
        children: {
            name: any;
            id: any;
            type: "category";
            isOpenByDefault: boolean;
            menuItems: never[];
            children: import("./generateHierarchy").TreeNode[];
        }[];
    };
} & {
    collapseSubCategories(): void;
    collapseTopLevelCategories(): void;
} & {
    readonly hasAnySubcategories: boolean;
} & {
    afterAttach(): void;
}, import("mobx-state-tree")._NotCustomized, import("mobx-state-tree")._NotCustomized>;
export type HierarchicalTrackSelectorStateModel = ReturnType<typeof stateTreeFactory>;
export type HierarchicalTrackSelectorModel = Instance<HierarchicalTrackSelectorStateModel>;
export {};
