import { ChangeDetectorRef, OnDestroy, ComponentRef, AfterViewInit, EventEmitter, NgZone, ElementRef } from '@angular/core';
import { LfFieldAdhocContainerService as LfFieldAdhocContainerService } from './lf-field-adhoc-container.service';
import { AdhocFieldConnectorService } from './lf-field-adhoc-connector.service';
import { AdhocFieldInfo } from './lf-field-adhoc-container-types';
import { LfFieldAddRemoveComponent } from './lf-field-add-remove/lf-field-add-remove.component';
import { AppLocalizationService } from '@laserfiche/lf-ui-components/internal-shared';
import { FieldValue, FieldValues, LfFieldInfo } from '../field-components/utils/lf-field-types';
import { LfFieldComponent } from '../field-components/lf-field/lf-field.component';
import { LfFieldMultivalueComponent } from '../field-components/lf-field-multivalue/lf-field-multivalue.component';
import { LfFieldMetadataConnectorService } from '../lf-field-metadata-connector.service';
import { LfFieldContainerDirective } from '../lf-field-container.directive';
import * as i0 from "@angular/core";
export declare class LfFieldAdhocContainerComponent extends LfFieldContainerDirective implements OnDestroy, AfterViewInit {
    /** @internal */
    private ref;
    /** @internal */
    private adhocFieldConnectorService;
    /** @internal */
    metadataFieldConnectorService: LfFieldMetadataConnectorService;
    /** @internal */
    private zone;
    /** @internal */
    private localizationService;
    /** @internal */
    addRemoveComponent: LfFieldAddRemoveComponent;
    /** @internal */
    adhocPanel?: ElementRef<HTMLElement>;
    dialogOpened: EventEmitter<void>;
    dialogClosed: EventEmitter<void>;
    /** @internal */
    readonly ADD_REMOVE_FIELDS: import("rxjs").Observable<string>;
    /** @internal */
    readonly NO_ADDITIONAL_FIELDS_ASSIGNED: import("rxjs").Observable<string>;
    /** @internal */
    showAdhocModal: boolean;
    /** @internal */
    adhocFieldContainerService: LfFieldAdhocContainerService;
    /** @internal */
    templateFields: number[];
    /** @internal */
    private selectedFieldIds;
    /** @internal */
    private templateFieldsSub;
    /** @internal */
    constructor(
    /** @internal */
    ref: ChangeDetectorRef, 
    /** @internal */
    adhocFieldConnectorService: AdhocFieldConnectorService, 
    /** @internal */
    metadataFieldConnectorService: LfFieldMetadataConnectorService, 
    /** @internal */
    zone: NgZone, 
    /** @internal */
    localizationService: AppLocalizationService);
    /** @internal */
    ngAfterViewInit(): void;
    /** @internal */
    ngOnDestroy(): void;
    getFieldValues: () => {
        [fieldName: string]: FieldValue;
    };
    clearAsync: () => Promise<void>;
    initAsync: (adhocFieldContainerService: LfFieldAdhocContainerService) => Promise<void>;
    resetFieldDataAsync: (fields: {
        value: FieldValue;
        definition: LfFieldInfo;
    }[]) => Promise<void>;
    updateFieldValuesAsync: (values: FieldValue[]) => Promise<void>;
    /** @internal */
    private resetComponentValues;
    /** @internal */
    renderFieldsAsync(fieldInfos: (LfFieldInfo | AdhocFieldInfo)[]): Promise<void>;
    /** @internal */
    fieldComponentInitAsync(fieldComponentRef: ComponentRef<LfFieldComponent>, fieldInfo: LfFieldInfo, value: string): Promise<void>;
    /** @internal */
    multivalueComponentInitAsync(multivalueFieldComponentRef: ComponentRef<LfFieldMultivalueComponent>, fieldInfo: LfFieldInfo, values: string[]): Promise<void>;
    /** @internal */
    private loadSelectedFieldValues;
    /** @internal */
    getMappedFieldValues(fieldValues: FieldValue[]): FieldValues;
    /** @internal */
    getFieldIds(fieldValues: FieldValue[]): Set<number>;
    /** @internal */
    private getInitialSelectedOptions;
    /** @internal */
    fieldsEmpty(): boolean;
    /** @internal */
    addRemoveFieldsAsync(): Promise<void>;
    /** @internal */
    onClickBackAsync(): Promise<void>;
    /** @internal */
    private toggleAdhocModal;
    /** @internal */
    refreshFieldsAsync(): Promise<void>;
    /** @internal */
    getSelectedFieldInfos(): LfFieldInfo[];
    /** @internal */
    private updateTemplateFields;
    /** @internal */
    onFieldValueChangedAsync(values: string[], fieldInfo: LfFieldInfo): Promise<void>;
    static ɵfac: i0.ɵɵFactoryDeclaration<LfFieldAdhocContainerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LfFieldAdhocContainerComponent, "lf-field-adhoc-container-component", never, { "getFieldValues": { "alias": "getFieldValues"; "required": false; }; "clearAsync": { "alias": "clearAsync"; "required": false; }; "initAsync": { "alias": "initAsync"; "required": false; }; "resetFieldDataAsync": { "alias": "resetFieldDataAsync"; "required": false; }; "updateFieldValuesAsync": { "alias": "updateFieldValuesAsync"; "required": false; }; }, { "dialogOpened": "dialogOpened"; "dialogClosed": "dialogClosed"; }, never, never, false, never>;
}
