from typing import Any

from typing import overload
import euklid.vector

class BSplineCurve:
    controlpoints: euklid.vector.PolyLine2D
    numpoints: int
    @overload
    def __init__(self, controlpoints: list) -> None: ...
    @overload
    def __init__(self, arg0: euklid.vector.PolyLine2D) -> None: ...
    def copy(self) -> BSplineCurve: ...
    def fit(self, *args, **kwargs) -> Any: ...
    def get(self, arg0: float) -> euklid.vector.Vector2D: ...
    def get_sequence(self, num: int) -> euklid.vector.PolyLine2D: ...
    def __copy__(self) -> BSplineCurve: ...
    def __deepcopy__(self, memo: dict) -> BSplineCurve: ...
    def __json__(self) -> dict: ...

class BezierCurve:
    controlpoints: euklid.vector.PolyLine2D
    numpoints: int
    @overload
    def __init__(self, controlpoints: list) -> None: ...
    @overload
    def __init__(self, arg0: euklid.vector.PolyLine2D) -> None: ...
    def copy(self) -> BezierCurve: ...
    def fit(self, *args, **kwargs) -> Any: ...
    def get(self, arg0: float) -> euklid.vector.Vector2D: ...
    def get_sequence(self, num: int) -> euklid.vector.PolyLine2D: ...
    def __copy__(self) -> BezierCurve: ...
    def __deepcopy__(self, memo: dict) -> BezierCurve: ...
    def __json__(self) -> dict: ...

class SymmetricBSplineCurve:
    controlpoints: euklid.vector.PolyLine2D
    numpoints: int
    @overload
    def __init__(self, controlpoints: list) -> None: ...
    @overload
    def __init__(self, arg0: euklid.vector.PolyLine2D) -> None: ...
    def copy(self) -> SymmetricBSplineCurve: ...
    def fit(self, *args, **kwargs) -> Any: ...
    def get(self, arg0: float) -> euklid.vector.Vector2D: ...
    def get_sequence(self, num: int) -> euklid.vector.PolyLine2D: ...
    def __copy__(self) -> SymmetricBSplineCurve: ...
    def __deepcopy__(self, memo: dict) -> SymmetricBSplineCurve: ...
    def __json__(self) -> dict: ...

class SymmetricBezierCurve:
    controlpoints: euklid.vector.PolyLine2D
    numpoints: int
    @overload
    def __init__(self, controlpoints: list) -> None: ...
    @overload
    def __init__(self, arg0: euklid.vector.PolyLine2D) -> None: ...
    def copy(self) -> SymmetricBezierCurve: ...
    def fit(self, *args, **kwargs) -> Any: ...
    def get(self, arg0: float) -> euklid.vector.Vector2D: ...
    def get_sequence(self, num: int) -> euklid.vector.PolyLine2D: ...
    def __copy__(self) -> SymmetricBezierCurve: ...
    def __deepcopy__(self, memo: dict) -> SymmetricBezierCurve: ...
    def __json__(self) -> dict: ...
