# 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.content as microsoft_ui_content
import winrt.microsoft.ui.input as microsoft_ui_input
import winrt.windows.applicationmodel.datatransfer as windows_applicationmodel_datatransfer
import winrt.windows.foundation as windows_foundation
import winrt.windows.graphics.imaging as windows_graphics_imaging

from winrt.microsoft.ui.input.dragdrop import DragDropModifiers, DragUIContentMode

Self = typing.TypeVar('Self')

@typing.final
class DragDropManager_Static(type):
    def get_for_island(cls, content: typing.Optional[microsoft_ui_content.ContentIsland], /) -> typing.Optional[DragDropManager]: ...

@typing.final
class DragDropManager(winrt.system.Object, metaclass=DragDropManager_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DragDropManager: ...
    def close(self) -> None: ...
    def add_target_requested(self, handler: windows_foundation.TypedEventHandler[DragDropManager, DropOperationTargetRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    def remove_target_requested(self, token: windows_foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def are_concurrent_operations_enabled(self) -> bool: ...
    @are_concurrent_operations_enabled.setter
    def are_concurrent_operations_enabled(self, value: bool) -> None: ...

@typing.final
class DragInfo(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DragInfo: ...
    @_property
    def allowed_operations(self) -> windows_applicationmodel_datatransfer.DataPackageOperation: ...
    @_property
    def data(self) -> typing.Optional[windows_applicationmodel_datatransfer.DataPackageView]: ...
    @_property
    def modifiers(self) -> DragDropModifiers: ...
    @_property
    def position(self) -> windows_foundation.Point: ...

@typing.final
class DragOperation(winrt.system.Object):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, *args) -> None: ...
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DragOperation: ...
    def __new__(cls: typing.Type[DragOperation]) -> DragOperation: ...
    def close(self) -> None: ...
    @typing.overload
    def set_drag_u_i_content_from_software_bitmap(self, bitmap: typing.Optional[windows_graphics_imaging.SoftwareBitmap], /) -> None: ...
    @typing.overload
    def set_drag_u_i_content_from_software_bitmap(self, bitmap: typing.Optional[windows_graphics_imaging.SoftwareBitmap], anchor_point: windows_foundation.Point, /) -> None: ...
    def start_async(self, initial_target: typing.Optional[DragDropManager], initial_pointer_point: typing.Optional[microsoft_ui_input.PointerPoint], /) -> windows_foundation.IAsyncOperation[windows_applicationmodel_datatransfer.DataPackageOperation]: ...
    @_property
    def drag_u_i_content_mode(self) -> DragUIContentMode: ...
    @drag_u_i_content_mode.setter
    def drag_u_i_content_mode(self, value: DragUIContentMode) -> None: ...
    @_property
    def allowed_operations(self) -> windows_applicationmodel_datatransfer.DataPackageOperation: ...
    @allowed_operations.setter
    def allowed_operations(self, value: windows_applicationmodel_datatransfer.DataPackageOperation) -> None: ...
    @_property
    def data(self) -> typing.Optional[windows_applicationmodel_datatransfer.DataPackage]: ...

@typing.final
class DragUIOverride(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DragUIOverride: ...
    def clear(self) -> None: ...
    @typing.overload
    def set_content_from_software_bitmap(self, bitmap: typing.Optional[windows_graphics_imaging.SoftwareBitmap], /) -> None: ...
    @typing.overload
    def set_content_from_software_bitmap(self, bitmap: typing.Optional[windows_graphics_imaging.SoftwareBitmap], anchor_point: windows_foundation.Point, /) -> None: ...
    @_property
    def is_glyph_visible(self) -> bool: ...
    @is_glyph_visible.setter
    def is_glyph_visible(self, value: bool) -> None: ...
    @_property
    def is_content_visible(self) -> bool: ...
    @is_content_visible.setter
    def is_content_visible(self, value: bool) -> None: ...
    @_property
    def is_caption_visible(self) -> bool: ...
    @is_caption_visible.setter
    def is_caption_visible(self, value: bool) -> None: ...
    @_property
    def caption(self) -> str: ...
    @caption.setter
    def caption(self, value: str) -> None: ...

@typing.final
class DropOperationTargetRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> DropOperationTargetRequestedEventArgs: ...
    def set_target(self, target: typing.Optional[IDropOperationTarget], /) -> None: ...

@typing.final
class IDropOperationTarget(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> IDropOperationTarget: ...
    def drop_async(self, drag_info: typing.Optional[DragInfo], /) -> windows_foundation.IAsyncOperation[windows_applicationmodel_datatransfer.DataPackageOperation]: ...
    def enter_async(self, drag_info: typing.Optional[DragInfo], drag_u_i_override: typing.Optional[DragUIOverride], /) -> windows_foundation.IAsyncOperation[windows_applicationmodel_datatransfer.DataPackageOperation]: ...
    def leave_async(self, drag_info: typing.Optional[DragInfo], /) -> windows_foundation.IAsyncAction: ...
    def over_async(self, drag_info: typing.Optional[DragInfo], drag_u_i_override: typing.Optional[DragUIOverride], /) -> windows_foundation.IAsyncOperation[windows_applicationmodel_datatransfer.DataPackageOperation]: ...

