import { CdkDragDrop } from '@angular/cdk/drag-drop';
import { ChangeDetectorRef, EventEmitter } from '@angular/core';
import { AbstractControl, FormArray, FormBuilder } from '@angular/forms';
import { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';
import { FieldDefinition } from '../utils/lf-field-internal-types';
import { FieldValue, TemplateFieldInfo } from '../utils/lf-field-types';
import * as i0 from "@angular/core";
export declare class LfFieldGroupComponent {
    /** @internal */
    private fb;
    /** @internal */
    private cdr;
    /** @internal */
    localizationService: AppLocalizationService;
    /** @internal */
    fieldDefinitions: FieldDefinition[];
    /** @internal */
    fieldGroups: FormArray;
    /** @internal */
    fieldValues: Map<number, FieldValue>;
    /** @internal */
    groupId: number;
    /** @internal */
    dynamicFieldOptions: Map<number, string[][]> | undefined;
    /** @internal */
    fieldValuesChanged: EventEmitter<{
        fieldValue: FieldValue;
        indicesChanged?: number[];
    }>;
    /** @internal */
    showLoaderIndex: number | undefined;
    /** @internal */
    readonly res_0_of_1: import("rxjs").Observable<string>;
    /** @internal */
    constructor(
    /** @internal */
    fb: FormBuilder, 
    /** @internal */
    cdr: ChangeDetectorRef, 
    /** @internal */
    localizationService: AppLocalizationService);
    /** @internal */
    getFieldValues: () => Map<number, FieldValue>;
    /** @internal */
    initAsync: (fieldDefinitions: FieldDefinition[], dynamicFieldOptions?: Map<number, string[][]>) => Promise<void>;
    /** @internal */
    getOptions(fieldInfo: TemplateFieldInfo, index: number): string[] | undefined;
    /** @internal */
    forceValidation: () => boolean;
    /** @internal */
    isLoading(fieldInfo: TemplateFieldInfo, currentIndex: number): boolean;
    /** @internal */
    showLoader(index: number): void;
    /** @internal */
    private setFieldGroups;
    /** @internal */
    private addFieldFormControl;
    /** @internal */
    private updateFieldValues;
    /** @internal */
    fieldDataChange(event: string, fieldInfo: TemplateFieldInfo, indexChanged: number): void;
    /** @internal */
    getSingleField(index: number, fieldId: number): AbstractControl | null;
    /** @internal */
    isValid(): boolean;
    /** @internal */
    onDragAndDrop(event: CdkDragDrop<string[]>): void;
    /** @internal */
    fieldGroupControlsArray(): AbstractControl<any, any>[];
    /** @internal */
    onClickDelete(index: number): void;
    /** @internal */
    private resetPositionValues;
    /** @internal */
    onClickAdd(currentIndex: number): void;
    /** @internal */
    onClickUp(currentIndex: number): void;
    /** @internal */
    onClickDown(currentIndex: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LfFieldGroupComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LfFieldGroupComponent, "lf-field-group-component", never, { "getFieldValues": { "alias": "getFieldValues"; "required": false; }; "initAsync": { "alias": "initAsync"; "required": false; }; "forceValidation": { "alias": "forceValidation"; "required": false; }; "showLoader": { "alias": "showLoader"; "required": false; }; }, { "fieldValuesChanged": "fieldValuesChanged"; }, never, never, false, never>;
}
