import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { ChangeDetectorRef, EventEmitter, Injector, OnDestroy, QueryList, TemplateRef } from '@angular/core';
import { AbstractControl, FormGroup, FormGroupDirective, NgForm } from '@angular/forms';
import { Subject } from 'rxjs';
import * as i0 from "@angular/core";
export declare const ARRAY_TABLE_FORM_ERROR_BG: string;
export declare const rowBackgroundColorFn: <T extends AbstractControl>({ 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, true, never>;
}
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, true, never>;
}
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, true, never>;
}
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, true, never>;
}
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, true, never>;
}
export declare class ArrayFormTableRowSeparatorDirective {
    templateRef: TemplateRef<any>;
    constructor(templateRef: TemplateRef<any>);
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableRowSeparatorDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<ArrayFormTableRowSeparatorDirective, "[aclArrayFormTableRowSeparator]", never, {}, {}, never, never, true, never>;
}
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, true, never>;
}
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>;
    /**
     * 行之间的分隔区域自定义模板
     */
    separatorTemplate: TemplateRef<any>;
    /**
     * 行之间的分隔区域，默认关闭
     */
    rowSeparator: boolean;
    ngFormGroupDirective: FormGroupDirective;
    rows: any[];
    resourceName: string;
    resourceNameTranslated: string;
    add: EventEmitter<void>;
    remove: EventEmitter<number>;
    readonly: boolean | '';
    addDisabled: boolean | '';
    actionColumnDivider: boolean | '';
    showZeroState: boolean;
    get formDirective(): FormGroupDirective | NgForm;
    /**
     * 自定义是否展示错误内容
     * 例如 control 是 FormGroup，只有在内部子 control 错误时才需要展示错误内容
     */
    showRowError<T extends AbstractControl>(control: T, formDirective?: NgForm | FormGroupDirective): boolean;
    /**
     * @deprecated use {@link showRowError} instead
     */
    rowBackgroundColorFn<T extends AbstractControl>(control: T, formDirective?: NgForm | FormGroupDirective): string;
    minRow: number;
    minRowTooltip: string;
    maxRow: number;
    maxRowTooltip: string;
    enableDrop: boolean;
    rowDrop: EventEmitter<CdkDragDrop<FormGroup<any>[], FormGroup<any>[], any>>;
    destroy$$: Subject<void>;
    cdr: ChangeDetectorRef;
    constructor(injector: Injector);
    ngOnDestroy(): void;
    drop(event: CdkDragDrop<FormGroup[]>): void;
    shouldShowRowError: (control: AbstractControl) => import("rxjs").Observable<boolean>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ArrayFormTableComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ArrayFormTableComponent, "acl-array-form-table", never, { "rowSeparator": { "alias": "rowSeparator"; "required": false; }; "rows": { "alias": "rows"; "required": false; }; "resourceName": { "alias": "resourceName"; "required": false; }; "resourceNameTranslated": { "alias": "resourceNameTranslated"; "required": false; }; "readonly": { "alias": "readonly"; "required": false; }; "addDisabled": { "alias": "addDisabled"; "required": false; }; "actionColumnDivider": { "alias": "actionColumnDivider"; "required": false; }; "showZeroState": { "alias": "showZeroState"; "required": false; }; "showRowError": { "alias": "showRowError"; "required": false; }; "rowBackgroundColorFn": { "alias": "rowBackgroundColorFn"; "required": false; }; "minRow": { "alias": "minRow"; "required": false; }; "minRowTooltip": { "alias": "minRowTooltip"; "required": false; }; "maxRow": { "alias": "maxRow"; "required": false; }; "maxRowTooltip": { "alias": "maxRowTooltip"; "required": false; }; "enableDrop": { "alias": "enableDrop"; "required": false; }; }, { "add": "add"; "remove": "remove"; "rowDrop": "rowDrop"; }, ["headerTemplate", "rowErrorTemplate", "rowControlTemplate", "footerTemplate", "zeroStateTemplate", "separatorTemplate", "ngFormGroupDirective", "rowTemplates"], never, true, never>;
}
