import { EventEmitter, OnChanges, OnDestroy, OnInit, SimpleChanges } from '@angular/core'; import { FormGroup, FormControl, Validators, ValidatorFn } from '@angular/forms'; import { BehaviorSubject, Observable, Subscription } from 'rxjs'; import { TKeysOf } from '../types/keys-of.type'; import * as i0 from "@angular/core"; export declare abstract class AbstractBaseFormComponent, TExternalValue> implements OnInit, OnDestroy, OnChanges { readonly requiredValidator: { validators: (typeof Validators.required)[]; }; form: FormGroup; protected _form: FormGroup; valueChanges$$: BehaviorSubject; valueChanges$: Observable; statusChanges$$: BehaviorSubject; statusChanges$: Observable; private readonly subscriptions; readonly input$$: BehaviorSubject; private readonly input$; debug: boolean; input: TExternalValue; valueChange: EventEmitter; statusChange: EventEmitter; initTime: number; elapsedTime: number; ngOnChanges(changes: SimpleChanges): void; ngOnDestroy(): void; ngOnInit(): void; protected requiredIf(predicate: () => boolean): ValidatorFn; get value(): TFormValue; showErrors(input: TFormValue): void; abstract _getClassName(): string; abstract _buildForm(): FormGroup<{ [key in keyof TFormValue]: FormControl; }>; abstract _configureForm(formValue: TFormValue): void; abstract _toFormValue(externalValue: TExternalValue): TFormValue; abstract _fromFormValue(formValue: TFormValue): TExternalValue; abstract _getFieldLevelValueSubscriptions(): Subscription[]; protected outputDebug(...args: any[]): void; protected valueChangesFor(controlName: keyof TFormValue): Observable; private removeKeysFromFormValueIfNoControlPresent; protected configureFields(include: boolean, fields: Array, controls?: Partial>, skipEmit?: boolean): { add: string[]; remove: string[]; requiresChanges: boolean; }; protected configureFieldsDryRun(include: boolean, fields: Array, controls?: Partial>, skipEmit?: boolean): { add: string[]; remove: string[]; requiresChanges: boolean; }; private _configureFields; protected subscribe($: Observable): void; protected keysOf(controls: TKeysOf, FormControl>, filterFn?: (key: keyof Partial) => boolean): (keyof TFormValue)[]; static ɵfac: i0.ɵɵFactoryDeclaration, never>; static ɵcmp: i0.ɵɵComponentDeclaration, "ovo-abstract-base-form", never, { "debug": { "alias": "debug"; "required": false; }; "input": { "alias": "input"; "required": false; }; }, { "valueChange": "valueChange"; "statusChange": "statusChange"; }, never, never, false, never>; }