import type { RefObject } from 'react';
import type { ProvideAdditionalEventArgs } from '../types';
export type TransformerFns<Value> = {
    transformIn(external: unknown): Value;
    transformOut(internal: Value, args?: unknown): unknown;
    toInput(value: Value): Value;
    fromInput(value: Value): Value;
    toEvent(value: Value, eventName?: string): Value;
    transformValue(value: Value, currentValue?: Value): Value;
    provideAdditionalArgs(value: Value, additionalArgs?: ProvideAdditionalEventArgs): ProvideAdditionalEventArgs;
    fromExternal(value: Value): Value;
    validateRequired(value: Value, options: {
        emptyValue: unknown;
        required: boolean;
        isChanged: boolean;
        error: Error;
    }): Error | undefined;
};
export default function useFieldTransform<Value>({ transformIn, transformOut, toInput, fromInput, toEvent, transformValue, provideAdditionalArgs, fromExternal, validateRequired, valueRef, }: TransformerFns<Value> & {
    valueRef: RefObject<Value>;
}): {
    transformers: RefObject<TransformerFns<Value>>;
    getEventArgs: ({ eventName, additionalArgs, overrideValue, }: {
        eventName: string;
        additionalArgs: ProvideAdditionalEventArgs;
        overrideValue?: Value;
    }) => [Value] | [Value, ProvideAdditionalEventArgs];
};
