from typing import TYPE_CHECKING

import numpy as np
from nomad.metainfo import Quantity

if TYPE_CHECKING:
    from nomad.datamodel.context import Context
    from nomad.datamodel.datamodel import EntryArchive
    from nomad.metainfo import Section
    from structlog.stdlib import BoundLogger

from nomad_simulations.schema_packages.physical_property import PhysicalProperty


# TODO This class is not implemented yet. @JosePizarro3 will work in another PR to implement it.
class FermiSurface(PhysicalProperty):
    """
    Energy boundary in reciprocal space that separates the filled and empty electronic states in a metal.
    It is related with the crossing points in reciprocal space by the chemical potential or, equivalently at
    zero temperature, the Fermi level.
    """

    iri = 'http://fairmat-nfdi.eu/taxonomy/FermiSurface'

    n_bands = Quantity(
        type=np.int32,
        description="""
        Number of bands / eigenvalues.
        """,
    )
