import { AbstractControl } from "./Form.types";
import { ObservableControl } from "./ObservableControl";
export type ArrayValidatorFn<ItemType> = (arr: FormArray<ItemType>) => void;
export declare class FormArray<ItemType> extends ObservableControl<ItemType[]> implements AbstractControl<ItemType[]> {
    private readonly controls;
    private readonly arrayValidators;
    private inArrayValidation;
    constructor(controls: AbstractControl<ItemType>[], arrayValidators?: ReadonlyArray<ArrayValidatorFn<ItemType>>);
    at(index: number): AbstractControl<ItemType>;
    private runArrayValidators;
    push(control: AbstractControl<ItemType>): void;
    private childChanged;
    removeAt(index: number): void;
    get value(): ItemType[];
    get valid(): boolean;
    get length(): number;
    getControls(): AbstractControl<ItemType>[];
    validate(): void;
    markAllAsTouched(): void;
}
