import { ComponentRef, Type, ViewContainerRef } from '@angular/core';
import { FormControl } from '@angular/forms';
import { Logger } from '@anglr/common';
import { Dictionary } from '@jscrpt/common';
import { PropertyTypeControl } from '../../../../interfaces';
import * as i0 from "@angular/core";
/**
 * Directive used for rendering property type control
 */
export declare class PropertyTypeControlRendererDirective<TComponent extends PropertyTypeControl<TValue> = any, TValue = any> {
    protected _viewContainerRef: ViewContainerRef;
    protected _typeControls: Dictionary<Type<PropertyTypeControl>>;
    protected _logger?: Logger | undefined;
    /**
     * Created component reference
     */
    protected _componentRef: ComponentRef<TComponent> | null;
    /**
     * Form control that will handle value of property
     */
    control: FormControl<TValue> | undefined;
    /**
     * Metadata for displaying property control
     */
    typeName: string | undefined;
    /**
     * Array of available values
     */
    values: TValue[];
    constructor(_viewContainerRef: ViewContainerRef, _typeControls: Dictionary<Type<PropertyTypeControl>>, _logger?: Logger | undefined);
    /**
     * Called when input value changes
     */
    ngOnChanges(): Promise<void>;
    /**
     * Called when component is destroyed
     */
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PropertyTypeControlRendererDirective<any, any>, [null, null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PropertyTypeControlRendererDirective<any, any>, "[propertyTypeControl]", never, { "control": { "alias": "control"; "required": false; }; "typeName": { "alias": "propertyTypeControl"; "required": false; }; "values": { "alias": "values"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=propertyTypeControlRenderer.directive.d.ts.map