import typing, clr, abc
from System import IDisposable, Predicate_1, Func_2, Action_1, ValueTuple_2, DateTime, Guid, MulticastDelegate, IAsyncResult, AsyncCallback, EventArgs, ValueTuple_3, IEquatable_1, Array_1
from System.Collections.Generic import IEnumerable_1, KeyValuePair_2, Dictionary_2, List_1, IReadOnlyList_1, IDictionary_2, IEnumerator_1, SortedList_2, IList_1
from System.ComponentModel import INotifyPropertyChanged, ISynchronizeInvoke
from SIMULTAN.Utils.Randomize import IRandomizer
from SIMULTAN.Utils import RowColumnRange
from Sprache.Calc import XtensibleCalculator
from System.Linq.Expressions import Expression, Expression_1
from System.Collections.ObjectModel import ObservableCollection_1, ReadOnlyObservableCollection_1
from SIMULTAN.Data.Taxonomy import SimTaxonomyEntry, SimTaxonomyCollection, SimTaxonomyEntryOrString, SimTaxonomyEntryReference, SimChildTaxonomyEntryCollection
from SIMULTAN.Data.Assets import Asset, ResourceFileEntry, AssetManager
from SIMULTAN.Data.MultiValues import SimMultiValueBigTable, SimAggregationFunction, SimMultiValueCollection
from SIMULTAN.Data.Geometry import BaseGeometry
from SIMULTAN.Data.FlowNetworks import SimNetworkFactory, SimFlowNetwork, SimFlowNetworkNode, SimObjectId, SimFlowNetworkElement
from SIMULTAN.Data.SimMath import SimPoint, SimColor, SimQuaternion, SimVector3D
from SIMULTAN.Data.Users import SimUserRole, SimUser
from SIMULTAN.Data import ISimManagedCollection, SimId, SimObjectNew_1, SimNamedObject_1, SimManagedCollection_1, IReferenceLocation, SimIdGenerator
from System.Reflection import MethodInfo
from System.Collections.Specialized import INotifyCollectionChanged
from System.Security import SecureString
from SIMULTAN.Utils.Collections import IReadOnlyObservableCollection_1
from SIMULTAN.Projects import ProjectData
from SIMULTAN.Data.SimNetworks import SimNetworkPort, SimNetworkBlock, IElementWithComponent

class AccessCheckingDisabler:
    def __init__(self) -> None: ...
    @staticmethod
    def Disable(manager: SimComponentCollection) -> IDisposable: ...


class CalculationAlgorithms(abc.ABC):
    @staticmethod
    def CopyCalculation(calculation: SimCalculation, target: SimComponent) -> SimCalculation: ...
    @staticmethod
    def MoveCalculation(calculation: SimCalculation, target: SimComponent) -> None: ...
    @staticmethod
    def OrderCalculations(component: SimComponent) -> bool: ...
    @staticmethod
    def ValidateCalculationParameters(calculation: SimCalculation, replaceInput: IEnumerable_1[KeyValuePair_2[str, SimDoubleParameter]], replaceReturn: IEnumerable_1[KeyValuePair_2[str, SimDoubleParameter]]) -> CalculationValidationResult: ...
    # Skipped ReplaceParameter due to it being static, abstract and generic.

    ReplaceParameter : ReplaceParameter_MethodGroup
    class ReplaceParameter_MethodGroup:
        @typing.overload
        def __call__(self, calculation: SimCalculation, replaceParameters: Dictionary_2[str, float]) -> None:...
        @typing.overload
        def __call__(self, calculation: SimCalculation, parameter: str, value: float) -> None:...



class CalculationParameterMetaData(INotifyPropertyChanged):
    def __init__(self) -> None: ...
    @property
    def IsRandomized(self) -> bool: ...
    @IsRandomized.setter
    def IsRandomized(self, value: bool) -> bool: ...
    @property
    def RandomizeClampDeviation(self) -> float: ...
    @RandomizeClampDeviation.setter
    def RandomizeClampDeviation(self, value: float) -> float: ...
    @property
    def RandomizeDeviation(self) -> float: ...
    @RandomizeDeviation.setter
    def RandomizeDeviation(self, value: float) -> float: ...
    @property
    def RandomizeDeviationMode(self) -> CalculationParameterMetaData.DeviationModeType: ...
    @RandomizeDeviationMode.setter
    def RandomizeDeviationMode(self, value: CalculationParameterMetaData.DeviationModeType) -> CalculationParameterMetaData.DeviationModeType: ...
    @property
    def RandomizeIsClamping(self) -> bool: ...
    @RandomizeIsClamping.setter
    def RandomizeIsClamping(self, value: bool) -> bool: ...
    @classmethod
    @property
    def Randomizer(cls) -> IRandomizer: ...
    @classmethod
    @Randomizer.setter
    def Randomizer(cls, value: IRandomizer) -> IRandomizer: ...
    @property
    def RandomizeRelativeMean(self) -> float: ...
    @RandomizeRelativeMean.setter
    def RandomizeRelativeMean(self, value: float) -> float: ...
    @property
    def Range(self) -> RowColumnRange: ...
    @Range.setter
    def Range(self, value: RowColumnRange) -> RowColumnRange: ...
    def AssignFrom(self, other: CalculationParameterMetaData) -> None: ...

    class DeviationModeType(typing.SupportsInt):
        @typing.overload
        def __init__(self, value : int) -> None: ...
        @typing.overload
        def __init__(self, value : int, force_if_true: bool) -> None: ...
        def __int__(self) -> int: ...
        
        # Values:
        Absolute : CalculationParameterMetaData.DeviationModeType # 0
        Relative : CalculationParameterMetaData.DeviationModeType # 1



class CalculationParameterReference(IDisposable):
    def __init__(self, calculation: SimCalculation.BaseCalculationParameterCollections, parameter: SimDoubleParameter, metaData: CalculationParameterMetaData = ...) -> None: ...
    @property
    def MetaData(self) -> CalculationParameterMetaData: ...
    @property
    def Parameter(self) -> SimDoubleParameter: ...
    def Dispose(self) -> None: ...
    def UnregisterReferences(self) -> None: ...


class CalculationParser(XtensibleCalculator):
    def __init__(self, flags: CalculationParserFlags = ...) -> None: ...
    @property
    def Parameters(self) -> List_1[str]: ...
    @staticmethod
    def GetMathConstant(constant: str) -> float: ...
    @staticmethod
    def IsParameterExpression(expression: Expression) -> bool: ...
    @staticmethod
    def TransposePlaceholder(d: float) -> float: ...


class CalculationParserFlags(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : CalculationParserFlags # 0
    OptimizeConstants : CalculationParserFlags # 1
    FullOptimization : CalculationParserFlags # 1


class CalculationValidationResult(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    PARAMS_NOT_OF_THIS_OR_CHILD_COMP : CalculationValidationResult # 2
    PARAMS_OUT_DUPLICATE : CalculationValidationResult # 4
    PARAMS_IN_OUT_SAME : CalculationValidationResult # 5
    CAUSES_CALCULATION_LOOP : CalculationValidationResult # 7
    VALID : CalculationValidationResult # 8
    PARAM_WRONG_INFOFLOW : CalculationValidationResult # 10


class CalculatorMapping(INotifyPropertyChanged):
    @property
    def Calculator(self) -> SimComponent: ...
    @Calculator.setter
    def Calculator(self, value: SimComponent) -> SimComponent: ...
    @property
    def InputMapping(self) -> CalculatorMapping.InputParametersCollection: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OutputMapping(self) -> CalculatorMapping.OutputParametersCollection: ...
    def Evaluate(self, dataComponent: SimComponent) -> None: ...
    def GetErrors(self, dataComponent: SimComponent) -> IEnumerable_1[CalculatorMappingErrors]: ...

    class InputParametersCollection(ObservableCollection_1[CalculatorMapping.MappingParameterTuple]):
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, collection: IEnumerable_1[CalculatorMapping.MappingParameterTuple]) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> CalculatorMapping.MappingParameterTuple: ...
        @Item.setter
        def Item(self, value: CalculatorMapping.MappingParameterTuple) -> CalculatorMapping.MappingParameterTuple: ...


    class MappingParameterTuple:
        def __init__(self, dataParameter: SimDoubleParameter, calculatorParameter: SimDoubleParameter) -> None: ...
        @property
        def CalculatorParameter(self) -> SimDoubleParameter: ...
        @property
        def DataParameter(self) -> SimDoubleParameter: ...


    class OutputParametersCollection(ObservableCollection_1[CalculatorMapping.MappingParameterTuple]):
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, collection: IEnumerable_1[CalculatorMapping.MappingParameterTuple], validate: bool) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> CalculatorMapping.MappingParameterTuple: ...
        @Item.setter
        def Item(self, value: CalculatorMapping.MappingParameterTuple) -> CalculatorMapping.MappingParameterTuple: ...
        def IsValidMappingPropagation(self, item: CalculatorMapping.MappingParameterTuple) -> bool: ...



