import { AbstractControl, AbstractControlOptions, AsyncValidatorFn, FormControlOptions, UntypedFormBuilder, ValidatorFn } from '@angular/forms';
import { QdFormArray, QdFormArrayAsyncValidator, QdFormArrayItemAsyncValidator, QdFormArrayItemValidator, QdFormArrayItemValidatorOrOpts, QdFormArrayValidator } from './form-array';
import { QdFormControl } from './form-control';
import { QdFormGroup } from './form-group';
import * as i0 from "@angular/core";
export declare class QdFormBuilder extends UntypedFormBuilder {
    /**
     * @description
     * Construct a new `QdFormGroup` instance.
     *
     * @param controlsConfig A collection of child controls. The key for each child is the name
     * under which it is registered.
     *
     * @param options Configuration options object for the `QdFormGroup`. The object should have the
     * the `AbstractControlOptions` type and might contain the following fields:
     * * `validators`: A synchronous validator function, or an array of validator functions
     * * `asyncValidators`: A single async validator or array of async validator functions
     * * `updateOn`: The event upon which the control should be updated (options: 'change' | 'blur' |
     * submit')
     */
    group(controlsConfig: {
        [key: string]: any;
    }, options?: AbstractControlOptions | null): QdFormGroup;
    /**
     * @description
     * Construct a new `QdFormGroup` instance.
     *
     * @deprecated This API is not typesafe and can result in issues with Closure Compiler renaming.
     * Use the `QdFormBuilder#group` overload with `AbstractControlOptions` instead.
     * Note that `AbstractControlOptions` expects `validators` and `asyncValidators` to be valid
     * validators. If you have custom validators, make sure their validation function parameter is
     * `AbstractControl` and not a sub-class, such as `QdFormGroup`. These functions will be called with
     * an object of type `AbstractControl` and that cannot be automatically downcast to a subclass, so
     * TypeScript sees this as an error. For example, change the `(group: QdFormGroup) =>
     * ValidationErrors|null` signature to be `(group: AbstractControl) => ValidationErrors|null`.
     *
     * @param controlsConfig A collection of child controls. The key for each child is the name
     * under which it is registered.
     *
     * @param options Configuration options object for the `QdFormGroup`. The legacy configuration
     * object consists of:
     * * `validator`: A synchronous validator function, or an array of validator functions
     * * `asyncValidator`: A single async validator or array of async validator functions
     * Note: the legacy format is deprecated and might be removed in one of the next major versions
     * of Angular.
     */
    group(controlsConfig: {
        [key: string]: any;
    }, options: {
        [key: string]: any;
    }): QdFormGroup;
    /**
     * @description
     * Construct a new `QdFormControl` with the given state, validators and options.
     *
     * @param formState Initializes the control with an initial state value, or
     * with an object that contains both a value and a disabled status.
     *
     * @param validatorOrOpts A synchronous validator function, or an array of
     * such functions, or an `AbstractControlOptions` object that contains
     * validation functions and a validation trigger.
     *
     * @param asyncValidator A single async validator or array of async validator
     * functions.
     */
    control<T>(formState: any, validatorOrOpts?: ValidatorFn | ValidatorFn[] | FormControlOptions | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null): QdFormControl<T>;
    /**
     * Constructs a new `QdFormArray` from the given array of configurations,
     * validators and options.
     *
     * @param controlsConfig An array of child controls or control configs. Each
     * child control is given an index when it is registered.
     *
     * @param itemValidatorOrOpts A synchronous validator function, or an array of
     * such functions to validate the single items, or an `QdFormArrayOptions` object
     * that contains validation functions and a validation trigger.
     *
     * @param itemAsyncValidator A single async validator or array of async validator
     * to validate the single items.
     *
     * @param validator A synchronous validator function, or an array of
     * such functions.
     *
     * @param asyncValidator A single async validator or array of async validator
     * functions.
     */
    array<T>(controlsConfig: any[], itemValidatorOrOpts?: QdFormArrayItemValidatorOrOpts, itemAsyncValidator?: QdFormArrayItemAsyncValidator, validator?: QdFormArrayValidator, asyncValidator?: QdFormArrayAsyncValidator): QdFormArray<T>;
    /** @internal */
    _reduceControls(controlsConfig: {
        [k: string]: any;
    }): {
        [key: string]: AbstractControl;
    };
    /** @internal */
    _createControl(controlConfig: any, itemValidator?: QdFormArrayItemValidator, itemAsyncValidator?: QdFormArrayItemAsyncValidator): AbstractControl;
    static ɵfac: i0.ɵɵFactoryDeclaration<QdFormBuilder, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<QdFormBuilder>;
}
//# sourceMappingURL=form-builder.d.ts.map