from abc import ABC, abstractmethod from typing import Dict, List, Any from scapy.all import Packet class FrameTypeInterface(ABC): def __init__(self): self.name: str = "" self.frames_list = [] self.bytes = 0 def get_name(self): """Return the interface's name""" return self.name @abstractmethod def add(self, timestamp: float, size: int, packet: Packet): """Add a packet to the statistics.""" pass @abstractmethod def get_summary_dict(self) -> Dict[str, Any]: """Return a dictionary of statistics for the tabular report.""" pass @abstractmethod def get_column_definitions(self) -> List[tuple]: """Return column definitions as [(column_name, format_spec), ...]""" pass