import * as _angular_core from '@angular/core'; import { Type, OnInit, DestroyRef, ChangeDetectorRef, InjectionToken, ViewContainerRef } from '@angular/core'; import * as _angular_forms from '@angular/forms'; import { ControlValueAccessor, FormGroup, FormControl, FormArray } from '@angular/forms'; import { Observable } from 'rxjs'; interface FormFieldConfig { key: string; value?: any; type: 'text' | 'email' | 'number' | 'select' | 'checkbox' | 'date' | 'textarea' | 'datetime-local' | 'time' | 'password' | 'tel' | 'url' | 'radio' | 'file' | 'range' | 'color' | 'group' | 'array'; label: string; placeholder?: string; required?: boolean; disabled?: boolean; options?: OptionProps; validators?: ValidatorConfig[]; conditionalLogic?: ConditionalRule[]; order?: number; gridSize?: number; component?: Type; min?: number | string; max?: number | string; step?: number | string; minLength?: number; maxLength?: number; pattern?: string; accept?: string; multiple?: boolean; children?: FormFieldConfig[]; minItems?: number; maxItems?: number; } interface ValidatorConfig { type: 'required' | 'email' | 'minLength' | 'maxLength' | 'pattern' | 'custom' | 'min' | 'max' | 'requiredTrue'; value?: any; message: string; } interface ConditionalRule { dependsOn: string; condition: 'equals' | 'notEquals' | 'contains' | 'greaterThan' | 'lessThan'; value: any; action: 'show' | 'hide' | 'enable' | 'disable'; } declare enum ConditionalAction { SHOW = "show", HIDE = "hide", ENABLE = "enable", DISABLE = "disable" } interface OptionProps { defaultValues?: T[]; url?: string; disabled?: (option: T) => boolean; labelProp?: string; valueProp?: string; apiName?: string; } declare class DynamicFormComponent implements OnInit { fields: _angular_core.InputSignal[]>; values: _angular_core.InputSignal>; submitButtonText: _angular_core.InputSignal; submitInProgress: _angular_core.InputSignal; showCancelButton: _angular_core.InputSignal; onSubmit: _angular_core.OutputEmitterRef; formCancel: _angular_core.OutputEmitterRef; private dynamicFormService; readonly destroyRef: DestroyRef; readonly changeDetectorRef: ChangeDetectorRef; dynamicForm: FormGroup; fieldVisibility: { [key: string]: boolean; }; ngOnInit(): void; get sortedFields(): FormFieldConfig[]; submit(): void; onCancel(): void; onFieldChange(event: { fieldKey: string; value: any; }): void; isFieldVisible(field: FormFieldConfig): boolean; getChildFormGroup(key: string): FormGroup; resetForm(): void; private initializeFieldVisibility; private setupConditionalLogic; private evaluateConditionalLogic; private evaluateCondition; private applyConditionalAction; private setupFormAndLogic; private markAllFieldsAsTouched; private focusFirstInvalidField; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare const ABP_DYNAMIC_FORM_FIELD: InjectionToken; declare class DynamicFormFieldComponent implements OnInit, ControlValueAccessor { field: _angular_core.InputSignal>; visible: _angular_core.InputSignal; control: FormControl; fieldFormGroup: FormGroup; readonly changeDetectorRef: ChangeDetectorRef; readonly destroyRef: DestroyRef; private injector; private formBuilder; private dynamicFormService; options$: Observable<{ key: string; value: any; }[]>; get fieldId(): string; get errorId(): string; get helpTextId(): string; constructor(); ngOnInit(): void; writeValue(value: any[]): void; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState(isDisabled: boolean): void; get isInvalid(): boolean; get errors(): string[]; get value(): _angular_forms.AbstractControl; onFileChange(event: Event): void; private onChange; private onTouched; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class DynamicFieldHostComponent implements ControlValueAccessor { component: _angular_core.InputSignal>; inputs: _angular_core.InputSignal>; readonly viewContainerRef: _angular_core.Signal; private componentRef?; private value; private disabled; private innerControl; readonly destroyRef: DestroyRef; constructor(); private createChild; private applyInputs; private isCVA; writeValue(obj: any): void; private onChange; private onTouched; registerOnChange(fn: any): void; registerOnTouched(fn: any): void; setDisabledState(isDisabled: boolean): void; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class DynamicFormService { private formBuilder; private restService; apiName: string; createFormGroup(fields: FormFieldConfig[]): FormGroup; createFormArray(arrayConfig: FormFieldConfig): FormArray; getInitialValues(fields: FormFieldConfig[]): any; getOptions(url: string, apiName?: string): any; private buildValidators; private getInitialValue; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵprov: _angular_core.ɵɵInjectableDeclaration; } declare class DynamicFormGroupComponent { groupConfig: _angular_core.InputSignal>; formGroup: _angular_core.InputSignal>; visible: _angular_core.InputSignal; get sortedChildren(): FormFieldConfig[]; getChildFormGroup(key: string): FormGroup; getChildControl(key: string): _angular_forms.AbstractControl; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } declare class DynamicFormArrayComponent { arrayConfig: _angular_core.InputSignal>; formGroup: _angular_core.InputSignal>; visible: _angular_core.InputSignal; private fb; private dynamicFormService; private cdr; get formArray(): FormArray; get sortedChildren(): FormFieldConfig[]; get canAddItem(): boolean; get canRemoveItem(): boolean; addItem(): void; removeItem(index: number): void; getItemFormGroup(index: number): FormGroup; getNestedFormGroup(index: number, key: string): FormGroup; trackByIndex(index: number): number; static ɵfac: _angular_core.ɵɵFactoryDeclaration; static ɵcmp: _angular_core.ɵɵComponentDeclaration; } export { ABP_DYNAMIC_FORM_FIELD, ConditionalAction, DynamicFieldHostComponent, DynamicFormArrayComponent, DynamicFormComponent, DynamicFormFieldComponent, DynamicFormGroupComponent, DynamicFormService }; export type { ConditionalRule, FormFieldConfig, OptionProps, ValidatorConfig };