/** @experimental */ export declare function createNgElementConstructor

(component: Type, config: NgElementConfig): NgElementConstructor

; /** @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?: { [key: string]: string; }; injector: Injector; strategyFactory?: NgElementStrategyFactory; } /** @experimental */ export interface NgElementConstructor

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

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

= { [property in keyof P]: P[property]; };