import { Observable } from 'rxjs'; import { ViewFactory, ViewFactoryArgs } from './ViewFactory'; import { ViewContainer } from './ViewContainer'; import { ContextType } from '../common'; import { ViewConfig, ViewQueryArgs } from './common'; export interface ViewManagerEvent { type: 'resolve' | 'create' | 'register' | 'unregister' | 'refAdd' | 'refRemove' | 'query'; ref?: string | null; token: any; container: ViewContainer; initial?: boolean; } export interface ViewManagerQueryEvent extends ViewManagerEvent { type: 'query'; initial: boolean; } export interface RefChangeEvent extends ViewManagerEvent { type: 'refAdd' | 'refRemove'; ref: string; } export interface ViewResolutionOptions { emit?: boolean; } export declare class ViewManager { private _viewFactory; private _views; private _refs; private _destroyed; private _events; events: Observable>; resolved: Observable; created: Observable; registered: Observable; unregistered: Observable; refChanges: Observable>; destroyed: Observable; has(token: any, id?: number): boolean; get(token: any, id: number): ViewContainer | null; getAll(token: any): ({ [key: number]: ViewContainer; }) | null; destroy(): void; getRef(ref: string): ViewContainer | null; resolve(config: ViewConfig, options?: ViewResolutionOptions): ViewContainer | null; resolveOrCreate(args: ViewFactoryArgs, options?: ViewResolutionOptions): ViewContainer; resolveOrCreateWith(config: ViewConfig, factory: (viewFactory: ViewFactory) => ViewContainer, options?: ViewResolutionOptions): ViewContainer; create(args: ViewFactoryArgs): ViewContainer; createWith(config: ViewConfig, factory: (viewFactory: ViewFactory) => ViewContainer): ViewContainer; register(token: any, container: ViewContainer, options?: { ref?: string | null; }): void; unregister(token: any, container: ViewContainer, options?: { ref?: string | null; }): void; /** * Notifies when the a view is registered matching the given query. * @template T * @param {{ token?: any, ref?: string }} [query={}] * @returns {Observable>} */ subscribeToQuery(query?: ViewQueryArgs): Observable>; queryToken(token: any, id?: number, options?: ViewQueryArgs): Observable>; queryRef(ref: string, options?: ViewQueryArgs): Observable>; query(query: ViewQueryArgs): ViewContainer[]; /** * Purges any cached views that should be destroyed with the following context. * @param {ContextType} context */ purgeCached(context: ContextType): void; entries(): IterableIterator>; private _resolve; private _assertAndReadComponent; static isResolvedEventType(eventType: ViewManagerEvent['type']): boolean; }