from __future__ import annotations
import typing
from typing import Any
from enum import IntEnum, IntFlag


class ISurfaceInvalidatable(typing.Any):
    def InvalidateSurface(self, *args: Any, **kwargs: Any) -> Any: ...

class ISystemManagers(typing.Any):
    @property
    def EnableTouchEvents(self) -> Any: ...
    @EnableTouchEvents.setter
    def EnableTouchEvents(self, value: Any) -> None: ...
    @property
    def Renderer(self) -> Any: ...
    @property
    def Default(self) -> Any: ...
    @Default.setter
    def Default(self, value: Any) -> None: ...
    def InvalidateSurface(self, *args: Any, **kwargs: Any) -> Any: ...

class CameraCenterOnScreen(IntEnum):
    Center = 0
    TopLeft = 1

class Camera(typing.Any):
    @property
    def AbsoluteTop(self) -> Any: ...
    @AbsoluteTop.setter
    def AbsoluteTop(self, value: Any) -> None: ...
    @property
    def AbsoluteBottom(self) -> Any: ...
    @property
    def AbsoluteLeft(self) -> Any: ...
    @AbsoluteLeft.setter
    def AbsoluteLeft(self, value: Any) -> None: ...
    @property
    def AbsoluteRight(self) -> Any: ...
    @property
    def X(self) -> Any: ...
    @X.setter
    def X(self, value: Any) -> None: ...
    @property
    def Y(self) -> Any: ...
    @Y.setter
    def Y(self, value: Any) -> None: ...
    @property
    def RenderingXOffset(self) -> Any: ...
    @property
    def RenderingYOffset(self) -> Any: ...
    @property
    def ClientWidth(self) -> Any: ...
    @ClientWidth.setter
    def ClientWidth(self, value: Any) -> None: ...
    @property
    def ClientHeight(self) -> Any: ...
    @ClientHeight.setter
    def ClientHeight(self, value: Any) -> None: ...
    @property
    def Zoom(self) -> Any: ...
    @Zoom.setter
    def Zoom(self, value: Any) -> None: ...
    @property
    def CameraCenterOnScreen(self) -> Any: ...
    @CameraCenterOnScreen.setter
    def CameraCenterOnScreen(self, value: Any) -> None: ...
    def GetTransformationMatrix(self, *args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetTransformationMatrix(*args: Any, **kwargs: Any) -> Any: ...
    def ScreenToWorld(self, *args: Any, **kwargs: Any) -> Any: ...
    def WorldToScreen(self, *args: Any, **kwargs: Any) -> Any: ...
    def GetType(self, *args: Any, **kwargs: Any) -> Any: ...
    def ToString(self, *args: Any, **kwargs: Any) -> Any: ...
    def Equals(self, *args: Any, **kwargs: Any) -> Any: ...
    def GetHashCode(self, *args: Any, **kwargs: Any) -> Any: ...

class IPositionedSizedObject(typing.Any):
    @property
    def X(self) -> Any: ...
    @X.setter
    def X(self, value: Any) -> None: ...
    @property
    def Y(self) -> Any: ...
    @Y.setter
    def Y(self, value: Any) -> None: ...
    @property
    def Z(self) -> Any: ...
    @Z.setter
    def Z(self, value: Any) -> None: ...
    @property
    def Rotation(self) -> Any: ...
    @Rotation.setter
    def Rotation(self, value: Any) -> None: ...
    @property
    def FlipHorizontal(self) -> Any: ...
    @FlipHorizontal.setter
    def FlipHorizontal(self, value: Any) -> None: ...
    @property
    def Width(self) -> Any: ...
    @Width.setter
    def Width(self, value: Any) -> None: ...
    @property
    def Height(self) -> Any: ...
    @Height.setter
    def Height(self, value: Any) -> None: ...
    @property
    def Name(self) -> Any: ...
    @Name.setter
    def Name(self, value: Any) -> None: ...
    @property
    def Tag(self) -> Any: ...
    @Tag.setter
    def Tag(self, value: Any) -> None: ...

class IPositionedSizedObjectExtensionMethods(typing.Any):
    @staticmethod
    def GetRotationMatrix(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteRotationMatrix(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteFlipHorizontal(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteX(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteY(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteLeft(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteTop(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteRight(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteBottom(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteCenterX(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteCenterY(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def HasCursorOver(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetTopParent(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetAbsoluteRotation(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def GetPosition(*args: Any, **kwargs: Any) -> Any: ...
    @staticmethod
    def SetPosition(*args: Any, **kwargs: Any) -> Any: ...
    def GetType(self, *args: Any, **kwargs: Any) -> Any: ...
    def ToString(self, *args: Any, **kwargs: Any) -> Any: ...
    def Equals(self, *args: Any, **kwargs: Any) -> Any: ...
    def GetHashCode(self, *args: Any, **kwargs: Any) -> Any: ...
