import { FormControl, ValidatorFn, AsyncValidatorFn } from "@angular/forms";
import { Observable } from "rxjs";
export interface LoaderFn<A, T> {
    (value: A): Observable<T>;
}
export declare type DYN_FIELD_APPEARANCE = 'legacy' | 'standard' | 'fill' | 'outline';
export declare abstract class DynFormControl extends FormControl {
    key: string;
    type: string;
    path: string;
    config: any;
    logicalErrorMessage: string;
    vCache: ValidatorFn | ValidatorFn[];
    constructor(options?: {
        defaultValue?: any;
        key?: string;
        required?: boolean;
        dir?: string;
        hint?: string;
        placeholder?: string;
        messages?: any[];
        useDefaultErrorMessages?: boolean;
        loadFn?: LoaderFn<any, any>;
        disable?: boolean;
        appearance?: DYN_FIELD_APPEARANCE;
        compact?: boolean;
    }, validator?: ValidatorFn | ValidatorFn[] | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null);
    removeRequired(): void;
    addRequired(): void;
    isRequired(): boolean | ValidatorFn;
    isValidator(validator: ValidatorFn): boolean | ValidatorFn;
    setValidator(validator: ValidatorFn): number | ValidatorFn;
    removeValidator(validator: ValidatorFn): void;
    setLogicalError(message: string): void;
    clearLogicalError(): void;
    activateValidators(): void;
    setValue(value: any, options?: {
        onlySelf?: boolean;
        emitEvent?: boolean;
        emitModelToViewChange?: boolean;
        emitViewToModelChange?: boolean;
        loadFn?: LoaderFn<any, any>;
    }): void;
    loadValue(param: any, loadFn: LoaderFn<any, any>, options?: {
        onlySelf?: boolean;
        emitEvent?: boolean;
        emitModelToViewChange?: boolean;
        emitViewToModelChange?: boolean;
    }): void;
}
