"""This file provides autocompletions for the ZOS-API and was automatically generated.
It should not be edited manually.
"""

from zospy.api.stubs._ZOSAPI.Tools import ISystemTool
from zospy.api.stubs._ZOSAPI.Tools.OptimizationTools import (
    ConvertAsphereTypes,
    FindBestAsphereTypes,
)

from zospy.api.stubs._ZOSAPI_constants.Tools.OptimizationTools import (
    ConvertAsphereTypes,
    FindBestAsphereTypes,
)

__all__ = (
    "ConvertAsphereTypes",
    "FindBestAsphereTypes",
    "IConvertAsphereType",
    "IFindBestAsphere",
)

# ConvertAsphereTypes is imported as constant

# FindBestAsphereTypes is imported as constant

class IConvertAsphereType(ISystemTool):
    @property
    def Surface(self) -> int: ...
    @Surface.setter
    def Surface(self, value: int) -> None: ...
    @property
    def AsphereType(self) -> ConvertAsphereTypes: ...
    @AsphereType.setter
    def AsphereType(self, value: ConvertAsphereTypes) -> None: ...
    @property
    def NumberOfTerms(self) -> int: ...
    @NumberOfTerms.setter
    def NumberOfTerms(self, value: int) -> None: ...
    @property
    def ExcludeSecondOrderTerm(self) -> bool: ...
    @ExcludeSecondOrderTerm.setter
    def ExcludeSecondOrderTerm(self, value: bool) -> None: ...
    @property
    def AllowRadiusVariation(self) -> bool: ...
    @AllowRadiusVariation.setter
    def AllowRadiusVariation(self, value: bool) -> None: ...
    @property
    def AllowConicVariation(self) -> bool: ...
    @AllowConicVariation.setter
    def AllowConicVariation(self, value: bool) -> None: ...
    @property
    def ResidualRMSError(self) -> float: ...
    @property
    def IsAutomatic(self) -> None: ...
    @IsAutomatic.setter
    def IsAutomatic(self, value: bool) -> None: ...

class IFindBestAsphere(ISystemTool):
    @property
    def FirstSurface(self) -> int: ...
    @FirstSurface.setter
    def FirstSurface(self, value: int) -> None: ...
    @property
    def LastSurface(self) -> int: ...
    @LastSurface.setter
    def LastSurface(self, value: int) -> None: ...
    @property
    def AsphereType(self) -> FindBestAsphereTypes: ...
    @AsphereType.setter
    def AsphereType(self, value: FindBestAsphereTypes) -> None: ...
    @property
    def StartMeritFunction(self) -> float: ...
    @property
    def BestMeritFunction(self) -> float: ...
    @property
    def BestSurface(self) -> int: ...
