"""Plano de contas MEI — espelha src/features/plano-contas/mei.ts do app JS."""
from dataclasses import dataclass
from typing import List
from .models import Tipo, Escopo


@dataclass(frozen=True)
class CategoriaInfo:
    nome: str
    tipo: Tipo
    escopo: Escopo
    descricao: str = ""


CATEGORIAS_MEI: List[CategoriaInfo] = [
    # PJ — Entradas
    CategoriaInfo("Vendas de Produtos", "entrada", "pj"),
    CategoriaInfo("Prestação de Serviços", "entrada", "pj"),
    CategoriaInfo("Outras Receitas PJ", "entrada", "pj"),
    # PJ — Saídas
    CategoriaInfo("DAS-MEI", "saida", "pj", "Tributo mensal do MEI"),
    CategoriaInfo("Fornecedores", "saida", "pj"),
    CategoriaInfo("Aluguel Comercial", "saida", "pj"),
    CategoriaInfo("Energia/Internet (PJ)", "saida", "pj"),
    CategoriaInfo("Marketing", "saida", "pj"),
    CategoriaInfo("Funcionário (até 1)", "saida", "pj"),
    CategoriaInfo("Equipamentos", "saida", "pj"),
    CategoriaInfo("Pró-labore", "saida", "pj", "Transferência PJ → PF"),
    CategoriaInfo("Outras Despesas PJ", "saida", "pj"),
    # PF — Entradas
    CategoriaInfo("Pró-labore (recebido)", "entrada", "pf"),
    CategoriaInfo("Outras Receitas PF", "entrada", "pf"),
    # PF — Saídas
    CategoriaInfo("Moradia", "saida", "pf"),
    CategoriaInfo("Alimentação", "saida", "pf"),
    CategoriaInfo("Transporte", "saida", "pf"),
    CategoriaInfo("Saúde", "saida", "pf"),
    CategoriaInfo("Lazer", "saida", "pf"),
    CategoriaInfo("Educação", "saida", "pf"),
    CategoriaInfo("Outras Despesas PF", "saida", "pf"),
]


def categorias_de(escopo: Escopo, tipo: Tipo) -> List[CategoriaInfo]:
    return [c for c in CATEGORIAS_MEI if c.escopo == escopo and c.tipo == tipo]
