class_docstr: Base class to check various EKS states.
  
  Subclasses need to implement get_state and get_terminal_states methods.
  
  :param cluster_name: The name of the Cluster
  :param target_state: Will return successfully when that state is reached.
  :param target_state_type: The enum containing the states,
      will be used to convert the target state if it has to be converted from a string
  :param aws_conn_id: The Airflow connection used for AWS credentials.
      If this is None or empty then the default boto3 behaviour is used. If
      running Airflow in a distributed manner and aws_conn_id is None or
      empty, then the default boto3 configuration would be used (and must be
      maintained on each worker node).
  :param region: Which AWS region the connection should use.
      If this is None or empty then the default boto3 behaviour is used.
code: def get_terminal_states(self) -> frozenset:
      ...
  
imports: from __future__ import annotations
  from abc import abstractmethod
  from functools import cached_property
  from typing import TYPE_CHECKING, Sequence
  from airflow.exceptions import AirflowException, AirflowSkipException
  from airflow.providers.amazon.aws.hooks.eks import ClusterStates, EksHook, FargateProfileStates, NodegroupStates
  from airflow.sensors.base import BaseSensorOperator
label_desc: Use image node_id 5 for calling the EksBaseSensor obj's underlying member method code with example usage: obj.get_terminal_states() without return types