from _typeshed import Incomplete
from planar.util import assert_unorderable as assert_unorderable, cached_property as cached_property, cos_sin_deg as cos_sin_deg
from typing import Tuple

class Affine(Tuple[float, float, float, float, float, float, float, float, float]):
    def __new__(self, *members: float) -> Affine: ...
    @classmethod
    def identity(cls) -> Affine: ...
    @classmethod
    def translation(cls, offset) -> Affine: ...
    @classmethod
    def scale(cls, scaling) -> Affine: ...
    @classmethod
    def shear(cls, x_angle: int = ..., y_angle: int = ...) -> Affine: ...
    @classmethod
    def rotation(cls, angle, pivot: Incomplete | None = ...) -> Affine: ...
    def determinant(self): ...
    def is_identity(self): ...
    def is_rectilinear(self): ...
    def is_conformal(self): ...
    def is_orthonormal(self): ...
    def is_degenerate(self): ...
    @property
    def column_vectors(self): ...
    def almost_equals(self, other): ...
    def __gt__(self, other): ...
    __ge__: Incomplete
    __lt__: Incomplete
    __le__: Incomplete
    def __add__(self, other) -> None: ...
    __iadd__: Incomplete
    def __mul__(self, other): ...
    def __rmul__(self, other): ...
    def __imul__(self, other): ...
    def itransform(self, seq) -> None: ...
    def __invert__(self): ...
    __hash__: Incomplete

identity: Incomplete
