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

from __future__ import annotations

from zospy.api._ZOSAPI.Tools import ISystemTool

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

class ConvertAsphereTypes:
    EvenAsphere = 0
    ExtendedAsphere = 1
    QTypeAsphereType0 = 2
    QTypeAsphereType1 = 3

class FindBestAsphereTypes:
    Conic = 0
    Polynomial_4thOrder = 1
    Polynomial_6thOrder = 2
    Polynomial_8thOrder = 3
    Polynomial_10thOrder = 4
    Polynomial_12thOrder = 5

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: ...
