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

import enum
import datetime
import sys
import types
import typing

import winsdk.system
import winsdk.windows.applicationmodel.appointments
import winsdk.windows.applicationmodel.email
import winsdk.windows.foundation
import winsdk.windows.foundation.collections
import winsdk.windows.storage.streams

class AccessoryNotificationType(enum.IntFlag):
    NONE = 0
    PHONE = 0x1
    EMAIL = 0x2
    REMINDER = 0x4
    ALARM = 0x8
    TOAST = 0x10
    APP_UNINSTALLED = 0x20
    DND = 0x40
    DRIVING_MODE = 0x80
    BATTERY_SAVER = 0x100
    MEDIA = 0x200
    CORTANA_TILE = 0x400
    TOAST_CLEARED = 0x800
    CALENDAR_CHANGED = 0x1000
    VOLUME_CHANGED = 0x2000
    EMAIL_READ_STATUS_CHANGED = 0x4000

class CalendarChangedEvent(enum.IntEnum):
    LOST_EVENTS = 0
    APPOINTMENT_ADDED = 1
    APPOINTMENT_CHANGED = 2
    APPOINTMENT_DELETED = 3
    CALENDAR_ADDED = 4
    CALENDAR_CHANGED = 5
    CALENDAR_DELETED = 6

class PhoneCallAudioEndpoint(enum.IntEnum):
    DEFAULT = 0
    SPEAKER = 1
    HANDSFREE = 2

class PhoneCallDirection(enum.IntEnum):
    INCOMING = 0
    OUTGOING = 1

class PhoneCallState(enum.IntEnum):
    UNKNOWN = 0
    RINGING = 1
    TALKING = 2
    HELD = 3
    ENDED = 4

class PhoneCallTransport(enum.IntEnum):
    CELLULAR = 0
    VOIP = 1

class PhoneLineRegistrationState(enum.IntEnum):
    DISCONNECTED = 0
    HOME = 1
    ROAMING = 2

class PhoneMediaType(enum.IntEnum):
    AUDIO_ONLY = 0
    AUDIO_VIDEO = 1

class PhoneNotificationType(enum.IntEnum):
    NEW_CALL = 0
    CALL_CHANGED = 1
    LINE_CHANGED = 2
    PHONE_CALL_AUDIO_ENDPOINT_CHANGED = 3
    PHONE_MUTE_CHANGED = 4

class PlaybackCapability(enum.IntFlag):
    NONE = 0
    PLAY = 0x1
    PAUSE = 0x2
    STOP = 0x4
    RECORD = 0x8
    FAST_FORWARD = 0x10
    REWIND = 0x20
    NEXT = 0x40
    PREVIOUS = 0x80
    CHANNEL_UP = 0x100
    CHANNEL_DOWN = 0x200

class PlaybackCommand(enum.IntEnum):
    PLAY = 0
    PAUSE = 1
    STOP = 2
    RECORD = 3
    FAST_FORWARD = 4
    REWIND = 5
    NEXT = 6
    PREVIOUS = 7
    CHANNEL_UP = 8
    CHANNEL_DOWN = 9

class PlaybackStatus(enum.IntEnum):
    NONE = 0
    TRACK_CHANGED = 1
    STOPPED = 2
    PLAYING = 3
    PAUSED = 4

class ReminderState(enum.IntEnum):
    ACTIVE = 0
    SNOOZED = 1
    DISMISSED = 2

class VibrateState(enum.IntEnum):
    RINGER_OFF_VIBRATE_OFF = 0
    RINGER_OFF_VIBRATE_ON = 1
    RINGER_ON_VIBRATE_OFF = 2
    RINGER_ON_VIBRATE_ON = 3

Self = typing.TypeVar('Self')

