"""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.MFE import (
    IMeritFunctionEditor,
    IMFERow,
    MeritColumn,
    MeritOperandType,
)
from zospy.api.stubs._ZOSAPI.Wizards import (
    INSCBitmapWizard,
    INSCOptimizationWizard,
    INSCRoadwayLightingWizard,
    ISEQOptimizationWizard,
    ISEQOptimizationWizard2,
)
from zospy.api.stubs._ZOSAPI.Common import ZemaxColor

from zospy.api.stubs._ZOSAPI_constants.Editors.MFE import MeritColumn, MeritOperandType

__all__ = ("IMeritFunctionEditor", "IMFERow", "MeritColumn", "MeritOperandType")

class IMeritFunctionEditor(IEditor):
    @property
    def RowToOperandOffset(self) -> int: ...
    @property
    def NumberOfOperands(self) -> int: ...
    @property
    def FirstColumn(self) -> MeritColumn: ...
    @property
    def LastColumn(self) -> MeritColumn: ...
    @property
    def MeritFunctionDirectory(self) -> str: ...
    @property
    def NSCOptimizationWizard(self) -> INSCOptimizationWizard: ...
    @property
    def SEQOptimizationWizard(self) -> ISEQOptimizationWizard: ...
    @property
    def NSCBitmapWizard(self) -> INSCBitmapWizard: ...
    @property
    def NSCRoadwayLightingWizard(self) -> INSCRoadwayLightingWizard: ...
    @property
    def SEQOptimizationWizard2(self) -> ISEQOptimizationWizard2: ...
    def AddOperand(self) -> IMFERow: ...
    def CalculateMeritFunction(self) -> float: ...
    def CopyOperands(
        self, fromOperandNumber: int, NumberOfOperands: int, toOperandNumber: int
    ) -> int: ...
    def CopyOperandsFrom(
        self,
        fromEditor: IMeritFunctionEditor,
        fromOperandNumber: int,
        NumberOfOperands: int,
        toOperandNumber: int,
    ) -> int: ...
    def GetMeritFunctionFiles(self) -> list[str]: ...
    def GetOperandAt(self, OperandNumber: int) -> IMFERow: ...
    def GetOperandValue(
        self,
        type: MeritOperandType,
        srf: int,
        wave: int,
        Hx: float,
        Hy: float,
        Px: float,
        Py: float,
        Ex: float,
        Ey: float,
    ) -> float: ...
    def HideMFE(self) -> None: ...
    def InsertMeritFunction(self, fileName: str, OperandNumber: int) -> int: ...
    def InsertNewOperandAt(self, OperandNumber: int) -> IMFERow: ...
    def LoadMeritFunction(self, fileName: str) -> None: ...
    def RemoveOperandAt(self, OperandNumber: int) -> bool: ...
    def RemoveOperandsAt(self, OperandNumber: int, numOperands: int) -> int: ...
    def SaveMeritFunction(self, fileName: str) -> None: ...
    def ShowMFE(self) -> bool: ...

class IMFERow(IEditorRow):
    @property
    def IsActive(self) -> bool: ...
    @property
    def OperandNumber(self) -> int: ...
    @property
    def TypeName(self) -> str: ...
    @property
    def Type(self) -> MeritOperandType: ...
    @property
    def RowColor(self) -> ZemaxColor: ...
    @RowColor.setter
    def RowColor(self, value: ZemaxColor) -> None: ...
    @property
    def Target(self) -> float: ...
    @Target.setter
    def Target(self, value: float) -> None: ...
    @property
    def TargetCell(self) -> IEditorCell: ...
    @property
    def Weight(self) -> float: ...
    @Weight.setter
    def Weight(self, value: float) -> None: ...
    @property
    def WeightCell(self) -> IEditorCell: ...
    @property
    def Value(self) -> float: ...
    @property
    def ValueCell(self) -> IEditorCell: ...
    @property
    def Contribution(self) -> float: ...
    @property
    def ContributionCell(self) -> IEditorCell: ...
    def AvailableOperandTypes(self) -> list[MeritOperandType]: ...
    def ChangeType(self, type: MeritOperandType) -> bool: ...
    def GetOperandCell(self, Col: MeritColumn) -> IEditorCell: ...

# MeritColumn is imported as constant

# MeritOperandType is imported as constant
