import typing, abc
from SIMULTAN.Projects import ExtendedProjectData, HierarchicProjectMetaData
from System.IO import FileInfo
from System import MulticastDelegate, IAsyncResult, AsyncCallback
from System.Reflection import MethodInfo
from System.Collections.Generic import List_1, IEnumerable_1

class ManagedComponentFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    @property
    def PublicCounterpart(self) -> ManagedPublicComponentFile: ...
    @PublicCounterpart.setter
    def PublicCounterpart(self, value: ManagedPublicComponentFile) -> ManagedPublicComponentFile: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedExcelToolFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedFile(abc.ABC):
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @IsUpToDate.setter
    def IsUpToDate(self, value: bool) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def IsValid(self) -> bool: ...
    def OnDeleted(self, _resource_id: int) -> None: ...
    def OnFileUpToDateChanged(self, isUpToDate: bool) -> None: ...
    def OnRenamed(self, newFile: FileInfo) -> None: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Reset(self) -> None: ...
    def Save(self) -> None: ...

    class FileUpToDateChangedEventHandler(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, isUpToDate: bool, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
        def EndInvoke(self, result: IAsyncResult) -> None: ...
        def Invoke(self, sender: typing.Any, isUpToDate: bool) -> None: ...



class ManagedFileCollection:
    def __init__(self, _files: List_1[FileInfo], _project_data_manager: ExtendedProjectData) -> None: ...
    @property
    def ComponentEntries(self) -> IEnumerable_1[ManagedComponentFile]: ...
    @ComponentEntries.setter
    def ComponentEntries(self, value: IEnumerable_1[ManagedComponentFile]) -> IEnumerable_1[ManagedComponentFile]: ...
    @property
    def ComponentEntry(self) -> ManagedComponentFile: ...
    @ComponentEntry.setter
    def ComponentEntry(self, value: ManagedComponentFile) -> ManagedComponentFile: ...
    @property
    def ExcelToolEntries(self) -> IEnumerable_1[ManagedExcelToolFile]: ...
    @ExcelToolEntries.setter
    def ExcelToolEntries(self, value: IEnumerable_1[ManagedExcelToolFile]) -> IEnumerable_1[ManagedExcelToolFile]: ...
    @property
    def ExcelToolEntry(self) -> ManagedExcelToolFile: ...
    @ExcelToolEntry.setter
    def ExcelToolEntry(self, value: ManagedExcelToolFile) -> ManagedExcelToolFile: ...
    @property
    def Files(self) -> List_1[ManagedFile]: ...
    @property
    def GeoMapEntries(self) -> IEnumerable_1[ManagedGeoMapFile]: ...
    @GeoMapEntries.setter
    def GeoMapEntries(self, value: IEnumerable_1[ManagedGeoMapFile]) -> IEnumerable_1[ManagedGeoMapFile]: ...
    @property
    def GeometryEntries(self) -> IEnumerable_1[ManagedGeometryFile]: ...
    @GeometryEntries.setter
    def GeometryEntries(self, value: IEnumerable_1[ManagedGeometryFile]) -> IEnumerable_1[ManagedGeometryFile]: ...
    @property
    def GeometryEntry(self) -> ManagedGeometryFile: ...
    @GeometryEntry.setter
    def GeometryEntry(self, value: ManagedGeometryFile) -> ManagedGeometryFile: ...
    @property
    def GeometryRelationsEntries(self) -> IEnumerable_1[ManagedGeometryRelationsFile]: ...
    @GeometryRelationsEntries.setter
    def GeometryRelationsEntries(self, value: IEnumerable_1[ManagedGeometryRelationsFile]) -> IEnumerable_1[ManagedGeometryRelationsFile]: ...
    @property
    def GeometryRelationsEntry(self) -> ManagedGeometryRelationsFile: ...
    @GeometryRelationsEntry.setter
    def GeometryRelationsEntry(self, value: ManagedGeometryRelationsFile) -> ManagedGeometryRelationsFile: ...
    @property
    def LinksFileEntry(self) -> ManagedLinksFile: ...
    @LinksFileEntry.setter
    def LinksFileEntry(self, value: ManagedLinksFile) -> ManagedLinksFile: ...
    @property
    def MetaDataEntry(self) -> ManagedMetaData: ...
    @MetaDataEntry.setter
    def MetaDataEntry(self, value: ManagedMetaData) -> ManagedMetaData: ...
    @property
    def ParameterLibraryEntries(self) -> IEnumerable_1[ManagedParameterFile]: ...
    @ParameterLibraryEntries.setter
    def ParameterLibraryEntries(self, value: IEnumerable_1[ManagedParameterFile]) -> IEnumerable_1[ManagedParameterFile]: ...
    @property
    def ParameterLibraryEntry(self) -> ManagedParameterFile: ...
    @ParameterLibraryEntry.setter
    def ParameterLibraryEntry(self, value: ManagedParameterFile) -> ManagedParameterFile: ...
    @property
    def PublicComponentsEntry(self) -> ManagedPublicComponentFile: ...
    @PublicComponentsEntry.setter
    def PublicComponentsEntry(self, value: ManagedPublicComponentFile) -> ManagedPublicComponentFile: ...
    @property
    def PublicValuesEntry(self) -> ManagedPublicValueFile: ...
    @PublicValuesEntry.setter
    def PublicValuesEntry(self, value: ManagedPublicValueFile) -> ManagedPublicValueFile: ...
    @property
    def SitePlannerEntries(self) -> IEnumerable_1[ManagedSitePlannerFile]: ...
    @SitePlannerEntries.setter
    def SitePlannerEntries(self, value: IEnumerable_1[ManagedSitePlannerFile]) -> IEnumerable_1[ManagedSitePlannerFile]: ...
    @property
    def TaxonomyEntries(self) -> IEnumerable_1[ManagedTaxonomyFile]: ...
    @TaxonomyEntries.setter
    def TaxonomyEntries(self, value: IEnumerable_1[ManagedTaxonomyFile]) -> IEnumerable_1[ManagedTaxonomyFile]: ...
    @property
    def TaxonomyEntry(self) -> ManagedTaxonomyFile: ...
    @TaxonomyEntry.setter
    def TaxonomyEntry(self, value: ManagedTaxonomyFile) -> ManagedTaxonomyFile: ...
    @property
    def UserFileEntry(self) -> ManagedUserFile: ...
    @UserFileEntry.setter
    def UserFileEntry(self, value: ManagedUserFile) -> ManagedUserFile: ...
    @property
    def ValueEntries(self) -> IEnumerable_1[ManagedValueFile]: ...
    @ValueEntries.setter
    def ValueEntries(self, value: IEnumerable_1[ManagedValueFile]) -> IEnumerable_1[ManagedValueFile]: ...
    @property
    def ValueEntry(self) -> ManagedValueFile: ...
    @ValueEntry.setter
    def ValueEntry(self, value: ManagedValueFile) -> ManagedValueFile: ...
    def AddFile(self, _file: FileInfo, projectDataManager: ExtendedProjectData, _load_data: bool = ...) -> None: ...
    def FulfillsMinimumForOpenProject(self) -> bool: ...
    def GetFileWithResourceIndex(self, _index: int) -> ManagedFile: ...
    def HasValidEntries(self) -> bool: ...
    def IsInLoadedState(self) -> bool: ...
    def IsInPostAuthenticationState(self) -> bool: ...
    def IsInPreAuthenticationState(self) -> bool: ...
    def OnManagedFileUpToDateStateChanged(self, files: IEnumerable_1[ManagedFile], all_upToDate: bool) -> None: ...
    def RemoveFile(self, _extension: str) -> None: ...
    def SyncWithResources(self) -> None: ...

    class ManagedFileUpToDateStateChangedEventHandler(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, files: IEnumerable_1[ManagedFile], all_upToDate: bool, callback: AsyncCallback, object: typing.Any) -> IAsyncResult: ...
        def EndInvoke(self, result: IAsyncResult) -> None: ...
        def Invoke(self, sender: typing.Any, files: IEnumerable_1[ManagedFile], all_upToDate: bool) -> None: ...



class ManagedGeoMapFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def IsValid(self) -> bool: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedGeometryFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def IsValid(self) -> bool: ...
    def OnDeleted(self, _resource_id: int) -> None: ...
    def Save(self) -> None: ...


class ManagedGeometryRelationsFile(ManagedFile):
    @typing.overload
    def __init__(self, _original: ManagedFile, _new_file_location: FileInfo) -> None: ...
    @typing.overload
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedLinksFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Reset(self) -> None: ...
    def Save(self) -> None: ...


class ManagedMetaData(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def Data(self) -> HierarchicProjectMetaData: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Close(self) -> None: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedParameterFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedPublicComponentFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedPublicValueFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedSitePlannerFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def IsValid(self) -> bool: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedTaxonomyFile(ManagedFile):
    @typing.overload
    def __init__(self, _original: ManagedFile, _new_file_location: FileInfo) -> None: ...
    @typing.overload
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def LoadedFileVersion(self) -> int: ...
    @LoadedFileVersion.setter
    def LoadedFileVersion(self, value: int) -> int: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedUserFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...


class ManagedValueFile(ManagedFile):
    def __init__(self, projectData: ExtendedProjectData, _owner: ManagedFileCollection, _file: FileInfo) -> None: ...
    @property
    def CorrespondingResourceIndex(self) -> int: ...
    @CorrespondingResourceIndex.setter
    def CorrespondingResourceIndex(self, value: int) -> int: ...
    @property
    def File(self) -> FileInfo: ...
    @File.setter
    def File(self, value: FileInfo) -> FileInfo: ...
    @property
    def IsUpToDate(self) -> bool: ...
    @property
    def ProjectData(self) -> ExtendedProjectData: ...
    @property
    def PublicCounterpart(self) -> ManagedPublicValueFile: ...
    @PublicCounterpart.setter
    def PublicCounterpart(self, value: ManagedPublicValueFile) -> ManagedPublicValueFile: ...
    @property
    def PublicDependence(self) -> ManagedPublicComponentFile: ...
    @PublicDependence.setter
    def PublicDependence(self, value: ManagedPublicComponentFile) -> ManagedPublicComponentFile: ...
    def Open(self, _clear_before_open: bool) -> None: ...
    def Save(self) -> None: ...

