"""Persistencia simple de la lista de cuentas en un JSON."""

import json
import os
from dataclasses import asdict, fields
from typing import List

from agent.models import Account


def load_accounts(path: str) -> List[Account]:
    if not os.path.exists(path):
        return []
    with open(path, "r", encoding="utf-8") as f:
        data = json.load(f)
    known = {fld.name for fld in fields(Account)}
    return [Account(**{k: v for k, v in item.items() if k in known}) for item in data]


def save_accounts(path: str, accounts: List[Account]) -> None:
    os.makedirs(os.path.dirname(path) or ".", exist_ok=True)
    with open(path, "w", encoding="utf-8") as f:
        json.dump([asdict(a) for a in accounts], f, indent=2, ensure_ascii=False)
