from abc import ABC, abstractmethod
import numpy as np
from typing import Optional, Dict, Any

class RiskMeter(ABC):
    """
    风险度量基类。
    所有具体风险度量必须继承此类并实现 measure 方法。
    """

    @abstractmethod
    def measure(self,
                original: np.ndarray,
                perturbed: np.ndarray,
                params: Optional[Dict[str, Any]] = None) -> float:
        """
        测量隐私风险。

        Parameters
        ----------
        original : np.ndarray
            原始数据。
        perturbed : np.ndarray
            扰动后的数据。
        params : dict, optional
            可选参数，用于传递机制参数等信息。

        Returns
        -------
        float
            风险值，越小表示越安全。
        """
        pass