import { ChangeDetectorRef, ElementRef, Injector, OnDestroy, SimpleChanges } from '@angular/core';
import { Logger } from '@anglr/common';
import { DynamicItemExtension } from '@anglr/dynamic';
import { PromiseOr } from '@jscrpt/common';
import { LayoutComponent } from '../../interfaces';
import * as i0 from "@angular/core";
/**
 * Base component for layout component
 */
export declare abstract class LayoutComponentBase<TOptions> implements LayoutComponent<TOptions>, OnDestroy {
    protected changeDetector: ChangeDetectorRef;
    protected componentElement: ElementRef<HTMLElement>;
    protected injector: Injector;
    protected logger?: Logger | undefined;
    /**
     * Array of extensions that are registered for component
     */
    protected extensions: DynamicItemExtension<TOptions>[];
    /**
     * Indication whether initialization was already done
     */
    protected initialized: boolean;
    /**
     * Indication whether was component destroyed
     */
    protected destroyed: boolean;
    /**
     * Gets element that is used within extension
     */
    protected get element(): ElementRef<HTMLElement>;
    /**
     * Gets options that are used within extension
     */
    protected get extensionsOptions(): any | undefined | null;
    /**
     * @inheritdoc
     */
    options: TOptions | undefined | null;
    constructor(changeDetector: ChangeDetectorRef, componentElement: ElementRef<HTMLElement>, injector: Injector, logger?: Logger | undefined);
    /**
     * Called when component is destroyed
     */
    ngOnDestroy(): void;
    /**
     * @inheritdoc
     */
    ngOnInit(): Promise<void>;
    /**
     * @inheritdoc
     */
    ngOnChanges(changes: SimpleChanges): Promise<void>;
    /**
     * @inheritdoc
     */
    registerExtensions(extensions: DynamicItemExtension[]): void;
    /**
     * @inheritdoc
     */
    invalidateVisuals(): void;
    /**
     * Called on initialzation of component, options are already set
     */
    protected onInit(): PromiseOr<void>;
    /**
     * Called right after initialization finished, including extesions
     */
    protected afterInit(): PromiseOr<void>;
    /**
     * Called on change of options, after initialization
     */
    protected onOptionsChange(): PromiseOr<void>;
    /**
     * Occurs when some property changes on component
     * @param _changes - Changes that occured on component
     */
    protected onChanges(_changes: SimpleChanges): PromiseOr<void>;
    /**
     * Called everytime options are set, after initialization and later
     */
    protected onOptionsSet(): PromiseOr<void>;
    /**
     * Called when component is being destroyed
     */
    protected onDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutComponentBase<any>, [null, null, null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<LayoutComponentBase<any>, never, never, {}, {}, never, never, false, never>;
}
//# sourceMappingURL=layoutComponentBase.d.ts.map