import pydrake.autodiffutils
import pydrake.common
import pydrake.symbolic
from pydrake.common.cpp_template import Polynomial_ as Polynomial_
from typing import ClassVar, overload

class Polynomial:
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg: float) -> None: ...
    @overload
    def __init__(self, coefficients) -> None: ...
    def CoefficientsAlmostEqual(self, other: Polynomial, tol: float = ..., tol_type: pydrake.common.ToleranceType = ...) -> bool: ...
    def Derivative(self, derivative_order: int = ...) -> Polynomial: ...
    def EvaluateUnivariate(self, x: float, derivative_order: int = ...) -> float: ...
    def GetCoefficients(self, *args, **kwargs): ...
    def GetDegree(self) -> int: ...
    def GetNumberOfCoefficients(self) -> int: ...
    def Integral(self, integration_constant: float = ...) -> Polynomial: ...
    def IsAffine(self) -> bool: ...
    def __add__(self, arg: Polynomial) -> Polynomial: ...
    def __eq__(self, arg: Polynomial) -> bool: ...
    def __mul__(self, arg: Polynomial) -> Polynomial: ...
    def __neg__(self) -> Polynomial: ...
    def __radd__(self, arg: float) -> Polynomial: ...
    def __rmul__(self, arg: float) -> Polynomial: ...
    def __rsub__(self, arg: float) -> Polynomial: ...
    def __sub__(self, arg: Polynomial) -> Polynomial: ...
    def __truediv__(self, arg: float) -> Polynomial: ...

class Polynomial_𝓣AutoDiffXd𝓤:
    _original_name: ClassVar[str] = ...
    _original_qualname: ClassVar[str] = ...
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg: pydrake.autodiffutils.AutoDiffXd) -> None: ...
    @overload
    def __init__(self, coefficients) -> None: ...
    def CoefficientsAlmostEqual(self, other: Polynomial_TAutoDiffXdU, tol: pydrake.autodiffutils.AutoDiffXd = ..., tol_type: pydrake.common.ToleranceType = ...) -> bool: ...
    def Derivative(self, derivative_order: int = ...) -> Polynomial_TAutoDiffXdU: ...
    def EvaluateUnivariate(self, x: pydrake.autodiffutils.AutoDiffXd, derivative_order: int = ...) -> pydrake.autodiffutils.AutoDiffXd: ...
    def GetCoefficients(self, *args, **kwargs): ...
    def GetDegree(self) -> int: ...
    def GetNumberOfCoefficients(self) -> int: ...
    def Integral(self, integration_constant: pydrake.autodiffutils.AutoDiffXd = ...) -> Polynomial_TAutoDiffXdU: ...
    def IsAffine(self) -> bool: ...
    def __add__(self, arg: Polynomial_TAutoDiffXdU) -> Polynomial_TAutoDiffXdU: ...
    def __eq__(self, arg: Polynomial_TAutoDiffXdU) -> bool: ...
    def __mul__(self, arg: Polynomial_TAutoDiffXdU) -> Polynomial_TAutoDiffXdU: ...
    def __neg__(self) -> Polynomial_TAutoDiffXdU: ...
    def __radd__(self, arg: float) -> Polynomial_TAutoDiffXdU: ...
    def __rmul__(self, arg: float) -> Polynomial_TAutoDiffXdU: ...
    def __rsub__(self, arg: float) -> Polynomial_TAutoDiffXdU: ...
    def __sub__(self, arg: Polynomial_TAutoDiffXdU) -> Polynomial_TAutoDiffXdU: ...
    def __truediv__(self, arg: float) -> Polynomial_TAutoDiffXdU: ...

class Polynomial_𝓣Expression𝓤:
    _original_name: ClassVar[str] = ...
    _original_qualname: ClassVar[str] = ...
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg: pydrake.symbolic.Expression) -> None: ...
    @overload
    def __init__(self, coefficients) -> None: ...
    def CoefficientsAlmostEqual(self, other: Polynomial_TExpressionU, tol: pydrake.symbolic.Expression = ..., tol_type: pydrake.common.ToleranceType = ...) -> pydrake.symbolic.Formula: ...
    def Derivative(self, derivative_order: int = ...) -> Polynomial_TExpressionU: ...
    def EvaluateUnivariate(self, x: pydrake.symbolic.Expression, derivative_order: int = ...) -> pydrake.symbolic.Expression: ...
    def GetCoefficients(self, *args, **kwargs): ...
    def GetDegree(self) -> int: ...
    def GetNumberOfCoefficients(self) -> int: ...
    def Integral(self, integration_constant: pydrake.symbolic.Expression = ...) -> Polynomial_TExpressionU: ...
    def IsAffine(self) -> bool: ...
    def __add__(self, arg: Polynomial_TExpressionU) -> Polynomial_TExpressionU: ...
    def __eq__(self, arg: Polynomial_TExpressionU) -> bool: ...
    def __mul__(self, arg: Polynomial_TExpressionU) -> Polynomial_TExpressionU: ...
    def __neg__(self) -> Polynomial_TExpressionU: ...
    def __radd__(self, arg: float) -> Polynomial_TExpressionU: ...
    def __rmul__(self, arg: float) -> Polynomial_TExpressionU: ...
    def __rsub__(self, arg: float) -> Polynomial_TExpressionU: ...
    def __sub__(self, arg: Polynomial_TExpressionU) -> Polynomial_TExpressionU: ...
    def __truediv__(self, arg: float) -> Polynomial_TExpressionU: ...

