import { ChangeDetectorRef } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { FormModelGroup } from '@anglr/common/forms';
import { Dictionary, PromiseOr } from '@jscrpt/common';
import { PropertiesControl } from '../../../interfaces';
import { LayoutEditorMetadataExtractor } from '../../../services';
import { LayoutEditorPropertyMetadata } from '../../../misc/types';
import { LayoutPropertyTypeData } from '../../../decorators';
import * as i0 from "@angular/core";
/**
 * Base class for properties control
 */
export declare abstract class PropertiesControlBase<TOptions = any> implements PropertiesControl<TOptions> {
    protected _changeDetector: ChangeDetectorRef;
    protected _extractor: LayoutEditorMetadataExtractor;
    /**
     * Indication whether was component initialized or not
     */
    protected _initialized: boolean;
    /**
     * @inheritdoc
     */
    form: FormGroup<FormModelGroup<TOptions>> | undefined;
    /**
     * @inheritdoc
     */
    propertiesMetadata: Dictionary<LayoutEditorPropertyMetadata & LayoutPropertyTypeData> | null;
    constructor(_changeDetector: ChangeDetectorRef, _extractor: LayoutEditorMetadataExtractor);
    /**
     * Initialize component
     */
    ngOnInit(): Promise<void>;
    /**
     * @inheritdoc
     */
    initialize(): Promise<void>;
    /**
     * @inheritdoc
     */
    invalidateVisuals(): void;
    /**
     * Use this method for initialization of component
     */
    protected _initialize(): PromiseOr<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<PropertiesControlBase<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PropertiesControlBase<any>, never, never, { "form": { "alias": "form"; "required": false; }; "propertiesMetadata": { "alias": "propertiesMetadata"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=propertiesControlBase.d.ts.map