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

from zospy.api.stubs._ZOSAPI.Editors import IEditor, IEditorCell, IEditorRow
from zospy.api.stubs._ZOSAPI.Editors.MCE import (
    IMCERow,
    IMultiConfigEditor,
    MultiConfigOperandType,
)
from zospy.api.stubs._ZOSAPI.Common import ZemaxColor
from zospy.api.stubs._ZOSAPI.Analysis import IMessage

from zospy.api.stubs._ZOSAPI_constants.Editors.MCE import MultiConfigOperandType

__all__ = ("IMCERow", "IMultiConfigEditor", "MultiConfigOperandType")

class IMCERow(IEditorRow):
    @property
    def IsActive(self) -> bool: ...
    @property
    def OperandNumber(self) -> int: ...
    @property
    def TypeName(self) -> str: ...
    @property
    def Type(self) -> MultiConfigOperandType: ...
    @property
    def RowColor(self) -> ZemaxColor: ...
    @RowColor.setter
    def RowColor(self, value: ZemaxColor) -> None: ...
    @property
    def Param1(self) -> int: ...
    @Param1.setter
    def Param1(self, value: int) -> None: ...
    @property
    def Param1Enabled(self) -> bool: ...
    @property
    def Param2(self) -> int: ...
    @Param2.setter
    def Param2(self, value: int) -> None: ...
    @property
    def Param2Enabled(self) -> bool: ...
    @property
    def Param3(self) -> int: ...
    @Param3.setter
    def Param3(self, value: int) -> None: ...
    @property
    def Param3Enabled(self) -> bool: ...
    def AvailableConfigOperandTypes(self) -> list[MultiConfigOperandType]: ...
    def ChangeType(self, type: MultiConfigOperandType) -> bool: ...
    def GetOperandCell(self, configuration: int) -> IEditorCell: ...

class IMultiConfigEditor(IEditor):
    @property
    def RowToOperandOffset(self) -> int: ...
    @property
    def NumberOfOperands(self) -> int: ...
    @property
    def FirstConfiguration(self) -> int: ...
    @property
    def LastConfiguration(self) -> int: ...
    @property
    def NumberOfConfigurations(self) -> int: ...
    @property
    def CurrentConfiguration(self) -> int: ...
    def AddConfiguration(self, withPickups: bool) -> bool: ...
    def AddOperand(self) -> IMCERow: ...
    def CopyOperands(
        self, fromOperandNumber: int, NumberOfOperands: int, toOperandNumber: int
    ) -> int: ...
    def CopyOperandsFrom(
        self,
        fromEditor: IMultiConfigEditor,
        fromOperandNumber: int,
        NumberOfOperands: int,
        toOperandNumber: int,
    ) -> int: ...
    def DeleteAllConfigurations(self) -> bool: ...
    def DeleteConfiguration(self, ConfigurationNumber: int) -> bool: ...
    def GetOperandAt(self, OperandNumber: int) -> IMCERow: ...
    def HideMCE(self) -> None: ...
    def InsertConfiguration(
        self, ConfigurationNumber: int, withPickups: bool
    ) -> bool: ...
    def InsertNewOperandAt(self, OperandNumber: int) -> IMCERow: ...
    def MakeSingleConfiguration(self) -> None: ...
    def MakeSingleConfigurationOpt(self, deleteMFEOperands: bool) -> None: ...
    def NextConfiguration(self) -> bool: ...
    def PrevConfiguration(self) -> bool: ...
    def RemoveOperandAt(self, OperandNumber: int) -> bool: ...
    def RemoveOperandsAt(self, OperandNumber: int, numOperands: int) -> int: ...
    def RunTool_AddAllData(
        self,
        numberOfConfig: int,
        sortBySurface: bool,
        systemApertureData: bool,
        fieldData: bool,
        wavelengthData: bool,
        surfaceData: bool,
    ) -> IMessage: ...
    def RunTool_MakeConjugate(
        self,
        referenceConfig: int,
        objectSurface: int,
        stopSurface: int,
        imageSurface: int,
    ) -> IMessage: ...
    def RunTool_MakeThermal(
        self,
        existingConfigurationIndex: int,
        numberOfThemalConfigs: int,
        minTemp: float,
        maxTemp: float,
        sortBySurface: bool,
    ) -> None: ...
    def SetCurrentConfiguration(self, ConfigurationNumber: int) -> bool: ...
    def ShowMCE(self) -> bool: ...

# MultiConfigOperandType is imported as constant
