import { ElementRef, Injector } from '@angular/core';
import { PromiseOr } from '@jscrpt/common';
import { DynamicItem, DynamicItemExtension, DynamicItemMetadata } from '../interfaces';
/**
 * Dynamic item extension base class
 */
export declare abstract class DynamicItemExtensionBase<TOptions = unknown, TInstance extends DynamicItem = any> implements DynamicItemExtension<TOptions, TInstance> {
    protected metadata: DynamicItemMetadata;
    /**
     * Injector from extended component
     */
    protected injector?: Injector;
    /**
     * Element that could be extended
     */
    protected element?: ElementRef<HTMLElement>;
    /**
     * Options that stores extension and component data
     */
    protected options?: TOptions;
    /**
     * Instance of dynamic item that is being extended
     */
    protected instance?: TInstance;
    /**
     * Indication whether was extension initialized
     */
    protected initialized: boolean;
    constructor(metadata: DynamicItemMetadata);
    /**
     * @inheritdoc
     */
    initialize(injector: Injector, element: ElementRef<HTMLElement>, instance: TInstance): Promise<void>;
    /**
     * @inheritdoc
     */
    optionsChange(options: TOptions): Promise<void>;
    /**
     * @inheritdoc
     */
    destroy(): void;
    /**
     * Called on initialization of component
     */
    protected onInit(): PromiseOr<void>;
    /**
     * Called on change of options of component
     */
    protected onOptionsChange(): PromiseOr<void>;
    /**
     * Called on destruction of component
     */
    protected onDestroy(): void;
}
//# sourceMappingURL=dynamicItemExtensionBase.d.ts.map