from pydantic import BaseModel, Field

class AgentLoginRequest(BaseModel):
    email: str = Field(..., min_length=3, description="Agent login email")
    password: str = Field(..., min_length=1, description="Agent login password")

class SafeAgentInfo(BaseModel):
    agentId: str
    name: str
    email: str
    role: str
    status: str
    createdAt: str | None = None
    updatedAt: str | None = None

class AgentLoginResponse(BaseModel):
    accessToken: str
    tokenType: str = "bearer"
    agent: SafeAgentInfo

class CreateAgentRequest(BaseModel):
    name: str = Field(..., min_length=1, description="Agent full name")
    email: str = Field(..., min_length=3, description="Agent email address")
    password: str = Field(..., min_length=6, description="Initial password")
    role: str = Field(default="AGENT", description="Agent role (AGENT or ADMIN)")
    status: str = Field(default="ACTIVE", description="Agent status (ACTIVE or INACTIVE)")

class UpdateAgentRequest(BaseModel):
    name: str | None = Field(default=None, description="Agent full name")
    role: str | None = Field(default=None, description="Agent role (AGENT or ADMIN)")
    status: str | None = Field(default=None, description="Agent status (ACTIVE or INACTIVE)")

class ResetAgentPasswordRequest(BaseModel):
    newPassword: str = Field(..., min_length=6, description="New agent password")
