"""
DiffTB: Differentiable Density Functional Tight Binding in JAX.

A JAX-based implementation of DFTB with automatic differentiation support,
enabling gradient-based optimization of Slater-Koster parameters against
experimental data.

Key Features:
- Differentiable Slater-Koster interpolation
- Spin-polarized calculations
- Spin-orbit coupling
- Periodic boundary conditions with k-space sampling
- Stable eigenvalue gradients near degeneracies
"""

__version__ = "0.1.0"

from difftb.core.eigensolver import solve_eigenproblem
from difftb.core.hamiltonian import Hamiltonian
from difftb.core.lattice import BrillouinZone, Lattice
from difftb.core.spectral import spectral_function
from difftb.io.slater_koster import SlaterKosterTable, load_sk_tables
from difftb.io.structure import CrystalStructure
from difftb.physics.bands import compute_bands
from difftb.physics.soc import add_soc
from difftb.physics.spin import SpinConfig

__all__ = [
    "Lattice",
    "BrillouinZone",
    "Hamiltonian",
    "solve_eigenproblem",
    "spectral_function",
    "SlaterKosterTable",
    "load_sk_tables",
    "CrystalStructure",
    "compute_bands",
    "SpinConfig",
    "add_soc",
]
