import { ChangeDetectorRef, EventEmitter, Injector, OnDestroy, QueryList, TemplateRef } from '@angular/core';
import { AbstractControl, FormGroupDirective, NgForm } from '@angular/forms';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
export interface ArrayFormTableRowContext {
    allowEdit: boolean;
    allowDelete: boolean;
}
export declare const ARRAY_TABLE_FORM_ERROR_BG: string;
export declare const rowBackgroundColorFn: <T extends AbstractControl<any, any>>({ invalid, }: T) => string;
export declare const noShowRowError: () => boolean;
export declare class ArrayFormTableHeaderDirective {
    templateRef: TemplateRef<any>;
    constructor(templateRef: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableHeaderDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ArrayFormTableHeaderDirective, "[aclArrayFormTableHeader]", never, {}, {}, never, never, false>;
}
export declare class ArrayFormTableRowErrorDirective {
    templateRef: TemplateRef<any>;
    constructor(templateRef: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableRowErrorDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ArrayFormTableRowErrorDirective, "[aclArrayFormTableRowError]", never, {}, {}, never, never, false>;
}
export declare class ArrayFormTableRowDirective {
    templateRef: TemplateRef<any>;
    constructor(templateRef: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableRowDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ArrayFormTableRowDirective, "[aclArrayFormTableRow]", never, {}, {}, never, never, false>;
}
export declare class ArrayFormTableZeroStateDirective {
    templateRef: TemplateRef<any>;
    constructor(templateRef: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableZeroStateDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ArrayFormTableZeroStateDirective, "[aclArrayFormTableZeroState]", never, {}, {}, never, never, false>;
}
export declare class ArrayFormTableRowControlDirective {
    templateRef: TemplateRef<any>;
    constructor(templateRef: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableRowControlDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ArrayFormTableRowControlDirective, "[aclArrayFormTableRowControl]", never, {}, {}, never, never, false>;
}
export declare class ArrayFormTableFooterDirective {
    templateRef: TemplateRef<any>;
    constructor(templateRef: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableFooterDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ArrayFormTableFooterDirective, "[aclArrayFormTableFooter]", never, {}, {}, never, never, false>;
}
export declare class ArrayFormTableComponent implements OnDestroy {
    injector: Injector;
    headerTemplate: TemplateRef<any>;
    rowTemplates: QueryList<TemplateRef<any>>;
    rowErrorTemplate: TemplateRef<any>;
    /**
     * 表单默认提供删除按键; 假如用户提供模板, 将使用用户的模板
     */
    rowControlTemplate: TemplateRef<any>;
    /**
     * 表单默认提供添加按键; 假如用户提供模板, 将使用用户的模板
     */
    footerTemplate: TemplateRef<any>;
    /**
     * 表单默认为空数据提供无xxx的模板; 假如用户提供模板, 将使用用户的模板
     */
    zeroStateTemplate: TemplateRef<any>;
    ngFormGroupDirective: FormGroupDirective;
    rows: any[];
    resourceName: string;
    add: EventEmitter<void>;
    remove: EventEmitter<number>;
    readonly: boolean | '';
    addDisabled: boolean | '';
    actionColumnDivider: boolean | '';
    get formDirective(): FormGroupDirective | NgForm;
    /**
     * 自定义是否展示错误内容
     * 例如 control 是 FormGroup，只有在内部子 control 错误时才需要展示错误内容
     */
    showRowError<T extends AbstractControl>(control: T, formDirective?: NgForm | FormGroupDirective): boolean;
    /**
     * @deprecated use `showRowError` instead
     */
    rowBackgroundColorFn<T extends AbstractControl>(control: T, formDirective?: NgForm | FormGroupDirective): string;
    minRow: number;
    maxRow: number;
    destroy$$: Subject<void>;
    cdr: ChangeDetectorRef;
    constructor(injector: Injector);
    ngOnDestroy(): void;
    shouldShowRowError(control: AbstractControl): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ArrayFormTableComponent, "acl-array-form-table", never, { "rows": "rows"; "resourceName": "resourceName"; "readonly": "readonly"; "addDisabled": "addDisabled"; "actionColumnDivider": "actionColumnDivider"; "showRowError": "showRowError"; "rowBackgroundColorFn": "rowBackgroundColorFn"; "minRow": "minRow"; "maxRow": "maxRow"; }, { "add": "add"; "remove": "remove"; }, ["headerTemplate", "rowErrorTemplate", "rowControlTemplate", "footerTemplate", "zeroStateTemplate", "ngFormGroupDirective", "rowTemplates"], never, false>;
}
