/**
 * generalFunctions/index.js
 * -----------------------------------------------------------
 * Central barrel file for re-exporting helpers and configurations.
 * Provides both namespace exports and dynamic loading capabilities.
 * now we can load modules like this:
 * const { menuUtils, outputUtils } = require('generalFunctions');
 */

// Core helper modules
const outputUtils = require('./src/helper/outputUtils.js');
const logger = require('./src/helper/logger.js');
const validation = require('./src/helper/validationUtils.js');
const configUtils = require('./src/helper/configUtils.js');
const assertions = require('./src/helper/assertionUtils.js')
const coolprop = require('./src/coolprop-node/src/index.js');
const gravity = require('./src/helper/gravity.js')
const assetApiConfig = require('./src/configs/assetApiConfig.js');

// Domain-specific modules
const { MeasurementContainer } = require('./src/measurements/index.js');
const configManager = require('./src/configs/index.js');
const nrmse = require('./src/nrmse/errorMetrics.js');
const state = require('./src/state/state.js');
const convert = require('./src/convert/index.js');
const MenuManager = require('./src/menu/index.js');
const predict = require('./src/predict/predict_class.js');
const interpolation = require('./src/predict/interpolation.js');
const childRegistrationUtils = require('./src/helper/childRegistrationUtils.js');
const { loadCurve } = require('./datasets/assetData/curves/index.js'); //deprecated replace with load model data
const { loadModel } = require('./datasets/assetData/modelData/index.js'); 

// Export everything
module.exports = {
    predict,
    interpolation,
    configManager,
    assetApiConfig,
    outputUtils,
    configUtils,
    logger,
    validation,
    assertions,
    MeasurementContainer,
    nrmse,
    state,
    coolprop,
    convert,
    MenuManager,
    childRegistrationUtils,
    loadCurve, //deprecated replace with loadModel
    loadModel,
    gravity
};
