# WARNING: Please don't edit this file. It was generated by Python/WinRT v2.3.0

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.microsoft.ui as microsoft_ui
import winrt.microsoft.ui.dispatching as microsoft_ui_dispatching
import winrt.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.graphics as windows_graphics
import winrt.windows.ui as windows_ui

from winrt.microsoft.ui.windowing import AppWindowPresenterKind, CompactOverlaySize, DisplayAreaFallback, DisplayAreaWatcherStatus, IconShowOptions, OverlappedPresenterState, TitleBarHeightOption

Self = typing.TypeVar('Self')

@typing.final
class AppWindow_Static(type):
    @typing.overload
    def create(cls) -> typing.Optional[AppWindow]: ...
    @typing.overload
    def create(cls, app_window_presenter: typing.Optional[AppWindowPresenter], /) -> typing.Optional[AppWindow]: ...
    @typing.overload
    def create(cls, app_window_presenter: typing.Optional[AppWindowPresenter], owner_window_id: microsoft_ui.WindowId, /) -> typing.Optional[AppWindow]: ...
    @typing.overload
    def create(cls, app_window_presenter: typing.Optional[AppWindowPresenter], owner_window_id: microsoft_ui.WindowId, dispatcher_queue: typing.Optional[microsoft_ui_dispatching.DispatcherQueue], /) -> typing.Optional[AppWindow]: ...
    def get_from_window_id(cls, window_id: microsoft_ui.WindowId, /) -> typing.Optional[AppWindow]: ...

