/** @experimental */ export declare class ComponentFactoryNgElementStrategy implements NgElementStrategy { events: Observable; constructor(componentFactory: ComponentFactory, injector: Injector); protected callNgOnChanges(): void; connect(element: HTMLElement): void; protected detectChanges(): void; disconnect(): void; getPropertyValue(property: string): any; protected initializeComponent(element: HTMLElement): void; protected initializeInputs(): void; protected initializeOutputs(): void; protected recordInputChange(property: string, currentValue: any): void; protected scheduleDetectChanges(): void; setPropertyValue(property: string, value: any): void; } /** @experimental */ export declare class ComponentFactoryNgElementStrategyFactory implements NgElementStrategyFactory { constructor(componentFactory: ComponentFactory, injector: Injector); create(): ComponentFactoryNgElementStrategy; } /** @experimental */ export declare function createNgElementConstructor

(config: NgElementConfig): NgElementConstructor

; /** @experimental */ export declare function getConfigFromComponentFactory(componentFactory: ComponentFactory, injector: Injector): { strategyFactory: ComponentFactoryNgElementStrategyFactory; propertyInputs: string[]; attributeToPropertyInputs: Map; }; /** @experimental */ export declare abstract class NgElement extends HTMLElement { protected ngElementEventsSubscription: Subscription | null; protected ngElementStrategy: NgElementStrategy; abstract attributeChangedCallback(attrName: string, oldValue: string | null, newValue: string, namespace?: string): void; abstract connectedCallback(): void; abstract disconnectedCallback(): void; } /** @experimental */ export interface NgElementConfig { attributeToPropertyInputs: Map; propertyInputs: string[]; strategyFactory: NgElementStrategyFactory; } /** @experimental */ export interface NgElementConstructor

{ readonly observedAttributes: string[]; new (): NgElement & WithProperties

; } /** @experimental */ export interface NgElementStrategy { events: Observable; connect(element: HTMLElement): void; disconnect(): void; getPropertyValue(propName: string): any; setPropertyValue(propName: string, value: string): void; } /** @experimental */ export interface NgElementStrategyEvent { name: string; value: any; } /** @experimental */ export interface NgElementStrategyFactory { create(): NgElementStrategy; } /** @experimental */ export declare const VERSION: Version;