import type { FormControlStatus } from './abstract-control'; import type { AsyncValidatorFn, ValidatorFn } from './validators'; import { AbstractControl } from './abstract-control'; type Mutable = { -readonly [P in keyof T]: T[P]; }; type GetFormControlPropertyFromArray = Mutable extends [infer K, ...infer R] ? K extends keyof T ? GetFormControlPropertyFromArray : any : T; type GetFormControlProperty = S extends `${infer K}.${infer R}` ? K extends keyof T ? GetFormControlProperty : any : S extends keyof T ? T[S] : any; type GetFormGroupT> = C extends FormGroup ? T : unknown; type GetFormGroupValue = { [K in keyof T]?: T[K] extends FormGroup ? GetFormGroupValue> : T[K]['value']; }; export declare class FormGroup extends AbstractControl<{ [K in keyof T]: T[K]['value']; }> { controls: T; protected _value: { [K in keyof T]: T[K]['value']; }; protected _status: FormControlStatus; constructor(controls: T, validators?: ValidatorFn | ValidatorFn[] | null, asyncValidator?: AsyncValidatorFn | AsyncValidatorFn[] | null); get(path: S): AbstractControl>; get>(path: S): AbstractControl>; getError(errorCode: string, path?: string[] | string): any; hasError(errorCode: string, path?: string[] | string): boolean; addControl(name: K, control: T[K]): void; addControl(name: string, control: AbstractControl): void; removeControl(name: K): void; removeControl(name: string): void; setControl(name: K, control: T[K]): void; setControl(name: string, control: AbstractControl): void; contains(controlName: K): boolean; contains(controlName: string): boolean; setValue(value: { [K in keyof T]: T[K]['value']; } & { [K: string]: any; }, onlySelf?: boolean): void; patchValue(value: GetFormGroupValue & { [K: string]: any; }, onlySelf?: boolean): void; reset(value?: GetFormGroupValue & { [K: string]: any; }, onlySelf?: boolean): void; protected _updateValue(): void; protected _forEachChild(cb: (v: any, k: string) => void): void; protected _anyControls(condition: (c: AbstractControl) => boolean): boolean; protected _allControlsDisabled(): boolean; private _setUpControls; private _reduceValue; private _reduceChildren; private _checkAllValuesPresent; private _throwIfControlMissing; } export {};