import * as i0 from '@angular/core'; import { InjectionToken, Type, AfterViewInit, OnDestroy, ModuleWithProviders } from '@angular/core'; import { IDynamicModule } from '@cisstech/nge/services'; import * as i1 from '@angular/common'; import { Observable } from 'rxjs'; /** * A NgeElementDef is a definition of a custom element */ interface NgeElementDef { /** * The selector of the element */ selector: string; /** * Reference to the module that defines the element's component. * The module must implements {@link IDynamicModule} and define a public "component" field. */ module?: () => Type | Promise>; /** * A component ref instead of a module ref can be provided. */ component?: () => Type | Promise>; } declare const NGE_ELEMENTS: InjectionToken; declare class NgeElementDetectorDirective implements AfterViewInit, OnDestroy { private readonly elementService; private observer?; private listener?; ngAfterViewInit(): Promise; ngOnDestroy(): void; private addMutationObserver; private checkElementsInNode; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵdir: i0.ɵɵDirectiveDeclaration; } declare class NgeElementModule { static forRoot(elements: NgeElementDef[]): ModuleWithProviders; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵmod: i0.ɵɵNgModuleDeclaration; static ɵinj: i0.ɵɵInjectorDeclaration; } declare class NgeElementService { private readonly injector; private readonly compiler; private readonly registry; private readonly defineds; private readonly promises; constructor(); listUnloadeds(): string[]; /** * Allows to lazy load a element given it's selector (i.e. tagname). * If the element selector has been registered, it's according module * will be fetched lazily * @param selector selector of the element to load. */ loadElement(selector: string): Promise; loadElements(selectors: string[]): Observable; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; } export { NGE_ELEMENTS, NgeElementDetectorDirective, NgeElementModule, NgeElementService }; export type { NgeElementDef };