"""Usage-accounting boundary exposed by a host adapter."""
from __future__ import annotations

from dataclasses import dataclass
from pathlib import Path
from typing import Protocol


@dataclass(frozen=True)
class UsageRequest:
    team_state_path: Path
    project_root: Path
    incremental: bool = True


@dataclass(frozen=True)
class UsageSnapshot:
    source: str
    payload: dict


class UsageAccountingPort(Protocol):
    def collect(self, request: UsageRequest) -> UsageSnapshot: ...
