# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.0.0-beta.1

import datetime
import sys
import types
import typing
import uuid as _uuid
from builtins import property as _property

import winrt._winrt
import winrt.system
import winrt.windows.applicationmodel
import winrt.windows.foundation
import winrt.windows.foundation.collections
import winrt.windows.management.deployment

from winrt.windows.phone.management.deployment import EnterpriseEnrollmentStatus, EnterpriseStatus

Self = typing.TypeVar('Self')

class Enterprise(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> Enterprise: ...
    @_property
    def enrollment_valid_from(self) -> datetime.datetime: ...
    @_property
    def enrollment_valid_to(self) -> datetime.datetime: ...
    @_property
    def id(self) -> _uuid.UUID: ...
    @_property
    def name(self) -> str: ...
    @_property
    def status(self) -> EnterpriseStatus: ...
    @_property
    def workplace_id(self) -> winrt.system.Int32: ...

class EnterpriseEnrollmentManager_Static(type):
    def request_enrollment_async(cls, enrollment_token: str, /) -> winrt.windows.foundation.IAsyncOperation[EnterpriseEnrollmentResult]: ...
    def request_unenrollment_async(cls, enterprise: typing.Optional[Enterprise], /) -> winrt.windows.foundation.IAsyncOperation[bool]: ...
    def validate_enterprises_async(cls) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def current_enterprise(cls) -> typing.Optional[Enterprise]: ...
    @_property
    def enrolled_enterprises(cls) -> typing.Optional[winrt.windows.foundation.collections.IVectorView[Enterprise]]: ...

class EnterpriseEnrollmentManager(winrt.system.Object, metaclass=EnterpriseEnrollmentManager_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> EnterpriseEnrollmentManager: ...

class EnterpriseEnrollmentResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> EnterpriseEnrollmentResult: ...
    @_property
    def enrolled_enterprise(self) -> typing.Optional[Enterprise]: ...
    @_property
    def status(self) -> EnterpriseEnrollmentStatus: ...

class InstallationManager_Static(type):
    @typing.overload
    def add_package_async(cls, title: str, source_location: typing.Optional[winrt.windows.foundation.Uri], /) -> winrt.windows.foundation.IAsyncOperationWithProgress[PackageInstallResult, winrt.system.UInt32]: ...
    @typing.overload
    def add_package_async(cls, title: str, source_location: typing.Optional[winrt.windows.foundation.Uri], instance_id: str, offer_id: str, license: typing.Optional[winrt.windows.foundation.Uri], /) -> winrt.windows.foundation.IAsyncOperationWithProgress[PackageInstallResult, winrt.system.UInt32]: ...
    @typing.overload
    def find_packages(cls) -> typing.Optional[winrt.windows.foundation.collections.IIterable[winrt.windows.applicationmodel.Package]]: ...
    @typing.overload
    def find_packages(cls, package_name: str, package_publisher: str, /) -> typing.Optional[winrt.windows.foundation.collections.IIterable[winrt.windows.applicationmodel.Package]]: ...
    def find_packages_for_current_publisher(cls) -> typing.Optional[winrt.windows.foundation.collections.IIterable[winrt.windows.applicationmodel.Package]]: ...
    def get_pending_package_installs(cls) -> typing.Optional[winrt.windows.foundation.collections.IIterable[winrt.windows.foundation.IAsyncOperationWithProgress[PackageInstallResult, winrt.system.UInt32]]]: ...
    def register_package_async(cls, manifest_uri: typing.Optional[winrt.windows.foundation.Uri], dependency_package_uris: typing.Iterable[winrt.windows.foundation.Uri], deployment_options: winrt.windows.management.deployment.DeploymentOptions, /) -> winrt.windows.foundation.IAsyncOperationWithProgress[PackageInstallResult, winrt.system.UInt32]: ...
    def remove_package_async(cls, package_full_name: str, removal_options: winrt.windows.management.deployment.RemovalOptions, /) -> winrt.windows.foundation.IAsyncOperationWithProgress[PackageInstallResult, winrt.system.UInt32]: ...

class InstallationManager(winrt.system.Object, metaclass=InstallationManager_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> InstallationManager: ...

class PackageInstallResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> PackageInstallResult: ...
    @_property
    def install_state(self) -> winrt.windows.management.deployment.PackageInstallState: ...
    @_property
    def product_id(self) -> str: ...
    @_property
    def error_text(self) -> str: ...

