import { PolyScene } from '../../engine/scene/PolyScene';
import { CoreGraphNode } from './CoreGraphNode';
export type CoreGraphNodeId = number;
export declare class CoreGraph {
    private _nextId;
    private _scene;
    private _successors;
    private _predecessors;
    private _nodesById;
    private _forbiddenTriggerNodeIds;
    private _selfDirtyForbidden;
    private _nodesCount;
    private _debugging;
    private _addedNodesDuringDebugging;
    startDebugging(): void;
    stopDebugging(): void;
    printDebug(): void;
    setScene(scene: PolyScene): void;
    scene(): PolyScene | undefined;
    nextId(): CoreGraphNodeId;
    nodesFromIds(ids: number[], target: CoreGraphNode[]): void;
    nodeFromId(id: number): CoreGraphNode | undefined;
    hasNode(node: CoreGraphNode): boolean;
    addNode(node: CoreGraphNode): void;
    removeNode(node: CoreGraphNode): void;
    nodesCount(): number;
    connect(src: CoreGraphNode, dest: CoreGraphNode, checkCycle?: boolean): boolean;
    disconnect(src: CoreGraphNode, dest: CoreGraphNode): void;
    disconnectPredecessors(node: CoreGraphNode): void;
    disconnectSuccessors(node: CoreGraphNode): void;
    predecessorIds(id: CoreGraphNodeId): CoreGraphNodeId[] | undefined;
    predecessors(node: CoreGraphNode): CoreGraphNode[] | undefined;
    successorIds(id: CoreGraphNodeId): CoreGraphNodeId[] | undefined;
    successors(node: CoreGraphNode): CoreGraphNode[] | undefined;
    private _boundPredecessorIds;
    private _boundSuccessorIds;
    allPredecessorIds(node: CoreGraphNode, target: CoreGraphNodeId[]): void;
    allSuccessorIds(node: CoreGraphNode, target: CoreGraphNodeId[]): void;
    allPredecessors(node: CoreGraphNode, target: CoreGraphNode[]): void;
    allSuccessors(node: CoreGraphNode, target: CoreGraphNode[]): void;
    private _createConnection;
    private _removeConnection;
    setForbiddenTriggerNodes(src: CoreGraphNode, dest: CoreGraphNode | CoreGraphNode[]): void;
    clearForbiddenTriggerNodes(src: CoreGraphNode): void;
    setSelfDirtyForbidden(node: CoreGraphNode, state: boolean): void;
    selfDirtyForbidden(node: CoreGraphNode): boolean;
}
