"""
pyjuris — normalização de processos judiciais brasileiros

Entrypoints públicos:
    normalizar_processo(payload, input_template="escavador", output_template="lops_api") -> dict

Integração pandas (requer pip install pyjuris[pandas]):
    from pyjuris.pandas_utils import normalizar_dataframe, expandir_campos,
                                     to_instancias_dataframe, fenomenos_dataframe
    should_reprocess(stored, incoming) -> bool
"""

from pyjuris.pipeline import normalizar_processo, should_reprocess, ETL_VERSION, _formatar_resumo as resumo
from pyjuris.fenomenos import descrever as descrever_fenomeno, descrever_todos as descrever_fenomenos
from pyjuris.types import ProcessoCanonical, ProcessoLopsAPI, Instancia, Parte, Tribunal
from pyjuris.inputs.escavador import (
    clean_string,
    clean_date,
    clean_valor_causa,
    clean_classe,
    classify_tipo,
    classify_fase,
    classify_status_geral,
    deduplicate_fontes,
    detect_polo_inversion,
    detect_multiplas_ativas,
)
from pyjuris.outputs.lops_api import (
    build_upsert_params,
    upsert_case,
    SCHEMA_VERSION,
)
from pyjuris.orgaos import (
    get_tribunais,
    get_orgaos,
    get_todos_orgaos,
    parsear_orgao,
    OrgaoJulgador,
)

__all__ = [
    # core
    "normalizar_processo",
    "should_reprocess",
    "ETL_VERSION",
    "SCHEMA_VERSION",
    # DX
    "resumo",
    "descrever_fenomeno",
    "descrever_fenomenos",
    # tipos
    "ProcessoCanonical",
    "ProcessoLopsAPI",
    "Instancia",
    "Parte",
    "Tribunal",
    # helpers do parser Escavador
    "clean_string",
    "clean_date",
    "clean_valor_causa",
    "clean_classe",
    "classify_tipo",
    "classify_fase",
    "classify_status_geral",
    "deduplicate_fontes",
    "detect_polo_inversion",
    "detect_multiplas_ativas",
    # persistência lops_api
    "build_upsert_params",
    "upsert_case",
    # órgãos julgadores
    "get_tribunais",
    "get_orgaos",
    "get_todos_orgaos",
    "parsear_orgao",
    "OrgaoJulgador",
]
