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

import enum
import sys
import types
import typing
import uuid

import winsdk._winrt as _winrt

try:
    import winsdk.windows.foundation
except Exception:
    pass

try:
    import winsdk.windows.foundation.collections
except Exception:
    pass

try:
    import winsdk.windows.storage.streams
except Exception:
    pass

try:
    import winsdk.windows.system
except Exception:
    pass

try:
    import winsdk.windows.ui.notifications
except Exception:
    pass

class PushNotificationType(enum.IntEnum):
    TOAST = 0
    TILE = 1
    BADGE = 2
    RAW = 3
    TILE_FLYOUT = 4

class PushNotificationChannel(_winrt.Object):
    expiration_time: winsdk.windows.foundation.DateTime
    uri: str
    @staticmethod
    def _from(obj: _winrt.Object) -> PushNotificationChannel: ...
    @typing.overload
    def close(self) -> None: ...
    @typing.overload
    def add_push_notification_received(self, handler: winsdk.windows.foundation.TypedEventHandler[PushNotificationChannel, PushNotificationReceivedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    def remove_push_notification_received(self, token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class PushNotificationChannelManager(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> PushNotificationChannelManager: ...
    @typing.overload
    @staticmethod
    def create_push_notification_channel_for_application_async() -> winsdk.windows.foundation.IAsyncOperation[PushNotificationChannel]: ...
    @typing.overload
    @staticmethod
    def create_push_notification_channel_for_application_async(application_id: str) -> winsdk.windows.foundation.IAsyncOperation[PushNotificationChannel]: ...
    @typing.overload
    @staticmethod
    def create_push_notification_channel_for_secondary_tile_async(tile_id: str) -> winsdk.windows.foundation.IAsyncOperation[PushNotificationChannel]: ...
    @typing.overload
    @staticmethod
    def get_default() -> PushNotificationChannelManagerForUser: ...
    @typing.overload
    @staticmethod
    def get_for_user(user: winsdk.windows.system.User) -> PushNotificationChannelManagerForUser: ...
    @typing.overload
    @staticmethod
    def add_channels_revoked(handler: winsdk.windows.foundation.EventHandler[PushNotificationChannelsRevokedEventArgs]) -> winsdk.windows.foundation.EventRegistrationToken: ...
    @typing.overload
    @staticmethod
    def remove_channels_revoked(token: winsdk.windows.foundation.EventRegistrationToken) -> None: ...

class PushNotificationChannelManagerForUser(_winrt.Object):
    user: winsdk.windows.system.User
    @staticmethod
    def _from(obj: _winrt.Object) -> PushNotificationChannelManagerForUser: ...
    @typing.overload
    def create_push_notification_channel_for_application_async(self) -> winsdk.windows.foundation.IAsyncOperation[PushNotificationChannel]: ...
    @typing.overload
    def create_push_notification_channel_for_application_async(self, application_id: str) -> winsdk.windows.foundation.IAsyncOperation[PushNotificationChannel]: ...
    @typing.overload
    def create_push_notification_channel_for_secondary_tile_async(self, tile_id: str) -> winsdk.windows.foundation.IAsyncOperation[PushNotificationChannel]: ...
    @typing.overload
    def create_raw_push_notification_channel_with_alternate_key_for_application_async(self, app_server_key: winsdk.windows.storage.streams.IBuffer, channel_id: str) -> winsdk.windows.foundation.IAsyncOperation[PushNotificationChannel]: ...
    @typing.overload
    def create_raw_push_notification_channel_with_alternate_key_for_application_async(self, app_server_key: winsdk.windows.storage.streams.IBuffer, channel_id: str, app_id: str) -> winsdk.windows.foundation.IAsyncOperation[PushNotificationChannel]: ...

class PushNotificationChannelsRevokedEventArgs(_winrt.Object):
    @staticmethod
    def _from(obj: _winrt.Object) -> PushNotificationChannelsRevokedEventArgs: ...

class PushNotificationReceivedEventArgs(_winrt.Object):
    cancel: _winrt.Boolean
    badge_notification: winsdk.windows.ui.notifications.BadgeNotification
    notification_type: PushNotificationType
    raw_notification: RawNotification
    tile_notification: winsdk.windows.ui.notifications.TileNotification
    toast_notification: winsdk.windows.ui.notifications.ToastNotification
    @staticmethod
    def _from(obj: _winrt.Object) -> PushNotificationReceivedEventArgs: ...

class RawNotification(_winrt.Object):
    content: str
    channel_id: str
    headers: winsdk.windows.foundation.collections.IMapView[str, str]
    content_bytes: winsdk.windows.storage.streams.IBuffer
    @staticmethod
    def _from(obj: _winrt.Object) -> RawNotification: ...

