import typing, abc
from System.ComponentModel import INotifyPropertyChanged
from SIMULTAN.Utils import RowColumnIndex, RowColumnRange
from SIMULTAN.Data.Components import SimComponent, SimChildComponentEntry, SimComponentReference, SimComponentInstance, SimBaseParameter
from SIMULTAN.Data.Geometry import Face, Volume, GeometryModel
from System.Collections.ObjectModel import ObservableCollection_1
from System.Collections.Generic import IDictionary_2, List_1, IEnumerable_1, HashSet_1, Dictionary_2
from SIMULTAN.Data import SimObjectNew_1, SimId, SimManagedCollection_1, IReferenceLocation
from System import Guid, ValueTuple_2, DateTime
from SIMULTAN.Data.MultiValues import SimMultiValueBigTable
from SIMULTAN.Projects import ProjectData

class ISimDataMappingComponentRuleChild(ISimDataMappingRuleBase, typing.Protocol):
    @abc.abstractmethod
    def Clone(self) -> ISimDataMappingComponentRuleChild: ...


class ISimDataMappingFaceRuleChild(ISimDataMappingRuleBase, typing.Protocol):
    @abc.abstractmethod
    def Clone(self) -> ISimDataMappingFaceRuleChild: ...


class ISimDataMappingInstanceRuleChild(ISimDataMappingRuleBase, typing.Protocol):
    @abc.abstractmethod
    def Clone(self) -> ISimDataMappingInstanceRuleChild: ...


