///
import { FenextjsValidatorClass } from "fenextjs-validator";
import { ErrorFenextjs } from "fenextjs-error";
export interface useDataOptionsRefreshDataIfChangeDefaultDataOptions {
active?: boolean;
useReloadKeyData?: boolean;
}
export interface setDataOptions {
useOptionsOnChangeDataAfter?: boolean;
useSetIsChange?: boolean;
}
/**
* A custom hook options.
*
* @template T - The type of the data to manage.
* @template M - The type of the memoized data.
* @param {Object} options - The options for the hook.
* @param {Function} options.onChangeDataAfter - A function to execute after the data changes.
* @param {T} options.data - The data use not data.
* @param {Boolean} options.refreshDataIfChangeDefaultData - A swich for change data if change defaultData.
* @param {Function} options.onChangeDataMemoAfter - A function to execute after the dataMemo changes.
* @param {Function} options.onMemo - A function to memoize the data.
* @param {FenextjsValidatorClass} options.validator - A FenextjsValidatorClass for validate data.
* @param {FenextjsValidatorClass} options.validatorMemo - A FenextjsValidatorClass for validate dataMemo.
* @param {Function} options.onSubmitData - A function if is valid data for to send.
* @param {Function} options.onSubmitDataMemo - A function if is valid dataMemo for to send.
* @returns {Object} - An object with the data state and methods to manage it.
*/
export interface useDataOptions {
data?: T;
refreshDataIfChangeDefaultData?: useDataOptionsRefreshDataIfChangeDefaultDataOptions;
onChangeDataAfter?: (data: T) => void;
onDeleteDataAfter?: (data: T) => void;
onChangeDataMemoAfter?: (data: M) => void;
memoDependencies?: any[];
onMemo?: (data: T) => M;
validator?: FenextjsValidatorClass;
validatorMemo?: FenextjsValidatorClass;
onSubmitData?: (data: T) => RT | Promise