from __future__ import annotations
from typing import Protocol, runtime_checkable, Generic, ClassVar, Any
from zempy.zosapi.common.enums.zemax_color import ZemaxColor
from zempy.zosapi.common.enums.zemax_opacity import ZemaxOpacity

@runtime_checkable
class ILDETypeData_(Protocol):
    # Colors / opacity
    @property
    def SurfaceColor(self) -> ZemaxColor: ...
    @SurfaceColor.setter
    def SurfaceColor(self, value: ZemaxColor) -> None: ...

    @property
    def SurfaceOpacity(self) -> ZemaxOpacity: ...
    @SurfaceOpacity.setter
    def SurfaceOpacity(self, value: ZemaxOpacity) -> None: ...

    @property
    def RowColor(self) -> ZemaxColor: ...
    @RowColor.setter
    def RowColor(self, value: ZemaxColor) -> None: ...

    # Stop / GCR
    @property
    def IsStop(self) -> bool: ...
    @IsStop.setter
    def IsStop(self, value: bool) -> None: ...

    @property
    def CanBeStop(self) -> bool: ...

    @property
    def IsGlobalCoordinateReference(self) -> bool: ...
    @IsGlobalCoordinateReference.setter
    def IsGlobalCoordinateReference(self, value: bool) -> None: ...

    @property
    def CanBeGCR(self) -> bool: ...

    # Other flags
    @property
    def IgnoreSurface(self) -> bool: ...
    @IgnoreSurface.setter
    def IgnoreSurface(self, value: bool) -> None: ...

    @property
    def SurfaceCannotBeHyperhemispheric(self) -> bool: ...
    @SurfaceCannotBeHyperhemispheric.setter
    def SurfaceCannotBeHyperhemispheric(self, value: bool) -> None: ...
