# WARNING: Please don't edit this file. It was generated by Python/WinRT v3.1.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.windows.foundation as windows_foundation
import winrt.windows.foundation.collections as windows_foundation_collections
import winrt.windows.graphics as windows_graphics
import winrt.windows.graphics.directx as windows_graphics_directx
import winrt.windows.graphics.directx.direct3d11 as windows_graphics_directx_direct3d11
import winrt.windows.security.authorization.appcapabilityaccess as windows_security_authorization_appcapabilityaccess
import winrt.windows.system as windows_system
import winrt.windows.ui as windows_ui
import winrt.windows.ui.composition as windows_ui_composition

from winrt.windows.graphics.capture import GraphicsCaptureAccessKind, GraphicsCaptureDirtyRegionMode

Self = typing.TypeVar('Self')

@typing.final
class Direct3D11CaptureFrame(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: ...
    # System.Void Windows.Graphics.Capture.Direct3D11CaptureFrame::Close()
    def close(self) -> None: ...
    # Windows.Graphics.SizeInt32 Windows.Graphics.Capture.Direct3D11CaptureFrame::get_ContentSize()
    @_property
    def content_size(self) -> windows_graphics.SizeInt32: ...
    # Windows.Graphics.DirectX.Direct3D11.IDirect3DSurface Windows.Graphics.Capture.Direct3D11CaptureFrame::get_Surface()
    @_property
    def surface(self) -> windows_graphics_directx_direct3d11.IDirect3DSurface: ...
    # Windows.Foundation.TimeSpan Windows.Graphics.Capture.Direct3D11CaptureFrame::get_SystemRelativeTime()
    @_property
    def system_relative_time(self) -> datetime.timedelta: ...
    # Windows.Graphics.Capture.GraphicsCaptureDirtyRegionMode Windows.Graphics.Capture.Direct3D11CaptureFrame::get_DirtyRegionMode()
    @_property
    def dirty_region_mode(self) -> GraphicsCaptureDirtyRegionMode: ...
    # Windows.Foundation.Collections.IVectorView`1<Windows.Graphics.RectInt32> Windows.Graphics.Capture.Direct3D11CaptureFrame::get_DirtyRegions()
    @_property
    def dirty_regions(self) -> typing.Sequence[windows_graphics.RectInt32]: ...

@typing.final
class Direct3D11CaptureFramePool_Static(winrt._winrt.IInspectable_Static):
    # Windows.Graphics.Capture.Direct3D11CaptureFramePool Windows.Graphics.Capture.Direct3D11CaptureFramePool::Create(Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice,Windows.Graphics.DirectX.DirectXPixelFormat,System.Int32,Windows.Graphics.SizeInt32)
    def create(cls, device: windows_graphics_directx_direct3d11.IDirect3DDevice, pixel_format: windows_graphics_directx.DirectXPixelFormat, number_of_buffers: winrt.system.Int32, size: typing.Union[windows_graphics.SizeInt32, typing.Tuple[winrt.system.Int32, winrt.system.Int32]], /) -> Direct3D11CaptureFramePool: ...
    # Windows.Graphics.Capture.Direct3D11CaptureFramePool Windows.Graphics.Capture.Direct3D11CaptureFramePool::CreateFreeThreaded(Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice,Windows.Graphics.DirectX.DirectXPixelFormat,System.Int32,Windows.Graphics.SizeInt32)
    def create_free_threaded(cls, device: windows_graphics_directx_direct3d11.IDirect3DDevice, pixel_format: windows_graphics_directx.DirectXPixelFormat, number_of_buffers: winrt.system.Int32, size: typing.Union[windows_graphics.SizeInt32, typing.Tuple[winrt.system.Int32, winrt.system.Int32]], /) -> Direct3D11CaptureFramePool: ...

@typing.final
class Direct3D11CaptureFramePool(winrt.system.Object, windows_foundation.IClosable, metaclass=Direct3D11CaptureFramePool_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 Windows.Graphics.Capture.Direct3D11CaptureFramePool::Close()
    def close(self) -> None: ...
    # Windows.Graphics.Capture.GraphicsCaptureSession Windows.Graphics.Capture.Direct3D11CaptureFramePool::CreateCaptureSession(Windows.Graphics.Capture.GraphicsCaptureItem)
    def create_capture_session(self, item: GraphicsCaptureItem, /) -> GraphicsCaptureSession: ...
    # System.Void Windows.Graphics.Capture.Direct3D11CaptureFramePool::Recreate(Windows.Graphics.DirectX.Direct3D11.IDirect3DDevice,Windows.Graphics.DirectX.DirectXPixelFormat,System.Int32,Windows.Graphics.SizeInt32)
    def recreate(self, device: windows_graphics_directx_direct3d11.IDirect3DDevice, pixel_format: windows_graphics_directx.DirectXPixelFormat, number_of_buffers: winrt.system.Int32, size: typing.Union[windows_graphics.SizeInt32, typing.Tuple[winrt.system.Int32, winrt.system.Int32]], /) -> None: ...
    # Windows.Graphics.Capture.Direct3D11CaptureFrame Windows.Graphics.Capture.Direct3D11CaptureFramePool::TryGetNextFrame()
    def try_get_next_frame(self) -> typing.Optional[Direct3D11CaptureFrame]: ...
    # Windows.Foundation.EventRegistrationToken Windows.Graphics.Capture.Direct3D11CaptureFramePool::add_FrameArrived(Windows.Foundation.TypedEventHandler`2<Windows.Graphics.Capture.Direct3D11CaptureFramePool,System.Object>)
    def add_frame_arrived(self, handler: windows_foundation.TypedEventHandler[Direct3D11CaptureFramePool, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Graphics.Capture.Direct3D11CaptureFramePool::remove_FrameArrived(Windows.Foundation.EventRegistrationToken)
    def remove_frame_arrived(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # Windows.System.DispatcherQueue Windows.Graphics.Capture.Direct3D11CaptureFramePool::get_DispatcherQueue()
    @_property
    def dispatcher_queue(self) -> windows_system.DispatcherQueue: ...

@typing.final
class GraphicsCaptureAccess_Static(winrt._winrt.IInspectable_Static):
    # Windows.Foundation.IAsyncOperation`1<Windows.Security.Authorization.AppCapabilityAccess.AppCapabilityAccessStatus> Windows.Graphics.Capture.GraphicsCaptureAccess::RequestAccessAsync(Windows.Graphics.Capture.GraphicsCaptureAccessKind)
    def request_access_async(cls, request: GraphicsCaptureAccessKind, /) -> windows_foundation.IAsyncOperation[windows_security_authorization_appcapabilityaccess.AppCapabilityAccessStatus]: ...

@typing.final
class GraphicsCaptureAccess(winrt.system.Object, metaclass=GraphicsCaptureAccess_Static):
    pass

@typing.final
class GraphicsCaptureItem_Static(winrt._winrt.IInspectable_Static):
    # Windows.Graphics.Capture.GraphicsCaptureItem Windows.Graphics.Capture.GraphicsCaptureItem::CreateFromVisual(Windows.UI.Composition.Visual)
    def create_from_visual(cls, visual: windows_ui_composition.Visual, /) -> GraphicsCaptureItem: ...
    # Windows.Graphics.Capture.GraphicsCaptureItem Windows.Graphics.Capture.GraphicsCaptureItem::TryCreateFromDisplayId(Windows.Graphics.DisplayId)
    def try_create_from_display_id(cls, display_id: typing.Union[windows_graphics.DisplayId, typing.Tuple[winrt.system.UInt64]], /) -> typing.Optional[GraphicsCaptureItem]: ...
    # Windows.Graphics.Capture.GraphicsCaptureItem Windows.Graphics.Capture.GraphicsCaptureItem::TryCreateFromWindowId(Windows.UI.WindowId)
    def try_create_from_window_id(cls, window_id: typing.Union[windows_ui.WindowId, typing.Tuple[winrt.system.UInt64]], /) -> typing.Optional[GraphicsCaptureItem]: ...

@typing.final
class GraphicsCaptureItem(winrt.system.Object, metaclass=GraphicsCaptureItem_Static):
    # Windows.Foundation.EventRegistrationToken Windows.Graphics.Capture.GraphicsCaptureItem::add_Closed(Windows.Foundation.TypedEventHandler`2<Windows.Graphics.Capture.GraphicsCaptureItem,System.Object>)
    def add_closed(self, handler: windows_foundation.TypedEventHandler[GraphicsCaptureItem, winrt.system.Object], /) -> windows_foundation.EventRegistrationToken: ...
    # System.Void Windows.Graphics.Capture.GraphicsCaptureItem::remove_Closed(Windows.Foundation.EventRegistrationToken)
    def remove_closed(self, token: typing.Union[windows_foundation.EventRegistrationToken, typing.Tuple[winrt.system.Int64]], /) -> None: ...
    # System.String Windows.Graphics.Capture.GraphicsCaptureItem::get_DisplayName()
    @_property
    def display_name(self) -> str: ...
    # Windows.Graphics.SizeInt32 Windows.Graphics.Capture.GraphicsCaptureItem::get_Size()
    @_property
    def size(self) -> windows_graphics.SizeInt32: ...

@typing.final
class GraphicsCapturePicker(winrt.system.Object):
    def __new__(cls: typing.Type[Self]) -> Self: ...
    # Windows.Foundation.IAsyncOperation`1<Windows.Graphics.Capture.GraphicsCaptureItem> Windows.Graphics.Capture.GraphicsCapturePicker::PickSingleItemAsync()
    def pick_single_item_async(self) -> windows_foundation.IAsyncOperation[GraphicsCaptureItem]: ...

@typing.final
class GraphicsCaptureSession_Static(winrt._winrt.IInspectable_Static):
    # System.Boolean Windows.Graphics.Capture.GraphicsCaptureSession::IsSupported()
    def is_supported(cls) -> bool: ...

@typing.final
class GraphicsCaptureSession(winrt.system.Object, windows_foundation.IClosable, metaclass=GraphicsCaptureSession_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 Windows.Graphics.Capture.GraphicsCaptureSession::Close()
    def close(self) -> None: ...
    # System.Void Windows.Graphics.Capture.GraphicsCaptureSession::StartCapture()
    def start_capture(self) -> None: ...
    # System.Boolean Windows.Graphics.Capture.GraphicsCaptureSession::get_IsCursorCaptureEnabled()
    @_property
    def is_cursor_capture_enabled(self) -> bool: ...
    # System.Void Windows.Graphics.Capture.GraphicsCaptureSession::put_IsCursorCaptureEnabled(System.Boolean)
    @is_cursor_capture_enabled.setter
    def is_cursor_capture_enabled(self, value: bool) -> None: ...
    # System.Boolean Windows.Graphics.Capture.GraphicsCaptureSession::get_IsBorderRequired()
    @_property
    def is_border_required(self) -> bool: ...
    # System.Void Windows.Graphics.Capture.GraphicsCaptureSession::put_IsBorderRequired(System.Boolean)
    @is_border_required.setter
    def is_border_required(self, value: bool) -> None: ...
    # Windows.Graphics.Capture.GraphicsCaptureDirtyRegionMode Windows.Graphics.Capture.GraphicsCaptureSession::get_DirtyRegionMode()
    @_property
    def dirty_region_mode(self) -> GraphicsCaptureDirtyRegionMode: ...
    # System.Void Windows.Graphics.Capture.GraphicsCaptureSession::put_DirtyRegionMode(Windows.Graphics.Capture.GraphicsCaptureDirtyRegionMode)
    @dirty_region_mode.setter
    def dirty_region_mode(self, value: GraphicsCaptureDirtyRegionMode) -> None: ...
    # Windows.Foundation.TimeSpan Windows.Graphics.Capture.GraphicsCaptureSession::get_MinUpdateInterval()
    @_property
    def min_update_interval(self) -> datetime.timedelta: ...
    # System.Void Windows.Graphics.Capture.GraphicsCaptureSession::put_MinUpdateInterval(Windows.Foundation.TimeSpan)
    @min_update_interval.setter
    def min_update_interval(self, value: datetime.timedelta) -> None: ...
    # System.Boolean Windows.Graphics.Capture.GraphicsCaptureSession::get_IncludeSecondaryWindows()
    @_property
    def include_secondary_windows(self) -> bool: ...
    # System.Void Windows.Graphics.Capture.GraphicsCaptureSession::put_IncludeSecondaryWindows(System.Boolean)
    @include_secondary_windows.setter
    def include_secondary_windows(self, value: bool) -> None: ...

