import { DisposableCollection } from '@opensumi/ide-utils';
import { ITreeNodeOrCompositeTreeNode } from '../../types';
import { Decoration } from './Decoration';
export declare class ClasslistComposite {
    /**
     * 注册样式变化监听函数
     */
    readonly addChangeListener: (namedCallback: () => void) => void;
    /**
     * 注销样式变化监听函数
     */
    readonly removeChangeListener: (namedCallback: () => void) => void;
    classlist: ReadonlyArray<string>;
    constructor(
    /**
     * 注册样式变化监听函数
     */
    addChangeListener: (namedCallback: () => void) => void, 
    /**
     * 注销样式变化监听函数
     */
    removeChangeListener: (namedCallback: () => void) => void);
}
export declare enum CompositeDecorationType {
    Applicable = 1,
    Inheritable = 2
}
export declare enum ChangeReason {
    UnTargetDecoration = 1,
    TargetDecoration = 2
}
export declare class CompositeDecoration {
    renderedDecorations: Map<Decoration, DisposableCollection>;
    targetedDecorations: Set<Decoration>;
    negatedDecorations: Set<Decoration>;
    parent: CompositeDecoration;
    compositeCssClasslist: ClasslistComposite;
    private target;
    private type;
    private selfOwned;
    private linkedComposites;
    private classlistChangeCallbacks;
    constructor(target: ITreeNodeOrCompositeTreeNode, type: CompositeDecorationType, parent?: CompositeDecoration);
    changeParent(newParent?: CompositeDecoration): void;
    add(decoration: Decoration): void;
    remove(decoration: Decoration): void;
    negate(decoration: Decoration): void;
    unNegate(decoration: Decoration): void;
    private selfOwn;
    private parentOwn;
    private processCompositeAlteration;
    private recursiveRefresh;
    private handleDecorationDidAddClassname;
    private handleDecorationDidRemoveClassname;
    private mergeDecorationClasslist;
    private handleDecorationDisable;
    private removeDecorationClasslist;
    private notifyClasslistChange;
}
//# sourceMappingURL=CompositeDecoration.d.ts.map