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, }: {
    transformIn: TransformerFns<Value>['transformIn'];
    transformOut: TransformerFns<Value>['transformOut'];
    toInput: TransformerFns<Value>['toInput'];
    fromInput: TransformerFns<Value>['fromInput'];
    toEvent: TransformerFns<Value>['toEvent'];
    transformValue: TransformerFns<Value>['transformValue'];
    provideAdditionalArgs: TransformerFns<Value>['provideAdditionalArgs'];
    fromExternal: TransformerFns<Value>['fromExternal'];
    validateRequired: TransformerFns<Value>['validateRequired'];
    valueRef: React.RefObject<Value>;
}): {
    transformers: import("react").RefObject<TransformerFns<Value>>;
    getEventArgs: ({ eventName, additionalArgs, overrideValue, }: {
        eventName: string;
        additionalArgs: ProvideAdditionalEventArgs;
        overrideValue?: Value;
    }) => [Value] | [Value, ProvideAdditionalEventArgs];
};