class AccessoryManager(winsdk.system.Object):
    phone_mute: typing.ClassVar[winsdk.system.Boolean]
    phone_call_audio_endpoint: typing.ClassVar[PhoneCallAudioEndpoint]
    battery_saver_state: typing.ClassVar[winsdk.system.Boolean]
    do_not_disturb_enabled: typing.ClassVar[winsdk.system.Boolean]
    driving_mode_enabled: typing.ClassVar[winsdk.system.Boolean]
    media_playback_capabilities: typing.ClassVar[PlaybackCapability]
    media_playback_status: typing.ClassVar[PlaybackStatus]
    phone_line_details: typing.ClassVar[typing.Optional[winsdk.windows.foundation.collections.IVectorView[PhoneLineDetails]]]
    is_phone_pin_locked: typing.ClassVar[winsdk.system.Boolean]
    speed_dial_list: typing.ClassVar[typing.Optional[winsdk.windows.foundation.collections.IVectorView[SpeedDialEntry]]]
    volume_info: typing.ClassVar[typing.Optional[VolumeInfo]]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> AccessoryManager: ...
    @typing.overload
    @staticmethod
    def accept_phone_call(phone_call_id: winsdk.system.UInt32) -> None: ...
    @typing.overload
    @staticmethod
    def accept_phone_call(phone_call_id: winsdk.system.UInt32, end_point: PhoneCallAudioEndpoint) -> None: ...
    @typing.overload
    @staticmethod
    def accept_phone_call_with_video(phone_call_id: winsdk.system.UInt32) -> None: ...
    @typing.overload
    @staticmethod
    def accept_phone_call_with_video(phone_call_id: winsdk.system.UInt32, end_point: PhoneCallAudioEndpoint) -> None: ...
    @staticmethod
    def clear_toast(instance_id: str) -> None: ...
    @staticmethod
    def decrease_volume(step: winsdk.system.Int32) -> None: ...
    @staticmethod
    def disable_all_accessory_notification_types() -> None: ...
    @staticmethod
    def disable_email_notification_email_account(email_account: str) -> None: ...
    @staticmethod
    def disable_notifications_for_application(app_id: str) -> None: ...
    @staticmethod
    def dismiss_alarm(alarm_id: winsdk.system.Guid) -> None: ...
    @staticmethod
    def dismiss_alarm_by_instance_id(instance_id: str) -> None: ...
    @staticmethod
    def dismiss_reminder(reminder_id: winsdk.system.Guid) -> None: ...
    @staticmethod
    def dismiss_reminder_by_instance_id(instance_id: str) -> None: ...
    @staticmethod
    def enable_accessory_notification_types(accessory_notification_types: winsdk.system.Int32) -> None: ...
    @staticmethod
    def enable_email_notification_email_account(email_account: str) -> None: ...
    @staticmethod
    def enable_email_notification_folder_filter(email_account: str, folders: winsdk.windows.foundation.collections.IVectorView[str]) -> None: ...
    @staticmethod
    def enable_notifications_for_application(app_id: str) -> None: ...
    @staticmethod
    def end_phone_call(phone_call_id: winsdk.system.UInt32) -> None: ...
    @staticmethod
    def get_all_email_accounts() -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[EmailAccountInfo]]: ...
    @staticmethod
    def get_app_icon(app_id: str) -> typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]: ...
    @staticmethod
    def get_apps() -> typing.Optional[winsdk.windows.foundation.collections.IMapView[str, AppNotificationInfo]]: ...
    @staticmethod
    def get_enabled_accessory_notification_types() -> winsdk.system.Int32: ...
    @staticmethod
    def get_folders(email_account: str) -> typing.Optional[winsdk.windows.foundation.collections.IVectorView[EmailFolderInfo]]: ...
    @staticmethod
    def get_media_metadata() -> typing.Optional[MediaMetadata]: ...
    @staticmethod
    def get_next_trigger_details() -> typing.Optional[IAccessoryNotificationTriggerDetails]: ...
    @staticmethod
    def get_phone_line_details(phone_line: winsdk.system.Guid) -> typing.Optional[PhoneLineDetails]: ...
    @staticmethod
    def get_user_consent() -> winsdk.system.Boolean: ...
    @staticmethod
    def hold_phone_call(phone_call_id: winsdk.system.UInt32, hold_call: winsdk.system.Boolean) -> None: ...
    @staticmethod
    def increase_volume(step: winsdk.system.Int32) -> None: ...
    @staticmethod
    def is_notification_enabled_for_application(app_id: str) -> winsdk.system.Boolean: ...
    @typing.overload
    @staticmethod
    def make_phone_call(phone_line: winsdk.system.Guid, phone_number: str) -> None: ...
    @typing.overload
    @staticmethod
    def make_phone_call(phone_line: winsdk.system.Guid, phone_number: str, end_point: PhoneCallAudioEndpoint) -> None: ...
    @typing.overload
    @staticmethod
    def make_phone_call_with_video(phone_line: winsdk.system.Guid, phone_number: str) -> None: ...
    @typing.overload
    @staticmethod
    def make_phone_call_with_video(phone_line: winsdk.system.Guid, phone_number: str, end_point: PhoneCallAudioEndpoint) -> None: ...
    @staticmethod
    def perform_media_playback_command(command: PlaybackCommand) -> None: ...
    @staticmethod
    def process_trigger_details(p_details: typing.Optional[IAccessoryNotificationTriggerDetails]) -> None: ...
    @staticmethod
    def register_accessory_app() -> str: ...
    @typing.overload
    @staticmethod
    def reject_phone_call(phone_call_id: winsdk.system.UInt32) -> None: ...
    @typing.overload
    @staticmethod
    def reject_phone_call(phone_call_id: winsdk.system.UInt32, text_response_i_d: winsdk.system.UInt32) -> None: ...
    @staticmethod
    def ring_device() -> None: ...
    @staticmethod
    def set_mute(mute: winsdk.system.Boolean) -> None: ...
    @staticmethod
    def set_ringer_vibrate(ringer: winsdk.system.Boolean, vibrate: winsdk.system.Boolean) -> None: ...
    @typing.overload
    @staticmethod
    def snooze_alarm(alarm_id: winsdk.system.Guid) -> None: ...
    @typing.overload
    @staticmethod
    def snooze_alarm(alarm_id: winsdk.system.Guid, time_span: datetime.timedelta) -> None: ...
    @staticmethod
    def snooze_alarm_by_instance_id(instance_id: str) -> None: ...
    @typing.overload
    @staticmethod
    def snooze_reminder(reminder_id: winsdk.system.Guid) -> None: ...
    @typing.overload
    @staticmethod
    def snooze_reminder(reminder_id: winsdk.system.Guid, time_span: datetime.timedelta) -> None: ...
    @staticmethod
    def snooze_reminder_by_instance_id(instance_id: str) -> None: ...
    @staticmethod
    def swap_phone_calls(phone_call_id_to_hold: winsdk.system.UInt32, phone_call_id_on_hold: winsdk.system.UInt32) -> None: ...
    @staticmethod
    def update_email_read_status(message_entry_id: typing.Optional[BinaryId], is_read: winsdk.system.Boolean) -> None: ...

class AlarmNotificationTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    alarm_id: winsdk.system.Guid
    reminder_state: ReminderState
    timestamp: datetime.datetime
    title: str
    instance_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> AlarmNotificationTriggerDetails: ...

class AppNotificationInfo(winsdk.system.Object):
    id: str
    name: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> AppNotificationInfo: ...

class BinaryId(winsdk.system.Object):
    id: winsdk.system.UInt8
    length: winsdk.system.UInt32
    @staticmethod
    def _from(obj: winsdk.system.Object) -> BinaryId: ...

class CalendarChangedNotificationTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    event_type: CalendarChangedEvent
    item_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> CalendarChangedNotificationTriggerDetails: ...

class CortanaTileNotificationTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    content: str
    emphasized_text: str
    large_content1: str
    large_content2: str
    non_wrapped_small_content1: str
    non_wrapped_small_content2: str
    non_wrapped_small_content3: str
    non_wrapped_small_content4: str
    source: str
    tile_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> CortanaTileNotificationTriggerDetails: ...

class EmailAccountInfo(winsdk.system.Object):
    display_name: str
    is_notification_enabled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> EmailAccountInfo: ...

class EmailFolderInfo(winsdk.system.Object):
    display_name: str
    is_notification_enabled: winsdk.system.Boolean
    @staticmethod
    def _from(obj: winsdk.system.Object) -> EmailFolderInfo: ...

class EmailNotificationTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    account_name: str
    email_message: typing.Optional[winsdk.windows.applicationmodel.email.EmailMessage]
    parent_folder_name: str
    sender_address: str
    sender_name: str
    timestamp: datetime.datetime
    message_entry_id: typing.Optional[BinaryId]
    @staticmethod
    def _from(obj: winsdk.system.Object) -> EmailNotificationTriggerDetails: ...

class EmailReadNotificationTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    account_name: str
    is_read: winsdk.system.Boolean
    message_entry_id: typing.Optional[BinaryId]
    parent_folder_name: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> EmailReadNotificationTriggerDetails: ...

class MediaControlsTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    media_metadata: typing.Optional[MediaMetadata]
    playback_status: PlaybackStatus
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaControlsTriggerDetails: ...

class MediaMetadata(winsdk.system.Object):
    album: str
    artist: str
    duration: datetime.timedelta
    subtitle: str
    thumbnail: typing.Optional[winsdk.windows.storage.streams.IRandomAccessStreamReference]
    title: str
    track: winsdk.system.UInt32
    @staticmethod
    def _from(obj: winsdk.system.Object) -> MediaMetadata: ...

class PhoneCallDetails(winsdk.system.Object):
    call_direction: PhoneCallDirection
    call_id: winsdk.system.UInt32
    call_media_type: PhoneMediaType
    call_transport: PhoneCallTransport
    conference_call_id: winsdk.system.UInt32
    contact_name: str
    end_time: datetime.datetime
    phone_line: winsdk.system.Guid
    phone_number: str
    preset_text_responses: typing.Optional[winsdk.windows.foundation.collections.IVectorView[TextResponse]]
    start_time: datetime.datetime
    state: PhoneCallState
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PhoneCallDetails: ...

class PhoneLineDetails(winsdk.system.Object):
    default_outgoing_line: winsdk.system.Boolean
    display_name: str
    line_id: winsdk.system.Guid
    line_number: str
    registration_state: PhoneLineRegistrationState
    voicemail_count: winsdk.system.UInt32
    missed_call_count: winsdk.system.UInt32
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PhoneLineDetails: ...

class PhoneNotificationTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    call_details: typing.Optional[PhoneCallDetails]
    phone_line_changed_id: winsdk.system.Guid
    phone_notification_type: PhoneNotificationType
    @staticmethod
    def _from(obj: winsdk.system.Object) -> PhoneNotificationTriggerDetails: ...

class ReminderNotificationTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    appointment: typing.Optional[winsdk.windows.applicationmodel.appointments.Appointment]
    description: str
    details: str
    reminder_id: winsdk.system.Guid
    reminder_state: ReminderState
    timestamp: datetime.datetime
    title: str
    instance_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ReminderNotificationTriggerDetails: ...

class SpeedDialEntry(winsdk.system.Object):
    contact_name: str
    number_type: str
    phone_number: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> SpeedDialEntry: ...

class TextResponse(winsdk.system.Object):
    content: str
    id: winsdk.system.UInt32
    @staticmethod
    def _from(obj: winsdk.system.Object) -> TextResponse: ...

class ToastNotificationTriggerDetails(winsdk.system.Object):
    started_processing: winsdk.system.Boolean
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    time_created: datetime.datetime
    suppress_popup: winsdk.system.Boolean
    text1: str
    text2: str
    text3: str
    text4: str
    instance_id: str
    @staticmethod
    def _from(obj: winsdk.system.Object) -> ToastNotificationTriggerDetails: ...

class VolumeInfo(winsdk.system.Object):
    call_volume: winsdk.system.UInt32
    is_muted: winsdk.system.Boolean
    is_vibrate_enabled: VibrateState
    media_volume: winsdk.system.UInt32
    system_volume: winsdk.system.UInt32
    @staticmethod
    def _from(obj: winsdk.system.Object) -> VolumeInfo: ...

class IAccessoryNotificationTriggerDetails(winsdk.system.Object):
    accessory_notification_type: AccessoryNotificationType
    app_display_name: str
    app_id: str
    started_processing: winsdk.system.Boolean
    time_created: datetime.datetime
    @staticmethod
    def _from(obj: winsdk.system.Object) -> IAccessoryNotificationTriggerDetails: ...

