"""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.Analysis import SampleSizes
from zospy.api._ZOSAPI.Analysis.Settings import IAS_

__all__ = (
    "EncircledEnergyTypes",
    "ExtendedSourceTypes",
    "GeometricLineEdgeSpreadTypes",
    "IAS_DiffractionEncircledEnergy",
    "IAS_ExtendedSourceEncircledEnergy",
    "IAS_GeometricEncircledEnergy",
    "IAS_GeometricLineEdgeSpread",
    "ReferToTypes",
)

class EncircledEnergyTypes:
    Encircled = 1
    X_Only = 2
    Y_Only = 3
    Ensquared = 4

class ExtendedSourceTypes:
    Encircled = 1
    X_Only = 2
    Y_Only = 3
    Ensquared = 4
    X_Distrib = 5
    Y_Distrib = 6

class GeometricLineEdgeSpreadTypes:
    LineEdge = 1
    Line = 2
    Edge = 3

class IAS_DiffractionEncircledEnergy(IAS_):
    @property
    def Field(self) -> IAS_Field: ...
    @property
    def Surface(self) -> IAS_Surface: ...
    @property
    def Wavelength(self) -> IAS_Wavelength: ...
    @property
    def HuygensSample(self) -> SampleSizes: ...
    @HuygensSample.setter
    def HuygensSample(self, value: SampleSizes) -> None: ...
    @property
    def SampleSize(self) -> SampleSizes: ...
    @SampleSize.setter
    def SampleSize(self, value: SampleSizes) -> None: ...
    @property
    def Type(self) -> EncircledEnergyTypes: ...
    @Type.setter
    def Type(self, value: EncircledEnergyTypes) -> None: ...
    @property
    def ReferTo(self) -> ReferToTypes: ...
    @ReferTo.setter
    def ReferTo(self, value: ReferToTypes) -> None: ...
    @property
    def ScatterRays(self) -> bool: ...
    @ScatterRays.setter
    def ScatterRays(self, value: bool) -> None: ...
    @property
    def ShowDiffractionLimit(self) -> bool: ...
    @ShowDiffractionLimit.setter
    def ShowDiffractionLimit(self, value: bool) -> None: ...
    @property
    def UseDashes(self) -> bool: ...
    @UseDashes.setter
    def UseDashes(self, value: bool) -> None: ...
    @property
    def UseHuygensPSF(self) -> bool: ...
    @UseHuygensPSF.setter
    def UseHuygensPSF(self, value: bool) -> None: ...
    @property
    def UsePolarization(self) -> bool: ...
    @UsePolarization.setter
    def UsePolarization(self, value: bool) -> None: ...
    @property
    def HuygensDelta(self) -> float: ...
    @HuygensDelta.setter
    def HuygensDelta(self, value: float) -> None: ...
    @property
    def RadiusMaximum(self) -> float: ...
    @RadiusMaximum.setter
    def RadiusMaximum(self, value: float) -> None: ...

class IAS_ExtendedSourceEncircledEnergy(IAS_):
    @property
    def Field(self) -> IAS_Field: ...
    @property
    def Surface(self) -> IAS_Surface: ...
    @property
    def Wavelength(self) -> IAS_Wavelength: ...
    @property
    def Type(self) -> ExtendedSourceTypes: ...
    @Type.setter
    def Type(self, value: ExtendedSourceTypes) -> None: ...
    @property
    def ReferTo(self) -> ReferToTypes: ...
    @ReferTo.setter
    def ReferTo(self, value: ReferToTypes) -> None: ...
    @property
    def RaysX1000(self) -> int: ...
    @RaysX1000.setter
    def RaysX1000(self, value: int) -> None: ...
    @property
    def MultiplyByDiffractionLimit(self) -> bool: ...
    @MultiplyByDiffractionLimit.setter
    def MultiplyByDiffractionLimit(self, value: bool) -> None: ...
    @property
    def RemoveVignettingFactors(self) -> bool: ...
    @RemoveVignettingFactors.setter
    def RemoveVignettingFactors(self, value: bool) -> None: ...
    @property
    def UseDashes(self) -> bool: ...
    @UseDashes.setter
    def UseDashes(self, value: bool) -> None: ...
    @property
    def UsePolarization(self) -> bool: ...
    @UsePolarization.setter
    def UsePolarization(self, value: bool) -> None: ...
    @property
    def MaximumDistance(self) -> float: ...
    @MaximumDistance.setter
    def MaximumDistance(self, value: float) -> None: ...
    @property
    def FieldSize(self) -> float: ...
    @FieldSize.setter
    def FieldSize(self, value: float) -> None: ...
    @property
    def Rotation(self) -> float: ...
    @Rotation.setter
    def Rotation(self, value: float) -> None: ...
    @property
    def ImageName(self) -> str: ...
    @ImageName.setter
    def ImageName(self, value: str) -> None: ...

class IAS_GeometricEncircledEnergy(IAS_):
    @property
    def Field(self) -> IAS_Field: ...
    @property
    def Surface(self) -> IAS_Surface: ...
    @property
    def Wavelength(self) -> IAS_Wavelength: ...
    @property
    def HuygensSample(self) -> SampleSizes: ...
    @HuygensSample.setter
    def HuygensSample(self, value: SampleSizes) -> None: ...
    @property
    def SampleSize(self) -> SampleSizes: ...
    @SampleSize.setter
    def SampleSize(self, value: SampleSizes) -> None: ...
    @property
    def Type(self) -> EncircledEnergyTypes: ...
    @Type.setter
    def Type(self, value: EncircledEnergyTypes) -> None: ...
    @property
    def ReferTo(self) -> ReferToTypes: ...
    @ReferTo.setter
    def ReferTo(self, value: ReferToTypes) -> None: ...
    @property
    def ScatterRays(self) -> bool: ...
    @ScatterRays.setter
    def ScatterRays(self, value: bool) -> None: ...
    @property
    def ShowDiffractionLimit(self) -> bool: ...
    @ShowDiffractionLimit.setter
    def ShowDiffractionLimit(self, value: bool) -> None: ...
    @property
    def UseDashes(self) -> bool: ...
    @UseDashes.setter
    def UseDashes(self, value: bool) -> None: ...
    @property
    def UseHuygensPSF(self) -> bool: ...
    @UseHuygensPSF.setter
    def UseHuygensPSF(self, value: bool) -> None: ...
    @property
    def UsePolarization(self) -> bool: ...
    @UsePolarization.setter
    def UsePolarization(self, value: bool) -> None: ...
    @property
    def HuygensDelta(self) -> float: ...
    @HuygensDelta.setter
    def HuygensDelta(self, value: float) -> None: ...
    @property
    def RadiusMaximum(self) -> float: ...
    @RadiusMaximum.setter
    def RadiusMaximum(self, value: float) -> None: ...

class IAS_GeometricLineEdgeSpread(IAS_):
    @property
    def Field(self) -> IAS_Field: ...
    @property
    def Surface(self) -> IAS_Surface: ...
    @property
    def Wavelength(self) -> IAS_Wavelength: ...
    @property
    def SampleSize(self) -> SampleSizes: ...
    @SampleSize.setter
    def SampleSize(self, value: SampleSizes) -> None: ...
    @property
    def Type(self) -> GeometricLineEdgeSpreadTypes: ...
    @Type.setter
    def Type(self, value: GeometricLineEdgeSpreadTypes) -> None: ...
    @property
    def UsePolarization(self) -> bool: ...
    @UsePolarization.setter
    def UsePolarization(self, value: bool) -> None: ...
    @property
    def RadiusMaximum(self) -> float: ...
    @RadiusMaximum.setter
    def RadiusMaximum(self, value: float) -> None: ...

class ReferToTypes:
    ChiefRay = 0
    Centroid = 1
    Vertex = 2
