import type { EventReturnWithStateObjectAndSuccess, EventStateObjectWithSuccess, Identifier, FieldStatus } from '../types';
import type { FormError } from '../utils';
import type { SubmitStateWithValidating, PersistErrorStateMethod, ErrorInitiator } from './useFieldError';
export type AsyncProcesses = 'onChangeValidator' | 'onBlurValidator' | 'onChangeLocal' | 'onChangeContext';
export type UseFieldAsyncParams<Value> = {
    onChange: (...args: unknown[]) => unknown;
    onChangeContext: (...args: unknown[]) => unknown;
    valueRef: React.RefObject<Value>;
    forceUpdate: () => void;
    persistErrorState: (method: PersistErrorStateMethod, initiator: ErrorInitiator, error?: Error | FormError | Array<Error | FormError>) => void;
    revealError: () => void;
    setFieldState: (state: SubmitStateWithValidating) => void;
    hasError: () => boolean;
    warningRef: React.RefObject<FieldStatus['warning']>;
    infoRef: React.RefObject<FieldStatus['info']>;
    fieldStateRef: React.RefObject<SubmitStateWithValidating>;
    removeErrorRef: React.RefObject<() => void>;
    hasPath: boolean;
    identifier: Identifier;
    executeOnChangeRegardlessOfError: boolean;
    handlePathChangeDataContext: (identifier: Identifier) => EventReturnWithStateObjectAndSuccess | Promise<EventReturnWithStateObjectAndSuccess>;
};
export default function useFieldAsync<Value>({ onChange, onChangeContext, valueRef, forceUpdate, persistErrorState, revealError, setFieldState, hasError, warningRef, infoRef, fieldStateRef, removeErrorRef, hasPath, identifier, executeOnChangeRegardlessOfError, handlePathChangeDataContext, }: UseFieldAsyncParams<Value>): {
    asyncBehaviorIsEnabled: boolean;
    defineAsyncProcess: (name: AsyncProcesses) => void;
    addToPool: (name: "onChangeValidator" | "onBlurValidator" | "onChangeLocal" | "onChangeContext", fn: any, runAsync: any) => void;
    runPool: (cb?: any) => Promise<void>;
    yieldAsyncProcess: ({ name, waitFor, }: {
        name: "onChangeLocal" | "onChangeContext" | "onSubmitContext";
        waitFor: Array<{
            processName?: AsyncProcesses;
            withStates: Array<SubmitStateWithValidating>;
            hasValue?: Value;
        }>;
    }) => Promise<void>;
    handleChangeEventResult: () => Promise<void>;
    setEventResult: (result: EventReturnWithStateObjectAndSuccess) => Promise<void>;
    callOnChangeContext: () => Promise<void>;
    asyncProcessRef: import("react").RefObject<AsyncProcesses>;
    validatedValueRef: import("react").RefObject<Value>;
    changeEventResultRef: import("react").RefObject<EventStateObjectWithSuccess>;
};
