import { ChangeDetectorRef, OnInit } from '@angular/core';
import { FormControl } from '@angular/forms';
import { PromiseOr } from '@jscrpt/common';
import { PropertyTypeControl } from '../../../interfaces';
import * as i0 from "@angular/core";
/**
 * Base class for property type control
 */
export declare abstract class PropertyTypeControlBase<TValue = any> implements PropertyTypeControl<TValue>, OnInit {
    protected _changeDetector: ChangeDetectorRef;
    /**
     * Backing field for control
     */
    protected _control: FormControl<TValue | undefined | null> | undefined | null;
    /**
     * Indication whether was component already initialized
     */
    protected _initialized: boolean;
    /**
     * @inheritdoc
     */
    get control(): FormControl<TValue | undefined | null> | undefined | null;
    set control(value: FormControl<TValue | undefined | null> | undefined | null);
    /**
     * @inheritdoc
     */
    values: TValue[];
    constructor(_changeDetector: ChangeDetectorRef);
    /**
     * Initialize component
     */
    ngOnInit(): Promise<void>;
    /**
     * @inheritdoc
     */
    initialize(): Promise<void>;
    /**
     * @inheritdoc
     */
    invalidateVisuals(): void;
    /**
     * Use this method for initialization of component
     */
    protected _initialize(): PromiseOr<void>;
    /**
     * When overriden allows to react to change of control
     */
    protected _controlSet(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PropertyTypeControlBase<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PropertyTypeControlBase<any>, never, never, { "control": { "alias": "control"; "required": false; }; "values": { "alias": "values"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=propertyTypeControlBase.d.ts.map