import { BaseInputEventNodeType } from '../../../nodes/event/_BaseInput';
import { SceneEventsDispatcher } from './EventsDispatcher';
import { EventData } from '../../../../core/event/EventData';
import { CoreEventEmitter } from '../../../../core/event/CoreEventEmitter';
import { ActorEvaluatorGenerator } from '../../../nodes/js/code/assemblers/actor/ActorEvaluatorGenerator';
import type { EventContext } from '../../../../core/event/EventContextType';
export declare abstract class BaseSceneEventsController<E extends Event, T extends BaseInputEventNodeType> {
    protected dispatcher: SceneEventsDispatcher;
    private _activeEventDatas;
    private _activeEventDataTypes;
    protected _eventNodes: Set<T>;
    protected _requireCanvasEventListeners: boolean;
    protected _actorEvaluators: Set<ActorEvaluatorGenerator>;
    protected _actorEvaluatorsByEventNames: Map<string, Map<CoreEventEmitter, Set<ActorEvaluatorGenerator>>>;
    constructor(dispatcher: SceneEventsDispatcher);
    registerEventNode(node: T): void;
    unregisterEventNode(node: T): void;
    registerEvaluatorGenerator(evaluator: ActorEvaluatorGenerator): void;
    unregisterEvaluatorGenerator(evaluator: ActorEvaluatorGenerator): void;
    private _updateActorEvaluatorCache;
    abstract type(): string;
    abstract acceptedEventTypes(): Set<string>;
    processEvent(eventContext: EventContext<E>): void;
    updateViewerEventListeners(): void;
    activeEventDatas(): EventData[];
    private _updateActiveEventTypes;
}
export type BaseSceneEventsControllerType = BaseSceneEventsController<Event, BaseInputEventNodeType>;
export declare class BaseSceneEventsControllerClass extends BaseSceneEventsController<Event, BaseInputEventNodeType> {
    type(): string;
    acceptedEventTypes(): Set<string>;
}
