import { IDisposable } from '@opensumi/ide-utils';
import { ICompositeTreeNode, ITreeNode } from '../../types';
export declare enum TargetMatchMode {
    None = 1,
    Self = 2,
    Children = 3,
    SelfAndChildren = 4
}
export interface IDecorationEventData {
    decoration: Decoration;
    classname?: string;
}
export interface IDecorationTargetChangeEventData {
    decoration: Decoration;
    target: ITreeNode | ICompositeTreeNode;
}
export declare class Decoration {
    private _cssClassList;
    private _appliedTargets;
    private _negatedTargets;
    private _disabled;
    private appliedTargetsDisposables;
    private negatedTargetsDisposables;
    private onDidAddCSSClassnameEmitter;
    private onDidRemoveCSSClassnameEmitter;
    private onDidDisableDecorationEmitter;
    private onDidEnableDecorationEmitter;
    private onDidAddTargetEmitter;
    private onDidRemoveTargetEmitter;
    private onDidNegateTargetEmitter;
    private onDidUnNegateTargetEmitter;
    constructor(...cssClassList: string[]);
    get disabled(): boolean;
    set disabled(disabled: boolean);
    get appliedTargets(): Map<ITreeNode | ICompositeTreeNode, TargetMatchMode>;
    get negatedTargets(): Map<ITreeNode | ICompositeTreeNode, TargetMatchMode>;
    get cssClassList(): Set<string>;
    get onDidAddCSSClassname(): import("@opensumi/ide-utils").Event<IDecorationEventData>;
    get onDidRemoveCSSClassname(): import("@opensumi/ide-utils").Event<IDecorationEventData>;
    get onDidDisableDecoration(): import("@opensumi/ide-utils").Event<IDecorationEventData>;
    get onDidEnableDecoration(): import("@opensumi/ide-utils").Event<IDecorationEventData>;
    get onDidAddTarget(): import("@opensumi/ide-utils").Event<IDecorationTargetChangeEventData>;
    get onDidRemoveTarget(): import("@opensumi/ide-utils").Event<IDecorationTargetChangeEventData>;
    get onDidNegateTarget(): import("@opensumi/ide-utils").Event<IDecorationTargetChangeEventData>;
    get onDidUnNegateTarget(): import("@opensumi/ide-utils").Event<IDecorationTargetChangeEventData>;
    addCSSClass(className: string): void;
    removeCSSClass(className: string): void;
    /**
     * 判断当前装饰器是否包含指定的对象绑定
     * @param target
     */
    hasTarget(target: ITreeNode | ICompositeTreeNode): boolean;
    /**
     * 为当前装饰器绑定对象
     * @param target
     * @param flags
     */
    addTarget(target: ITreeNode | ICompositeTreeNode, flags?: TargetMatchMode): IDisposable | undefined;
    /**
     * 为当前装饰器移除对象绑定
     * @param target
     * @param flags
     */
    removeTarget(target: ITreeNode | ICompositeTreeNode): void;
    /**
     * 清理所有应用的装饰器
     */
    clearAppliedTarget(): void;
    /**
     * 清理所有应用的否定装饰器
     */
    clearNegateTarget(): void;
    /**
     * 否定装饰器绑定
     * negate 表示 :not修饰符
     * 定义节点不应用样式
     * @param target
     * @param flags
     */
    negateTarget(target: ITreeNode | ICompositeTreeNode, flags?: TargetMatchMode): IDisposable | undefined;
    /**
     * 取消否定装饰器绑定
     * @param target
     */
    unNegateTarget(target: ITreeNode | ICompositeTreeNode): void;
}
//# sourceMappingURL=Decoration.d.ts.map