# mypy: disable-error-code="misc, override, attr-defined, no-redef, assignment"

import PyUtilModule.KatanaFile as KatanaFile
import NodegraphAPI as NodegraphAPI
import Utils as Utils
import PyXmlIO as XmlIO
import typing
import xml.etree.ElementTree
from . import FarmManager as FarmManager, FarmPluginManager as FarmPluginManager
from PyUtilModule.FarmAPI.BaseFarmPlugin import BaseFarmPlugin as BaseFarmPlugin, FarmPluginException as FarmPluginException, Job as Job, JobNotFoundException as JobNotFoundException
from Utils.Decorators import deprecated as deprecated
from _typeshed import Incomplete
from typing import ClassVar, Set, Tuple

NODES_ALL: str
NODES_SELECTED: str
NODES_SINGLE: str

class FarmSetting:
    NUMBER: ClassVar[str] = ...
    NUMBERARRAY: ClassVar[str] = ...
    QUALIFIER: ClassVar[str] = ...
    STRING: ClassVar[str] = ...
    STRINGARRAY: ClassVar[str] = ...
    VALID_TYPES: ClassVar[tuple] = ...
    def __init__(self, name: str = ..., farmType: str = ..., defaultValue: Incomplete | None = ..., size: int = ..., hints: Incomplete | None = ...) -> None: ...
    def getHints(self) -> dict | None: ...
    def getName(self) -> str: ...
    def getQualifiedName(self) -> str: ...
    def getShortName(self): ...
    def getSize(self) -> int: ...
    def getType(self) -> str: ...
    def getValue(self) -> str | int | float | list | None: ...

class NodeRenderSettings:
    def __init__(self, dependencyListEntry: Incomplete | None = ...) -> None: ...
    def _NodeRenderSettings__initialize(self): ...
    def _NodeRenderSettings__setFromDependencyListEntry(self, dependencyListEntry: dict | None): ...
    def getNode(self) -> NodegraphAPI.Node | None: ...
    def getNodeType(self) -> str: ...

class RenderScriptSettings:
    def __init__(self, settings: dict = ...) -> None: ...
    def appendXML(self, xmlElement: xml.etree.ElementTree.Element): ...

def AddErrorMessage(message: str): ...
def AddFarmMenuOption(menuCommandText: str, callback: typing.Callable): ...
def AddFarmPopupMenuOption(menuCommandText: str, callback: typing.Callable): ...
def AddFarmSettingNumber(name: str = ..., defaultValue: int = ..., hints: Incomplete | None = ...): ...
def AddFarmSettingNumberArray(name: str = ..., size: int = ..., hints: Incomplete | None = ...): ...
def AddFarmSettingString(name: str = ..., defaultValue: str = ..., hints: Incomplete | None = ...): ...
def AddFarmSettingStringArray(name: str = ..., size: int = ..., hints: Incomplete | None = ...): ...
def AddWarningMessage(message: str): ...
def ExtractFarmSettingsFromNode(node: NodegraphAPI.Node) -> dict: ...
def GetAddedFarmSettings() -> list[FarmSetting]: ...
def GetClickedNode() -> NodegraphAPI.Node: ...
def GetCurrentNode() -> NodegraphAPI.Node: ...
def GetCurrentNodeFrameRange() -> dict: ...
def GetErrorMessages() -> list[str]: ...
def GetFarmMenuOptions() -> list[None]: ...
def GetFarmPopupMenuOptions() -> list[None]: ...
def GetKatanaFileName() -> str: ...
def GetNodeList() -> list[NodegraphAPI.Node | None]: ...
def GetNodeProcessType() -> str: ...
def GetSceneFrameRange() -> dict: ...
def GetSelectedNodes() -> list[NodegraphAPI.Node]: ...
def GetSortedDependencies(nodeOrNodes: Incomplete | None = ..., includeBypassed: bool = ...) -> list[NodeRenderSettings]: ...
def GetSortedDependencyList(nodeList: Incomplete | None = ..., syncAllOutputPorts: bool = ..., includeInternalDeps: bool = ...): ...
def GetWarningMessages() -> list[str]: ...
def Initialise(clickedNode: Incomplete | None = ...): ...
def IsSceneValid(nodeScope: Incomplete | None = ..., allowUnsavedChanges: bool = ..., allowCapitalLetters: bool = ..., allowDigits: bool = ..., unwantedSymbols: list = ...) -> bool: ...
def OpenDefaultDialog(callback: Incomplete | None = ..., dialogTitle: str = ..., fileExtension: str = ...): ...
def WriteFarmFile(fileName, farmString): ...