class _TemporaryName_N5drake10PolynomialINS_2ad8AutoDiffEEE:
    _original_name: ClassVar[str] = ...
    _original_qualname: ClassVar[str] = ...
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg: pydrake.autodiffutils.AutoDiffXd) -> None: ...
    @overload
    def __init__(self, coefficients) -> None: ...
    def CoefficientsAlmostEqual(self, other: Polynomial_TAutoDiffXdU, tol: pydrake.autodiffutils.AutoDiffXd = ..., tol_type: pydrake.common.ToleranceType = ...) -> bool: ...
    def Derivative(self, derivative_order: int = ...) -> Polynomial_TAutoDiffXdU: ...
    def EvaluateUnivariate(self, x: pydrake.autodiffutils.AutoDiffXd, derivative_order: int = ...) -> pydrake.autodiffutils.AutoDiffXd: ...
    def GetCoefficients(self, *args, **kwargs): ...
    def GetDegree(self) -> int: ...
    def GetNumberOfCoefficients(self) -> int: ...
    def Integral(self, integration_constant: pydrake.autodiffutils.AutoDiffXd = ...) -> Polynomial_TAutoDiffXdU: ...
    def IsAffine(self) -> bool: ...
    def __add__(self, arg: Polynomial_TAutoDiffXdU) -> Polynomial_TAutoDiffXdU: ...
    def __eq__(self, arg: Polynomial_TAutoDiffXdU) -> bool: ...
    def __mul__(self, arg: Polynomial_TAutoDiffXdU) -> Polynomial_TAutoDiffXdU: ...
    def __neg__(self) -> Polynomial_TAutoDiffXdU: ...
    def __radd__(self, arg: float) -> Polynomial_TAutoDiffXdU: ...
    def __rmul__(self, arg: float) -> Polynomial_TAutoDiffXdU: ...
    def __rsub__(self, arg: float) -> Polynomial_TAutoDiffXdU: ...
    def __sub__(self, arg: Polynomial_TAutoDiffXdU) -> Polynomial_TAutoDiffXdU: ...
    def __truediv__(self, arg: float) -> Polynomial_TAutoDiffXdU: ...

class _TemporaryName_N5drake10PolynomialINS_8symbolic10ExpressionEEE:
    _original_name: ClassVar[str] = ...
    _original_qualname: ClassVar[str] = ...
    @overload
    def __init__(self) -> None: ...
    @overload
    def __init__(self, arg: pydrake.symbolic.Expression) -> None: ...
    @overload
    def __init__(self, coefficients) -> None: ...
    def CoefficientsAlmostEqual(self, other: Polynomial_TExpressionU, tol: pydrake.symbolic.Expression = ..., tol_type: pydrake.common.ToleranceType = ...) -> pydrake.symbolic.Formula: ...
    def Derivative(self, derivative_order: int = ...) -> Polynomial_TExpressionU: ...
    def EvaluateUnivariate(self, x: pydrake.symbolic.Expression, derivative_order: int = ...) -> pydrake.symbolic.Expression: ...
    def GetCoefficients(self, *args, **kwargs): ...
    def GetDegree(self) -> int: ...
    def GetNumberOfCoefficients(self) -> int: ...
    def Integral(self, integration_constant: pydrake.symbolic.Expression = ...) -> Polynomial_TExpressionU: ...
    def IsAffine(self) -> bool: ...
    def __add__(self, arg: Polynomial_TExpressionU) -> Polynomial_TExpressionU: ...
    def __eq__(self, arg: Polynomial_TExpressionU) -> bool: ...
    def __mul__(self, arg: Polynomial_TExpressionU) -> Polynomial_TExpressionU: ...
    def __neg__(self) -> Polynomial_TExpressionU: ...
    def __radd__(self, arg: float) -> Polynomial_TExpressionU: ...
    def __rmul__(self, arg: float) -> Polynomial_TExpressionU: ...
    def __rsub__(self, arg: float) -> Polynomial_TExpressionU: ...
    def __sub__(self, arg: Polynomial_TExpressionU) -> Polynomial_TExpressionU: ...
    def __truediv__(self, arg: float) -> Polynomial_TExpressionU: ...
