import { BaseNodeClassWithDisplayFlag, BaseNodeType } from '../_Base';
type DisplayControllerCallback = () => void;
export interface DisplayNodeControllerCallbacks {
    onDisplayNodeRemove: DisplayControllerCallback;
    onDisplayNodeSet: DisplayControllerCallback;
    onDisplayNodeUpdate: DisplayControllerCallback;
}
interface DisplayNodeControllerOptions {
    dependsOnDisplayNode: boolean;
}
export declare class DisplayNodeController {
    protected node: BaseNodeType;
    private options;
    private _initialized;
    private _graphNode;
    private _displayNode;
    private _displayNodeOverride;
    private _onDisplayNodeRemoveCallback;
    private _onDisplayNodeSetCallback;
    private _onDisplayNodeUpdateCallback;
    constructor(node: BaseNodeType, callbacks: DisplayNodeControllerCallbacks, options?: DisplayNodeControllerOptions);
    dispose(): void;
    displayNode(): BaseNodeClassWithDisplayFlag | undefined;
    firstNonBypassedDisplayNode(): import("../_Base").TypedNode<any, any> | undefined;
    initializeNode(): void;
    setDisplayNodeOverride(newDisplayNodeOverride: BaseNodeClassWithDisplayFlag | undefined): void;
    setDisplayNode(newDisplayNode: BaseNodeClassWithDisplayFlag | undefined): void;
    private _commitDisplayNode;
}
export {};
