import { OnChanges, SimpleChanges, OnDestroy, ChangeDetectorRef } from '@angular/core';
import { FormGroup, FormArray, FormBuilder, ValidationErrors } from '@angular/forms';
import { BaseComponent } from './base.component';
import { DomSanitizer } from '@angular/platform-browser';
import { FormSubmitBroadcastService } from '../../core/services/form-submit-broadcast.service';
import { FormControlComponentModel } from '../../core/models/component-models/form-control-component.model';
import * as i0 from "@angular/core";
export declare abstract class BaseFormArrayComponent<M extends FormControlComponentModel = FormControlComponentModel> extends BaseComponent<M> implements OnChanges, OnDestroy {
    protected fb: FormBuilder;
    protected submitBroadcastService: FormSubmitBroadcastService;
    protected cdr: ChangeDetectorRef;
    /** Emits on destroy to clean up subscriptions */
    private destroy$;
    /** Underlying FormArray */
    protected formArray: FormArray;
    /** Parent FormGroup */
    form: FormGroup;
    /** Bind config.name as host id */
    hostId: string;
    constructor(sanitizer: DomSanitizer, fb: FormBuilder, submitBroadcastService: FormSubmitBroadcastService, cdr: ChangeDetectorRef);
    /** Initialize or replace FormArray on config/form changes */
    ngOnChanges(changes: SimpleChanges): void;
    /** Complete destroy$ to unsubscribe all streams */
    ngOnDestroy(): void;
    /** Raw validation errors */
    get arrayErrors(): ValidationErrors | null;
    /** Show errors if invalid after touch/dirty or submission */
    get errorState(): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<BaseFormArrayComponent<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BaseFormArrayComponent<any>, never, never, { "form": { "alias": "form"; "required": false; }; }, {}, never, never, true, never>;
}
