import { AbstractControl } from '@angular/forms'; import { Observable } from 'rxjs'; import { MethodNames, TypeOfClassMethod } from '../typings'; export type AbstractControlMethods = 'markAsTouched' | 'markAsUntouched' | 'markAsDirty' | 'markAsPristine'; export type EmitValue = boolean; export type Methods = Partial>; /** * Patches the method to first execute the provided function and then * the original functionality * @param obj Object with the method of interest * @param methodName Method name to patch * @param fn Function to execute before the original functionality */ export declare function patchObjectMethodWith>(obj: T, methodName: K, fn: TypeOfClassMethod): void; /** * Extract a touched changed observable from an abstract control * @param control AbstractControl * * @usage * ``` * const formControl = new FormControl(); * const touchedChanged$ = extractTouchedChanges(formControl); * ``` */ export declare function extractTouchedChanges(control: AbstractControl): Observable; /** * Extract a dirty changed observable from an abstract control * @param control AbstractControl * * @usage * ``` * const formControl = new FormControl(); * const dirtyChanged$ = extractDirtyChanges(formControl); * ``` */ export declare function extractDirtyChanges(control: AbstractControl): Observable;