import { useState, useCallback } from 'react'; export interface BaseParametersHook { parameters: T; updateParameter: (parameter: K, value: T[K]) => void; resetParameters: () => void; validateParameters: () => boolean; getEndpointName: () => string; } export interface BaseParametersConfig { defaultParameters: T; endpointName: string; validateFn?: (params: T) => boolean; } export function useBaseParameters(config: BaseParametersConfig): BaseParametersHook { const [parameters, setParameters] = useState(config.defaultParameters); const updateParameter = useCallback((parameter: K, value: T[K]) => { setParameters(prev => ({ ...prev, [parameter]: value, })); }, []); const resetParameters = useCallback(() => { setParameters(config.defaultParameters); }, [config.defaultParameters]); const validateParameters = useCallback(() => { return config.validateFn ? config.validateFn(parameters) : true; }, [parameters, config.validateFn]); const getEndpointName = useCallback(() => { return config.endpointName; }, [config.endpointName]); return { parameters, updateParameter, resetParameters, validateParameters, getEndpointName, }; }