from __future__ import annotations
from typing import Protocol, runtime_checkable
from zempy.zosapi.analysis.enums.show_as import ShowAsEnum
from zempy.zosapi.analysis.enums.sample_sizes import SampleSizes
from zempy.zosapi.analysis.ias.enums.rotations import Rotations
from zempy.zosapi.analysis.ias.enums.polarizations import Polarizations
from zempy.zosapi.analysis.ias.enums.star_effects_options import STAREffectsOptions

@runtime_checkable
class IAS_WavefrontMap(Protocol):

    @property
    def ShowAs(self) -> ShowAsEnum: ...
    @ShowAs.setter
    def ShowAs(self, v: ShowAsEnum) -> None: ...


    @property
    def Rotation(self) -> Rotations: ...
    @Rotation.setter
    def Rotation(self, v: Rotations) -> None: ...

    @property
    def SampleSize(self) -> SampleSizes: ...
    @SampleSize.setter
    def SampleSize(self, v: SampleSizes) -> None: ...

    @property
    def Polarization(self) -> Polarizations: ...
    @Polarization.setter
    def Polarization(self, v: Polarizations) -> None: ...

    @property
    def ReferenceToPrimary(self) -> bool: ...
    @ReferenceToPrimary.setter
    def ReferenceToPrimary(self, v: bool) -> None: ...

    @property
    def UseExitPupil(self) -> bool: ...
    @UseExitPupil.setter
    def UseExitPupil(self, v: bool) -> None: ...

    @property
    def RemoveTilt(self) -> bool: ...
    @RemoveTilt.setter
    def RemoveTilt(self, v: bool) -> None: ...

    @property
    def Scale(self) -> float: ...
    @Scale.setter
    def Scale(self, v: float) -> None: ...

    @property
    def Subaperture_X(self) -> float: ...
    @Subaperture_X.setter
    def Subaperture_X(self, v: float) -> None: ...

    @property
    def Subaperture_Y(self) -> float: ...
    @Subaperture_Y.setter
    def Subaperture_Y(self, v: float) -> None: ...

    @property
    def Subaperture_R(self) -> float: ...
    @Subaperture_R.setter
    def Subaperture_R(self, v: float) -> None: ...

    @property
    def ContourFormat(self) -> str: ...
    @ContourFormat.setter
    def ContourFormat(self, v: str) -> None: ...

    @property
    def STAREffects(self) -> STAREffectsOptions: ...
    @STAREffects.setter
    def STAREffects(self, v: STAREffectsOptions) -> None: ...
