from pydantic import BaseModel, EmailStr from datetime import datetime from typing import Optional, Dict, Any class LicenseActivationRequest(BaseModel): license_key: str machine_id: str hardware_hash: str os_info: Optional[Dict[str, Any]] = None app_version: Optional[str] = None class LicenseActivationResponse(BaseModel): success: bool message: str activation_id: Optional[int] = None expires_at: Optional[datetime] = None features: Optional[Dict[str, Any]] = None class LicenseVerificationRequest(BaseModel): license_key: str machine_id: str hardware_hash: str activation_id: int class LicenseVerificationResponse(BaseModel): valid: bool message: str expires_at: Optional[datetime] = None features: Optional[Dict[str, Any]] = None requires_update: bool = False update_url: Optional[str] = None class VersionCheckRequest(BaseModel): current_version: str license_key: str class VersionCheckResponse(BaseModel): latest_version: str current_version: str update_available: bool is_mandatory: bool download_url: Optional[str] = None release_notes: Optional[str] = None