"""Protocol definitions for the migration package""" from typing import Protocol from pathlib import Path from ..shared.models import OperationRecord class IMigrationStrategy(Protocol): """Protocol for migration strategies""" def migrate( self, source: Path, destination: Path, verify: bool = True ) -> bool: """Migrate a file from source to destination Args: source: Source file path destination: Destination file path verify: Whether to verify the operation Returns: True if migration successful """ ... def can_migrate(self, source: Path, destination: Path) -> bool: """Check if migration is possible Args: source: Source file path destination: Destination file path Returns: True if migration is possible """ ... def estimate_time(self, source: Path) -> float: """Estimate migration time in seconds Args: source: Source file path Returns: Estimated time in seconds """ ... def cleanup(self, source: Path) -> bool: """Cleanup source file after successful migration Args: source: Source file path Returns: True if cleanup successful """ ... class IMigrationEngine(Protocol): """Protocol for migration engine""" def plan_migration( self, disk: str, target_base: Path ) -> list[OperationRecord]: """Plan migration for a disk Args: disk: Disk identifier target_base: Target base directory Returns: List of planned operations """ ... def execute_migration( self, operations: list[OperationRecord], dry_run: bool = False ) -> dict: """Execute migration operations Args: operations: List of operations to execute dry_run: Whether to perform a dry run Returns: Dictionary with execution statistics """ ... def rollback(self, operation: OperationRecord) -> bool: """Rollback a migration operation Args: operation: Operation to rollback Returns: True if rollback successful """ ...