import { CtorTyped } from "ajsfw/types";
import { Notifier } from "ajsfw/events";
import { IRegisteredViewComponentsCollection } from "./IRegisteredViewComponentsCollection";
import { IViewComponent } from "./IViewComponent";
import { IViewComponentState } from "./IViewComponentState";
export declare const IIViewComponentManager: IViewComponentManager;
export interface IViewComponentManager {
    readonly components: IRegisteredViewComponentsCollection;
    registerComponents(...componentConstructor: CtorTyped<IViewComponent>[]): void;
    addComponentDependencies<ConfigParams>(component: CtorTyped<IViewComponent>, ...dependencies: any[]): IViewComponentManager;
    navigationNotifier: Notifier<IViewComponentManager>;
    createViewComponent(name: string, id: string, parentComponent: IViewComponent, state?: IViewComponentState, parentComponentInitStateNotify?: IViewComponent): Promise<IViewComponent>;
    removeComponentInstance(component: IViewComponent): void;
    getComponentConstructorByName(name: string): CtorTyped<IViewComponent>;
    getComponentInstanceByComponentId(componentId: number): IViewComponent;
    getChildrenComponentInstances(component: IViewComponent): IViewComponent[];
    getComponentInstances(component: CtorTyped<IViewComponent>, id?: string, userKey?: string): IViewComponent[];
    getFirstComponentInstance<T extends IViewComponent>(component: CtorTyped<IViewComponent>, id?: string, userKey?: string): T;
    setRootViewComponent(name: string): Promise<void>;
    onNavigate(): void;
}
