from typing import List, Set, Dict

def print_counts(python_files: List[str], all_imports: Set[str], all_imports_with_duplicates: List[str], all_unused_imports: Dict[str, List[str]]) -> None:
    """
    Print the counts of Python files, import statements, unique libraries imported, and unused imports.
    Args:
        python_files (list): List of Python files scanned.
        all_imports (set): Set of unique libraries imported.
        all_imports_with_duplicates (list): List of all import statements.
        all_unused_imports (dict): Dictionary of unused imports per file
    Returns:
        None
    """
    print("Total Python Files Scanned:", len(python_files))
    print(f"Total Import Statements: {len(all_imports_with_duplicates)}")
    print(f"Unique Libraries Imported: {len(all_imports)}")
    print(f"Total Unused Imports: {sum(len(v) for v in all_unused_imports.values())}")
    
def print_syntax_error_files(syntax_error_files: List[str]) -> None:
    """
    Print files with syntax errors.
    Args:
        syntax_error_files (list): List of files with syntax errors.
    Returns:
        None
    """
    if (len(syntax_error_files) > 0):
        if (len(syntax_error_files) == 1):
            print(f"\nSyntax error in {len(syntax_error_files)} file:")
        else:
            print(f"\nSyntax error in {len(syntax_error_files)} files:")
        for file in syntax_error_files:
            print(f"- {file}")
            
def print_unused_imports(all_unused_imports: Dict[str, List[str]]) -> None:
    """"
    Print unused imports.
    Args:
        all_unused_imports (dict): Dictionary of unused imports per file
    Returns:
        None
    """
    if all_unused_imports:
        print("\nUnused Imports:")
        for file, unused_imports in all_unused_imports.items():
            print(f"- {file}:")
            for imp in unused_imports:
                print(f"  - {imp}")

def print_imports(imports: Set[str]) -> None:
    """
    Print the dependencies.
    Args:
        imports (set): Set of unique libraries imported.
    Returns:
        None
    """
    print("\nDependencies:")
    for imp in sorted(imports):
        print(f"- {imp}")