from __future__ import annotations

from datetime import datetime
from typing import Any


def _isoformat(value: Any) -> Any:
    if isinstance(value, datetime):
        return value.isoformat()
    return value


def build_integration_meta(
    *,
    flow_type: str,
    source_type: str,
    source_service: str,
    ownership: str,
    live: bool,
    cached: bool,
    generated_at: Any = None,
    snapshot_at: Any = None,
    notes: list[str] | None = None,
) -> dict[str, Any]:
    meta = {
        "flow_type": flow_type,
        "source_type": source_type,
        "source_service": source_service,
        "ownership": ownership,
        "live": live,
        "cached": cached,
    }
    if generated_at is not None:
        meta["generated_at"] = _isoformat(generated_at)
    if snapshot_at is not None:
        meta["snapshot_at"] = _isoformat(snapshot_at)
    if notes:
        meta["notes"] = notes
    return meta
