"""Codegen domain - Protocols for external dependencies."""
from __future__ import annotations
from typing import Optional, Protocol
from uuid import UUID

from src.integrations.ai_provider import AICodeGeneratorProtocol, CodegenResult


class ProjectInfoFacade(Protocol):
    async def get_project_type(self, project_id: UUID) -> Optional[str]: ...
    async def get_project_instruction_content(self, project_id: UUID) -> str: ...
    async def get_project_repo_full_name(self, project_id: UUID) -> Optional[str]: ...


class RevisionFacade(Protocol):
    async def create_revision(
        self,
        project_id: UUID,
        git_sha: str,
        source: str,
        source_id: Optional[UUID] = None,
        commit_message: Optional[str] = None,
        created_by: Optional[UUID] = None,
    ) -> UUID: ...
