import type { Disposable } from '@difizen/mana-common';
import { DisposableCollection } from '@difizen/mana-common';
import type { TreeNode } from '../tree';
import { TreeDecoratorService } from '../tree-decorator';
import { TreeModel } from '../tree-model';
import type { TreeProps } from '../tree-protocol';
import { TreeViewDecorationData } from '../tree-view-decoration';
export declare class TreeViewDecorator implements Disposable {
    decorations: Map<string, TreeViewDecorationData[]>;
    protected toDispose: DisposableCollection;
    protected readonly decoratorService: TreeDecoratorService;
    readonly model: TreeModel;
    protected readonly props: TreeProps;
    constructor(decoratorService: TreeDecoratorService, model: TreeModel, props: TreeProps);
    protected init(): void;
    dispose(): void;
    /**
     * Update tree decorations.
     * - Updating decorations are debounced in order to limit the number of expensive updates.
     */
    readonly updateDecorations: () => Promise<void> | undefined;
    protected doUpdateDecorations(): Promise<void>;
    /**
     * Get the tree decoration data for the given key.
     * @param node the tree node.
     * @param key the tree decoration data key.
     *
     * @returns the tree decoration data at the given key.
     */
    getDecorationData<K extends keyof TreeViewDecorationData>(node: TreeNode, key: K): TreeViewDecorationData[K][];
    /**
     * Get the tree node decorations.
     * @param node the tree node.
     * @returns the list of tree decoration data.
     */
    protected getDecorations(node: TreeNode): TreeViewDecorationData[];
}
//# sourceMappingURL=tree-view-decorator.d.ts.map