import { ComponentFactoryResolver, ComponentRef, Injector, OnInit, ViewContainerRef } from '@angular/core';
import { ControlContainer, ControlValueAccessor } from '@angular/forms';
import { RxapFormControl } from '@rxap/forms';
import { ControlWithDataSource } from './control-with-data-source';
import { DataSourceLoader } from '@rxap/data-source';
import { ExtractDataSourcesMixin } from './mixins/extract-data-sources.mixin';
import * as i0 from "@angular/core";
export interface FormSystemControlDirective<T> extends ExtractDataSourcesMixin, ControlValueAccessor, OnInit {
}
export declare class FormSystemControlDirective<T> implements ControlValueAccessor, OnInit {
    private readonly parent;
    private readonly cfr;
    private readonly viewContainerRef;
    private readonly dataSourceLoader;
    private readonly injector;
    /**
     * Defines the form control id
     */
    controlId: string;
    protected control: RxapFormControl;
    protected componentRef: ComponentRef<ControlValueAccessor & Partial<ControlWithDataSource>>;
    constructor(parent: ControlContainer, cfr: ComponentFactoryResolver, viewContainerRef: ViewContainerRef, dataSourceLoader: DataSourceLoader, injector: Injector);
    ngOnInit(): void;
    registerOnChange(fn: (value: (any | null)) => void): void;
    registerOnTouched(fn: () => void): void;
    writeValue(value: any): void;
    setDisabledState(isDisabled: boolean): void;
    private setDataSources;
    private setComponentProperties;
    private createComponent;
    private extractControl;
    private extractFormDefinition;
    private extractComponent;
    private extractComponentProperties;
    static ɵfac: i0.ɵɵFactoryDeclaration<FormSystemControlDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FormSystemControlDirective<any>, "[rxapFormSystemControl]", never, { "controlId": { "alias": "controlId"; "required": true; }; }, {}, never, never, true, never>;
}
