import { ComponentRef, Type, ViewContainerRef } from '@angular/core';
import { FormGroup } from '@angular/forms';
import { Logger } from '@anglr/common';
import { FormModelGroup } from '@anglr/common/forms';
import { Dictionary } from '@jscrpt/common';
import { PropertiesControl } from '../../../../interfaces';
import { LayoutEditorPropertyMetadata } from '../../../../misc/types';
import { LayoutPropertyTypeData } from '../../../../decorators';
import * as i0 from "@angular/core";
/**
 * Directive used for rendering properties control
 */
export declare class PropertiesControlRendererDirective<TComponent extends PropertiesControl<TOptions> = any, TOptions = any> {
    protected _viewContainerRef: ViewContainerRef;
    protected _logger?: Logger | undefined;
    /**
     * Created component reference
     */
    protected _componentRef: ComponentRef<TComponent> | null;
    /**
     * Form group representing whole options
     */
    form: FormGroup<FormModelGroup<TOptions>> | undefined;
    /**
     * Properties metadata that are being rendered
     */
    propertiesMetadata: Dictionary<LayoutEditorPropertyMetadata & LayoutPropertyTypeData> | null;
    /**
     * Type that will be rendered
     */
    type: Type<PropertiesControl> | undefined;
    constructor(_viewContainerRef: ViewContainerRef, _logger?: Logger | undefined);
    /**
     * Called when input value changes
     */
    ngOnChanges(): Promise<void>;
    /**
     * Called when component is destroyed
     */
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PropertiesControlRendererDirective<any, any>, [null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PropertiesControlRendererDirective<any, any>, "[propertiesControl]", never, { "form": { "alias": "form"; "required": false; }; "propertiesMetadata": { "alias": "propertiesMetadata"; "required": false; }; "type": { "alias": "propertiesControl"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=propertiesControlRenderer.directive.d.ts.map