class CalculatorMappingErrors(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    NONE : CalculatorMappingErrors # 0
    SELF_REFERENCE : CalculatorMappingErrors # 1
    NO_CALCULATION_FOUND : CalculatorMappingErrors # 2
    INVALID_PARAMETER_PROPAGATION : CalculatorMappingErrors # 3
    NO_OUTPUT_MAPPING : CalculatorMappingErrors # 4


class ChatItemComparisonResult(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    DIFFERENT : ChatItemComparisonResult # 0
    COMPARABLE : ChatItemComparisonResult # 1
    SAME_STATE : ChatItemComparisonResult # 2
    SAME_MESSAGE : ChatItemComparisonResult # 4
    SAME_RECEPIENTS : ChatItemComparisonResult # 8
    SAME_NR_OF_CHILDREN : ChatItemComparisonResult # 16
    SOME_CHILDREN_SAME : ChatItemComparisonResult # 32
    ALL_CHILDREN_SAME : ChatItemComparisonResult # 64


class ComponentManagement(abc.ABC):
    @staticmethod
    def FindAvailableReferenceSlot(component: SimComponent, availableSlotTaxonomyEntries: List_1[SimTaxonomyEntry]) -> SimSlot: ...


class ComponentMapping(abc.ABC):
    @staticmethod
    def AddAsset(_comp: SimComponent, _resource: ResourceFileEntry, _content_id: str) -> Asset: ...
    @staticmethod
    def EvaluateAllMappings(_comp: SimComponent) -> None: ...
    @staticmethod
    def GetAsset(_comp: SimComponent, _resource: ResourceFileEntry, _content_id: str) -> Asset: ...
    @staticmethod
    def RemoveMapping(_comp: SimComponent, _mapping: CalculatorMapping) -> bool: ...
    # Skipped CreateMappingTo due to it being static, abstract and generic.

    CreateMappingTo : CreateMappingTo_MethodGroup
    class CreateMappingTo_MethodGroup:
        @typing.overload
        def __call__(self, _comp: SimComponent, _name: str, _calculator: SimComponent) -> CalculatorMapping:...
        @typing.overload
        def __call__(self, _comp: SimComponent, _name: str, _calculator: SimComponent, _input_mapping: IEnumerable_1[CalculatorMapping.MappingParameterTuple], _output_mapping: IEnumerable_1[CalculatorMapping.MappingParameterTuple]) -> CalculatorMapping:...

    # Skipped RemoveAsset due to it being static, abstract and generic.

    RemoveAsset : RemoveAsset_MethodGroup
    class RemoveAsset_MethodGroup:
        @typing.overload
        def __call__(self, _comp: SimComponent, _asset: Asset) -> None:...
        @typing.overload
        def __call__(self, _comp: SimComponent, _path_code: int, _content_id: str) -> Asset:...



class ComponentParameters(abc.ABC):
    @staticmethod
    def ApplyAggregationFunction(table: SimMultiValueBigTable, function: SimAggregationFunction, transpose: bool) -> None: ...
    @staticmethod
    def PerformAggregation(_comp: SimComponent, _value_factory: SimMultiValueCollection) -> None: ...


class ComponentStructure(abc.ABC):
    @staticmethod
    def FindMinimalForestOf(_comps: IEnumerable_1[SimComponent]) -> List_1[SimComponent]: ...
    @staticmethod
    def IsDirectOrIndirectChildOf(_comp: SimComponent, _potential_parent: SimComponent) -> bool: ...


class ComponentWalker(abc.ABC):
    @staticmethod
    def All(component: SimComponent, predicate: Predicate_1[SimComponent]) -> bool: ...
    @staticmethod
    def Any(component: SimComponent, predicate: Predicate_1[SimComponent]) -> bool: ...
    @staticmethod
    def GetInstance(component: SimComponent, geometry: BaseGeometry) -> SimComponentInstance: ...
    @staticmethod
    def GetInstanceValue(parameter: SimBaseParameter, geometry: BaseGeometry) -> typing.Any: ...
    @staticmethod
    def GetParents(component: SimComponent, includeSelf: bool = ...) -> IEnumerable_1[SimComponent]: ...
    # Skipped BreadthFirstTraversal due to it being static, abstract and generic.

    BreadthFirstTraversal : BreadthFirstTraversal_MethodGroup
    class BreadthFirstTraversal_MethodGroup:
        def __getitem__(self, t:typing.Type[BreadthFirstTraversal_1_T1]) -> BreadthFirstTraversal_1[BreadthFirstTraversal_1_T1]: ...

        BreadthFirstTraversal_1_T1 = typing.TypeVar('BreadthFirstTraversal_1_T1')
        class BreadthFirstTraversal_1(typing.Generic[BreadthFirstTraversal_1_T1]):
            BreadthFirstTraversal_1_T = ComponentWalker.BreadthFirstTraversal_MethodGroup.BreadthFirstTraversal_1_T1
            @typing.overload
            def __call__(self, components: SimComponentCollection, itemSelector: Func_2[SimComponent, BreadthFirstTraversal_1_T], visitComponent: Predicate_1[SimComponent] = ...) -> IEnumerable_1[BreadthFirstTraversal_1_T]:...
            @typing.overload
            def __call__(self, components: SimComponent.SimChildComponentCollection, itemSelector: Func_2[SimComponent, BreadthFirstTraversal_1_T], visitComponent: Predicate_1[SimComponent] = ...) -> IEnumerable_1[BreadthFirstTraversal_1_T]:...
            @typing.overload
            def __call__(self, component: SimComponent, itemSelector: Func_2[SimComponent, BreadthFirstTraversal_1_T], visitComponent: Predicate_1[SimComponent] = ...) -> IEnumerable_1[BreadthFirstTraversal_1_T]:...


    # Skipped BreadthFirstTraversalMany due to it being static, abstract and generic.

    BreadthFirstTraversalMany : BreadthFirstTraversalMany_MethodGroup
    class BreadthFirstTraversalMany_MethodGroup:
        def __getitem__(self, t:typing.Type[BreadthFirstTraversalMany_1_T1]) -> BreadthFirstTraversalMany_1[BreadthFirstTraversalMany_1_T1]: ...

        BreadthFirstTraversalMany_1_T1 = typing.TypeVar('BreadthFirstTraversalMany_1_T1')
        class BreadthFirstTraversalMany_1(typing.Generic[BreadthFirstTraversalMany_1_T1]):
            BreadthFirstTraversalMany_1_T = ComponentWalker.BreadthFirstTraversalMany_MethodGroup.BreadthFirstTraversalMany_1_T1
            @typing.overload
            def __call__(self, components: SimComponentCollection, itemSelector: Func_2[SimComponent, IEnumerable_1[BreadthFirstTraversalMany_1_T]], visitComponent: Predicate_1[SimComponent] = ...) -> IEnumerable_1[BreadthFirstTraversalMany_1_T]:...
            @typing.overload
            def __call__(self, components: SimComponent.SimChildComponentCollection, itemSelector: Func_2[SimComponent, IEnumerable_1[BreadthFirstTraversalMany_1_T]], visitComponent: Predicate_1[SimComponent] = ...) -> IEnumerable_1[BreadthFirstTraversalMany_1_T]:...
            @typing.overload
            def __call__(self, component: SimComponent, itemSelector: Func_2[SimComponent, IEnumerable_1[BreadthFirstTraversalMany_1_T]], visitComponent: Predicate_1[SimComponent] = ...) -> IEnumerable_1[BreadthFirstTraversalMany_1_T]:...


    # Skipped FirstOrDefault due to it being static, abstract and generic.

    FirstOrDefault : FirstOrDefault_MethodGroup
    class FirstOrDefault_MethodGroup:
        @typing.overload
        def __call__(self, components: SimComponentCollection, selector: Predicate_1[SimComponent]) -> SimComponent:...
        @typing.overload
        def __call__(self, components: SimComponent.SimChildComponentCollection, selector: Predicate_1[SimComponent]) -> SimComponent:...
        @typing.overload
        def __call__(self, component: SimComponent, selector: Predicate_1[SimComponent]) -> SimComponent:...

    # Skipped ForeachComponent due to it being static, abstract and generic.

    ForeachComponent : ForeachComponent_MethodGroup
    class ForeachComponent_MethodGroup:
        @typing.overload
        def __call__(self, components: SimComponentCollection, action: Action_1[SimComponent]) -> None:...
        @typing.overload
        def __call__(self, component: SimComponent, action: Action_1[SimComponent]) -> None:...

    # Skipped GetFlatParameters due to it being static, abstract and generic.

    GetFlatParameters : GetFlatParameters_MethodGroup
    class GetFlatParameters_MethodGroup:
        def __getitem__(self, t:typing.Type[GetFlatParameters_1_T1]) -> GetFlatParameters_1[GetFlatParameters_1_T1]: ...

        GetFlatParameters_1_T1 = typing.TypeVar('GetFlatParameters_1_T1')
        class GetFlatParameters_1(typing.Generic[GetFlatParameters_1_T1]):
            GetFlatParameters_1_T = ComponentWalker.GetFlatParameters_MethodGroup.GetFlatParameters_1_T1
            def __call__(self, component: SimComponent) -> IEnumerable_1[GetFlatParameters_1_T]:...

        def __call__(self, component: SimComponent) -> IEnumerable_1[SimBaseParameter]:...

    # Skipped Where due to it being static, abstract and generic.

    Where : Where_MethodGroup
    class Where_MethodGroup:
        @typing.overload
        def __call__(self, components: SimComponentCollection, predicate: Predicate_1[SimComponent]) -> IEnumerable_1[SimComponent]:...
        @typing.overload
        def __call__(self, components: SimComponent.SimChildComponentCollection, predicate: Predicate_1[SimComponent]) -> IEnumerable_1[SimComponent]:...
        @typing.overload
        def __call__(self, component: SimComponent, predicate: Predicate_1[SimComponent]) -> IEnumerable_1[SimComponent]:...



class ISimInstanceSizeTransferDefinition(IEnumerable_1[SimInstanceSizeTransferDefinitionItem], typing.Protocol):
    @property
    def Item(self) -> SimInstanceSizeTransferDefinitionItem: ...
    @abc.abstractmethod
    def Clone(self) -> ISimInstanceSizeTransferDefinition: ...
    @abc.abstractmethod
    def RestoreReferences(self, instance: SimComponentInstance) -> None: ...


class MultiValueCalculationBinaryOperation(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    INNER_PRODUCT : MultiValueCalculationBinaryOperation # 0
    OUTER_PRODUCT : MultiValueCalculationBinaryOperation # 1
    OUTER_PRODUCT_FLAT : MultiValueCalculationBinaryOperation # 2
    MATRIX_PRODUCT_PERELEMENT : MultiValueCalculationBinaryOperation # 3
    COLUMN_SELECTION : MultiValueCalculationBinaryOperation # 4
    VECTOR_SUM : MultiValueCalculationBinaryOperation # 5
    MATRIX_SUM_REPEAT_COLUMN : MultiValueCalculationBinaryOperation # 6
    MATRIX_PRODUCT : MultiValueCalculationBinaryOperation # 7
    MATRIX_SCALAR_PRODUCT : MultiValueCalculationBinaryOperation # 8
    MATRIX_SCALAR_SUM : MultiValueCalculationBinaryOperation # 9
    COLUMN_SELECTION_AS_MATRIX : MultiValueCalculationBinaryOperation # 10
    MATRIX_PRODUCT_PERELEMENT_REPEAT : MultiValueCalculationBinaryOperation # 11
    MATRIX_SUM_REPEAT_ROWCOLUMN : MultiValueCalculationBinaryOperation # 12
    CATEGORY_SUM : MultiValueCalculationBinaryOperation # 13
    CATEGORY_AVERAGE : MultiValueCalculationBinaryOperation # 14
    CATEGORY_MIN : MultiValueCalculationBinaryOperation # 15
    CATEGORY_MAX : MultiValueCalculationBinaryOperation # 16
    EXTREME_MIN_OF_MATRIX : MultiValueCalculationBinaryOperation # 17
    EXTREME_MAX_OF_MATRIX : MultiValueCalculationBinaryOperation # 18
    COLUMN_SELECTION_AS_DIAGONAL : MultiValueCalculationBinaryOperation # 19
    MATRIX_SUM : MultiValueCalculationBinaryOperation # 20


class MultiValueCalculationParser:
    def __init__(self) -> None: ...
    @staticmethod
    def Parse(expression: Expression_1[Func_2[Dictionary_2[str, float], float]]) -> SimMultiValueExpression: ...


class MultiValueCalculationUnaryOperation(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Transpose : MultiValueCalculationUnaryOperation # 0
    Negate : MultiValueCalculationUnaryOperation # 1


class NetworkFactoryManagement(abc.ABC):
    @staticmethod
    def AddNetworkToNetwork(_factory: SimNetworkFactory, _parent: SimFlowNetwork, _pos: SimPoint, _name: str, _description: str) -> int: ...
    @staticmethod
    def AddToRecord(_factory: SimNetworkFactory, _nws_to_add: List_1[SimFlowNetwork]) -> None: ...
    @staticmethod
    def ClearRecord(_factory: SimNetworkFactory) -> bool: ...
    @staticmethod
    def ConvertNetworkToNode(_factory: SimNetworkFactory, _parent: SimFlowNetwork, _nw: SimFlowNetwork) -> SimFlowNetworkNode: ...
    @staticmethod
    def ConvertNodeToNetwork(_factory: SimNetworkFactory, _parent: SimFlowNetwork, _node: SimFlowNetworkNode) -> SimFlowNetwork: ...
    @staticmethod
    def CopyNetwork(_factory: SimNetworkFactory, _nw_to_copy: SimFlowNetwork) -> SimObjectId: ...
    @staticmethod
    def DisconnectAllInstances(_fact: SimNetworkFactory, _index_of_resource: int) -> None: ...
    @staticmethod
    def RemoveNetwork(_factory: SimNetworkFactory, _netw: SimFlowNetwork, _inform_content: bool = ...) -> bool: ...


class ParameterFactory(INotifyPropertyChanged):
    def __init__(self) -> None: ...
    PARAMETER_RECORD_FILE_NAME : str
    @property
    def ParameterRecord(self) -> ObservableCollection_1[SimBaseParameter]: ...
    @ParameterRecord.setter
    def ParameterRecord(self, value: ObservableCollection_1[SimBaseParameter]) -> ObservableCollection_1[SimBaseParameter]: ...
    def CopyRecord(self, _record: SimBaseParameter) -> SimBaseParameter: ...


class ReservedParameterKeys(abc.ABC):
    NameToKeyLookup : Dictionary_2[str, str]
    RP_AGGREGATION_OPERATION : str
    RP_AREA_MAX_TOTAL : str
    RP_AREA_MIN_TOTAL : str
    RP_COUNT : str
    RP_LABEL_SOURCE : str
    RP_LENGTH_MAX_TOTAL : str
    RP_LENGTH_MIN_TOTAL : str
    RP_MATERIAL_COMPOSITE_D_IN : str
    RP_MATERIAL_COMPOSITE_D_OUT : str
    RP_ORIENTATION_HRZ : str
    RP_PARAM_TO_GEOMETRY : str
    RP_TABLE_POINTER : str
    RP_TAXONOMY_KEY : str
    RP_VOLUME_MAX_TOTAL : str
    RP_VOLUME_MIN_TOTAL : str
    SIMENUMPARAM_DEFAULT : str
    SIMNW_STATIC_PORT_POSITION_X : str
    SIMNW_STATIC_PORT_POSITION_Y : str
    SIMNW_STATIC_PORT_POSITION_Z : str
    @staticmethod
    def GetReservedParameter(taxonomies: SimTaxonomyCollection, key: str) -> SimTaxonomyEntry: ...
    @staticmethod
    def GetReservedTaxonomyEntry(taxonomies: SimTaxonomyCollection, key: str) -> SimTaxonomyEntry: ...


class ReservedParameters(abc.ABC):
    MVBT_OFFSET_X_FORMAT : str
    MVBT_OFFSET_Y_FORMAT : str
    MVF_OFFSET_X_FORMAT : str
    MVF_OFFSET_Y_FORMAT : str
    MVT_OFFSET_X_FORMAT : str
    MVT_OFFSET_Y_FORMAT : str
    MVT_OFFSET_Z_FORMAT : str
    RP_AGGREGATION_OPERATION : str
    RP_AREA_MAX_TOTAL : str
    RP_AREA_MIN_TOTAL : str
    RP_COUNT : str
    RP_INST_PROPAGATE : str
    RP_LABEL_SOURCE : str
    RP_LENGTH_MAX_TOTAL : str
    RP_LENGTH_MIN_TOTAL : str
    RP_MATERIAL_COMPOSITE_D_IN : str
    RP_MATERIAL_COMPOSITE_D_OUT : str
    RP_ORIENTATION_HRZ : str
    RP_PARAM_TO_GEOMETRY : str
    RP_TABLE_POINTER : str
    RP_VOLUME_MAX_TOTAL : str
    RP_VOLUME_MIN_TOTAL : str
    SIMNW_STATIC_PORT_POSITION_X : str
    SIMNW_STATIC_PORT_POSITION_Y : str
    SIMNW_STATIC_PORT_POSITION_Z : str


class SimAccessProfile(IEnumerable_1[SimAccessProfileEntry], INotifyPropertyChanged):
    @typing.overload
    def __init__(self, original: SimAccessProfile) -> None: ...
    @typing.overload
    def __init__(self, owner: SimUserRole) -> None: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Item(self) -> SimAccessProfileEntry: ...
    @property
    def Item(self) -> SimAccessProfileEntry: ...
    @property
    def ProfileState(self) -> SimComponentValidity: ...
    @ProfileState.setter
    def ProfileState(self, value: SimComponentValidity) -> SimComponentValidity: ...
    def LastAccess(self, access: SimComponentAccessPrivilege) -> ValueTuple_2[DateTime, SimUserRole]: ...
    def ResetAccessFlags(self, owner: SimUserRole) -> None: ...


class SimAccessProfileEntry(INotifyPropertyChanged):
    @property
    def Access(self) -> SimComponentAccessPrivilege: ...
    @Access.setter
    def Access(self, value: SimComponentAccessPrivilege) -> SimComponentAccessPrivilege: ...
    @property
    def AccessProfile(self) -> SimAccessProfile: ...
    @AccessProfile.setter
    def AccessProfile(self, value: SimAccessProfile) -> SimAccessProfile: ...
    @property
    def LastAccessRelease(self) -> DateTime: ...
    @LastAccessRelease.setter
    def LastAccessRelease(self, value: DateTime) -> DateTime: ...
    @property
    def LastAccessSupervize(self) -> DateTime: ...
    @LastAccessSupervize.setter
    def LastAccessSupervize(self, value: DateTime) -> DateTime: ...
    @property
    def LastAccessWrite(self) -> DateTime: ...
    @LastAccessWrite.setter
    def LastAccessWrite(self, value: DateTime) -> DateTime: ...
    @property
    def Role(self) -> SimUserRole: ...
    def Equals(self, obj: typing.Any) -> bool: ...
    def GetHashCode(self) -> int: ...
    def HasAccess(self, access: SimComponentAccessPrivilege) -> bool: ...
    def __eq__(self, t1: SimAccessProfileEntry, t2: SimAccessProfileEntry) -> bool: ...
    def __ne__(self, _t1: SimAccessProfileEntry, _t2: SimAccessProfileEntry) -> bool: ...


class SimBaseNumericParameter_GenericClasses(abc.ABCMeta):
    Generic_SimBaseNumericParameter_GenericClasses_SimBaseNumericParameter_1_T = typing.TypeVar('Generic_SimBaseNumericParameter_GenericClasses_SimBaseNumericParameter_1_T')
    def __getitem__(self, types : typing.Type[Generic_SimBaseNumericParameter_GenericClasses_SimBaseNumericParameter_1_T]) -> typing.Type[SimBaseNumericParameter_1[Generic_SimBaseNumericParameter_GenericClasses_SimBaseNumericParameter_1_T]]: ...

SimBaseNumericParameter : SimBaseNumericParameter_GenericClasses

SimBaseNumericParameter_1_T = typing.TypeVar('SimBaseNumericParameter_1_T')
class SimBaseNumericParameter_1(typing.Generic[SimBaseNumericParameter_1_T], SimBaseParameter_1[SimBaseNumericParameter_1_T]):
    @property
    def AllowedOperations(self) -> SimParameterOperations: ...
    @AllowedOperations.setter
    def AllowedOperations(self, value: SimParameterOperations) -> SimParameterOperations: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> ISimManagedCollection: ...
    @Factory.setter
    def Factory(self, value: ISimManagedCollection) -> ISimManagedCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstancePropagationMode(self) -> SimParameterInstancePropagation: ...
    @InstancePropagationMode.setter
    def InstancePropagationMode(self, value: SimParameterInstancePropagation) -> SimParameterInstancePropagation: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def NameTaxonomyEntry(self) -> SimTaxonomyEntryOrString: ...
    @NameTaxonomyEntry.setter
    def NameTaxonomyEntry(self, value: SimTaxonomyEntryOrString) -> SimTaxonomyEntryOrString: ...
    @property
    def Propagation(self) -> SimInfoFlow: ...
    @Propagation.setter
    def Propagation(self, value: SimInfoFlow) -> SimInfoFlow: ...
    @property
    def ReferencingCalculations(self) -> IReadOnlyList_1[SimCalculation]: ...
    @property
    def State(self) -> SimParameterState: ...
    @property
    def Unit(self) -> str: ...
    @Unit.setter
    def Unit(self, value: str) -> str: ...
    @property
    def Value(self) -> SimBaseNumericParameter_1_T: ...
    @Value.setter
    def Value(self, value: SimBaseNumericParameter_1_T) -> SimBaseNumericParameter_1_T: ...
    @property
    def Value(self) -> typing.Any: ...
    @property
    def ValueMax(self) -> SimBaseNumericParameter_1_T: ...
    @ValueMax.setter
    def ValueMax(self, value: SimBaseNumericParameter_1_T) -> SimBaseNumericParameter_1_T: ...
    @property
    def ValueMin(self) -> SimBaseNumericParameter_1_T: ...
    @ValueMin.setter
    def ValueMin(self, value: SimBaseNumericParameter_1_T) -> SimBaseNumericParameter_1_T: ...
    @property
    def ValueSource(self) -> SimParameterValueSource: ...
    @ValueSource.setter
    def ValueSource(self, value: SimParameterValueSource) -> SimParameterValueSource: ...


class SimBaseParameter_GenericClasses(abc.ABCMeta):
    Generic_SimBaseParameter_GenericClasses_SimBaseParameter_1_T = typing.TypeVar('Generic_SimBaseParameter_GenericClasses_SimBaseParameter_1_T')
    def __getitem__(self, types : typing.Type[Generic_SimBaseParameter_GenericClasses_SimBaseParameter_1_T]) -> typing.Type[SimBaseParameter_1[Generic_SimBaseParameter_GenericClasses_SimBaseParameter_1_T]]: ...

class SimBaseParameter(SimBaseParameter_0, metaclass =SimBaseParameter_GenericClasses): ...

class SimBaseParameter_0(SimObjectNew_1[ISimManagedCollection]):
    @typing.overload
    def __init__(self, name: str, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, allowedOperations: SimParameterOperations = ...) -> None: ...
    @property
    def AllowedOperations(self) -> SimParameterOperations: ...
    @AllowedOperations.setter
    def AllowedOperations(self, value: SimParameterOperations) -> SimParameterOperations: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> ISimManagedCollection: ...
    @Factory.setter
    def Factory(self, value: ISimManagedCollection) -> ISimManagedCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstancePropagationMode(self) -> SimParameterInstancePropagation: ...
    @InstancePropagationMode.setter
    def InstancePropagationMode(self, value: SimParameterInstancePropagation) -> SimParameterInstancePropagation: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def NameTaxonomyEntry(self) -> SimTaxonomyEntryOrString: ...
    @NameTaxonomyEntry.setter
    def NameTaxonomyEntry(self, value: SimTaxonomyEntryOrString) -> SimTaxonomyEntryOrString: ...
    @property
    def Propagation(self) -> SimInfoFlow: ...
    @Propagation.setter
    def Propagation(self, value: SimInfoFlow) -> SimInfoFlow: ...
    @property
    def State(self) -> SimParameterState: ...
    @State.setter
    def State(self, value: SimParameterState) -> SimParameterState: ...
    @property
    def Value(self) -> typing.Any: ...
    @property
    def ValueSource(self) -> SimParameterValueSource: ...
    @ValueSource.setter
    def ValueSource(self, value: SimParameterValueSource) -> SimParameterValueSource: ...
    @abc.abstractmethod
    def Clone(self) -> SimBaseParameter: ...
    @abc.abstractmethod
    def ConvertValueFrom(self, value: typing.Any) -> None: ...
    def GetReferencedParameter(self) -> SimBaseParameter: ...
    def HasAccess(self, user: SimUser, permission: SimComponentAccessPrivilege) -> bool: ...
    def HasReservedTaxonomyEntry(self, entryKey: str) -> bool: ...
    def OnIsBeingDeleted(self) -> None: ...
    def RestoreDefaultTaxonomyReferences(self, taxonomyFileVersion: int) -> None: ...
    @abc.abstractmethod
    def SetToNeutral(self) -> None: ...

    class IsBeingDeletedEventHandler(MulticastDelegate):
        def __init__(self, object: typing.Any, method: int) -> None: ...
        @property
        def Method(self) -> MethodInfo: ...
        @property
        def Target(self) -> typing.Any: ...
        def BeginInvoke(self, sender: typing.Any, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
        def EndInvoke(self, result: IAsyncResult) -> None: ...
        def Invoke(self, sender: typing.Any) -> None: ...


    class ValueChangedEventArgs(EventArgs):
        def __init__(self, source: SimBaseParameter.ValueChangedSource, instance: SimComponentInstance) -> None: ...
        @property
        def Instance(self) -> SimComponentInstance: ...
        @property
        def Source(self) -> SimBaseParameter.ValueChangedSource: ...


    class ValueChangedEventHandler(MulticastDelegate):
        def __init__(self, object: typing.Any, method: int) -> None: ...
        @property
        def Method(self) -> MethodInfo: ...
        @property
        def Target(self) -> typing.Any: ...
        def BeginInvoke(self, sender: typing.Any, args: SimBaseParameter.ValueChangedEventArgs, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
        def EndInvoke(self, result: IAsyncResult) -> None: ...
        def Invoke(self, sender: typing.Any, args: SimBaseParameter.ValueChangedEventArgs) -> None: ...


    class ValueChangedSource(typing.SupportsInt):
        @typing.overload
        def __init__(self, value : int) -> None: ...
        @typing.overload
        def __init__(self, value : int, force_if_true: bool) -> None: ...
        def __int__(self) -> int: ...
        
        # Values:
        Parameter : SimBaseParameter.ValueChangedSource # 0
        Instance : SimBaseParameter.ValueChangedSource # 1



SimBaseParameter_1_T = typing.TypeVar('SimBaseParameter_1_T')
class SimBaseParameter_1(typing.Generic[SimBaseParameter_1_T], SimBaseParameter_0):
    @typing.overload
    def __init__(self, name: str, value: SimBaseParameter_1_T, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, value: SimBaseParameter_1_T, allowedOperations: SimParameterOperations = ...) -> None: ...
    @property
    def AllowedOperations(self) -> SimParameterOperations: ...
    @AllowedOperations.setter
    def AllowedOperations(self, value: SimParameterOperations) -> SimParameterOperations: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> ISimManagedCollection: ...
    @Factory.setter
    def Factory(self, value: ISimManagedCollection) -> ISimManagedCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstancePropagationMode(self) -> SimParameterInstancePropagation: ...
    @InstancePropagationMode.setter
    def InstancePropagationMode(self, value: SimParameterInstancePropagation) -> SimParameterInstancePropagation: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def NameTaxonomyEntry(self) -> SimTaxonomyEntryOrString: ...
    @NameTaxonomyEntry.setter
    def NameTaxonomyEntry(self, value: SimTaxonomyEntryOrString) -> SimTaxonomyEntryOrString: ...
    @property
    def Propagation(self) -> SimInfoFlow: ...
    @Propagation.setter
    def Propagation(self, value: SimInfoFlow) -> SimInfoFlow: ...
    @property
    def State(self) -> SimParameterState: ...
    @property
    def Value(self) -> SimBaseParameter_1_T: ...
    @Value.setter
    def Value(self, value: SimBaseParameter_1_T) -> SimBaseParameter_1_T: ...
    @property
    def Value(self) -> typing.Any: ...
    @property
    def ValueSource(self) -> SimParameterValueSource: ...
    @ValueSource.setter
    def ValueSource(self, value: SimParameterValueSource) -> SimParameterValueSource: ...


class SimBoolParameter(SimBaseParameter_1[bool]):
    @typing.overload
    def __init__(self, name: str, value: bool, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, value: bool, allowedOperations: SimParameterOperations = ...) -> None: ...
    @property
    def AllowedOperations(self) -> SimParameterOperations: ...
    @AllowedOperations.setter
    def AllowedOperations(self, value: SimParameterOperations) -> SimParameterOperations: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> ISimManagedCollection: ...
    @Factory.setter
    def Factory(self, value: ISimManagedCollection) -> ISimManagedCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstancePropagationMode(self) -> SimParameterInstancePropagation: ...
    @InstancePropagationMode.setter
    def InstancePropagationMode(self, value: SimParameterInstancePropagation) -> SimParameterInstancePropagation: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def NameTaxonomyEntry(self) -> SimTaxonomyEntryOrString: ...
    @NameTaxonomyEntry.setter
    def NameTaxonomyEntry(self, value: SimTaxonomyEntryOrString) -> SimTaxonomyEntryOrString: ...
    @property
    def Propagation(self) -> SimInfoFlow: ...
    @Propagation.setter
    def Propagation(self, value: SimInfoFlow) -> SimInfoFlow: ...
    @property
    def State(self) -> SimParameterState: ...
    @property
    def Value(self) -> bool: ...
    @Value.setter
    def Value(self, value: bool) -> bool: ...
    @property
    def Value(self) -> typing.Any: ...
    @property
    def ValueSource(self) -> SimParameterValueSource: ...
    @ValueSource.setter
    def ValueSource(self, value: SimParameterValueSource) -> SimParameterValueSource: ...
    def Clone(self) -> SimBaseParameter: ...
    @staticmethod
    def ConvertFromValue(value: typing.Any) -> bool: ...
    def ConvertValueFrom(self, value: typing.Any) -> None: ...
    def SetToNeutral(self) -> None: ...


class SimCalculation(SimNamedObject_1[SimComponentCollection]):
    @typing.overload
    def __init__(self, _original: SimCalculation) -> None: ...
    @typing.overload
    def __init__(self, expression: str, name: str, inputParameters: IDictionary_2[str, SimDoubleParameter] = ..., returnParameters: IDictionary_2[str, SimDoubleParameter] = ...) -> None: ...
    @typing.overload
    def __init__(self, localId: int, expression: str, name: str, inputParameters: IDictionary_2[str, SimDoubleParameter], returnParameters: IDictionary_2[str, SimDoubleParameter], metaData: IDictionary_2[str, CalculationParameterMetaData], inOrderOperations: List_1[MultiValueCalculationBinaryOperation], iterationCount: int, overrideResult: bool, resultAggregation: SimResultAggregationMethod) -> None: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Expression(self) -> str: ...
    @Expression.setter
    def Expression(self, value: str) -> str: ...
    @property
    def Factory(self) -> SimComponentCollection: ...
    @Factory.setter
    def Factory(self, value: SimComponentCollection) -> SimComponentCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InputParams(self) -> SimCalculation.SimCalculationInputParameterCollection: ...
    @property
    def IsMultiValueCalculation(self) -> bool: ...
    @IsMultiValueCalculation.setter
    def IsMultiValueCalculation(self, value: bool) -> bool: ...
    @property
    def IterationCount(self) -> int: ...
    @IterationCount.setter
    def IterationCount(self, value: int) -> int: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def MultiValueCalculation(self) -> SimMultiValueExpression: ...
    @MultiValueCalculation.setter
    def MultiValueCalculation(self, value: SimMultiValueExpression) -> SimMultiValueExpression: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OverrideResult(self) -> bool: ...
    @OverrideResult.setter
    def OverrideResult(self, value: bool) -> bool: ...
    @property
    def ResultAggregation(self) -> SimResultAggregationMethod: ...
    @ResultAggregation.setter
    def ResultAggregation(self, value: SimResultAggregationMethod) -> SimResultAggregationMethod: ...
    @property
    def ReturnParams(self) -> SimCalculation.SimCalculationOutputParameterCollection: ...
    @property
    def State(self) -> SimCalculationValidity: ...
    @State.setter
    def State(self, value: SimCalculationValidity) -> SimCalculationValidity: ...
    # Skipped Calculate due to it being static, abstract and generic.

    Calculate : Calculate_MethodGroup
    class Calculate_MethodGroup:
        @typing.overload
        def __call__(self, parameterReplacements: Dictionary_2[SimDoubleParameter, float]) -> None:...
        @typing.overload
        def __call__(self, valuefieldCollection: SimMultiValueCollection, tableNameProvider: SimCalculation.TableNameProviderDelegate = ..., tableNameAverageProvider: SimCalculation.TableNameProviderDelegate = ..., parameterReplacements: Dictionary_2[SimDoubleParameter, SimDoubleParameter] = ..., dispatcher: ISynchronizeInvoke = ...) -> None:...


    class BaseCalculationParameterCollections(IEnumerable_1[KeyValuePair_2[str, SimDoubleParameter]], INotifyCollectionChanged, abc.ABC):
        @typing.overload
        def __init__(self, owner: SimCalculation) -> None: ...
        @typing.overload
        def __init__(self, owner: SimCalculation, data: IEnumerable_1[KeyValuePair_2[str, SimDoubleParameter]]) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimDoubleParameter: ...
        @Item.setter
        def Item(self, value: SimDoubleParameter) -> SimDoubleParameter: ...
        @property
        def Owner(self) -> SimCalculation: ...
        def ContainsKey(self, parameter: str) -> bool: ...
        def ContainsValue(self, parameter: SimDoubleParameter) -> bool: ...
        def GetEnumerator(self) -> IEnumerator_1[KeyValuePair_2[str, SimDoubleParameter]]: ...
        def GetMetaData(self, key: str) -> CalculationParameterMetaData: ...
        def ToDictionary(self) -> Dictionary_2[str, SimDoubleParameter]: ...
        def TryGetValue(self, key: str, parameter: clr.Reference[SimDoubleParameter]) -> bool: ...

        class Enumerator(IEnumerator_1[KeyValuePair_2[str, SimDoubleParameter]]):
            def __init__(self, enumerator: IEnumerator_1[KeyValuePair_2[str, CalculationParameterReference]]) -> None: ...
            @property
            def Current(self) -> KeyValuePair_2[str, SimDoubleParameter]: ...
            def Dispose(self) -> None: ...
            def MoveNext(self) -> bool: ...
            def Reset(self) -> None: ...



    class SimCalculationInputParameterCollection(SimCalculation.BaseCalculationParameterCollections):
        @typing.overload
        def __init__(self, calculation: SimCalculation) -> None: ...
        @typing.overload
        def __init__(self, calculation: SimCalculation, data: IEnumerable_1[KeyValuePair_2[str, SimDoubleParameter]]) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimDoubleParameter: ...
        @Item.setter
        def Item(self, value: SimDoubleParameter) -> SimDoubleParameter: ...
        @property
        def Owner(self) -> SimCalculation: ...


    class SimCalculationOutputParameterCollection(SimCalculation.BaseCalculationParameterCollections):
        @typing.overload
        def __init__(self, calculation: SimCalculation) -> None: ...
        @typing.overload
        def __init__(self, calculation: SimCalculation, data: IEnumerable_1[KeyValuePair_2[str, SimDoubleParameter]]) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimDoubleParameter: ...
        @Item.setter
        def Item(self, value: SimDoubleParameter) -> SimDoubleParameter: ...
        @property
        def Owner(self) -> SimCalculation: ...
        def Add(self, key: str, parameter: SimDoubleParameter) -> None: ...
        def AddRange(self, values: IEnumerable_1[KeyValuePair_2[str, SimDoubleParameter]]) -> None: ...
        def Clear(self) -> None: ...
        def Remove(self, key: str) -> None: ...


    class TableNameProviderDelegate(MulticastDelegate):
        def __init__(self, object: typing.Any, method: int) -> None: ...
        @property
        def Method(self) -> MethodInfo: ...
        @property
        def Target(self) -> typing.Any: ...
        def BeginInvoke(self, calculation: SimCalculation, iteration: int, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
        def EndInvoke(self, result: IAsyncResult) -> str: ...
        def Invoke(self, calculation: SimCalculation, iteration: int) -> str: ...



class SimCalculationValidity(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Valid : SimCalculationValidity # 0
    ParamNotBound : SimCalculationValidity # 1
    InvalidExpression : SimCalculationValidity # 4


class SimCategory(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : SimCategory # 0
    General : SimCategory # 1
    Geometry : SimCategory # 2
    Costs : SimCategory # 4
    Regulations : SimCategory # 8
    Heating : SimCategory # 16
    Cooling : SimCategory # 32
    Humidity : SimCategory # 64
    Air : SimCategory # 128
    Acoustics : SimCategory # 256
    Light_Natural : SimCategory # 512
    Light_Artificial : SimCategory # 1024
    Water : SimCategory # 2048
    Waste : SimCategory # 4096
    Electricity : SimCategory # 8192
    FireSafety : SimCategory # 16384
    MSR : SimCategory # 32768
    Communication : SimCategory # 65536


class SimChat(INotifyPropertyChanged):
    def __init__(self) -> None: ...
    @property
    def TopItems(self) -> SortedList_2[DateTime, SimChatItem]: ...
    @TopItems.setter
    def TopItems(self, value: SortedList_2[DateTime, SimChatItem]) -> SortedList_2[DateTime, SimChatItem]: ...
    def AddItem(self, _item: SimChatItem) -> None: ...
    def ToString(self) -> str: ...


class SimChatItem(INotifyPropertyChanged):
    @property
    def Author(self) -> SimUserRole: ...
    @Author.setter
    def Author(self, value: SimUserRole) -> SimUserRole: ...
    @property
    def Children(self) -> List_1[SimChatItem]: ...
    @property
    def ExpectsReacionsFrom(self) -> List_1[SimUserRole]: ...
    @ExpectsReacionsFrom.setter
    def ExpectsReacionsFrom(self, value: List_1[SimUserRole]) -> List_1[SimUserRole]: ...
    @property
    def GitCommitKey(self) -> str: ...
    @GitCommitKey.setter
    def GitCommitKey(self, value: str) -> str: ...
    @property
    def Message(self) -> str: ...
    @Message.setter
    def Message(self, value: str) -> str: ...
    @property
    def ReactionTo(self) -> SimChatItem: ...
    @ReactionTo.setter
    def ReactionTo(self, value: SimChatItem) -> SimChatItem: ...
    @property
    def State(self) -> SimChatItemState: ...
    @State.setter
    def State(self, value: SimChatItemState) -> SimChatItemState: ...
    @property
    def TimeStamp(self) -> DateTime: ...
    @TimeStamp.setter
    def TimeStamp(self, value: DateTime) -> DateTime: ...
    @property
    def Type(self) -> SimChatItemType: ...
    @Type.setter
    def Type(self, value: SimChatItemType) -> SimChatItemType: ...
    @property
    def VotingRegistration_Address(self) -> str: ...
    @VotingRegistration_Address.setter
    def VotingRegistration_Address(self, value: str) -> str: ...
    @property
    def VotingRegistration_Password(self) -> SecureString: ...
    @VotingRegistration_Password.setter
    def VotingRegistration_Password(self, value: SecureString) -> SecureString: ...
    @staticmethod
    def CanClose(_item: SimChatItem, _author: SimUserRole) -> bool: ...
    @staticmethod
    def CanCloseQuestion(_question: SimChatItem, _closing_user: SimUserRole) -> bool: ...
    @staticmethod
    def CanReactTo(_item: SimChatItem, _author: SimUserRole) -> bool: ...
    @staticmethod
    def CloseQuestion(_question: SimChatItem, _closing_user: SimUserRole, _commit_key: str) -> None: ...
    @staticmethod
    def CreateNew(_author: SimUserRole, _commit_key: str, _message: str, _is_question: bool, _expects_reactions_from: List_1[SimUserRole]) -> SimChatItem: ...
    def GetDepth(self) -> int: ...
    @staticmethod
    def ReactTo(_item: SimChatItem, _author: SimUserRole, _commit_key: str, _message: str, _positive: typing.Optional[bool]) -> SimChatItem: ...


class SimChatItemState(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    OPEN : SimChatItemState # 0
    CLOSED : SimChatItemState # 1


class SimChatItemType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    QUESTION : SimChatItemType # 0
    ANSWER : SimChatItemType # 1
    ANSWER_ACCEPT : SimChatItemType # 2
    ANSWER_REJECT : SimChatItemType # 3
    VOTING_SESSION : SimChatItemType # 4
    VOTE_ACCEPT : SimChatItemType # 5
    VOTE_REJECT : SimChatItemType # 6


class SimChildComponentEntry(INotifyPropertyChanged):
    @typing.overload
    def __init__(self, slot: SimSlot) -> None: ...
    @typing.overload
    def __init__(self, slot: SimSlot, component: SimComponent) -> None: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Parent(self) -> SimComponent: ...
    @Parent.setter
    def Parent(self, value: SimComponent) -> SimComponent: ...
    @property
    def Slot(self) -> SimSlot: ...
    @Slot.setter
    def Slot(self, value: SimSlot) -> SimSlot: ...
    def RestoreReferences(self, networkElements: Dictionary_2[SimObjectId, SimFlowNetworkElement], assetManager: AssetManager) -> None: ...


class SimComponent(SimNamedObject_1[SimComponentCollection]):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, original: SimComponent) -> None: ...
    @typing.overload
    def __init__(self, owner: SimUserRole) -> None: ...
    @property
    def AccessLocal(self) -> SimAccessProfile: ...
    @AccessLocal.setter
    def AccessLocal(self, value: SimAccessProfile) -> SimAccessProfile: ...
    @property
    def Calculations(self) -> SimComponent.SimCalculationCollection: ...
    @property
    def CalculatorMappings(self) -> IReadOnlyObservableCollection_1[CalculatorMapping]: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def ComponentColor(self) -> SimColor: ...
    @ComponentColor.setter
    def ComponentColor(self, value: SimColor) -> SimColor: ...
    @property
    def Components(self) -> SimComponent.SimChildComponentCollection: ...
    @property
    def Conversation(self) -> SimChat: ...
    @Conversation.setter
    def Conversation(self, value: SimChat) -> SimChat: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> SimComponentCollection: ...
    @Factory.setter
    def Factory(self, value: SimComponentCollection) -> SimComponentCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def Instances(self) -> SimComponent.SimInstanceCollection: ...
    @property
    def InstanceState(self) -> SimInstanceState: ...
    @InstanceState.setter
    def InstanceState(self, value: SimInstanceState) -> SimInstanceState: ...
    @property
    def InstanceType(self) -> SimInstanceType: ...
    @InstanceType.setter
    def InstanceType(self, value: SimInstanceType) -> SimInstanceType: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def IsBoundInNetwork(self) -> bool: ...
    @IsBoundInNetwork.setter
    def IsBoundInNetwork(self, value: bool) -> bool: ...
    @property
    def IsBoundInSimNetwork(self) -> bool: ...
    @IsBoundInSimNetwork.setter
    def IsBoundInSimNetwork(self, value: bool) -> bool: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def MappedToBy(self) -> List_1[SimComponent]: ...
    @MappedToBy.setter
    def MappedToBy(self, value: List_1[SimComponent]) -> List_1[SimComponent]: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def Parameters(self) -> SimComponent.SimParameterCollection: ...
    @property
    def Parent(self) -> SimComponent: ...
    @property
    def ParentContainer(self) -> SimChildComponentEntry: ...
    @ParentContainer.setter
    def ParentContainer(self, value: SimChildComponentEntry) -> SimChildComponentEntry: ...
    @property
    def ReferencedAssets(self) -> ReadOnlyObservableCollection_1[Asset]: ...
    @property
    def ReferencedBy(self) -> IReadOnlyList_1[SimComponentReference]: ...
    @property
    def ReferencedComponents(self) -> SimComponent.SimReferenceCollection: ...
    @property
    def Slots(self) -> SimComponentSlotsCollection: ...
    @Slots.setter
    def Slots(self, value: SimComponentSlotsCollection) -> SimComponentSlotsCollection: ...
    @property
    def SortingType(self) -> SimComponentContentSorting: ...
    @SortingType.setter
    def SortingType(self, value: SimComponentContentSorting) -> SimComponentContentSorting: ...
    @property
    def Visibility(self) -> SimComponentVisibility: ...
    @Visibility.setter
    def Visibility(self, value: SimComponentVisibility) -> SimComponentVisibility: ...
    def ExecuteAllCalculationChains(self, tableNameProvider: SimCalculation.TableNameProviderDelegate = ..., tableNameAverageProvider: SimCalculation.TableNameProviderDelegate = ..., parameterReplacements: Dictionary_2[SimDoubleParameter, SimDoubleParameter] = ..., valueFields: SimMultiValueCollection = ..., dispatcher: ISynchronizeInvoke = ...) -> None: ...
    def HasAccess(self, user: SimUser, accessType: SimComponentAccessPrivilege) -> bool: ...
    def HasSubtreeAccess(self, user: SimUser, accessType: SimComponentAccessPrivilege) -> bool: ...
    def OnIsBeingDeleted(self) -> None: ...
    def RestoreDefaultTaxonomyReferences(self, taxonomyFileVersion: int) -> None: ...
    def RestoreReferences(self, networkElements: Dictionary_2[SimObjectId, SimFlowNetworkElement], assetManager: AssetManager) -> None: ...
    def ToInfoString(self) -> str: ...
    def ToString(self) -> str: ...

    class IsBeingDeletedEventHandler(MulticastDelegate):
        def __init__(self, object: typing.Any, method: int) -> None: ...
        @property
        def Method(self) -> MethodInfo: ...
        @property
        def Target(self) -> typing.Any: ...
        def BeginInvoke(self, sender: typing.Any, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
        def EndInvoke(self, result: IAsyncResult) -> None: ...
        def Invoke(self, sender: typing.Any) -> None: ...


    class SimCalculationCollection(ObservableCollection_1[SimCalculation]):
        def __init__(self, owner: SimComponent) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimCalculation: ...
        @Item.setter
        def Item(self, value: SimCalculation) -> SimCalculation: ...


    class SimChildComponentCollection(ObservableCollection_1[SimChildComponentEntry]):
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimChildComponentEntry: ...
        @Item.setter
        def Item(self, value: SimChildComponentEntry) -> SimChildComponentEntry: ...
        def FindAvailableSlot(self, slotBase: SimTaxonomyEntry, extensionFormat: str = ...) -> SimSlot: ...


    class SimInstanceCollection(ObservableCollection_1[SimComponentInstance]):
        def __init__(self, owner: SimComponent) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimComponentInstance: ...
        @Item.setter
        def Item(self, value: SimComponentInstance) -> SimComponentInstance: ...


    class SimParameterCollection(ObservableCollection_1[SimBaseParameter]):
        def __init__(self, owner: SimComponent) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimBaseParameter: ...
        @Item.setter
        def Item(self, value: SimBaseParameter) -> SimBaseParameter: ...


    class SimReferenceCollection(ObservableCollection_1[SimComponentReference]):
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimComponentReference: ...
        @Item.setter
        def Item(self, value: SimComponentReference) -> SimComponentReference: ...



class SimComponentAccessPrivilege(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : SimComponentAccessPrivilege # 0
    Read : SimComponentAccessPrivilege # 1
    Write : SimComponentAccessPrivilege # 2
    Supervize : SimComponentAccessPrivilege # 4
    Release : SimComponentAccessPrivilege # 8
    All : SimComponentAccessPrivilege # 15


class SimComponentCollection(SimManagedCollection_1[SimComponent]):
    def __init__(self, owner: ProjectData) -> None: ...
    @property
    def CalledFromLocation(self) -> IReferenceLocation: ...
    @property
    def Count(self) -> int: ...
    @property
    def EnableReferencePropagation(self) -> bool: ...
    @EnableReferencePropagation.setter
    def EnableReferencePropagation(self, value: bool) -> bool: ...
    @property
    def HasChanges(self) -> bool: ...
    @property
    def IsRestoringReferences(self) -> bool: ...
    @IsRestoringReferences.setter
    def IsRestoringReferences(self, value: bool) -> bool: ...
    @property
    def Item(self) -> SimComponent: ...
    @Item.setter
    def Item(self, value: SimComponent) -> SimComponent: ...
    @property
    def LastChange(self) -> DateTime: ...
    @property
    def ProjectData(self) -> ProjectData: ...
    def EndLoading(self) -> None: ...
    def Merge(self, source: IEnumerable_1[SimComponent]) -> None: ...
    def OnGeometryResourceDeleted(self, resourceId: int) -> None: ...
    def RemoveAllAssets(self) -> None: ...
    def RestoreDefaultTaxonomyReferences(self, taxonomyFileVersion: int = ...) -> None: ...
    def RestoreReferences(self, networkElements: Dictionary_2[SimObjectId, SimFlowNetworkElement]) -> None: ...
    def StartLoading(self) -> None: ...


class SimComponentContentSorting(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    ByName : SimComponentContentSorting # 0
    BySlot : SimComponentContentSorting # 1


class SimComponentInstance(SimNamedObject_1[SimComponentCollection]):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, networkElement: SimFlowNetworkElement) -> None: ...
    @typing.overload
    def __init__(self, placementType: SimInstanceType, fileId: int, geometryId: int) -> None: ...
    @typing.overload
    def __init__(self, port: SimNetworkPort) -> None: ...
    @typing.overload
    def __init__(self, simNetworkBlock: SimNetworkBlock) -> None: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> SimComponentCollection: ...
    @Factory.setter
    def Factory(self, value: SimComponentCollection) -> SimComponentCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstanceParameterValuesPersistent(self) -> SimInstanceParameterCollection: ...
    @property
    def InstanceParameterValuesTemporary(self) -> SimInstanceParameterCollection: ...
    @property
    def InstanceRotation(self) -> SimQuaternion: ...
    @InstanceRotation.setter
    def InstanceRotation(self, value: SimQuaternion) -> SimQuaternion: ...
    @property
    def InstanceSize(self) -> SimInstanceSize: ...
    @InstanceSize.setter
    def InstanceSize(self, value: SimInstanceSize) -> SimInstanceSize: ...
    @property
    def LoadingSimNetworkElmentId(self) -> SimId: ...
    @LoadingSimNetworkElmentId.setter
    def LoadingSimNetworkElmentId(self, value: SimId) -> SimId: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def Placements(self) -> SimComponentInstance.SimInstancePlacementCollection: ...
    @property
    def PropagateParameterChanges(self) -> bool: ...
    @PropagateParameterChanges.setter
    def PropagateParameterChanges(self, value: bool) -> bool: ...
    @property
    def SizeTransfer(self) -> ISimInstanceSizeTransferDefinition: ...
    @SizeTransfer.setter
    def SizeTransfer(self, value: ISimInstanceSizeTransferDefinition) -> ISimInstanceSizeTransferDefinition: ...
    @property
    def State(self) -> SimInstanceState: ...
    @State.setter
    def State(self, value: SimInstanceState) -> SimInstanceState: ...
    def EvaluateSizeTransferItem(self, item: SimInstanceSizeTransferDefinitionItem, currentSize: float) -> float: ...
    def OnIsBeingDeleted(self) -> None: ...
    def Reset(self) -> None: ...
    def RestoreReferences(self, networkElements: Dictionary_2[SimObjectId, SimFlowNetworkElement]) -> None: ...
    def SetSize(self, size: SimInstanceSize, sizeTransfers: ISimInstanceSizeTransferDefinition) -> None: ...

    class IsBeingDeletedEventHandler(MulticastDelegate):
        def __init__(self, object: typing.Any, method: int) -> None: ...
        @property
        def Method(self) -> MethodInfo: ...
        @property
        def Target(self) -> typing.Any: ...
        def BeginInvoke(self, sender: typing.Any, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
        def EndInvoke(self, result: IAsyncResult) -> None: ...
        def Invoke(self, sender: typing.Any) -> None: ...


    class SimInstanceParameterCollectionPersistent(SimInstanceParameterCollection):
        def __init__(self, owner: SimComponentInstance) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> typing.Any: ...
        @Item.setter
        def Item(self, value: typing.Any) -> typing.Any: ...
        @property
        def Keys(self) -> IEnumerable_1[SimBaseParameter]: ...


    class SimInstanceParameterCollectionTemporary(SimInstanceParameterCollection):
        def __init__(self, owner: SimComponentInstance) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> typing.Any: ...
        @Item.setter
        def Item(self, value: typing.Any) -> typing.Any: ...
        @property
        def Keys(self) -> IEnumerable_1[SimBaseParameter]: ...


    class SimInstancePlacementCollection(ObservableCollection_1[SimInstancePlacement]):
        def __init__(self, owner: SimComponentInstance) -> None: ...
        @property
        def Count(self) -> int: ...
        @property
        def Item(self) -> SimInstancePlacement: ...
        @Item.setter
        def Item(self, value: SimInstancePlacement) -> SimInstancePlacement: ...



class SimComponentReference(INotifyPropertyChanged):
    @typing.overload
    def __init__(self, slot: SimSlot) -> None: ...
    @typing.overload
    def __init__(self, slot: SimSlot, target: SimComponent) -> None: ...
    @typing.overload
    def __init__(self, slot: SimSlot, targetId: SimId) -> None: ...
    @property
    def Owner(self) -> SimComponent: ...
    @Owner.setter
    def Owner(self, value: SimComponent) -> SimComponent: ...
    @property
    def Slot(self) -> SimSlot: ...
    @Slot.setter
    def Slot(self, value: SimSlot) -> SimSlot: ...
    @property
    def Target(self) -> SimComponent: ...
    @Target.setter
    def Target(self, value: SimComponent) -> SimComponent: ...
    @property
    def TargetId(self) -> SimId: ...
    @TargetId.setter
    def TargetId(self, value: SimId) -> SimId: ...


class SimComponentSlotsCollection(ObservableCollection_1[SimTaxonomyEntryReference]):
    def __init__(self, component: SimComponent) -> None: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> SimTaxonomyEntryReference: ...
    @Item.setter
    def Item(self, value: SimTaxonomyEntryReference) -> SimTaxonomyEntryReference: ...


class SimComponentValidity(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    WriteAfterSupervize : SimComponentValidity # 1
    WriteAfterRelease : SimComponentValidity # 2
    SupervizeAfterRelease : SimComponentValidity # 3
    Valid : SimComponentValidity # 4


class SimComponentVisibility(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    AlwaysVisible : SimComponentVisibility # 0
    VisibleInProject : SimComponentVisibility # 1
    Hidden : SimComponentVisibility # 2


class SimDefaultSlotKeys(abc.ABC):
    Acoustics : str
    AirCondition : str
    Areas : str
    ArtificialLight : str
    Calculation : str
    Communication : str
    Composite : str
    ConnectedTo : str
    Cost : str
    Distribution : str
    Electrical : str
    FireSafety : str
    Generator : str
    GeometricReference : str
    Heating : str
    Humidity : str
    Import : str
    Item : str
    Joint : str
    Layer : str
    Length : str
    List : str
    Material : str
    MSR : str
    NaturalLight : str
    Object : str
    Opening : str
    Regulation : str
    Sewage : str
    Size : str
    Specification : str
    System : str
    TaxonomyKey : str
    Transport : str
    TransportPart : str
    TransportPipe : str
    Tuple : str
    Undefined : str
    Volumes : str
    Water : str
    @staticmethod
    def GetDefaultSlot(taxonomies: SimTaxonomyCollection, slotTaxonomyEntryKey: str) -> SimTaxonomyEntry: ...
    @staticmethod
    def GetReservedTaxonomyEntry(taxonomies: SimTaxonomyCollection, key: str) -> SimTaxonomyEntry: ...


class SimDefaultSlots(abc.ABC):
    Acoustics : str
    Areas : str
    ArtificialLight : str
    Calculation : str
    Communication : str
    COMP_SLOT_DELIMITER : str
    Composite : str
    ConnectsTo : str
    Cooling : str
    Cost : str
    Distributer : str
    Electrical : str
    FireSafety : str
    Heating : str
    Humidity : str
    Import : str
    Item : str
    Joint : str
    Layer : str
    Length : str
    List : str
    Material : str
    MSR : str
    NaturalLight : str
    Object : str
    Opening : str
    Position : str
    Producer : str
    Regulation : str
    Sewage : str
    Size : str
    Specification : str
    Splitter : str
    SplitterPart : str
    SplitterPipe : str
    System : str
    Tuple : str
    Undefined : str
    Volumes : str
    Water : str
    @staticmethod
    def SplitExtensionSlot(storedSlot: str) -> ValueTuple_3[str, str, bool]: ...


class SimDoubleParameter(SimBaseNumericParameter_1[float]):
    @typing.overload
    def __init__(self, name: str, unit: str, value: float, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, name: str, unit: str, value: float, minValue: float, maxValue: float, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, unit: str, value: float, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, unit: str, value: float, minValue: float, maxValue: float, allowedOperations: SimParameterOperations = ...) -> None: ...
    @property
    def AllowedOperations(self) -> SimParameterOperations: ...
    @AllowedOperations.setter
    def AllowedOperations(self, value: SimParameterOperations) -> SimParameterOperations: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> ISimManagedCollection: ...
    @Factory.setter
    def Factory(self, value: ISimManagedCollection) -> ISimManagedCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstancePropagationMode(self) -> SimParameterInstancePropagation: ...
    @InstancePropagationMode.setter
    def InstancePropagationMode(self, value: SimParameterInstancePropagation) -> SimParameterInstancePropagation: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def NameTaxonomyEntry(self) -> SimTaxonomyEntryOrString: ...
    @NameTaxonomyEntry.setter
    def NameTaxonomyEntry(self, value: SimTaxonomyEntryOrString) -> SimTaxonomyEntryOrString: ...
    @property
    def Propagation(self) -> SimInfoFlow: ...
    @Propagation.setter
    def Propagation(self, value: SimInfoFlow) -> SimInfoFlow: ...
    @property
    def ReferencingCalculations(self) -> IReadOnlyList_1[SimCalculation]: ...
    @property
    def State(self) -> SimParameterState: ...
    @property
    def Unit(self) -> str: ...
    @Unit.setter
    def Unit(self, value: str) -> str: ...
    @property
    def Value(self) -> float: ...
    @Value.setter
    def Value(self, value: float) -> float: ...
    @property
    def Value(self) -> typing.Any: ...
    @property
    def ValueMax(self) -> float: ...
    @ValueMax.setter
    def ValueMax(self, value: float) -> float: ...
    @property
    def ValueMin(self) -> float: ...
    @ValueMin.setter
    def ValueMin(self, value: float) -> float: ...
    @property
    def ValueSource(self) -> SimParameterValueSource: ...
    @ValueSource.setter
    def ValueSource(self, value: SimParameterValueSource) -> SimParameterValueSource: ...
    def Clone(self) -> SimBaseParameter: ...
    @staticmethod
    def ConvertFromValue(value: typing.Any) -> float: ...
    def ConvertValueFrom(self, value: typing.Any) -> None: ...
    def SetToNeutral(self) -> None: ...


class SimEnumParameter(SimBaseParameter_1[SimTaxonomyEntryReference]):
    @typing.overload
    def __init__(self, name: str, parentTaxonomyEntry: SimTaxonomyEntry, value: SimTaxonomyEntry = ..., allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, parentTaxonomyEntry: SimTaxonomyEntry, value: SimTaxonomyEntry = ..., allowedOperations: SimParameterOperations = ...) -> None: ...
    @property
    def AllowedOperations(self) -> SimParameterOperations: ...
    @AllowedOperations.setter
    def AllowedOperations(self, value: SimParameterOperations) -> SimParameterOperations: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> ISimManagedCollection: ...
    @Factory.setter
    def Factory(self, value: ISimManagedCollection) -> ISimManagedCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstancePropagationMode(self) -> SimParameterInstancePropagation: ...
    @InstancePropagationMode.setter
    def InstancePropagationMode(self, value: SimParameterInstancePropagation) -> SimParameterInstancePropagation: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def Items(self) -> SimChildTaxonomyEntryCollection: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def NameTaxonomyEntry(self) -> SimTaxonomyEntryOrString: ...
    @NameTaxonomyEntry.setter
    def NameTaxonomyEntry(self, value: SimTaxonomyEntryOrString) -> SimTaxonomyEntryOrString: ...
    @property
    def ParentTaxonomyEntryRef(self) -> SimTaxonomyEntryReference: ...
    @ParentTaxonomyEntryRef.setter
    def ParentTaxonomyEntryRef(self, value: SimTaxonomyEntryReference) -> SimTaxonomyEntryReference: ...
    @property
    def Propagation(self) -> SimInfoFlow: ...
    @Propagation.setter
    def Propagation(self, value: SimInfoFlow) -> SimInfoFlow: ...
    @property
    def State(self) -> SimParameterState: ...
    @property
    def Value(self) -> SimTaxonomyEntryReference: ...
    @Value.setter
    def Value(self, value: SimTaxonomyEntryReference) -> SimTaxonomyEntryReference: ...
    @property
    def Value(self) -> typing.Any: ...
    @property
    def ValueSource(self) -> SimParameterValueSource: ...
    @ValueSource.setter
    def ValueSource(self, value: SimParameterValueSource) -> SimParameterValueSource: ...
    def Clone(self) -> SimBaseParameter: ...
    def ConvertValueFrom(self, value: typing.Any) -> None: ...
    def RestoreDefaultTaxonomyReferences(self, taxonomyFileVersion: int) -> None: ...
    def SetToNeutral(self) -> None: ...


class SimInfoFlow(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Input : SimInfoFlow # 0
    Output : SimInfoFlow # 1
    Mixed : SimInfoFlow # 2
    FromReference : SimInfoFlow # 3
    Automatic : SimInfoFlow # 4
    FromExternal : SimInfoFlow # 6


class SimInstanceConnectionState(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Ok : SimInstanceConnectionState # 0
    GeometryDeleted : SimInstanceConnectionState # 1
    GeometryNotFound : SimInstanceConnectionState # 2


class SimInstanceParameterCollection(IEnumerable_1[KeyValuePair_2[SimBaseParameter, typing.Any]], abc.ABC):
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> typing.Any: ...
    @Item.setter
    def Item(self, value: typing.Any) -> typing.Any: ...
    @property
    def Keys(self) -> IEnumerable_1[SimBaseParameter]: ...
    def Contains(self, parameter: SimBaseParameter) -> bool: ...
    def GetEnumerator(self) -> IEnumerator_1[KeyValuePair_2[SimBaseParameter, typing.Any]]: ...
    # Skipped GetRecords due to it being static, abstract and generic.

    GetRecords : GetRecords_MethodGroup
    class GetRecords_MethodGroup:
        @typing.overload
        def __getitem__(self, t:typing.Type[GetRecords_1_T1]) -> GetRecords_1[GetRecords_1_T1]: ...

        GetRecords_1_T1 = typing.TypeVar('GetRecords_1_T1')
        class GetRecords_1(typing.Generic[GetRecords_1_T1]):
            GetRecords_1_T = SimInstanceParameterCollection.GetRecords_MethodGroup.GetRecords_1_T1
            def __call__(self) -> List_1[KeyValuePair_2[SimBaseParameter, GetRecords_1_T]]:...

        @typing.overload
        def __getitem__(self, t:typing.Tuple[typing.Type[GetRecords_2_T1], typing.Type[GetRecords_2_T2]]) -> GetRecords_2[GetRecords_2_T1, GetRecords_2_T2]: ...

        GetRecords_2_T1 = typing.TypeVar('GetRecords_2_T1')
        GetRecords_2_T2 = typing.TypeVar('GetRecords_2_T2')
        class GetRecords_2(typing.Generic[GetRecords_2_T1, GetRecords_2_T2]):
            GetRecords_2_K = SimInstanceParameterCollection.GetRecords_MethodGroup.GetRecords_2_T1
            GetRecords_2_T = SimInstanceParameterCollection.GetRecords_MethodGroup.GetRecords_2_T2
            def __call__(self) -> List_1[KeyValuePair_2[GetRecords_2_K, GetRecords_2_T]]:...


    # Skipped TryGetValue due to it being static, abstract and generic.

    TryGetValue : TryGetValue_MethodGroup
    class TryGetValue_MethodGroup:
        def __getitem__(self, t:typing.Type[TryGetValue_1_T1]) -> TryGetValue_1[TryGetValue_1_T1]: ...

        TryGetValue_1_T1 = typing.TypeVar('TryGetValue_1_T1')
        class TryGetValue_1(typing.Generic[TryGetValue_1_T1]):
            TryGetValue_1_T = SimInstanceParameterCollection.TryGetValue_MethodGroup.TryGetValue_1_T1
            def __call__(self, key: SimBaseParameter_1[TryGetValue_1_T], value: clr.Reference[TryGetValue_1_T]) -> bool:...

        def __call__(self, key: SimBaseParameter, value: clr.Reference[typing.Any]) -> bool:...



class SimInstancePlacement(INotifyPropertyChanged, abc.ABC):
    def __init__(self, instanceType: SimInstanceType) -> None: ...
    @property
    def Instance(self) -> SimComponentInstance: ...
    @Instance.setter
    def Instance(self, value: SimComponentInstance) -> SimComponentInstance: ...
    @property
    def InstanceType(self) -> SimInstanceType: ...
    @InstanceType.setter
    def InstanceType(self, value: SimInstanceType) -> SimInstanceType: ...
    @property
    def State(self) -> SimInstancePlacementState: ...
    @State.setter
    def State(self, value: SimInstancePlacementState) -> SimInstancePlacementState: ...
    @abc.abstractmethod
    def AddToTarget(self) -> None: ...
    @abc.abstractmethod
    def RemoveFromTarget(self) -> None: ...


class SimInstancePlacementGeometry(SimInstancePlacement):
    def __init__(self, fileId: int, geometryId: int, instanceType: SimInstanceType, state: SimInstancePlacementState = ...) -> None: ...
    @property
    def FileId(self) -> int: ...
    @FileId.setter
    def FileId(self, value: int) -> int: ...
    @property
    def GeometryId(self) -> int: ...
    @GeometryId.setter
    def GeometryId(self, value: int) -> int: ...
    @property
    def Instance(self) -> SimComponentInstance: ...
    @Instance.setter
    def Instance(self, value: SimComponentInstance) -> SimComponentInstance: ...
    @property
    def InstanceType(self) -> SimInstanceType: ...
    @InstanceType.setter
    def InstanceType(self, value: SimInstanceType) -> SimInstanceType: ...
    @property
    def IsValid(self) -> bool: ...
    @property
    def State(self) -> SimInstancePlacementState: ...
    @State.setter
    def State(self, value: SimInstancePlacementState) -> SimInstancePlacementState: ...
    def AddToTarget(self) -> None: ...
    def RemoveFromTarget(self) -> None: ...


class SimInstancePlacementNetwork(SimInstancePlacement):
    def __init__(self, networkElement: SimFlowNetworkElement, instanceType: SimInstanceType) -> None: ...
    @property
    def Instance(self) -> SimComponentInstance: ...
    @Instance.setter
    def Instance(self, value: SimComponentInstance) -> SimComponentInstance: ...
    @property
    def InstanceType(self) -> SimInstanceType: ...
    @InstanceType.setter
    def InstanceType(self, value: SimInstanceType) -> SimInstanceType: ...
    @property
    def NetworkElement(self) -> SimFlowNetworkElement: ...
    @NetworkElement.setter
    def NetworkElement(self, value: SimFlowNetworkElement) -> SimFlowNetworkElement: ...
    @classmethod
    @property
    def SCALE_PIXEL_TO_M(cls) -> float: ...
    @property
    def State(self) -> SimInstancePlacementState: ...
    @State.setter
    def State(self, value: SimInstancePlacementState) -> SimInstancePlacementState: ...
    def AddToTarget(self) -> None: ...
    def RemoveFromTarget(self) -> None: ...


class SimInstancePlacementSimNetwork(SimInstancePlacement):
    def __init__(self, networkElement: IElementWithComponent, instanceType: SimInstanceType) -> None: ...
    @property
    def Instance(self) -> SimComponentInstance: ...
    @Instance.setter
    def Instance(self, value: SimComponentInstance) -> SimComponentInstance: ...
    @property
    def InstanceType(self) -> SimInstanceType: ...
    @InstanceType.setter
    def InstanceType(self, value: SimInstanceType) -> SimInstanceType: ...
    @property
    def NetworkElement(self) -> IElementWithComponent: ...
    @NetworkElement.setter
    def NetworkElement(self, value: IElementWithComponent) -> IElementWithComponent: ...
    @property
    def State(self) -> SimInstancePlacementState: ...
    @State.setter
    def State(self, value: SimInstancePlacementState) -> SimInstancePlacementState: ...
    def AddToTarget(self) -> None: ...
    def RemoveFromTarget(self) -> None: ...


class SimInstancePlacementState(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Valid : SimInstancePlacementState # 0
    InstanceTargetMissing : SimInstancePlacementState # 1


class SimInstanceSize(IEquatable_1[SimInstanceSize]):
    def __init__(self, min: SimVector3D, max: SimVector3D) -> None: ...
    @classmethod
    @property
    def Default(cls) -> SimInstanceSize: ...
    @property
    def Max(self) -> SimVector3D: ...
    @property
    def Min(self) -> SimVector3D: ...
    def Clone(self) -> SimInstanceSize: ...
    @staticmethod
    def FromList(values: List_1[float]) -> SimInstanceSize: ...
    def GetHashCode(self) -> int: ...
    def __eq__(self, lhs: SimInstanceSize, rhs: SimInstanceSize) -> bool: ...
    def __ne__(self, lhs: SimInstanceSize, rhs: SimInstanceSize) -> bool: ...
    def ToList(self) -> List_1[float]: ...
    # Skipped Equals due to it being static, abstract and generic.

    Equals : Equals_MethodGroup
    class Equals_MethodGroup:
        @typing.overload
        def __call__(self, other: SimInstanceSize) -> bool:...
        @typing.overload
        def __call__(self, obj: typing.Any) -> bool:...



class SimInstanceSizeIndex(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    MinX : SimInstanceSizeIndex # 0
    MinY : SimInstanceSizeIndex # 1
    MinZ : SimInstanceSizeIndex # 2
    MaxX : SimInstanceSizeIndex # 3
    MaxY : SimInstanceSizeIndex # 4
    MaxZ : SimInstanceSizeIndex # 5


class SimInstanceSizeTransferDefinition(ISimInstanceSizeTransferDefinition):
    @typing.overload
    def __init__(self) -> None: ...
    @typing.overload
    def __init__(self, items: IEnumerable_1[SimInstanceSizeTransferDefinitionItem]) -> None: ...
    @property
    def Item(self) -> SimInstanceSizeTransferDefinitionItem: ...
    @Item.setter
    def Item(self, value: SimInstanceSizeTransferDefinitionItem) -> SimInstanceSizeTransferDefinitionItem: ...
    def Clone(self) -> ISimInstanceSizeTransferDefinition: ...
    def GetEnumerator(self) -> IEnumerator_1[SimInstanceSizeTransferDefinitionItem]: ...
    def RestoreReferences(self, instance: SimComponentInstance) -> None: ...


class SimInstanceSizeTransferDefinitionItem:
    def __init__(self, source: SimInstanceSizeTransferSource, parameter: SimDoubleParameter, addend: float) -> None: ...
    @property
    def Addend(self) -> float: ...
    @property
    def Parameter(self) -> SimDoubleParameter: ...
    @Parameter.setter
    def Parameter(self, value: SimDoubleParameter) -> SimDoubleParameter: ...
    @property
    def Source(self) -> SimInstanceSizeTransferSource: ...
    def Clone(self) -> SimInstanceSizeTransferDefinitionItem: ...
    def RestoreReferences(self, ids: SimIdGenerator, instance: SimComponentInstance) -> None: ...


class SimInstanceSizeTransferSource(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    User : SimInstanceSizeTransferSource # 0
    Parameter : SimInstanceSizeTransferSource # 1
    Path : SimInstanceSizeTransferSource # 2


class SimInstanceState:
    @typing.overload
    def __init__(self, isRealized: bool) -> None: ...
    @typing.overload
    def __init__(self, isRealized: bool, connectionState: SimInstanceConnectionState) -> None: ...
    @property
    def ConnectionState(self) -> SimInstanceConnectionState: ...
    @property
    def IsRealized(self) -> bool: ...
    def Equals(self, obj: typing.Any) -> bool: ...
    def GetHashCode(self) -> int: ...
    def __eq__(self, lhs: SimInstanceState, rhs: SimInstanceState) -> bool: ...
    def __ne__(self, lhs: SimInstanceState, rhs: SimInstanceState) -> bool: ...
    def ToString(self) -> str: ...


class SimInstanceType(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : SimInstanceType # 0
    Entity3D : SimInstanceType # 1
    AttributesFace : SimInstanceType # 2
    NetworkNode : SimInstanceType # 4
    NetworkEdge : SimInstanceType # 8
    Group : SimInstanceType # 16
    BuiltStructure : SimInstanceType # 32
    InPort : SimInstanceType # 64
    OutPort : SimInstanceType # 128
    AttributesEdge : SimInstanceType # 256
    AttributesPoint : SimInstanceType # 512
    ActiveTypes : SimInstanceType # 803
    SimNetworkBlock : SimInstanceType # 1024
    NetworkTypes : SimInstanceType # 1228
    GeometricVolume : SimInstanceType # 1073741824
    GeometricSurface : SimInstanceType # 2147483648


class SimIntegerParameter(SimBaseNumericParameter_1[int]):
    @typing.overload
    def __init__(self, name: str, unit: str, value: int, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, name: str, unit: str, value: int, minValue: int, maxValue: int, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, unit: str, value: int, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, unit: str, value: int, minValue: int, maxValue: int, allowedOperations: SimParameterOperations = ...) -> None: ...
    @property
    def AllowedOperations(self) -> SimParameterOperations: ...
    @AllowedOperations.setter
    def AllowedOperations(self, value: SimParameterOperations) -> SimParameterOperations: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> ISimManagedCollection: ...
    @Factory.setter
    def Factory(self, value: ISimManagedCollection) -> ISimManagedCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstancePropagationMode(self) -> SimParameterInstancePropagation: ...
    @InstancePropagationMode.setter
    def InstancePropagationMode(self, value: SimParameterInstancePropagation) -> SimParameterInstancePropagation: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def NameTaxonomyEntry(self) -> SimTaxonomyEntryOrString: ...
    @NameTaxonomyEntry.setter
    def NameTaxonomyEntry(self, value: SimTaxonomyEntryOrString) -> SimTaxonomyEntryOrString: ...
    @property
    def Propagation(self) -> SimInfoFlow: ...
    @Propagation.setter
    def Propagation(self, value: SimInfoFlow) -> SimInfoFlow: ...
    @property
    def ReferencingCalculations(self) -> IReadOnlyList_1[SimCalculation]: ...
    @property
    def State(self) -> SimParameterState: ...
    @property
    def Unit(self) -> str: ...
    @Unit.setter
    def Unit(self, value: str) -> str: ...
    @property
    def Value(self) -> int: ...
    @Value.setter
    def Value(self, value: int) -> int: ...
    @property
    def Value(self) -> typing.Any: ...
    @property
    def ValueMax(self) -> int: ...
    @ValueMax.setter
    def ValueMax(self, value: int) -> int: ...
    @property
    def ValueMin(self) -> int: ...
    @ValueMin.setter
    def ValueMin(self, value: int) -> int: ...
    @property
    def ValueSource(self) -> SimParameterValueSource: ...
    @ValueSource.setter
    def ValueSource(self, value: SimParameterValueSource) -> SimParameterValueSource: ...
    def Clone(self) -> SimBaseParameter: ...
    @staticmethod
    def ConvertFromValue(value: typing.Any) -> int: ...
    def ConvertValueFrom(self, value: typing.Any) -> None: ...
    def SetToNeutral(self) -> None: ...


class SimMultiValueExpression(abc.ABC):
    @abc.abstractmethod
    def Calculate(self, calculation: SimCalculation) -> Array_1[float]: ...
    @abc.abstractmethod
    def Clone(self) -> SimMultiValueExpression: ...


class SimMultiValueExpressionBinary(SimMultiValueExpression, INotifyPropertyChanged):
    def __init__(self, operation: MultiValueCalculationBinaryOperation) -> None: ...
    @property
    def Left(self) -> SimMultiValueExpression: ...
    @Left.setter
    def Left(self, value: SimMultiValueExpression) -> SimMultiValueExpression: ...
    @property
    def Operation(self) -> MultiValueCalculationBinaryOperation: ...
    @Operation.setter
    def Operation(self, value: MultiValueCalculationBinaryOperation) -> MultiValueCalculationBinaryOperation: ...
    @property
    def Right(self) -> SimMultiValueExpression: ...
    @Right.setter
    def Right(self, value: SimMultiValueExpression) -> SimMultiValueExpression: ...
    def Calculate(self, calculation: SimCalculation) -> Array_1[float]: ...
    def Clone(self) -> SimMultiValueExpression: ...


class SimMultiValueExpressionDoubleConstant(SimMultiValueExpression):
    def __init__(self, value: float) -> None: ...
    @property
    def Value(self) -> float: ...
    def Calculate(self, calculation: SimCalculation) -> Array_1[float]: ...
    def Clone(self) -> SimMultiValueExpression: ...


class SimMultiValueExpressionParameter(SimMultiValueExpression):
    def __init__(self, symbol: str) -> None: ...
    @property
    def Symbol(self) -> str: ...
    @Symbol.setter
    def Symbol(self, value: str) -> str: ...
    def Calculate(self, calculation: SimCalculation) -> Array_1[float]: ...
    def Clone(self) -> SimMultiValueExpression: ...


class SimMultiValueExpressionUnary(SimMultiValueExpression):
    def __init__(self, operation: MultiValueCalculationUnaryOperation) -> None: ...
    @property
    def Operand(self) -> SimMultiValueExpression: ...
    @Operand.setter
    def Operand(self, value: SimMultiValueExpression) -> SimMultiValueExpression: ...
    @property
    def Operation(self) -> MultiValueCalculationUnaryOperation: ...
    @Operation.setter
    def Operation(self, value: MultiValueCalculationUnaryOperation) -> MultiValueCalculationUnaryOperation: ...
    def Calculate(self, calculation: SimCalculation) -> Array_1[float]: ...
    def Clone(self) -> SimMultiValueExpression: ...


class SimParameterInstancePropagation(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    PropagateIfInstance : SimParameterInstancePropagation # 0
    PropagateNever : SimParameterInstancePropagation # 1
    PropagateAlways : SimParameterInstancePropagation # 2


class SimParameterOperations(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    None_ : SimParameterOperations # 0
    EditValue : SimParameterOperations # 1
    EditName : SimParameterOperations # 2
    Move : SimParameterOperations # 4
    All : SimParameterOperations # 7


class SimParameterState(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Valid : SimParameterState # 0
    ValueNaN : SimParameterState # 1
    ValueOutOfRange : SimParameterState # 2
    HidesReference : SimParameterState # 4
    ReferenceNotFound : SimParameterState # 8


class SimParameterValueSource(INotifyPropertyChanged, IDisposable, abc.ABC):
    @property
    def TargetParameter(self) -> SimBaseParameter: ...
    @TargetParameter.setter
    def TargetParameter(self, value: SimBaseParameter) -> SimBaseParameter: ...
    @abc.abstractmethod
    def Clone(self) -> SimParameterValueSource: ...
    def Dispose(self) -> None: ...
    def RestoreDefaultTaxonomyReferences(self, project: ProjectData) -> None: ...


class SimResultAggregationMethod(typing.SupportsInt):
    @typing.overload
    def __init__(self, value : int) -> None: ...
    @typing.overload
    def __init__(self, value : int, force_if_true: bool) -> None: ...
    def __int__(self) -> int: ...
    
    # Values:
    Separate : SimResultAggregationMethod # 0
    Average : SimResultAggregationMethod # 1


class SimSlot(IEquatable_1[SimSlot]):
    @typing.overload
    def __init__(self, original: SimSlot) -> None: ...
    @typing.overload
    def __init__(self, slotBase: SimTaxonomyEntry, slotExtension: str) -> None: ...
    @typing.overload
    def __init__(self, slotBase: SimTaxonomyEntryReference, slotExtension: str) -> None: ...
    @classmethod
    @property
    def Invalid(cls) -> SimSlot: ...
    @property
    def SlotBase(self) -> SimTaxonomyEntryReference: ...
    @property
    def SlotExtension(self) -> str: ...
    def GetHashCode(self) -> int: ...
    def __eq__(self, lhs: SimSlot, rhs: SimSlot) -> bool: ...
    def __ne__(self, lhs: SimSlot, rhs: SimSlot) -> bool: ...
    # Skipped Equals due to it being static, abstract and generic.

    Equals : Equals_MethodGroup
    class Equals_MethodGroup:
        @typing.overload
        def __call__(self, other: SimSlot) -> bool:...
        @typing.overload
        def __call__(self, obj: typing.Any) -> bool:...



class SimStringParameter(SimBaseParameter_1[str]):
    @typing.overload
    def __init__(self, name: str, value: str, allowedOperations: SimParameterOperations = ...) -> None: ...
    @typing.overload
    def __init__(self, nameTaxonomyEntry: SimTaxonomyEntry, value: str, allowedOperations: SimParameterOperations = ...) -> None: ...
    @property
    def AllowedOperations(self) -> SimParameterOperations: ...
    @AllowedOperations.setter
    def AllowedOperations(self, value: SimParameterOperations) -> SimParameterOperations: ...
    @property
    def Category(self) -> SimCategory: ...
    @Category.setter
    def Category(self, value: SimCategory) -> SimCategory: ...
    @property
    def Component(self) -> SimComponent: ...
    @Component.setter
    def Component(self, value: SimComponent) -> SimComponent: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> ISimManagedCollection: ...
    @Factory.setter
    def Factory(self, value: ISimManagedCollection) -> ISimManagedCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def InstancePropagationMode(self) -> SimParameterInstancePropagation: ...
    @InstancePropagationMode.setter
    def InstancePropagationMode(self, value: SimParameterInstancePropagation) -> SimParameterInstancePropagation: ...
    @property
    def IsAutomaticallyGenerated(self) -> bool: ...
    @IsAutomaticallyGenerated.setter
    def IsAutomaticallyGenerated(self, value: bool) -> bool: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def NameTaxonomyEntry(self) -> SimTaxonomyEntryOrString: ...
    @NameTaxonomyEntry.setter
    def NameTaxonomyEntry(self, value: SimTaxonomyEntryOrString) -> SimTaxonomyEntryOrString: ...
    @property
    def Propagation(self) -> SimInfoFlow: ...
    @Propagation.setter
    def Propagation(self, value: SimInfoFlow) -> SimInfoFlow: ...
    @property
    def State(self) -> SimParameterState: ...
    @property
    def Value(self) -> str: ...
    @Value.setter
    def Value(self, value: str) -> str: ...
    @property
    def Value(self) -> typing.Any: ...
    @property
    def ValueSource(self) -> SimParameterValueSource: ...
    @ValueSource.setter
    def ValueSource(self, value: SimParameterValueSource) -> SimParameterValueSource: ...
    def Clone(self) -> SimBaseParameter: ...
    @staticmethod
    def ConvertFromValue(value: typing.Any) -> str: ...
    def ConvertValueFrom(self, value: typing.Any) -> None: ...
    def SetToNeutral(self) -> None: ...


class SimUserComponentList(INotifyPropertyChanged):
    @typing.overload
    def __init__(self, name: str) -> None: ...
    @typing.overload
    def __init__(self, name: str, rootComponents: IEnumerable_1[SimComponent]) -> None: ...
    @property
    def Factory(self) -> SimUserComponentListCollection: ...
    @Factory.setter
    def Factory(self, value: SimUserComponentListCollection) -> SimUserComponentListCollection: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def RootComponents(self) -> SimUserRootComponentCollection: ...
    @staticmethod
    def GetContentId(ucl: SimUserComponentList) -> str: ...


class SimUserComponentListCollection(ObservableCollection_1[SimUserComponentList]):
    def __init__(self) -> None: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> SimUserComponentList: ...
    @Item.setter
    def Item(self, value: SimUserComponentList) -> SimUserComponentList: ...


class SimUserRootComponentCollection(IList_1[SimComponent], INotifyCollectionChanged):
    @typing.overload
    def __init__(self, owner: SimUserComponentList) -> None: ...
    @typing.overload
    def __init__(self, owner: SimUserComponentList, components: IEnumerable_1[SimComponent]) -> None: ...
    @property
    def Count(self) -> int: ...
    @property
    def IsReadOnly(self) -> bool: ...
    @property
    def Item(self) -> SimComponent: ...
    @Item.setter
    def Item(self, value: SimComponent) -> SimComponent: ...
    def Add(self, item: SimComponent) -> None: ...
    def Clear(self) -> None: ...
    def Contains(self, item: SimComponent) -> bool: ...
    def CopyTo(self, array: Array_1[SimComponent], arrayIndex: int) -> None: ...
    def GetEnumerator(self) -> IEnumerator_1[SimComponent]: ...
    def IndexOf(self, item: SimComponent) -> int: ...
    def Insert(self, index: int, item: SimComponent) -> None: ...
    def Remove(self, item: SimComponent) -> bool: ...
    def RemoveAt(self, index: int) -> None: ...

