import type { AbstractControl } from "../lib/abstract-conrol"; type UnsubscribeFn = (listener: ListenerFn) => void; export type ReactiveValue = { value: T; }; export type CancelablePromise = Promise & { cancel: () => void; }; export type FormGroupValue = { [key: string]: unknown; }; export type ListenerFn = (value: any) => void; export type ValidationErrors = { [key: string]: string; }; export type ValidationFn = (control: T) => ValidationErrors | null; export type AsyncValidationFn = (control: T, abortController?: AbortController) => Promise; export type ValueSubscribtion = { subscribe: (listener: ListenerFn) => UnsubscribeFn; unsubscribe: UnsubscribeFn; }; export type ControlUpdateOptions = { updateParentValidity?: boolean; runAsyncValidators?: boolean; updateParentDirty?: boolean; }; export type ObjectKey = string | number; export {};