from terml.nodes import Tag as Tag, Term as Term, coerceToTerm as coerceToTerm
from typing import Any

basestring = str

class QTerm:
    @property
    def tag(self): ...
    def substitute(self, map: Any): ...
    def match(self, specimen: Any, substitutionArgs: Any = ...): ...
    def __eq__(self, other: Any) -> Any: ...
    def asFunctor(self): ...

class QFunctor:
    isFunctorHole: bool = ...
    @property
    def name(self): ...
    def asFunctor(self): ...

def matchArgs(quasiArglist: Any, specimenArglist: Any, args: Any, bindings: Any, index: Any, max: Any): ...
def coerceToQuasiMatch(val: Any, isFunctorHole: Any, tag: Any): ...

class _Hole:
    def match(self, specimen: Any, substitutionArgs: Any = ...): ...

class ValueHole(_Hole):
    def asFunctor(self): ...

class PatternHole(_Hole):
    def asFunctor(self): ...

class QSome: ...
