"""Typed representations of deployment artefacts."""

from __future__ import annotations

from dataclasses import dataclass, field
from typing import Dict, List


@dataclass(slots=True)
class DeploymentAsset:
    """Describe a generated deployment artefact."""

    name: str
    path: str
    runtime: str
    description: str = ""
    metadata: Dict[str, str] = field(default_factory=dict)


@dataclass(slots=True)
class DeploymentPlan:
    """Aggregate the assets that compose a deployment release."""

    module: str
    version: str
    assets: List[DeploymentAsset] = field(default_factory=list)
