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

from zospy.api.stubs._ZOSAPI.Common import IMatrixData, IVectorData
from zospy.api.stubs._ZOSAPI.Tools.Tolerancing import (
    CriterionComps,
    CriterionFields,
    Criterions,
    IMonteCarloData,
    ISensitivityCompensator,
    ISensitivityCriterionMetadata,
    ISensitivityData,
    ISensitivityOperandEffect,
    ISensitivityOperandMetadata,
    ITeziData,
    ITolerancingColumnMetadata,
    ITolerancingHistogram,
    ITolerancingOperandMetadata,
    ITolerancingParameter,
    ITolerancingSummaryStatistics,
    MonteCarloStatistics,
    QSCriterions,
    SetupCaches,
    SetupChanges,
    SetupModes,
    SetupPolynomials,
    TolerancingColumnName,
    TolerancingOperand,
    TolerancingParameterName,
)
from zospy.api.stubs._ZOSAPI.Tools import HPCRunState, ISystemTool

from zospy.api.stubs._ZOSAPI_constants.Tools.Tolerancing import (
    CriterionComps,
    CriterionFields,
    Criterions,
    MonteCarloStatistics,
    QSCriterions,
    SetupCaches,
    SetupChanges,
    SetupModes,
    SetupPolynomials,
    TolerancingColumnName,
    TolerancingOperand,
    TolerancingParameterName,
)

__all__ = (
    "CriterionComps",
    "CriterionFields",
    "Criterions",
    "IMonteCarloData",
    "IQuickSensitivity",
    "ISensitivityCompensator",
    "ISensitivityCriterionMetadata",
    "ISensitivityData",
    "ISensitivityOperandEffect",
    "ISensitivityOperandMetadata",
    "ITeziData",
    "IToleranceDataViewer",
    "ITolerancing",
    "ITolerancingColumnMetadata",
    "ITolerancingHistogram",
    "ITolerancingOperandMetadata",
    "ITolerancingParameter",
    "ITolerancingSummaryStatistics",
    "MonteCarloStatistics",
    "QSCriterions",
    "SetupCaches",
    "SetupChanges",
    "SetupModes",
    "SetupPolynomials",
    "TolerancingColumnName",
    "TolerancingOperand",
    "TolerancingParameterName",
)

# CriterionComps is imported as constant

# CriterionFields is imported as constant

# Criterions is imported as constant

class IMonteCarloData:
    @property
    def Values(self) -> IMatrixData: ...
    def GetMetadata(self, columnIndex: int) -> ITolerancingColumnMetadata: ...

class IQuickSensitivity(ISystemTool):
    @property
    def Criterion(self) -> QSCriterions: ...
    @Criterion.setter
    def Criterion(self, value: QSCriterions) -> None: ...
    @property
    def Field(self) -> CriterionFields: ...
    @Field.setter
    def Field(self, value: CriterionFields) -> None: ...
    @property
    def Sampling(self) -> int: ...
    @Sampling.setter
    def Sampling(self, value: int) -> None: ...
    @property
    def Configuration(self) -> int: ...
    @Configuration.setter
    def Configuration(self, value: int) -> None: ...
    @property
    def ResultsFile(self) -> str: ...
    @property
    def NumberOfConfigurations(self) -> int: ...
    @property
    def MaxSampling(self) -> int: ...
    @property
    def ZTDFile(self) -> str: ...
    @ZTDFile.setter
    def ZTDFile(self, value: str) -> None: ...
    def LoadSettings(self, settingsFile: str) -> None: ...
    def ResetSettings(self) -> None: ...
    def SaveSettings(self, settingsFile: str) -> None: ...
    def ValidateCompensators(self) -> bool: ...

class ISensitivityCompensator(ITolerancingOperandMetadata, ITolerancingColumnMetadata):
    @property
    def Minimum(self) -> float: ...
    @property
    def Maximum(self) -> float: ...
    @property
    def Mean(self) -> float: ...
    @property
    def PopulationStandardDeviation(self) -> float: ...
    @property
    def SampleStandardDeviation(self) -> float: ...

class ISensitivityCriterionMetadata:
    @property
    def Name(self) -> Criterions: ...
    @property
    def NominalValue(self) -> float: ...
    @property
    def NumberOfOperands(self) -> int: ...
    def GetEffectByOperand(self, operandIndex: int) -> ISensitivityOperandEffect: ...

class ISensitivityData:
    @property
    def NumberOfCriteria(self) -> int: ...
    @property
    def NumberOfCompensators(self) -> int: ...
    @property
    def NumberOfResultOperands(self) -> int: ...
    def GetCompensator(self, index: int) -> ISensitivityCompensator: ...
    def GetCriterion(self, index: int) -> ISensitivityCriterionMetadata: ...
    def GetOperand(self, index: int) -> ISensitivityOperandMetadata: ...

