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

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
import winrt.windows.ui.uiautomation

from winrt.windows.ui.uiautomation.core import AutomationRemoteOperationStatus

Self = typing.TypeVar('Self')

class AutomationAnnotationTypeRegistration:
    local_id: winrt.system.Int32
    def __init__(self, local_id: winrt.system.Int32) -> None: ...

class AutomationRemoteOperationOperandId:
    value: winrt.system.Int32
    def __init__(self, value: winrt.system.Int32) -> None: ...

class AutomationRemoteOperationResult(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> AutomationRemoteOperationResult: ...
    def get_operand(self, operand_id: AutomationRemoteOperationOperandId, /) -> typing.Optional[winrt.system.Object]: ...
    def has_operand(self, operand_id: AutomationRemoteOperationOperandId, /) -> bool: ...
    @_property
    def error_location(self) -> winrt.system.Int32: ...
    @_property
    def extended_error(self) -> winrt.windows.foundation.HResult: ...
    @_property
    def status(self) -> AutomationRemoteOperationStatus: ...

class CoreAutomationRegistrar_Static(type):
    def register_annotation_type(cls, guid: _uuid.UUID, /) -> AutomationAnnotationTypeRegistration: ...
    def unregister_annotation_type(cls, registration: AutomationAnnotationTypeRegistration, /) -> None: ...

class CoreAutomationRegistrar(winrt.system.Object, metaclass=CoreAutomationRegistrar_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CoreAutomationRegistrar: ...

class CoreAutomationRemoteOperation(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CoreAutomationRemoteOperation: ...
    def __new__(cls: typing.Type[CoreAutomationRemoteOperation]) -> CoreAutomationRemoteOperation:...
    def add_to_results(self, operand_id: AutomationRemoteOperationOperandId, /) -> None: ...
    def execute(self, bytecode_buffer: winrt.system.Array[winrt.system.UInt8], /) -> typing.Optional[AutomationRemoteOperationResult]: ...
    def import_connection_bound_object(self, operand_id: AutomationRemoteOperationOperandId, connection_bound_object: typing.Optional[winrt.windows.ui.uiautomation.AutomationConnectionBoundObject], /) -> None: ...
    def import_element(self, operand_id: AutomationRemoteOperationOperandId, element: typing.Optional[winrt.windows.ui.uiautomation.AutomationElement], /) -> None: ...
    def import_text_range(self, operand_id: AutomationRemoteOperationOperandId, text_range: typing.Optional[winrt.windows.ui.uiautomation.AutomationTextRange], /) -> None: ...
    def is_opcode_supported(self, opcode: winrt.system.UInt32, /) -> bool: ...

class CoreAutomationRemoteOperationContext(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> CoreAutomationRemoteOperationContext: ...
    def get_operand(self, id: AutomationRemoteOperationOperandId, /) -> typing.Optional[winrt.system.Object]: ...
    @typing.overload
    def set_operand(self, id: AutomationRemoteOperationOperandId, operand: typing.Optional[winrt.system.Object], /) -> None: ...
    @typing.overload
    def set_operand(self, id: AutomationRemoteOperationOperandId, operand: typing.Optional[winrt.system.Object], operand_interface_id: _uuid.UUID, /) -> None: ...

class RemoteAutomationClientSession(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> RemoteAutomationClientSession: ...
    @typing.overload
    def __new__(cls: typing.Type[RemoteAutomationClientSession], name: str) -> RemoteAutomationClientSession:...
    @typing.overload
    def __new__(cls: typing.Type[RemoteAutomationClientSession], name: str, session_id: _uuid.UUID) -> RemoteAutomationClientSession:...
    def create_window_async(self, remote_window_id: winrt.system.UInt64, remote_process_id: winrt.system.UInt32, parent_automation_element: typing.Optional[winrt.system.Object], /) -> winrt.windows.foundation.IAsyncOperation[RemoteAutomationWindow]: ...
    def start(self) -> None: ...
    def stop(self) -> None: ...
    def add_connection_requested(self, handler: winrt.windows.foundation.TypedEventHandler[RemoteAutomationClientSession, RemoteAutomationConnectionRequestedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_connection_requested(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    def add_disconnected(self, handler: winrt.windows.foundation.TypedEventHandler[RemoteAutomationClientSession, RemoteAutomationDisconnectedEventArgs], /) -> winrt.windows.foundation.EventRegistrationToken: ...
    def remove_disconnected(self, token: winrt.windows.foundation.EventRegistrationToken, /) -> None: ...
    @_property
    def session_id(self) -> _uuid.UUID: ...

class RemoteAutomationConnectionRequestedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> RemoteAutomationConnectionRequestedEventArgs: ...
    @_property
    def local_pipe_name(self) -> str: ...
    @_property
    def remote_process_id(self) -> winrt.system.UInt32: ...

class RemoteAutomationDisconnectedEventArgs(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> RemoteAutomationDisconnectedEventArgs: ...
    @_property
    def local_pipe_name(self) -> str: ...

class RemoteAutomationServer_Static(type):
    def report_session(cls, session_id: _uuid.UUID, /) -> None: ...

class RemoteAutomationServer(winrt.system.Object, metaclass=RemoteAutomationServer_Static):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> RemoteAutomationServer: ...

class RemoteAutomationWindow(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> RemoteAutomationWindow: ...
    def unregister_async(self) -> winrt.windows.foundation.IAsyncAction: ...
    @_property
    def automation_provider(self) -> typing.Optional[winrt.system.Object]: ...

class ICoreAutomationConnectionBoundObjectProvider(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ICoreAutomationConnectionBoundObjectProvider: ...
    @_property
    def is_com_threading_required(self) -> bool: ...

class ICoreAutomationRemoteOperationExtensionProvider(winrt.system.Object):
    @staticmethod
    def _from(obj: winrt.system.Object, /) -> ICoreAutomationRemoteOperationExtensionProvider: ...
    def call_extension(self, extension_id: _uuid.UUID, context: typing.Optional[CoreAutomationRemoteOperationContext], operand_ids: winrt.system.Array[AutomationRemoteOperationOperandId], /) -> None: ...
    def is_extension_supported(self, extension_id: _uuid.UUID, /) -> bool: ...

