import { ComponentRef, Injector, KeyValueDiffers, OnChanges, OnDestroy, SimpleChanges, Type, ViewContainerRef } from '@angular/core';
import { AbstractControl, FormControl } from '@angular/forms';
import type { BaseContextOutput, Configuration, Context, ContextInput, Functionify } from '@o3r/core';
import * as i0 from "@angular/core";
export declare class C11nDirective<D extends Configuration = Configuration, I extends ContextInput = ContextInput, O extends BaseContextOutput = BaseContextOutput, T extends Context<I, O> = Context<I, O>> implements OnChanges, OnDestroy {
    viewContainerRef: ViewContainerRef;
    private readonly differsService;
    private readonly injector;
    /** The component information passed to the directive */
    component: Type<T>;
    /** The information related to configuration */
    config?: D;
    /** Formcontrol */
    formControl?: FormControl;
    /** The input setter */
    set inputs(value: {
        [K in keyof I]: I[K];
    });
    /** The input getter */
    get inputs(): {
        [K in keyof I]: I[K];
    };
    /** The information related to output */
    outputs?: Functionify<O>;
    /** The component reference */
    componentRef: ComponentRef<T>;
    private componentSubscriptions;
    private _inputs;
    private differInputs;
    /** Set of inputs when the component was created. */
    private readonly uninitializedInputs;
    constructor(viewContainerRef: ViewContainerRef, differsService: KeyValueDiffers, injector: Injector);
    /**
     * Type guard for component implementing CVA
     * @param _cmp Component instance
     */
    private componentImplementsCva;
    private updateInputs;
    /**
     * called when data-bound property change
     * @param changes The changes that occur
     */
    ngOnChanges(changes: SimpleChanges): void;
    /**
     * returns validation errors from component instance if validate method exists else returns null
     * @param control Form control
     */
    validate(control: AbstractControl): any;
    /**
     * ngOnDestroy
     */
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<C11nDirective<any, any, any, any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<C11nDirective<any, any, any, any>, "[c11n]", never, { "component": { "alias": "component"; "required": false; }; "config": { "alias": "config"; "required": false; }; "formControl": { "alias": "formControl"; "required": false; }; "inputs": { "alias": "inputs"; "required": false; }; "outputs": { "alias": "outputs"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=c11n.directive.d.ts.map