from enum import StrEnum


class Sentinel2L2ABand(StrEnum):
    """Band identifiers for Sentinel-2 L2A imagery.

    See: https://sentiwiki.copernicus.eu/web/s2-products
    """

    # Aerosol Optical Thickness
    AOT = "AOT"

    # Spectral bands
    B01 = "B01"  # Coastal aerosol (60m)
    B02 = "B02"  # Blue (10m)
    B03 = "B03"  # Green (10m)
    B04 = "B04"  # Red (10m)
    B05 = "B05"  # Red-edge 1 (20m)
    B06 = "B06"  # Red-edge 2 (20m)
    B07 = "B07"  # Red-edge 3 (20m)
    B08 = "B08"  # NIR (10m)
    B8A = "B8A"  # Narrow NIR (20m)
    B09 = "B09"  # Water vapour (60m)
    # Note: B10 is not available in L2A (cirrus band removed during atmospheric correction)
    B11 = "B11"  # SWIR 1 (20m)
    B12 = "B12"  # SWIR 2 (20m)

    # Scene Classification Layer
    SCL = "SCL"

    # Water Vapor
    WVP = "WVP"

    # Visual composite bands
    R = "R"
    G = "G"
    B = "B"
