{
    "general": {
        "name": {
            "default": "interpolation configuration",
            "rules": {
                "type": "string",
                "description": "A human-readable name or label for this interpolation configuration."
            }
        },
        "id": {
            "default": null,
            "rules": {
                "type": "string",
                "nullable": true,
                "description": "A unique identifier for this configuration. If not provided, defaults to null."
            }
        },
        "unit": {
            "default": "unitless",
            "rules": {
                "type": "string",
                "description": "The unit used for the interpolated values (e.g., 'meters', 'seconds', 'unitless')."
            }
        },
        "logging": {
            "logLevel": {
                "default": "info",
                "rules": {
                    "type": "enum",
                    "values": [
                        {
                            "value": "debug",
                            "description": "Log messages are printed for debugging purposes."
                        },
                        {
                            "value": "info",
                            "description": "Informational messages are printed."
                        },
                        {
                            "value": "warn",
                            "description": "Warning messages are printed."
                        },
                        {
                            "value": "error",
                            "description": "Error messages are printed."
                        }
                    ]
                }
            },
            "enabled": {
                "default": true,
                "rules": {
                    "type": "boolean",
                    "description": "Indicates whether logging is active. If true, log messages will be generated."
                }
            }
        }
    },
    "functionality": {
        "softwareType": {
            "default": "interpolation",
            "rules": {
                "type": "enum",
                "values": [
                    {
                        "value": "interpolation",
                        "description": "Specifies this component as an interpolation engine."
                    }
                ]
            }
        },
        "role": {
            "default": "interpolator",
            "rules": {
                "type": "string",
                "description": "Indicates the role of this configuration (e.g., 'Interpolator', 'DataCurve', etc.)."
            }
        }
    },
    "interpolation": {
        "enabled": {
            "default": true,
            "rules": {
                "type": "boolean",
                "description": "Flag to enable/disable interpolation."
            }
        },
        "type": {
            "default": "monotone_cubic_spline",
            "rules": {
                "type": "enum",
                "values": [
                    {
                        "value": "cubic_spline",
                        "description": "Standard cubic spline interpolation (natural boundary)."
                    },
                    {
                        "value": "monotone_cubic_spline",
                        "description": "Monotonic cubic spline interpolation (e.g., Fritsch-Carlson)."
                    },
                    {
                        "value": "linear",
                        "description": "Basic linear interpolation between data points."
                    }
                ],
                "description": "Specifies the default interpolation method."
            }
        },
        "tension": {
            "default": 0.5,
            "rules": {
                "type": "number",
                "min": 0,
                "max": 1,
                "description": "Tension parameter (0–1) for spline methods like 'cardinal'."
            }
        }
    },
    "normalization": {
        "enabled": {
            "default": true,
            "rules": {
                "type": "boolean",
                "description": "Flag to enable/disable normalization of input data."
            }
        },
        "normalizationType": {
            "default": "minmax",
            "rules": {
                "type": "enum",
                "values": [
                    {
                        "value": "minmax",
                        "description": "Min-max normalization (default)."
                    },
                    {
                        "value": "zscore",
                        "description": "Z-score normalization."
                    }
                ],
                "description": "Specifies the type of normalization to apply."
            }
        },
        "parameters": {
            "default": {},
            "rules": {
                "type": "object",
                "schema": {
                    "min": {
                        "default": 0,
                        "rules": {
                            "type": "number",
                            "description": "Minimum value for normalization."
                        }
                    },
                    "max": {
                        "default": 1000,
                        "rules": {
                            "type": "number",
                            "description": "Maximum value for normalization."
                        }
                    },
                    "curvePoints": {
                        "default": 10,
                        "rules": {
                            "type": "number",
                            "description": "Number of points in the normalization curve."
                        }
                    }
                },
                "description": "Normalization parameters (e.g., 'min', 'max', 'mean', 'std')."
            }
        }
    },
    "curve": {
        "default": {
            "1": {
                "x": [
                    1,
                    2,
                    3,
                    4,
                    5
                ],
                "y": [
                    10,
                    20,
                    30,
                    40,
                    50
                ]
            }
        },
        "rules": {
            "type": "curve",
            "description": "Explicitly enumerated dimension keys (no wildcard)."
        }
    }
}