content: from __future__ import annotations
  from enum import Enum
  from typing import NamedTuple, TYPE_CHECKING
  
  
  # Enum used to specify how the second stage aggregation is performed
  # for 2-stage antialiased lines.
  class AntialiasCombination(Enum):
      SUM_1AGG = 1
      SUM_2AGG = 2
      MIN = 3
      MAX = 4
      FIRST = 5
      LAST = 6
  
  
  class AntialiasStage2(NamedTuple):
      """Configuration for second-stage combination of a single antialiased reduction."""
      combination: AntialiasCombination
      zero: float
      n_reduction: bool = False
      categorical: bool = False
  
  
  if TYPE_CHECKING:
      UnzippedAntialiasStage2 = \
          tuple[tuple[AntialiasCombination], tuple[float], tuple[bool], tuple[bool]]
  
  
  def two_stage_agg(antialias_stage_2: UnzippedAntialiasStage2 | None):
      """Information used to perform the correct stage 2 aggregation."""
      if not antialias_stage_2:
          # Not using antialiased lines, doesn't matter what is returned.
          return False, False
  
      aa_combinations = antialias_stage_2[0]
  
      # A single combination in (SUM_2AGG, FIRST, LAST, MIN) means that a 2-stage
      # aggregation will be used, otherwise use a 1-stage aggregation that is
      # faster.
      use_2_stage_agg = False
      for comb in aa_combinations:
          if comb in (AntialiasCombination.SUM_2AGG, AntialiasCombination.MIN,
                      AntialiasCombination.FIRST, AntialiasCombination.LAST):
              use_2_stage_agg = True
              break
  
      # Boolean overwrite flag is used in _full_antialias() is True to overwrite
      # pixel values (using max of previous and new values) or False for the more
      # complicated correction algorithm. Prefer overwrite=True for speed, but
      # any SUM_1AGG implies overwrite=False.
      overwrite = True
      for comb in aa_combinations:
          if comb == AntialiasCombination.SUM_1AGG:
              overwrite = False
              break
  
      return overwrite, use_2_stage_agg
  