import { EventEmitter, ChangeDetectorRef } from '@angular/core';
import { FormGroup, FormBuilder, FormControl } from '@angular/forms';
import { FieldValue, LfFieldInfo, LfFieldValue } from '../utils/lf-field-types';
import * as i0 from "@angular/core";
export declare class LfFieldMultivalueComponent {
    /** @internal */
    private fb;
    /** @internal */
    private cdr;
    /** @internal */
    lfFieldInfo: LfFieldInfo;
    /** @internal */
    lfFieldValues: LfFieldValue[];
    /** @internal */
    multiValueFieldParentForm: FormGroup;
    /** @internal */
    showLoader: boolean;
    /** @internal */
    fieldValuesChanged: EventEmitter<{
        fieldValues: LfFieldValue[];
        indexChanged: number;
    }>;
    /** @internal */
    dynamicFieldOptions: string[][] | undefined;
    /** @internal */
    showField: boolean;
    /** @internal */
    constructor(
    /** @internal */
    fb: FormBuilder, 
    /** @internal */
    cdr: ChangeDetectorRef);
    /** @internal */
    private getArray;
    /** @internal */
    getSingleField(index: number): FormControl;
    /** @internal */
    getLfFieldInfo(currentIndex: number): LfFieldInfo;
    /** @internal */
    isValid(): boolean;
    /** @internal */
    initAsync: (fieldDefinition: LfFieldInfo, fieldValues?: LfFieldValue[], dynamicFieldOptions?: string[][]) => Promise<void>;
    /** @internal */
    forceValidation: () => boolean;
    /** @internal */
    private removeInvalidFieldValues;
    /** @internal */
    getOptions(): string[] | undefined;
    /** @internal */
    syncFormControlDataToFieldValues(): void;
    /** @internal */
    getFieldValue: () => FieldValue;
    /** @internal */
    onChange(value: LfFieldValue, indexChanged: number): void;
    /** @internal */
    private lastValueIsValid;
    /** @internal */
    private fieldHasValue;
    /** @internal */
    private isLastInArray;
    /** @internal */
    private addNewBlankField;
    /** @internal */
    removeField(indexChanged: number): void;
    /** @internal */
    trackByIndex(index: number, option: string): string;
    /** @internal */
    get isLoading(): boolean;
    /** @internal */
    set isLoading(val: boolean);
    static ɵfac: i0.ɵɵFactoryDeclaration<LfFieldMultivalueComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LfFieldMultivalueComponent, "lf-field-multivalue-component", never, { "initAsync": { "alias": "initAsync"; "required": false; }; "forceValidation": { "alias": "forceValidation"; "required": false; }; "getFieldValue": { "alias": "getFieldValue"; "required": false; }; }, { "fieldValuesChanged": "fieldValuesChanged"; }, never, never, false, never>;
}