class ISimDataMappingRuleBase(INotifyPropertyChanged, typing.Protocol):
    @property
    def MappingDirection(self) -> SimDataMappingDirection: ...
    @MappingDirection.setter
    def MappingDirection(self, value: SimDataMappingDirection) -> SimDataMappingDirection: ...
    @property
    def MaxDepth(self) -> int: ...
    @MaxDepth.setter
    def MaxDepth(self, value: int) -> int: ...
    @property
    def MaxMatches(self) -> int: ...
    @MaxMatches.setter
    def MaxMatches(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OffsetConsecutive(self) -> RowColumnIndex: ...
    @OffsetConsecutive.setter
    def OffsetConsecutive(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def OffsetParent(self) -> RowColumnIndex: ...
    @OffsetParent.setter
    def OffsetParent(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def ReferencePointConsecutive(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointConsecutive.setter
    def ReferencePointConsecutive(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def ReferencePointParent(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointParent.setter
    def ReferencePointParent(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def SheetName(self) -> str: ...
    @SheetName.setter
    def SheetName(self, value: str) -> str: ...
    @property
    def Tool(self) -> SimDataMappingTool: ...
    @Tool.setter
    def Tool(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    @abc.abstractmethod
    def Execute(self, rootObject: typing.Any, state: SimTraversalState, data: SimMappedData) -> None: ...
    @abc.abstractmethod
    def RestoreDefaultTaxonomyReferences(self) -> None: ...


class ISimDataMappingVolumeRuleChild(ISimDataMappingRuleBase, typing.Protocol):
    @abc.abstractmethod
    def Clone(self) -> ISimDataMappingVolumeRuleChild: ...


class SimDataMappingComponentFilterProperties(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:
    Name : SimDataMappingComponentFilterProperties # 0
    Slot : SimDataMappingComponentFilterProperties # 1
    InstanceIsRealized : SimDataMappingComponentFilterProperties # 2
    InstanceType : SimDataMappingComponentFilterProperties # 3


class SimDataMappingComponentMappingProperties(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:
    Name : SimDataMappingComponentMappingProperties # 0
    Slot : SimDataMappingComponentMappingProperties # 1
    Id : SimDataMappingComponentMappingProperties # 2


class SimDataMappingDirection(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:
    Horizontal : SimDataMappingDirection # 0
    Vertical : SimDataMappingDirection # 1


class SimDataMappingFaceFilterProperties(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:
    Name : SimDataMappingFaceFilterProperties # 0
    FaceType : SimDataMappingFaceFilterProperties # 1
    FileKey : SimDataMappingFaceFilterProperties # 2
    FileTags : SimDataMappingFaceFilterProperties # 3


class SimDataMappingFaceMappingProperties(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:
    Name : SimDataMappingFaceMappingProperties # 0
    Id : SimDataMappingFaceMappingProperties # 1
    Area : SimDataMappingFaceMappingProperties # 2
    Incline : SimDataMappingFaceMappingProperties # 3
    Orientation : SimDataMappingFaceMappingProperties # 4


class SimDataMappingFaceType(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:
    Wall : SimDataMappingFaceType # 0
    Floor : SimDataMappingFaceType # 1
    Ceiling : SimDataMappingFaceType # 2
    FloorOrCeiling : SimDataMappingFaceType # 3


class SimDataMappingFilterBase_GenericClasses(abc.ABCMeta):
    Generic_SimDataMappingFilterBase_GenericClasses_SimDataMappingFilterBase_1_TPropertyEnum = typing.TypeVar('Generic_SimDataMappingFilterBase_GenericClasses_SimDataMappingFilterBase_1_TPropertyEnum')
    def __getitem__(self, types : typing.Type[Generic_SimDataMappingFilterBase_GenericClasses_SimDataMappingFilterBase_1_TPropertyEnum]) -> typing.Type[SimDataMappingFilterBase_1[Generic_SimDataMappingFilterBase_GenericClasses_SimDataMappingFilterBase_1_TPropertyEnum]]: ...

class SimDataMappingFilterBase(SimDataMappingFilterBase_0, metaclass =SimDataMappingFilterBase_GenericClasses): ...

class SimDataMappingFilterBase_0(INotifyPropertyChanged, abc.ABC):
    def __init__(self, value: typing.Any) -> None: ...
    @property
    def Value(self) -> typing.Any: ...
    @Value.setter
    def Value(self, value: typing.Any) -> typing.Any: ...


SimDataMappingFilterBase_1_TPropertyEnum = typing.TypeVar('SimDataMappingFilterBase_1_TPropertyEnum')
class SimDataMappingFilterBase_1(typing.Generic[SimDataMappingFilterBase_1_TPropertyEnum], SimDataMappingFilterBase_0):
    def __init__(self, property: SimDataMappingFilterBase_1_TPropertyEnum, value: typing.Any) -> None: ...
    @property
    def Property(self) -> SimDataMappingFilterBase_1_TPropertyEnum: ...
    @property
    def Value(self) -> typing.Any: ...
    @Value.setter
    def Value(self, value: typing.Any) -> typing.Any: ...


class SimDataMappingFilterComponent(SimDataMappingFilterBase_1[SimDataMappingComponentFilterProperties]):
    def __init__(self, property: SimDataMappingComponentFilterProperties, value: typing.Any) -> None: ...
    @property
    def Property(self) -> SimDataMappingComponentFilterProperties: ...
    @property
    def Value(self) -> typing.Any: ...
    @Value.setter
    def Value(self, value: typing.Any) -> typing.Any: ...
    def Clone(self) -> SimDataMappingFilterComponent: ...
    # Skipped Match due to it being static, abstract and generic.

    Match : Match_MethodGroup
    class Match_MethodGroup:
        @typing.overload
        def __call__(self, matchObject: SimComponent) -> bool:...
        @typing.overload
        def __call__(self, matchObject: SimChildComponentEntry) -> bool:...
        @typing.overload
        def __call__(self, matchObject: SimComponentReference) -> bool:...



class SimDataMappingFilterFace(SimDataMappingFilterBase_1[SimDataMappingFaceFilterProperties]):
    def __init__(self, property: SimDataMappingFaceFilterProperties, value: typing.Any) -> None: ...
    @property
    def Property(self) -> SimDataMappingFaceFilterProperties: ...
    @property
    def Value(self) -> typing.Any: ...
    @Value.setter
    def Value(self, value: typing.Any) -> typing.Any: ...
    def Clone(self) -> SimDataMappingFilterFace: ...
    def Match(self, face: Face) -> bool: ...


class SimDataMappingFilterInstance(SimDataMappingFilterBase_1[SimDataMappingInstanceFilterProperties]):
    def __init__(self, property: SimDataMappingInstanceFilterProperties, value: typing.Any) -> None: ...
    @property
    def Property(self) -> SimDataMappingInstanceFilterProperties: ...
    @property
    def Value(self) -> typing.Any: ...
    @Value.setter
    def Value(self, value: typing.Any) -> typing.Any: ...
    def Clone(self) -> SimDataMappingFilterInstance: ...
    def Match(self, instance: SimComponentInstance) -> bool: ...


class SimDataMappingFilterParameter(SimDataMappingFilterBase_1[SimDataMappingParameterFilterProperties]):
    def __init__(self, property: SimDataMappingParameterFilterProperties, value: typing.Any) -> None: ...
    @property
    def Property(self) -> SimDataMappingParameterFilterProperties: ...
    @property
    def Value(self) -> typing.Any: ...
    @Value.setter
    def Value(self, value: typing.Any) -> typing.Any: ...
    def Clone(self) -> SimDataMappingFilterParameter: ...
    def Match(self, parameter: SimBaseParameter) -> bool: ...


class SimDataMappingFilterType(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:
    String : SimDataMappingFilterType # 0
    Regex : SimDataMappingFilterType # 1
    TaxonomyEntry : SimDataMappingFilterType # 2
    Slot : SimDataMappingFilterType # 3
    InstanceType : SimDataMappingFilterType # 4
    Boolean : SimDataMappingFilterType # 5
    InfoFlow : SimDataMappingFilterType # 6
    Category : SimDataMappingFilterType # 7
    Integer : SimDataMappingFilterType # 8
    WallType : SimDataMappingFilterType # 9
    Null : SimDataMappingFilterType # 10


class SimDataMappingFilterVolume(SimDataMappingFilterBase_1[SimDataMappingVolumeFilterProperties]):
    def __init__(self, property: SimDataMappingVolumeFilterProperties, value: typing.Any) -> None: ...
    @property
    def Property(self) -> SimDataMappingVolumeFilterProperties: ...
    @property
    def Value(self) -> typing.Any: ...
    @Value.setter
    def Value(self, value: typing.Any) -> typing.Any: ...
    def Clone(self) -> SimDataMappingFilterVolume: ...
    def Match(self, volume: Volume) -> bool: ...


class SimDataMappingInstanceFilterProperties(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:
    Name : SimDataMappingInstanceFilterProperties # 0
    InstanceType : SimDataMappingInstanceFilterProperties # 1


class SimDataMappingInstanceMappingProperties(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:
    Name : SimDataMappingInstanceMappingProperties # 0
    Id : SimDataMappingInstanceMappingProperties # 1


class SimDataMappingParameterFilterProperties(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:
    Name : SimDataMappingParameterFilterProperties # 0
    Unit : SimDataMappingParameterFilterProperties # 1
    Propagation : SimDataMappingParameterFilterProperties # 2
    Category : SimDataMappingParameterFilterProperties # 3


class SimDataMappingParameterMappingProperties(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:
    Name : SimDataMappingParameterMappingProperties # 0
    Id : SimDataMappingParameterMappingProperties # 1
    Value : SimDataMappingParameterMappingProperties # 2
    Description : SimDataMappingParameterMappingProperties # 3
    Unit : SimDataMappingParameterMappingProperties # 4
    Min : SimDataMappingParameterMappingProperties # 5
    Max : SimDataMappingParameterMappingProperties # 6


class SimDataMappingParameterRange(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:
    SingleValue : SimDataMappingParameterRange # 0
    CurrentRow : SimDataMappingParameterRange # 1
    CurrentColumn : SimDataMappingParameterRange # 2
    Table : SimDataMappingParameterRange # 3


class SimDataMappingReadRule(INotifyPropertyChanged):
    def __init__(self) -> None: ...
    @property
    def Parameter(self) -> SimBaseParameter: ...
    @Parameter.setter
    def Parameter(self, value: SimBaseParameter) -> SimBaseParameter: ...
    @property
    def Range(self) -> RowColumnRange: ...
    @Range.setter
    def Range(self, value: RowColumnRange) -> RowColumnRange: ...
    @property
    def SheetName(self) -> str: ...
    @SheetName.setter
    def SheetName(self, value: str) -> str: ...
    @property
    def Tool(self) -> SimDataMappingTool: ...
    @Tool.setter
    def Tool(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    def Clone(self) -> SimDataMappingReadRule: ...


class SimDataMappingReadRuleCollection(ObservableCollection_1[SimDataMappingReadRule]):
    def __init__(self, owner: SimDataMappingTool) -> None: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> SimDataMappingReadRule: ...
    @Item.setter
    def Item(self, value: SimDataMappingReadRule) -> SimDataMappingReadRule: ...
    @property
    def Owner(self) -> SimDataMappingTool: ...


class SimDataMappingReferencePoint(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:
    BottomLeft : SimDataMappingReferencePoint # 0
    TopRight : SimDataMappingReferencePoint # 1
    TopLeft : SimDataMappingReferencePoint # 2


class SimDataMappingRootRuleCollection(ObservableCollection_1[SimDataMappingRuleComponent]):
    def __init__(self, owner: SimDataMappingTool) -> None: ...
    @property
    def Count(self) -> int: ...
    @property
    def Item(self) -> SimDataMappingRuleComponent: ...
    @Item.setter
    def Item(self, value: SimDataMappingRuleComponent) -> SimDataMappingRuleComponent: ...
    @property
    def Mappings(self) -> IDictionary_2[SimDataMappingRuleComponent, List_1[SimComponent]]: ...
    @property
    def Owner(self) -> SimDataMappingTool: ...
    def AddMapping(self, rule: SimDataMappingRuleComponent, component: SimComponent) -> None: ...
    def AddMappings(self, rule: SimDataMappingRuleComponent, components: IEnumerable_1[SimComponent]) -> None: ...
    def GetMappings(self, rule: SimDataMappingRuleComponent) -> IEnumerable_1[SimComponent]: ...
    # Skipped RemoveMapping due to it being static, abstract and generic.

    RemoveMapping : RemoveMapping_MethodGroup
    class RemoveMapping_MethodGroup:
        @typing.overload
        def __call__(self, component: SimComponent) -> None:...
        @typing.overload
        def __call__(self, rule: SimDataMappingRuleComponent, component: SimComponent) -> None:...



class SimDataMappingRuleBase_GenericClasses(abc.ABCMeta):
    Generic_SimDataMappingRuleBase_GenericClasses_SimDataMappingRuleBase_2_TPropertyEnumeration = typing.TypeVar('Generic_SimDataMappingRuleBase_GenericClasses_SimDataMappingRuleBase_2_TPropertyEnumeration')
    Generic_SimDataMappingRuleBase_GenericClasses_SimDataMappingRuleBase_2_TFilter = typing.TypeVar('Generic_SimDataMappingRuleBase_GenericClasses_SimDataMappingRuleBase_2_TFilter')
    def __getitem__(self, types : typing.Tuple[typing.Type[Generic_SimDataMappingRuleBase_GenericClasses_SimDataMappingRuleBase_2_TPropertyEnumeration], typing.Type[Generic_SimDataMappingRuleBase_GenericClasses_SimDataMappingRuleBase_2_TFilter]]) -> typing.Type[SimDataMappingRuleBase_2[Generic_SimDataMappingRuleBase_GenericClasses_SimDataMappingRuleBase_2_TPropertyEnumeration, Generic_SimDataMappingRuleBase_GenericClasses_SimDataMappingRuleBase_2_TFilter]]: ...

SimDataMappingRuleBase : SimDataMappingRuleBase_GenericClasses

SimDataMappingRuleBase_2_TPropertyEnumeration = typing.TypeVar('SimDataMappingRuleBase_2_TPropertyEnumeration')
SimDataMappingRuleBase_2_TFilter = typing.TypeVar('SimDataMappingRuleBase_2_TFilter')
class SimDataMappingRuleBase_2(typing.Generic[SimDataMappingRuleBase_2_TPropertyEnumeration, SimDataMappingRuleBase_2_TFilter], ISimDataMappingRuleBase, abc.ABC):
    def __init__(self, sheetName: str) -> None: ...
    @property
    def Filter(self) -> ObservableCollection_1[SimDataMappingRuleBase_2_TFilter]: ...
    @property
    def MappingDirection(self) -> SimDataMappingDirection: ...
    @MappingDirection.setter
    def MappingDirection(self, value: SimDataMappingDirection) -> SimDataMappingDirection: ...
    @property
    def MaxDepth(self) -> int: ...
    @MaxDepth.setter
    def MaxDepth(self, value: int) -> int: ...
    @property
    def MaxMatches(self) -> int: ...
    @MaxMatches.setter
    def MaxMatches(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OffsetConsecutive(self) -> RowColumnIndex: ...
    @OffsetConsecutive.setter
    def OffsetConsecutive(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def OffsetParent(self) -> RowColumnIndex: ...
    @OffsetParent.setter
    def OffsetParent(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def Properties(self) -> ObservableCollection_1[SimDataMappingRuleBase_2_TPropertyEnumeration]: ...
    @property
    def ReferencePointConsecutive(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointConsecutive.setter
    def ReferencePointConsecutive(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def ReferencePointParent(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointParent.setter
    def ReferencePointParent(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def SheetName(self) -> str: ...
    @SheetName.setter
    def SheetName(self, value: str) -> str: ...
    @property
    def Tool(self) -> SimDataMappingTool: ...
    @Tool.setter
    def Tool(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    @abc.abstractmethod
    def Execute(self, rootObject: typing.Any, state: SimTraversalState, data: SimMappedData) -> None: ...
    def RestoreDefaultTaxonomyReferences(self) -> None: ...


class SimDataMappingRuleComponent(SimDataMappingRuleBase_2[SimDataMappingComponentMappingProperties, SimDataMappingFilterComponent], ISimDataMappingInstanceRuleChild, ISimDataMappingVolumeRuleChild, ISimDataMappingFaceRuleChild, ISimDataMappingComponentRuleChild):
    def __init__(self, sheetName: str) -> None: ...
    @property
    def Filter(self) -> ObservableCollection_1[SimDataMappingFilterComponent]: ...
    @property
    def MappingDirection(self) -> SimDataMappingDirection: ...
    @MappingDirection.setter
    def MappingDirection(self, value: SimDataMappingDirection) -> SimDataMappingDirection: ...
    @property
    def MaxDepth(self) -> int: ...
    @MaxDepth.setter
    def MaxDepth(self, value: int) -> int: ...
    @property
    def MaxMatches(self) -> int: ...
    @MaxMatches.setter
    def MaxMatches(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OffsetConsecutive(self) -> RowColumnIndex: ...
    @OffsetConsecutive.setter
    def OffsetConsecutive(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def OffsetParent(self) -> RowColumnIndex: ...
    @OffsetParent.setter
    def OffsetParent(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def Properties(self) -> ObservableCollection_1[SimDataMappingComponentMappingProperties]: ...
    @property
    def ReferencePointConsecutive(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointConsecutive.setter
    def ReferencePointConsecutive(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def ReferencePointParent(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointParent.setter
    def ReferencePointParent(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def Rules(self) -> ObservableCollection_1[ISimDataMappingComponentRuleChild]: ...
    @property
    def SheetName(self) -> str: ...
    @SheetName.setter
    def SheetName(self, value: str) -> str: ...
    @property
    def Tool(self) -> SimDataMappingTool: ...
    @Tool.setter
    def Tool(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    @property
    def TraversalStrategy(self) -> SimDataMappingRuleTraversalStrategy: ...
    @TraversalStrategy.setter
    def TraversalStrategy(self, value: SimDataMappingRuleTraversalStrategy) -> SimDataMappingRuleTraversalStrategy: ...
    def Clone(self) -> SimDataMappingRuleComponent: ...
    def Execute(self, rootObject: typing.Any, state: SimTraversalState, data: SimMappedData) -> None: ...
    def RestoreDefaultTaxonomyReferences(self) -> None: ...


class SimDataMappingRuleFace(SimDataMappingRuleBase_2[SimDataMappingFaceMappingProperties, SimDataMappingFilterFace], ISimDataMappingFaceRuleChild, ISimDataMappingVolumeRuleChild, ISimDataMappingInstanceRuleChild, ISimDataMappingComponentRuleChild):
    def __init__(self, sheetName: str) -> None: ...
    @property
    def Filter(self) -> ObservableCollection_1[SimDataMappingFilterFace]: ...
    @property
    def MappingDirection(self) -> SimDataMappingDirection: ...
    @MappingDirection.setter
    def MappingDirection(self, value: SimDataMappingDirection) -> SimDataMappingDirection: ...
    @property
    def MaxDepth(self) -> int: ...
    @MaxDepth.setter
    def MaxDepth(self, value: int) -> int: ...
    @property
    def MaxMatches(self) -> int: ...
    @MaxMatches.setter
    def MaxMatches(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OffsetConsecutive(self) -> RowColumnIndex: ...
    @OffsetConsecutive.setter
    def OffsetConsecutive(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def OffsetParent(self) -> RowColumnIndex: ...
    @OffsetParent.setter
    def OffsetParent(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def Properties(self) -> ObservableCollection_1[SimDataMappingFaceMappingProperties]: ...
    @property
    def ReferencePointConsecutive(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointConsecutive.setter
    def ReferencePointConsecutive(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def ReferencePointParent(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointParent.setter
    def ReferencePointParent(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def Rules(self) -> ObservableCollection_1[ISimDataMappingFaceRuleChild]: ...
    @property
    def SheetName(self) -> str: ...
    @SheetName.setter
    def SheetName(self, value: str) -> str: ...
    @property
    def Tool(self) -> SimDataMappingTool: ...
    @Tool.setter
    def Tool(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    def Clone(self) -> SimDataMappingRuleFace: ...
    def Execute(self, rootObject: typing.Any, state: SimTraversalState, data: SimMappedData) -> None: ...
    def RestoreDefaultTaxonomyReferences(self) -> None: ...


class SimDataMappingRuleInstance(SimDataMappingRuleBase_2[SimDataMappingInstanceMappingProperties, SimDataMappingFilterInstance], ISimDataMappingFaceRuleChild, ISimDataMappingVolumeRuleChild, ISimDataMappingComponentRuleChild):
    def __init__(self, sheetName: str) -> None: ...
    @property
    def Filter(self) -> ObservableCollection_1[SimDataMappingFilterInstance]: ...
    @property
    def MappingDirection(self) -> SimDataMappingDirection: ...
    @MappingDirection.setter
    def MappingDirection(self, value: SimDataMappingDirection) -> SimDataMappingDirection: ...
    @property
    def MaxDepth(self) -> int: ...
    @MaxDepth.setter
    def MaxDepth(self, value: int) -> int: ...
    @property
    def MaxMatches(self) -> int: ...
    @MaxMatches.setter
    def MaxMatches(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OffsetConsecutive(self) -> RowColumnIndex: ...
    @OffsetConsecutive.setter
    def OffsetConsecutive(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def OffsetParent(self) -> RowColumnIndex: ...
    @OffsetParent.setter
    def OffsetParent(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def Properties(self) -> ObservableCollection_1[SimDataMappingInstanceMappingProperties]: ...
    @property
    def ReferencePointConsecutive(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointConsecutive.setter
    def ReferencePointConsecutive(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def ReferencePointParent(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointParent.setter
    def ReferencePointParent(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def Rules(self) -> ObservableCollection_1[ISimDataMappingInstanceRuleChild]: ...
    @property
    def SheetName(self) -> str: ...
    @SheetName.setter
    def SheetName(self, value: str) -> str: ...
    @property
    def Tool(self) -> SimDataMappingTool: ...
    @Tool.setter
    def Tool(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    def Clone(self) -> SimDataMappingRuleInstance: ...
    def Execute(self, rootObject: typing.Any, state: SimTraversalState, data: SimMappedData) -> None: ...
    def RestoreDefaultTaxonomyReferences(self) -> None: ...


class SimDataMappingRuleParameter(SimDataMappingRuleBase_2[SimDataMappingParameterMappingProperties, SimDataMappingFilterParameter], ISimDataMappingInstanceRuleChild, ISimDataMappingComponentRuleChild):
    def __init__(self, sheetName: str) -> None: ...
    @property
    def Filter(self) -> ObservableCollection_1[SimDataMappingFilterParameter]: ...
    @property
    def MappingDirection(self) -> SimDataMappingDirection: ...
    @MappingDirection.setter
    def MappingDirection(self, value: SimDataMappingDirection) -> SimDataMappingDirection: ...
    @property
    def MaxDepth(self) -> int: ...
    @MaxDepth.setter
    def MaxDepth(self, value: int) -> int: ...
    @property
    def MaxMatches(self) -> int: ...
    @MaxMatches.setter
    def MaxMatches(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OffsetConsecutive(self) -> RowColumnIndex: ...
    @OffsetConsecutive.setter
    def OffsetConsecutive(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def OffsetParent(self) -> RowColumnIndex: ...
    @OffsetParent.setter
    def OffsetParent(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def ParameterRange(self) -> SimDataMappingParameterRange: ...
    @ParameterRange.setter
    def ParameterRange(self, value: SimDataMappingParameterRange) -> SimDataMappingParameterRange: ...
    @property
    def Properties(self) -> ObservableCollection_1[SimDataMappingParameterMappingProperties]: ...
    @property
    def ReferencePointConsecutive(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointConsecutive.setter
    def ReferencePointConsecutive(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def ReferencePointParent(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointParent.setter
    def ReferencePointParent(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def SheetName(self) -> str: ...
    @SheetName.setter
    def SheetName(self, value: str) -> str: ...
    @property
    def Tool(self) -> SimDataMappingTool: ...
    @Tool.setter
    def Tool(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    def Clone(self) -> SimDataMappingRuleParameter: ...
    def Execute(self, rootObject: typing.Any, state: SimTraversalState, data: SimMappedData) -> None: ...


class SimDataMappingRuleTraversalStrategy(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:
    Subtree : SimDataMappingRuleTraversalStrategy # 1
    References : SimDataMappingRuleTraversalStrategy # 2
    SubtreeAndReferences : SimDataMappingRuleTraversalStrategy # 3


class SimDataMappingRuleVolume(SimDataMappingRuleBase_2[SimDataMappingVolumeMappingProperties, SimDataMappingFilterVolume], ISimDataMappingFaceRuleChild, ISimDataMappingInstanceRuleChild, ISimDataMappingComponentRuleChild):
    def __init__(self, sheetName: str) -> None: ...
    @property
    def Filter(self) -> ObservableCollection_1[SimDataMappingFilterVolume]: ...
    @property
    def MappingDirection(self) -> SimDataMappingDirection: ...
    @MappingDirection.setter
    def MappingDirection(self, value: SimDataMappingDirection) -> SimDataMappingDirection: ...
    @property
    def MaxDepth(self) -> int: ...
    @MaxDepth.setter
    def MaxDepth(self, value: int) -> int: ...
    @property
    def MaxMatches(self) -> int: ...
    @MaxMatches.setter
    def MaxMatches(self, value: int) -> int: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def OffsetConsecutive(self) -> RowColumnIndex: ...
    @OffsetConsecutive.setter
    def OffsetConsecutive(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def OffsetParent(self) -> RowColumnIndex: ...
    @OffsetParent.setter
    def OffsetParent(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def Properties(self) -> ObservableCollection_1[SimDataMappingVolumeMappingProperties]: ...
    @property
    def ReferencePointConsecutive(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointConsecutive.setter
    def ReferencePointConsecutive(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def ReferencePointParent(self) -> SimDataMappingReferencePoint: ...
    @ReferencePointParent.setter
    def ReferencePointParent(self, value: SimDataMappingReferencePoint) -> SimDataMappingReferencePoint: ...
    @property
    def Rules(self) -> ObservableCollection_1[ISimDataMappingVolumeRuleChild]: ...
    @property
    def SheetName(self) -> str: ...
    @SheetName.setter
    def SheetName(self, value: str) -> str: ...
    @property
    def Tool(self) -> SimDataMappingTool: ...
    @Tool.setter
    def Tool(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    def Clone(self) -> SimDataMappingRuleVolume: ...
    def Execute(self, rootObject: typing.Any, state: SimTraversalState, data: SimMappedData) -> None: ...
    def RestoreDefaultTaxonomyReferences(self) -> None: ...


class SimDataMappingTool(SimObjectNew_1[SimDataMappingToolCollection]):
    def __init__(self, name: str) -> None: ...
    @property
    def Description(self) -> str: ...
    @Description.setter
    def Description(self, value: str) -> str: ...
    @property
    def Factory(self) -> SimDataMappingToolCollection: ...
    @Factory.setter
    def Factory(self, value: SimDataMappingToolCollection) -> SimDataMappingToolCollection: ...
    @property
    def GlobalID(self) -> Guid: ...
    @property
    def Id(self) -> SimId: ...
    @Id.setter
    def Id(self, value: SimId) -> SimId: ...
    @property
    def LocalID(self) -> int: ...
    @property
    def MacroName(self) -> str: ...
    @MacroName.setter
    def MacroName(self, value: str) -> str: ...
    @property
    def Name(self) -> str: ...
    @Name.setter
    def Name(self, value: str) -> str: ...
    @property
    def ReadRules(self) -> SimDataMappingReadRuleCollection: ...
    @property
    def Rules(self) -> SimDataMappingRootRuleCollection: ...
    def Clone(self) -> SimDataMappingTool: ...
    def Execute(self, components: HashSet_1[SimComponent] = ..., tableNameFormat: str = ..., overrideResults: bool = ..., addNewTables: bool = ...) -> ValueTuple_2[List_1[ValueTuple_2[str, SimMultiValueBigTable]], SimMappedData]: ...


class SimDataMappingToolCollection(SimManagedCollection_1[SimDataMappingTool]):
    def __init__(self, owner: ProjectData) -> None: ...
    @property
    def CalledFromLocation(self) -> IReferenceLocation: ...
    @property
    def Count(self) -> int: ...
    @property
    def HasChanges(self) -> bool: ...
    @property
    def Item(self) -> SimDataMappingTool: ...
    @Item.setter
    def Item(self, value: SimDataMappingTool) -> SimDataMappingTool: ...
    @property
    def LastChange(self) -> DateTime: ...
    @property
    def ProjectData(self) -> ProjectData: ...
    def EndLoading(self) -> None: ...
    def StartLoading(self) -> None: ...


class SimDataMappingVolumeFilterProperties(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:
    Name : SimDataMappingVolumeFilterProperties # 0
    FileKey : SimDataMappingVolumeFilterProperties # 1
    FileTags : SimDataMappingVolumeFilterProperties # 2


class SimDataMappingVolumeMappingProperties(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:
    Name : SimDataMappingVolumeMappingProperties # 0
    Id : SimDataMappingVolumeMappingProperties # 1
    Volume : SimDataMappingVolumeMappingProperties # 2
    FloorArea : SimDataMappingVolumeMappingProperties # 3
    Height : SimDataMappingVolumeMappingProperties # 4
    CeilingElevation : SimDataMappingVolumeMappingProperties # 5
    FloorElevation : SimDataMappingVolumeMappingProperties # 6


class SimDataMappingWarning:
    def __init__(self, type: SimDataMappingWarningType, rule: ISimDataMappingRuleBase, sheetName: str, index: RowColumnIndex) -> None: ...
    @property
    def Index(self) -> RowColumnIndex: ...
    @property
    def Rule(self) -> ISimDataMappingRuleBase: ...
    @property
    def SheetName(self) -> str: ...
    @property
    def Type(self) -> SimDataMappingWarningType: ...


class SimDataMappingWarningType(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:
    DataOverriden : SimDataMappingWarningType # 0


class SimMappedData:
    def __init__(self) -> None: ...
    @property
    def Data(self) -> Dictionary_2[str, Dictionary_2[RowColumnIndex, typing.Any]]: ...
    @property
    def Warnings(self) -> IEnumerable_1[SimDataMappingWarning]: ...
    def AddData(self, sheet: str, position: RowColumnIndex, data: typing.Any, source: ISimDataMappingRuleBase) -> None: ...
    def ConvertToTable(self, sheetName: str, existingTable: SimMultiValueBigTable = ...) -> SimMultiValueBigTable: ...
    @staticmethod
    def ToExcelColumn(index: int) -> str: ...


class SimTraversalState:
    def __init__(self) -> None: ...
    @property
    def CurrentPosition(self) -> RowColumnIndex: ...
    @CurrentPosition.setter
    def CurrentPosition(self, value: RowColumnIndex) -> RowColumnIndex: ...
    @property
    def Depth(self) -> int: ...
    @Depth.setter
    def Depth(self, value: int) -> int: ...
    @property
    def IncludeRoot(self) -> bool: ...
    @IncludeRoot.setter
    def IncludeRoot(self, value: bool) -> bool: ...
    @property
    def MatchCount(self) -> int: ...
    @MatchCount.setter
    def MatchCount(self, value: int) -> int: ...
    @property
    def ModelsToRelease(self) -> List_1[GeometryModel]: ...
    @ModelsToRelease.setter
    def ModelsToRelease(self, value: List_1[GeometryModel]) -> List_1[GeometryModel]: ...
    @property
    def Range(self) -> RowColumnRange: ...
    @Range.setter
    def Range(self, value: RowColumnRange) -> RowColumnRange: ...
    @property
    def RangeStack(self) -> List_1[RowColumnRange]: ...
    @RangeStack.setter
    def RangeStack(self, value: List_1[RowColumnRange]) -> List_1[RowColumnRange]: ...
    @property
    def VisitedObjects(self) -> HashSet_1[typing.Any]: ...
    @VisitedObjects.setter
    def VisitedObjects(self, value: HashSet_1[typing.Any]) -> HashSet_1[typing.Any]: ...
    def ReleaseModels(self, projectData: ProjectData) -> None: ...

