from typing import Optional
from .base import IPayrollAdapter
from .netvisor import NetvisorAdapter
from .procounter import ProCounterAdapter


class PayrollAdapterFactory:
    """Factory for creating payroll adapter instances"""
    
    @staticmethod
    def create_adapter(provider: str, integration_config: dict) -> Optional[IPayrollAdapter]:
        """
        Create an adapter instance based on provider type
        
        Args:
            provider: Provider name ('netvisor', 'procounter', etc.)
            integration_config: Configuration dictionary with api_endpoint, api_key, api_secret
            
        Returns:
            Adapter instance or None if provider not supported
        """
        adapters = {
            'netvisor': NetvisorAdapter,
            'procounter': ProCounterAdapter,
        }
        
        adapter_class = adapters.get(provider.lower())
        if adapter_class:
            return adapter_class(integration_config)
        
        return None

