import { FormArray, FormControl, FormGroup } from '@angular/forms'; import { EclatFormArrayConfig, EclatFormControlConfig, EclatFormGroupConfig } from './contracts/form-config'; import { AbstractEclatFormControl } from './abstract-control'; export declare type EclatFormChild = T extends any[] ? EclatFormArray : T extends Date | String | RegExp ? EclatFormControl : T extends object ? EclatFormGroup : EclatFormControl; export declare function getEclatControl(config: any, data?: any): AbstractEclatFormControl | null; export declare class EclatFormControl extends AbstractEclatFormControl { constructor(config: EclatFormControlConfig, initialData?: T); patchState(data: T, emitEvent?: boolean): void; resetState(data: T, emitEvent?: boolean): void; } export declare class EclatFormGroup extends AbstractEclatFormControl { children: { [P in keyof T]: EclatFormChild; }; constructor(dfg: EclatFormGroupConfig, initialData?: T); patchState(data: T, emitEvent?: boolean): void; resetState(data: T, emitEvent?: boolean): void; getChild

(key: P): EclatFormChild; private addChild; private removeChild; } export declare class EclatFormArray extends AbstractEclatFormControl { children: EclatFormChild[]; private childConfig; constructor(dfa: EclatFormArrayConfig, initialData?: T); addChild(data?: Partial): void; removeChild(index: number): void; patchState(data: T, emitEvent?: boolean): void; resetState(data: T, emitEvent?: boolean): void; getChild(index: number): EclatFormChild; }