/// import Fill from './components/Fill'; export declare type Name = string | Symbol; export declare type Listener = (components: Component[]) => void; export interface Component { name: Name; fill: Fill; children: React.ReactChild[]; } export interface FillRegistration { listeners: Listener[]; components: Component[]; } export interface Db { byName: Map; byFill: Map; } export default class Manager { private _events; private _db; constructor(); onFillMount(fill: Fill): void; onFillUpdated(fill: Fill): void; onFillUnmount(fill: Fill): void; /** * Triggers once immediately, then each time the components change for a location * * name: String, fn: (components: Component[]) => void */ onComponentsChange(name: Name, fn: Listener): void; getFillsByName(name: string): Fill[]; getChildrenByName(name: string): React.ReactChild[]; /** * Removes previous listener * * name: String, fn: (components: Component[]) => void */ removeOnComponentsChange(name: Name, fn: Listener): void; }