///
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;
}