from collections.abc import Sequence
from typing import ClassVar

from numpy.typing import ArrayLike, NDArray

from ...util.svg.transform import Transform
from .base_transform import BaseTransform

class ChainTransform(BaseTransform):
    glsl_map: ClassVar[None]
    glsl_imap: ClassVar[None]

    def __init__(self, *transforms: Sequence[BaseTransform]): ...
    @property
    def transforms(self): ...
    @transforms.setter
    def transforms(self, tr): ...
    @property
    def simplified(self): ...
    @property
    def Linear(self): ...
    @property
    def Orthogonal(self): ...
    @property
    def NonScaling(self): ...
    @property
    def Isometric(self): ...
    def map(self, coords: ArrayLike) -> NDArray: ...
    def imap(self, coords: ArrayLike) -> NDArray: ...
    def shader_map(self): ...
    def shader_imap(self): ...
    def _rebuild_shaders(self): ...
    def append(self, tr: Transform): ...
    def prepend(self, tr: Transform): ...
    def _subtr_changed(self, ev): ...
    def __setitem__(self, index, tr): ...
    def __mul__(self, tr): ...
    def __rmul__(self, tr): ...
    def __str__(self): ...
    def __repr__(self): ...
    def __del__(self): ...

class SimplifiedChainTransform(ChainTransform):
    def __init__(self, chain): ...
    def source_changed(self, event): ...
