import React from 'react'; import { ShapeActions, ShapeId } from './types'; export declare enum EventType { MountedOrUnmounted = "MountedOrUnmounted", MouseEvent = "MouseEvent", ChildRectChanged = "ChildRectChanged", ChildFocus = "ChildFocus", ChildToggleSelection = "ChildToggleSelection" } declare type MountedOrUnmountedListener = (shapeActionRef: React.MutableRefObject, didMount: boolean) => void; declare type MouseEventListener = (event: MouseEvent) => void; declare type ChildRectChangedListener = (shapeId: ShapeId, isInternalComponent: boolean) => void; declare type ChildFocusListener = (shapeId: ShapeId, isInternalComponent: boolean) => void; declare type ChildToggleSelectionListener = (shapeId: ShapeId, isInternalComponent: boolean, event: React.MouseEvent) => void; declare type Listener = (...args: any[]) => void; declare type CustomListener = ChildRectChangedListener | ChildFocusListener | MountedOrUnmountedListener | MouseEventListener | ChildToggleSelectionListener; declare type ListenerRef = React.MutableRefObject; export declare class EventEmitter { private listeners; constructor(); addListener(eventType: EventType, fn: ListenerRef): this; removeListener(eventType: EventType, fn: ListenerRef): this; overwriteAllListenersOfType(eventType: EventType, fn: ListenerRef): this; emit(eventType: EventType, ...args: any[]): void; } export declare const useNewEventEmitter: () => EventEmitter; export declare const useAdditionalListener: (emitter: EventEmitter, eventType: EventType, listener: CustomListener) => void; export declare const EventEmitterProvider: React.Provider; export declare const useEventEmitterContext: () => EventEmitter; export {};