# mypy: disable-error-code="misc, override, attr-defined, no-redef, assignment"

import UI4.Widgets.SceneGraphView.Filtering.Criteria
import Utils as Utils
from UI4.Widgets.SceneGraphView.ColumnDataType import ColumnDataType as ColumnDataType
from UI4.Widgets.SceneGraphView.Filtering.Criteria import Criteria as Criteria
from UI4.Widgets.SceneGraphView.Filtering.Evaluator import Evaluator as Evaluator
from typing import ClassVar, Set, Tuple

class CelEvaluator(Evaluator):
    CriteriaList: ClassVar[list] = ...
    def __init__(self) -> None: ...
    def evaluate(self, value): ...
    def getDefaultCriteria(self): ...
    @classmethod
    def getName(cls): ...
    @classmethod
    def registerCriteriaList(cls): ...

class EqualToEvaluator(Evaluator):
    CriteriaList: ClassVar[list] = ...
    def __init__(self) -> None: ...
    def evaluate(self, value): ...
    def getDefaultCriteria(self): ...
    @classmethod
    def getName(cls): ...
    @classmethod
    def registerCriteriaList(cls): ...

class Evaluator:
    def __init__(self) -> None: ...
    def clearCriteria(self): ...
    def evaluate(self, value) -> bool: ...
    def getCriteria(self): ...
    def getDefaultCriteria(self): ...
    @classmethod
    def getName(cls) -> str: ...
    @classmethod
    def registerCriteriaList(cls) -> list[dict]: ...
    def setCriteria(self, name: str, criteria: Criteria[UI4.Widgets.SceneGraphView.Filtering.Criteria.Criteria]): ...

class FuzzyEqualityEvaluator(Evaluator):
    CriteriaList: ClassVar[list] = ...
    def __init__(self) -> None: ...
    def evaluate(self, value): ...
    def getDefaultCriteria(self): ...
    @classmethod
    def getName(cls): ...
    @classmethod
    def registerCriteriaList(cls): ...

class GreaterThanEvaluator(Evaluator):
    CriteriaList: ClassVar[list] = ...
    def __init__(self) -> None: ...
    def evaluate(self, value): ...
    def getDefaultCriteria(self): ...
    @classmethod
    def getName(cls): ...
    @classmethod
    def registerCriteriaList(cls): ...

class LessThanEvaluator(Evaluator):
    CriteriaList: ClassVar[list] = ...
    def __init__(self) -> None: ...
    def evaluate(self, value): ...
    def getDefaultCriteria(self): ...
    @classmethod
    def getName(cls): ...
    @classmethod
    def registerCriteriaList(cls): ...

class RegexEvaluator(Evaluator):
    CriteriaList: ClassVar[list] = ...
    def __init__(self) -> None: ...
    def evaluate(self, value): ...
    def getDefaultCriteria(self): ...
    @classmethod
    def getName(cls): ...
    @classmethod
    def registerCriteriaList(cls): ...
    def setCriteria(self, name, criteria): ...

def GetEvaluatorCriteria(name: str) -> list[dict]: ...
def RegisterEvaluator(name: str, evaluatorClass: Evaluator): ...