@typing.final
class AppWindow(winrt.system.Object, metaclass=AppWindow_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AppWindow: ...
    def associate_with_dispatcher_queue(self, dispatcher_queue: typing.Optional[microsoft_ui_dispatching.DispatcherQueue], /) -> None: ...
    def destroy(self) -> None: ...
    def hide(self) -> None: ...
    def move(self, position: windows_graphics.PointInt32, /) -> None: ...
    @typing.overload
    def move_and_resize(self, rect: windows_graphics.RectInt32, /) -> None: ...
    @typing.overload
    def move_and_resize(self, rect: windows_graphics.RectInt32, displayarea: typing.Optional[DisplayArea], /) -> None: ...
    def move_in_z_order_at_bottom(self) -> None: ...
    def move_in_z_order_at_top(self) -> None: ...
    def move_in_z_order_below(self, window_id: microsoft_ui.WindowId, /) -> None: ...
    def resize(self, size: windows_graphics.SizeInt32, /) -> None: ...
    def resize_client(self, size: windows_graphics.SizeInt32, /) -> None: ...
    def set_icon(self, icon_path: str, /) -> None: ...
    def set_presenter(self, app_window_presenter: typing.Optional[AppWindowPresenter], /) -> None: ...
    @typing.overload
    def show(self) -> None: ...
    @typing.overload
    def show(self, activate_window: bool, /) -> None: ...
    def show_once_with_requested_startup_state(self) -> None: ...
    def add_changed(self, handler: windows_foundation.TypedEventHandler[AppWindow, AppWindowChangedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_changed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_closing(self, handler: windows_foundation.TypedEventHandler[AppWindow, AppWindowClosingEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_closing(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_destroying(self, handler: windows_foundation.TypedEventHandler[AppWindow, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_destroying(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def title(self) -> str: ...
    @title.setter
    def title(self, value: str) -> None: ...
    @_property
    def is_shown_in_switchers(self) -> bool: ...
    @is_shown_in_switchers.setter
    def is_shown_in_switchers(self, value: bool) -> None: ...
    @_property
    def id(self) -> microsoft_ui.WindowId: ...
    @_property
    def is_visible(self) -> bool: ...
    @_property
    def owner_window_id(self) -> microsoft_ui.WindowId: ...
    @_property
    def position(self) -> windows_graphics.PointInt32: ...
    @_property
    def presenter(self) -> typing.Optional[AppWindowPresenter]: ...
    @_property
    def size(self) -> windows_graphics.SizeInt32: ...
    @_property
    def title_bar(self) -> typing.Optional[AppWindowTitleBar]: ...
    @_property
    def client_size(self) -> windows_graphics.SizeInt32: ...
    @_property
    def dispatcher_queue(self) -> typing.Optional[microsoft_ui_dispatching.DispatcherQueue]: ...

@typing.final
class AppWindowChangedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AppWindowChangedEventArgs: ...
    @_property
    def did_position_change(self) -> bool: ...
    @_property
    def did_presenter_change(self) -> bool: ...
    @_property
    def did_size_change(self) -> bool: ...
    @_property
    def did_visibility_change(self) -> bool: ...
    @_property
    def did_z_order_change(self) -> bool: ...
    @_property
    def is_z_order_at_bottom(self) -> bool: ...
    @_property
    def is_z_order_at_top(self) -> bool: ...
    @_property
    def z_order_below_window_id(self) -> microsoft_ui.WindowId: ...

@typing.final
class AppWindowClosingEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AppWindowClosingEventArgs: ...
    @_property
    def cancel(self) -> bool: ...
    @cancel.setter
    def cancel(self, value: bool) -> None: ...

@typing.final
class AppWindowPresenter(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AppWindowPresenter: ...
    @_property
    def kind(self) -> AppWindowPresenterKind: ...

@typing.final
class AppWindowTitleBar_Static(type):
    def is_customization_supported(cls) -> bool: ...

@typing.final
class AppWindowTitleBar(winrt.system.Object, metaclass=AppWindowTitleBar_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AppWindowTitleBar: ...
    def reset_to_default(self) -> None: ...
    def set_drag_rectangles(self, value: typing.Union[winrt.system.Array[windows_graphics.RectInt32], winrt.system.ReadableBuffer], /) -> None: ...
    @_property
    def inactive_foreground_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @inactive_foreground_color.setter
    def inactive_foreground_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def inactive_background_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @inactive_background_color.setter
    def inactive_background_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def icon_show_options(self) -> IconShowOptions: ...
    @icon_show_options.setter
    def icon_show_options(self, value: IconShowOptions) -> None: ...
    @_property
    def foreground_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @foreground_color.setter
    def foreground_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def extends_content_into_title_bar(self) -> bool: ...
    @extends_content_into_title_bar.setter
    def extends_content_into_title_bar(self, value: bool) -> None: ...
    @_property
    def button_pressed_foreground_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @button_pressed_foreground_color.setter
    def button_pressed_foreground_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def button_pressed_background_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @button_pressed_background_color.setter
    def button_pressed_background_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def button_inactive_foreground_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @button_inactive_foreground_color.setter
    def button_inactive_foreground_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def button_inactive_background_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @button_inactive_background_color.setter
    def button_inactive_background_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def button_hover_foreground_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @button_hover_foreground_color.setter
    def button_hover_foreground_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def button_hover_background_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @button_hover_background_color.setter
    def button_hover_background_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def button_foreground_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @button_foreground_color.setter
    def button_foreground_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def button_background_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @button_background_color.setter
    def button_background_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def background_color(self) -> typing.Optional[typing.Optional[windows_ui.Color]]: ...
    @background_color.setter
    def background_color(self, value: typing.Optional[typing.Optional[windows_ui.Color]]) -> None: ...
    @_property
    def height(self) -> winrt.system.Int32: ...
    @_property
    def left_inset(self) -> winrt.system.Int32: ...
    @_property
    def right_inset(self) -> winrt.system.Int32: ...
    @_property
    def preferred_height_option(self) -> TitleBarHeightOption: ...
    @preferred_height_option.setter
    def preferred_height_option(self, value: TitleBarHeightOption) -> None: ...

@typing.final
class CompactOverlayPresenter_Static(type):
    def create(cls) -> typing.Optional[CompactOverlayPresenter]: ...

@typing.final
class CompactOverlayPresenter(winrt.system.Object, metaclass=CompactOverlayPresenter_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CompactOverlayPresenter: ...
    @_property
    def initial_size(self) -> CompactOverlaySize: ...
    @initial_size.setter
    def initial_size(self, value: CompactOverlaySize) -> None: ...
    @_property
    def kind(self) -> AppWindowPresenterKind: ...

@typing.final
class DisplayArea_Static(type):
    def create_watcher(cls) -> typing.Optional[DisplayAreaWatcher]: ...
    def find_all(cls) -> typing.Optional[windows_foundation_collections.IVectorView[DisplayArea]]: ...
    def get_from_display_id(cls, display_id: microsoft_ui.DisplayId, /) -> typing.Optional[DisplayArea]: ...
    def get_from_point(cls, point: windows_graphics.PointInt32, display_area_fallback: DisplayAreaFallback, /) -> typing.Optional[DisplayArea]: ...
    def get_from_rect(cls, rect: windows_graphics.RectInt32, display_area_fallback: DisplayAreaFallback, /) -> typing.Optional[DisplayArea]: ...
    def get_from_window_id(cls, window_id: microsoft_ui.WindowId, display_area_fallback: DisplayAreaFallback, /) -> typing.Optional[DisplayArea]: ...
    @_property
    def primary(cls) -> typing.Optional[DisplayArea]: ...

@typing.final
class DisplayArea(winrt.system.Object, metaclass=DisplayArea_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DisplayArea: ...
    @_property
    def display_id(self) -> microsoft_ui.DisplayId: ...
    @_property
    def is_primary(self) -> bool: ...
    @_property
    def outer_bounds(self) -> windows_graphics.RectInt32: ...
    @_property
    def work_area(self) -> windows_graphics.RectInt32: ...

@typing.final
class DisplayAreaWatcher(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DisplayAreaWatcher: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_added(self, handler: windows_foundation.TypedEventHandler[DisplayAreaWatcher, DisplayArea], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_added(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_enumeration_completed(self, handler: windows_foundation.TypedEventHandler[DisplayAreaWatcher, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_enumeration_completed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_removed(self, handler: windows_foundation.TypedEventHandler[DisplayAreaWatcher, DisplayArea], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_removed(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_stopped(self, handler: windows_foundation.TypedEventHandler[DisplayAreaWatcher, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_stopped(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    def add_updated(self, handler: windows_foundation.TypedEventHandler[DisplayAreaWatcher, DisplayArea], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_updated(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def status(self) -> DisplayAreaWatcherStatus: ...

@typing.final
class FullScreenPresenter_Static(type):
    def create(cls) -> typing.Optional[FullScreenPresenter]: ...

@typing.final
class FullScreenPresenter(winrt.system.Object, metaclass=FullScreenPresenter_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> FullScreenPresenter: ...
    @_property
    def kind(self) -> AppWindowPresenterKind: ...

@typing.final
class OverlappedPresenter_Static(type):
    def create(cls) -> typing.Optional[OverlappedPresenter]: ...
    def create_for_context_menu(cls) -> typing.Optional[OverlappedPresenter]: ...
    def create_for_dialog(cls) -> typing.Optional[OverlappedPresenter]: ...
    def create_for_tool_window(cls) -> typing.Optional[OverlappedPresenter]: ...
    @_property
    def requested_startup_state(cls) -> OverlappedPresenterState: ...

@typing.final
class OverlappedPresenter(winrt.system.Object, metaclass=OverlappedPresenter_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> OverlappedPresenter: ...
    def maximize(self) -> None: ...
    @typing.overload
    def minimize(self) -> None: ...
    @typing.overload
    def minimize(self, activate_window: bool, /) -> None: ...
    @typing.overload
    def restore(self) -> None: ...
    @typing.overload
    def restore(self, activate_window: bool, /) -> None: ...
    def set_border_and_title_bar(self, has_border: bool, has_title_bar: bool, /) -> None: ...
    @_property
    def is_resizable(self) -> bool: ...
    @is_resizable.setter
    def is_resizable(self, value: bool) -> None: ...
    @_property
    def is_modal(self) -> bool: ...
    @is_modal.setter
    def is_modal(self, value: bool) -> None: ...
    @_property
    def is_minimizable(self) -> bool: ...
    @is_minimizable.setter
    def is_minimizable(self, value: bool) -> None: ...
    @_property
    def is_maximizable(self) -> bool: ...
    @is_maximizable.setter
    def is_maximizable(self, value: bool) -> None: ...
    @_property
    def is_always_on_top(self) -> bool: ...
    @is_always_on_top.setter
    def is_always_on_top(self, value: bool) -> None: ...
    @_property
    def has_border(self) -> bool: ...
    @_property
    def has_title_bar(self) -> bool: ...
    @_property
    def state(self) -> OverlappedPresenterState: ...
    @_property
    def kind(self) -> AppWindowPresenterKind: ...

