import { PolyScene } from '../PolyScene';
import { CoreGraphNode } from '../../../core/graph/CoreGraphNode';
import { SceneEvent } from '../../poly/SceneEvent';
import { NodeEvent } from '../../poly/NodeEvent';
import { ParamEvent } from '../../poly/ParamEvent';
import { ActorEvaluator } from '../../nodes/js/code/assemblers/actor/ActorEvaluator';
import { DebugLine } from '../../functions/_Debug';
export interface DebugLinesContainer {
    nodePath: string;
    debugLines: DebugLine[];
}
export interface EventsListener {
    processEvents: (emitter: CoreGraphNode, event: SceneEvent | NodeEvent | ParamEvent, data?: any) => void;
    processActorEvaluator(evaluator: ActorEvaluator): ActorEvaluator;
    actorEvaluatorDebug(options: DebugLinesContainer): void;
}
type OnAddListenerCallback = () => void;
export declare class DispatchController {
    private scene;
    private _onAddListenerCallbacks;
    constructor(scene: PolyScene);
    private _eventsListener;
    setListener(eventsListener: EventsListener): void;
    onAddListener(callback: OnAddListenerCallback): void;
    private _runOnAddListenerCallbacks;
    dispatch(emitter: CoreGraphNode, event: SceneEvent | NodeEvent | ParamEvent, data?: any): void;
    emitAllowed(): boolean;
    processActorEvaluator(evaluator: ActorEvaluator): ActorEvaluator | undefined;
    actorEvaluatorDebug(options: DebugLinesContainer): void | undefined;
}
export {};
