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

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

import winrt._winrt
import winrt.system
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
import winui3.microsoft.ui.content as microsoft_ui_content
import winui3.microsoft.ui.input as microsoft_ui_input

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

Self = typing.TypeVar('Self')

@typing.final
class DragDropManager_Static(winrt._winrt.IInspectable_Static):
    # Microsoft.UI.Input.DragDrop.DragDropManager Microsoft.UI.Input.DragDrop.DragDropManager::GetForIsland(Microsoft.UI.Content.ContentIsland)
    def get_for_island(cls, content: microsoft_ui_content.ContentIsland, /) -> DragDropManager: ...

@typing.final
class DragDropManager(winrt.system.Object, windows_foundation.IClosable, metaclass=DragDropManager_Static):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragDropManager::Close()
    def close(self) -> None: ...
    # Windows.Foundation.EventRegistrationToken Microsoft.UI.Input.DragDrop.DragDropManager::add_TargetRequested(Windows.Foundation.TypedEventHandler`2<Microsoft.UI.Input.DragDrop.DragDropManager,Microsoft.UI.Input.DragDrop.DropOperationTargetRequestedEventArgs>)
    def add_target_requested(self, handler: windows_foundation.TypedEventHandler[DragDropManager, DropOperationTargetRequestedEventArgs], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragDropManager::remove_TargetRequested(Windows.Foundation.EventRegistrationToken)
    def remove_target_requested(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.Boolean Microsoft.UI.Input.DragDrop.DragDropManager::get_AreConcurrentOperationsEnabled()
    @_property
    def are_concurrent_operations_enabled(self) -> bool: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragDropManager::put_AreConcurrentOperationsEnabled(System.Boolean)
    @are_concurrent_operations_enabled.setter
    def are_concurrent_operations_enabled(self, value: bool) -> None: ...

@typing.final
class DragInfo(winrt.system.Object):
    # Windows.ApplicationModel.DataTransfer.DataPackageOperation Microsoft.UI.Input.DragDrop.DragInfo::get_AllowedOperations()
    @_property
    def allowed_operations(self) -> windows_applicationmodel_datatransfer.DataPackageOperation: ...
    # Windows.ApplicationModel.DataTransfer.DataPackageView Microsoft.UI.Input.DragDrop.DragInfo::get_Data()
    @_property
    def data(self) -> windows_applicationmodel_datatransfer.DataPackageView: ...
    # Microsoft.UI.Input.DragDrop.DragDropModifiers Microsoft.UI.Input.DragDrop.DragInfo::get_Modifiers()
    @_property
    def modifiers(self) -> DragDropModifiers: ...
    # Windows.Foundation.Point Microsoft.UI.Input.DragDrop.DragInfo::get_Position()
    @_property
    def position(self) -> windows_foundation.Point: ...

@typing.final
class DragOperation(winrt.system.Object, windows_foundation.IClosable):
    def __enter__(self: Self) -> Self: ...
    def __exit__(self, exc_type: typing.Optional[typing.Type[BaseException]], exc_value: typing.Optional[BaseException], traceback: typing.Optional[types.TracebackType]) -> None: ...
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragOperation::Close()
    def close(self) -> None: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragOperation::SetDragUIContentFromSoftwareBitmap(Windows.Graphics.Imaging.SoftwareBitmap)
    def set_drag_ui_content_from_software_bitmap(self, bitmap: windows_graphics_imaging.SoftwareBitmap, /) -> None: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragOperation::SetDragUIContentFromSoftwareBitmap(Windows.Graphics.Imaging.SoftwareBitmap,Windows.Foundation.Point)
    def set_drag_ui_content_from_software_bitmap2(self, bitmap: windows_graphics_imaging.SoftwareBitmap, anchor_point: typing.Union[windows_foundation.Point, typing.Tuple[winrt.system.Single, winrt.system.Single]], /) -> None: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.ApplicationModel.DataTransfer.DataPackageOperation> Microsoft.UI.Input.DragDrop.DragOperation::StartAsync(Microsoft.UI.Input.DragDrop.DragDropManager,Microsoft.UI.Input.PointerPoint)
    def start_async(self, initial_target: DragDropManager, initial_pointer_point: microsoft_ui_input.PointerPoint, /) -> windows_foundation.IAsyncOperation[windows_applicationmodel_datatransfer.DataPackageOperation]: ...
    # Microsoft.UI.Input.DragDrop.DragUIContentMode Microsoft.UI.Input.DragDrop.DragOperation::get_DragUIContentMode()
    @_property
    def drag_ui_content_mode(self) -> DragUIContentMode: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragOperation::put_DragUIContentMode(Microsoft.UI.Input.DragDrop.DragUIContentMode)
    @drag_ui_content_mode.setter
    def drag_ui_content_mode(self, value: DragUIContentMode) -> None: ...
    # Windows.ApplicationModel.DataTransfer.DataPackageOperation Microsoft.UI.Input.DragDrop.DragOperation::get_AllowedOperations()
    @_property
    def allowed_operations(self) -> windows_applicationmodel_datatransfer.DataPackageOperation: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragOperation::put_AllowedOperations(Windows.ApplicationModel.DataTransfer.DataPackageOperation)
    @allowed_operations.setter
    def allowed_operations(self, value: windows_applicationmodel_datatransfer.DataPackageOperation) -> None: ...
    # Windows.ApplicationModel.DataTransfer.DataPackage Microsoft.UI.Input.DragDrop.DragOperation::get_Data()
    @_property
    def data(self) -> windows_applicationmodel_datatransfer.DataPackage: ...

@typing.final
class DragUIOverride(winrt.system.Object):
    # System.Void Microsoft.UI.Input.DragDrop.DragUIOverride::Clear()
    def clear(self) -> None: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragUIOverride::SetContentFromSoftwareBitmap(Windows.Graphics.Imaging.SoftwareBitmap)
    def set_content_from_software_bitmap(self, bitmap: windows_graphics_imaging.SoftwareBitmap, /) -> None: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragUIOverride::SetContentFromSoftwareBitmap(Windows.Graphics.Imaging.SoftwareBitmap,Windows.Foundation.Point)
    def set_content_from_software_bitmap2(self, bitmap: windows_graphics_imaging.SoftwareBitmap, anchor_point: typing.Union[windows_foundation.Point, typing.Tuple[winrt.system.Single, winrt.system.Single]], /) -> None: ...
    # System.Boolean Microsoft.UI.Input.DragDrop.DragUIOverride::get_IsGlyphVisible()
    @_property
    def is_glyph_visible(self) -> bool: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragUIOverride::put_IsGlyphVisible(System.Boolean)
    @is_glyph_visible.setter
    def is_glyph_visible(self, value: bool) -> None: ...
    # System.Boolean Microsoft.UI.Input.DragDrop.DragUIOverride::get_IsContentVisible()
    @_property
    def is_content_visible(self) -> bool: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragUIOverride::put_IsContentVisible(System.Boolean)
    @is_content_visible.setter
    def is_content_visible(self, value: bool) -> None: ...
    # System.Boolean Microsoft.UI.Input.DragDrop.DragUIOverride::get_IsCaptionVisible()
    @_property
    def is_caption_visible(self) -> bool: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragUIOverride::put_IsCaptionVisible(System.Boolean)
    @is_caption_visible.setter
    def is_caption_visible(self, value: bool) -> None: ...
    # System.String Microsoft.UI.Input.DragDrop.DragUIOverride::get_Caption()
    @_property
    def caption(self) -> str: ...
    # System.Void Microsoft.UI.Input.DragDrop.DragUIOverride::put_Caption(System.String)
    @caption.setter
    def caption(self, value: str) -> None: ...

@typing.final
class DropOperationTargetRequestedEventArgs(winrt.system.Object):
    # System.Void Microsoft.UI.Input.DragDrop.DropOperationTargetRequestedEventArgs::SetTarget(Microsoft.UI.Input.DragDrop.IDropOperationTarget)
    def set_target(self, target: IDropOperationTarget, /) -> None: ...

@typing.final
class _IDropOperationTarget: ...

class IDropOperationTarget(winrt._winrt.IInspectable):
    # Windows.Foundation.IAsyncOperation`1<Windows.ApplicationModel.DataTransfer.DataPackageOperation> Microsoft.UI.Input.DragDrop.IDropOperationTarget::DropAsync(Microsoft.UI.Input.DragDrop.DragInfo)
    @abstractmethod
    def drop_async(self, drag_info: DragInfo, /) -> windows_foundation.IAsyncOperation[windows_applicationmodel_datatransfer.DataPackageOperation]: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.ApplicationModel.DataTransfer.DataPackageOperation> Microsoft.UI.Input.DragDrop.IDropOperationTarget::EnterAsync(Microsoft.UI.Input.DragDrop.DragInfo,Microsoft.UI.Input.DragDrop.DragUIOverride)
    @abstractmethod
    def enter_async(self, drag_info: DragInfo, drag_ui_override: DragUIOverride, /) -> windows_foundation.IAsyncOperation[windows_applicationmodel_datatransfer.DataPackageOperation]: ...
    # Windows.Foundation.IAsyncAction Microsoft.UI.Input.DragDrop.IDropOperationTarget::LeaveAsync(Microsoft.UI.Input.DragDrop.DragInfo)
    @abstractmethod
    def leave_async(self, drag_info: DragInfo, /) -> windows_foundation.IAsyncAction: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.ApplicationModel.DataTransfer.DataPackageOperation> Microsoft.UI.Input.DragDrop.IDropOperationTarget::OverAsync(Microsoft.UI.Input.DragDrop.DragInfo,Microsoft.UI.Input.DragDrop.DragUIOverride)
    @abstractmethod
    def over_async(self, drag_info: DragInfo, drag_ui_override: DragUIOverride, /) -> windows_foundation.IAsyncOperation[windows_applicationmodel_datatransfer.DataPackageOperation]: ...

