export declare function createCustomElement

(component: Type, config: NgElementConfig): NgElementConstructor

; 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; } export interface NgElementConfig { injector: Injector; strategyFactory?: NgElementStrategyFactory; } export interface NgElementConstructor

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

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

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