from __future__ import annotations
from datetime import datetime
from typing import Optional, List
from pydantic import BaseModel


class ImpersonationSessionResponse(BaseModel):
    session_id: int
    admin_user_id: int
    admin_email: str
    merchant_id: int
    merchant_name: Optional[str] = None
    started_at: datetime
    expires_at: datetime
    ip_address: Optional[str] = None
    is_active: bool
    is_revoked: bool

    class Config:
        from_attributes = True


class ImpersonationSessionListResponse(BaseModel):
    items: List[ImpersonationSessionResponse]
    total: int
    page: int
    page_size: int


class ImpersonationActivityItem(BaseModel):
    log_id: int
    action: str
    target_type: Optional[str] = None
    target_id: Optional[int] = None
    metadata: Optional[dict] = None
    created_at: datetime

    class Config:
        from_attributes = True


class ImpersonationActivityResponse(BaseModel):
    session_id: int
    merchant_id: int
    items: List[ImpersonationActivityItem]
    total: int