class ISensitivityOperandEffect:
    @property
    def EstimatedChangeMinimum(self) -> float: ...
    @property
    def EstimatedChangeMaximum(self) -> float: ...

class ISensitivityOperandMetadata(
    ITolerancingOperandMetadata, ITolerancingColumnMetadata
):
    @property
    def Minimum(self) -> float: ...
    @property
    def Maximum(self) -> float: ...
    @property
    def Comment(self) -> str: ...
    @property
    def NumberOfCriteria(self) -> int: ...
    def GetEffectOnCriterion(
        self, criterionIndex: int
    ) -> ISensitivityOperandEffect: ...

class ITeziData(ITolerancingOperandMetadata, ITolerancingColumnMetadata):
    @property
    def Coefficients(self) -> IMatrixData: ...

class IToleranceDataViewer(ISystemTool):
    @property
    def MonteCarloData(self) -> IMonteCarloData: ...
    @property
    def SensitivityData(self) -> ISensitivityData: ...
    @property
    def Summary(self) -> str: ...
    @property
    def FileName(self) -> str: ...
    @FileName.setter
    def FileName(self, value: str) -> None: ...
    def GetToleranceFiles(self) -> list[str]: ...
    def UseSystemTolerances(self) -> None: ...

class ITolerancing(ISystemTool):
    @property
    def ResultFilename(self) -> str: ...
    @property
    def IsForceRayAimingUsed(self) -> bool: ...
    @IsForceRayAimingUsed.setter
    def IsForceRayAimingUsed(self, value: bool) -> None: ...
    @property
    def IsSeperateFieldConfigurationsUsed(self) -> bool: ...
    @IsSeperateFieldConfigurationsUsed.setter
    def IsSeperateFieldConfigurationsUsed(self, value: bool) -> None: ...
    @property
    def SetupMode(self) -> SetupModes: ...
    @SetupMode.setter
    def SetupMode(self, value: SetupModes) -> None: ...
    @property
    def SetupModeIndex(self) -> int: ...
    @SetupModeIndex.setter
    def SetupModeIndex(self, value: int) -> None: ...
    @property
    def NumberOfSetupModes(self) -> int: ...
    @property
    def SetupPolynomial(self) -> SetupPolynomials: ...
    @SetupPolynomial.setter
    def SetupPolynomial(self, value: SetupPolynomials) -> None: ...
    @property
    def SetupPolynomialsIndex(self) -> int: ...
    @SetupPolynomialsIndex.setter
    def SetupPolynomialsIndex(self, value: int) -> None: ...
    @property
    def NumberOfSetupPolynomials(self) -> int: ...
    @property
    def SetupCache(self) -> SetupCaches: ...
    @SetupCache.setter
    def SetupCache(self, value: SetupCaches) -> None: ...
    @property
    def SetupCacheIndex(self) -> int: ...
    @SetupCacheIndex.setter
    def SetupCacheIndex(self, value: int) -> None: ...
    @property
    def NumberOfSetupCaches(self) -> int: ...
    @property
    def SetupChange(self) -> SetupChanges: ...
    @SetupChange.setter
    def SetupChange(self, value: SetupChanges) -> None: ...
    @property
    def SetupChangeIndex(self) -> int: ...
    @SetupChangeIndex.setter
    def SetupChangeIndex(self, value: int) -> None: ...
    @property
    def NumberOfSetupChanges(self) -> int: ...
    @property
    def SetupCore(self) -> int: ...
    @SetupCore.setter
    def SetupCore(self, value: int) -> None: ...
    @property
    def SetupCoreIndex(self) -> int: ...
    @SetupCoreIndex.setter
    def SetupCoreIndex(self, value: int) -> None: ...
    @property
    def NumberOfSetupCores(self) -> int: ...
    @property
    def MaximumCriteria(self) -> float: ...
    @MaximumCriteria.setter
    def MaximumCriteria(self, value: float) -> None: ...
    @property
    def MTFFrequency(self) -> float: ...
    @MTFFrequency.setter
    def MTFFrequency(self, value: float) -> None: ...
    @property
    def Criterion(self) -> Criterions: ...
    @Criterion.setter
    def Criterion(self, value: Criterions) -> None: ...
    @property
    def CriterionIndex(self) -> int: ...
    @CriterionIndex.setter
    def CriterionIndex(self, value: int) -> None: ...
    @property
    def NumberOfCriteria(self) -> int: ...
    @property
    def CriterionSampling(self) -> int: ...
    @CriterionSampling.setter
    def CriterionSampling(self, value: int) -> None: ...
    @property
    def CriterionSamplingIndex(self) -> int: ...
    @CriterionSamplingIndex.setter
    def CriterionSamplingIndex(self, value: int) -> None: ...
    @property
    def NumberOfCriterionSamplings(self) -> int: ...
    @property
    def CriterionComp(self) -> CriterionComps: ...
    @CriterionComp.setter
    def CriterionComp(self, value: CriterionComps) -> None: ...
    @property
    def CriterionCompIndex(self) -> int: ...
    @CriterionCompIndex.setter
    def CriterionCompIndex(self, value: int) -> None: ...
    @property
    def NumberOfCriterionComps(self) -> int: ...
    @property
    def CriterionConfiguration(self) -> int: ...
    @CriterionConfiguration.setter
    def CriterionConfiguration(self, value: int) -> None: ...
    @property
    def CriterionConfigurationIndex(self) -> int: ...
    @CriterionConfigurationIndex.setter
    def CriterionConfigurationIndex(self, value: int) -> None: ...
    @property
    def NumberOfCriterionConfigurations(self) -> int: ...
    @property
    def CriterionField(self) -> CriterionFields: ...
    @CriterionField.setter
    def CriterionField(self, value: CriterionFields) -> None: ...
    @property
    def CriterionFieldIndex(self) -> int: ...
    @CriterionFieldIndex.setter
    def CriterionFieldIndex(self, value: int) -> None: ...
    @property
    def NumberOfCriterionFields(self) -> int: ...
    @property
    def CriterionCycle(self) -> int: ...
    @CriterionCycle.setter
    def CriterionCycle(self, value: int) -> None: ...
    @property
    def CriterionCycleIndex(self) -> int: ...
    @CriterionCycleIndex.setter
    def CriterionCycleIndex(self, value: int) -> None: ...
    @property
    def NumberOfCriterionCycles(self) -> int: ...
    @property
    def CriterionScript(self) -> int: ...
    @CriterionScript.setter
    def CriterionScript(self, value: int) -> None: ...
    @property
    def CriterionScriptIndex(self) -> int: ...
    @CriterionScriptIndex.setter
    def CriterionScriptIndex(self, value: int) -> None: ...
    @property
    def NumberOfCriterionScripts(self) -> int: ...
    @property
    def NumberOfRuns(self) -> int: ...
    @NumberOfRuns.setter
    def NumberOfRuns(self, value: int) -> None: ...
    @property
    def NumberToSave(self) -> int: ...
    @NumberToSave.setter
    def NumberToSave(self, value: int) -> None: ...
    @property
    def IsSaveBestWorstUsed(self) -> bool: ...
    @IsSaveBestWorstUsed.setter
    def IsSaveBestWorstUsed(self, value: bool) -> None: ...
    @property
    def IsOverlayGraphicsUsed(self) -> bool: ...
    @IsOverlayGraphicsUsed.setter
    def IsOverlayGraphicsUsed(self, value: bool) -> None: ...
    @property
    def FilePrefix(self) -> str: ...
    @FilePrefix.setter
    def FilePrefix(self, value: str) -> None: ...
    @property
    def MonteCarloStatistic(self) -> MonteCarloStatistics: ...
    @MonteCarloStatistic.setter
    def MonteCarloStatistic(self, value: MonteCarloStatistics) -> None: ...
    @property
    def MonteCarloStatisticIndex(self) -> int: ...
    @MonteCarloStatisticIndex.setter
    def MonteCarloStatisticIndex(self, value: int) -> None: ...
    @property
    def NumberOfMonteCarloStatistics(self) -> int: ...
    @property
    def IsShowDescriptionsUsed(self) -> bool: ...
    @IsShowDescriptionsUsed.setter
    def IsShowDescriptionsUsed(self, value: bool) -> None: ...
    @property
    def IsShowCompensatorsUsed(self) -> bool: ...
    @IsShowCompensatorsUsed.setter
    def IsShowCompensatorsUsed(self, value: bool) -> None: ...
    @property
    def IsHideAllButWorstUsed(self) -> bool: ...
    @IsHideAllButWorstUsed.setter
    def IsHideAllButWorstUsed(self, value: bool) -> None: ...
    @property
    def OutputFile(self) -> str: ...
    @OutputFile.setter
    def OutputFile(self, value: str) -> None: ...
    @property
    def DisplayShowWorst(self) -> int: ...
    @DisplayShowWorst.setter
    def DisplayShowWorst(self, value: int) -> None: ...
    @property
    def DisplayShowWorstIndex(self) -> int: ...
    @DisplayShowWorstIndex.setter
    def DisplayShowWorstIndex(self, value: int) -> None: ...
    @property
    def NumberOfDisplayShowWorsts(self) -> int: ...
    @property
    def UseDataRetention(self) -> bool: ...
    @UseDataRetention.setter
    def UseDataRetention(self, value: bool) -> None: ...
    @property
    def OpenDataViewer(self) -> bool: ...
    @OpenDataViewer.setter
    def OpenDataViewer(self, value: bool) -> None: ...
    @property
    def SaveTolDataFile(self) -> bool: ...
    @SaveTolDataFile.setter
    def SaveTolDataFile(self, value: bool) -> None: ...
    @property
    def TolDataFile(self) -> str: ...
    @TolDataFile.setter
    def TolDataFile(self, value: str) -> None: ...
    @property
    def IsHPCEnabled(self) -> bool: ...
    @property
    def HPCEstimatedTimeS(self) -> float: ...
    @property
    def HPCRemainingTimeS(self) -> float: ...
    @property
    def HPCTimeToStartS(self) -> float: ...
    @property
    def HPCQueuePosition(self) -> int: ...
    @property
    def HPCState(self) -> HPCRunState: ...
    @property
    def HPCHasTimeEstimate(self) -> bool: ...
    @property
    def BestWorstOutputFolder(self) -> str: ...
    def EstimateHPCTime(self) -> bool: ...
    def GetCriterionAt(self, idx: int) -> str: ...
    def GetCriterionCompAt(self, idx: int) -> str: ...
    def GetCriterionConfigurationAt(self, idx: int) -> str: ...
    def GetCriterionCycleAt(self, idx: int) -> str: ...
    def GetCriterionFieldAt(self, idx: int) -> str: ...
    def GetCriterionSampleAt(self, idx: int) -> str: ...
    def GetCriterionScriptAt(self, idx: int) -> str: ...
    def GetDisplayShowWorstAt(self, idx: int) -> str: ...
    def GetMonteCarloStatisticAt(self, idx: int) -> str: ...
    def GetSetupCacheAt(self, idx: int) -> str: ...
    def GetSetupChangeAt(self, idx: int) -> str: ...
    def GetSetupCoreAt(self, idx: int) -> str: ...
    def GetSetupModeAt(self, idx: int) -> str: ...
    def GetSetupPolynomialAt(self, idx: int) -> str: ...
    def Load(self, filename: str) -> bool: ...
    def Reset(self) -> bool: ...
    def Save(self, filename: str) -> bool: ...
    def SetPartialMCTMode(self) -> None: ...

