# Generated by @typespec-fastapi/emitter
# Do not edit this file manually — regenerate with: tsp compile .
"""Service layer for Sessions operations.

Contains a Protocol interface defining the service contract and a stub
implementation that raises NotImplementedError for all methods.
"""
from __future__ import annotations


from typing import Protocol, runtime_checkable

from ..models.common import NotFoundError, ValidationError
from ..models.session_hub import MessageRow, SessionDetail, SessionRow


@runtime_checkable
class SessionsService(Protocol):
    """Service interface for Sessions operations."""
    async def list_sessions(self, tool: str | None = None, host: str | None = None, working_directory: str | None = None, limit: int | None = None, offset: int | None = None) -> list[SessionRow] | ValidationError:
        ...
    async def get_messages(self, host: str, tool: str, session_id: str) -> list[MessageRow] | NotFoundError:
        ...
    async def get_session(self, host: str, tool: str, session_id: str) -> SessionDetail | NotFoundError:
        ...


class SessionsServiceStub:
    """Stub implementation of SessionsService.

    All methods raise NotImplementedError. Replace with actual
    business logic by subclassing or monkey-patching.
"""
    async def list_sessions(self, tool: str | None = None, host: str | None = None, working_directory: str | None = None, limit: int | None = None, offset: int | None = None) -> list[SessionRow] | ValidationError:
        raise NotImplementedError(
            "Method list_sessions not yet implemented"
        )
    async def get_messages(self, host: str, tool: str, session_id: str) -> list[MessageRow] | NotFoundError:
        raise NotImplementedError(
            "Method get_messages not yet implemented"
        )
    async def get_session(self, host: str, tool: str, session_id: str) -> SessionDetail | NotFoundError:
        raise NotImplementedError(
            "Method get_session not yet implemented"
        )
