import os
import sys
import importlib.util
from abc import ABC, abstractmethod
from typing import Dict, Any

# --- Driver Plugin Interface ---

class DriverPlugin(ABC):
    '''
    驱动插件抽象基类
    '''

    @abstractmethod
    def create_environment(self, env_config: Dict[str, Any]) -> str:
        '''
        创建仿真环境
        :param env_config: 环境配置
        :return: 环境ID
        '''
        pass

    @abstractmethod
    def start_environment(self, env_id: str) -> bool:
        '''
        启动仿真环境
        :param env_id: 环境ID
        :return: 是否成功
        '''
        pass

    @abstractmethod
    def stop_environment(self, env_id: str) -> bool:
        '''
        停止仿真环境
        :param env_id: 环境ID
        :return: 是否成功
        '''
        pass

    @abstractmethod
    def delete_environment(self, env_id: str) -> bool:
        '''
        删除仿真环境
        :param env_id: 环境ID
        :return: 是否成功
        '''
        pass

    @abstractmethod
    def get_environment_status(self, env_id: str) -> str:
        '''
        获取仿真环境状态
        :param env_id: 环境ID
        :return: 状态 (e.g., 'running', 'stopped', 'error')
        '''
        pass

    @abstractmethod
    def list_environments(self) -> Dict[str, Any]:
        '''
        列出所有仿真环境
        :return: 环境列表
        '''
        pass

# --- Countermeasure Plugin Interface ---

class CountermeasurePlugin(ABC):
    '''
    反制动作插件抽象基类
    '''

    @abstractmethod
    def execute(self, context: Dict[str, Any]) -> Dict[str, Any]:
        '''
        执行反制动作
        :param context: 上下文信息，包含请求信息、环境信息等
        :return: 执行结果
        '''
        pass

    @abstractmethod
    def get_description(self) -> str:
        '''
        获取反制动作描述
        :return: 描述信息
        '''
        pass