class ITolerancingColumnMetadata:
    @property
    def Name(self) -> TolerancingColumnName: ...
    @property
    def NumberOfParameters(self) -> int: ...
    @property
    def SummaryStatistics(self) -> ITolerancingSummaryStatistics: ...
    @property
    def IsOperand(self) -> bool: ...
    def AsTeziData(self) -> ITeziData: ...
    def GetOperandType(self) -> TolerancingOperand: ...
    def GetParameter(self, index: int) -> ITolerancingParameter: ...

class ITolerancingHistogram:
    @property
    def NumberOfBins(self) -> int: ...
    @property
    def BinCounts(self) -> IVectorData: ...
    @property
    def BinValues(self) -> IVectorData: ...
    @property
    def Underflow(self) -> float: ...
    @property
    def Overflow(self) -> float: ...

class ITolerancingOperandMetadata(ITolerancingColumnMetadata):
    @property
    def OperandType(self) -> TolerancingOperand: ...

class ITolerancingParameter:
    @property
    def Name(self) -> TolerancingParameterName: ...
    @property
    def IsDouble(self) -> bool: ...
    @property
    def IsInt(self) -> bool: ...
    @property
    def IsString(self) -> bool: ...
    @property
    def DoubleValue(self) -> float: ...
    @property
    def IntValue(self) -> int: ...
    @property
    def StringValue(self) -> str: ...

class ITolerancingSummaryStatistics:
    @property
    def Minimum(self) -> float: ...
    @property
    def Maximum(self) -> float: ...
    @property
    def Mean(self) -> float: ...
    @property
    def SampleStandardDeviation(self) -> float: ...
    @property
    def PopulationStandardDeviation(self) -> float: ...
    @property
    def Variance(self) -> float: ...
    @property
    def SampleError(self) -> float: ...
    @property
    def SampleSize(self) -> int: ...
    @property
    def Histogram(self) -> ITolerancingHistogram: ...

# MonteCarloStatistics is imported as constant

# QSCriterions is imported as constant

# SetupCaches is imported as constant

# SetupChanges is imported as constant

# SetupModes is imported as constant

# SetupPolynomials is imported as constant

# TolerancingColumnName is imported as constant

# TolerancingOperand is imported as constant

# TolerancingParameterName is imported as constant
