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

from typing import Any, Set, Tuple

kAssetContextAlembic: str
kAssetContextAttributeFile: str
kAssetContextCastingSheet: str
kAssetContextCatalog: str
kAssetContextFCurveFile: str
kAssetContextFarm: str
kAssetContextGafferThreeRig: str
kAssetContextImage: str
kAssetContextKatanaScene: str
kAssetContextLiveGroup: str
kAssetContextLookFile: str
kAssetContextLookFileMgrSettings: str
kAssetContextMacro: str
kAssetContextScenegraphBookmarks: str
kAssetContextShader: str
kAssetFieldName: str
kAssetFieldVersion: str
kAssetRelationArgsFile: str
kAssetTypeAlembic: str
kAssetTypeAttributeFile: str
kAssetTypeCastingSheet: str
kAssetTypeFCurveFile: str
kAssetTypeGafferThreeRig: str
kAssetTypeImage: str
kAssetTypeKatanaScene: str
kAssetTypeLiveGroup: str
kAssetTypeLookFile: str
kAssetTypeLookFileMgrSettings: str
kAssetTypeMacro: str
kAssetTypeScenegraphBookmarks: str
kAssetTypeShader: str
kFnAssetCreationOptionOutputFormat: str
kFnAssetOutputFormatArchive: str
kFnAssetOutputFormatDirectory: str

class AssetPlugin:
    def __init__(self, *args, **kwargs) -> None: ...
    def buildAssetId(self, fields: dict[str, str], throwOnError: bool = ...) -> str: ...
    def checkPermissions(self, assetId: str, context: dict[str, str], throwOnError: bool = ...) -> bool: ...
    def containsAssetId(self, str: str, throwOnError: bool = ...) -> bool: ...
    def createAssetAndPath(self, txn: AssetTransaction, assetType: str, assetFields: dict[str, str], args: dict[str, str], createDirectory: bool = ..., throwOnError: bool = ...) -> str: ...
    def createTransaction(self, throwOnError: bool = ...) -> AssetTransaction: ...
    def getAssetAttributes(self, assetId: str, scope: str, throwOnError: bool = ...) -> dict[str, str]: ...
    def getAssetDisplayName(self, assetId: str, throwOnError: bool = ...) -> str: ...
    def getAssetFields(self, assetId: str, includeDefaults: bool, throwOnError: bool = ...) -> dict[str, str]: ...
    def getAssetIdForScope(self, assetId: str, scope: str, throwOnError: bool = ...) -> str: ...
    def getAssetVersions(self, assetId: str, throwOnError: bool = ...) -> tuple: ...
    def getRelatedAssetId(self, assetId: str, relation: str, throwOnError: bool = ...) -> str: ...
    def getUniqueScenegraphLocationFromAssetId(self, assetId: str, includeVersion: bool, throwOnError: bool = ...) -> str: ...
    def isAssetId(self, assetStr: str, throwOnError: bool = ...) -> bool: ...
    def postCreateAsset(self, txn: AssetTransaction, assetType: str, assetFields: dict[str, str], args: dict[str, str], throwOnError: bool = ...) -> str: ...
    def reset(self, throwOnError: bool = ...) -> None: ...
    def resolveAllAssets(self, str: str, throwOnError: bool = ...) -> str: ...
    def resolveAsset(self, assetId: str, throwOnError: bool = ...) -> str: ...
    def resolveAssetVersion(self, assetId: str, versionStr: str = ..., throwOnError: bool = ...) -> str: ...
    def resolvePath(self, assetId: str, frame: int, throwOnError: bool = ...) -> str: ...
    def runAssetPluginCommand(self, assetId: str, command: str, commandArgs: dict[str, str], throwOnError: bool = ...) -> bool: ...
    def setAssetAttributes(self, assetId: str, scope: str, attrs: dict[str, str], throwOnError: bool = ...) -> None: ...
    def __hash__(self) -> int: ...

class AssetTransaction:
    def __init__(self, *args, **kwargs) -> None: ...
    def commit(self, throwOnError: bool = ...) -> bool: ...
    def __hash__(self) -> int: ...

class FileSequence:
    def __init__(self, *args, **kwargs) -> None: ...
    def getAsString(self, throwOnError: bool = ...) -> str: ...
    def getDirectory(self, throwOnError: bool = ...) -> str: ...
    def getFirstFrame(self, throwOnError: bool = ...) -> int: ...
    def getFrameList(self, throwOnError: bool = ...) -> list[int]: ...
    def getLastFrame(self, throwOnError: bool = ...) -> int: ...
    def getNearestFrames(self, frame: int, throwOnError: bool = ...) -> tuple: ...
    def getPadding(self, throwOnError: bool = ...) -> int: ...
    def getPrefix(self, throwOnError: bool = ...) -> str: ...
    def getResolvedPath(self, frame: int, throwOnError: bool = ...) -> str: ...
    def getSuffix(self, throwOnError: bool = ...) -> str: ...
    def hasFrame(self, frame: int, throwOnError: bool = ...) -> bool: ...
    def hasFrameSet(self, throwOnError: bool = ...) -> bool: ...
    def __hash__(self) -> int: ...

class FileSequencePlugin:
    def __init__(self, *args, **kwargs) -> None: ...
    def buildFileSequenceString(self, prefix: str, suffix: str, padding: int = ..., throwOnError: bool = ...) -> str: ...
    def findSequence(self, fileListObj: list[str], throwOnError: bool = ...) -> tuple: ...
    def findSequenceOnDisk(self, path: str, recursive: bool, includeHidden: bool, throwOnError: bool = ...) -> tuple: ...
    def getFileSequence(self, fileSequenceStr: str, throwOnError: bool = ...) -> FileSequence: ...
    def isFileSequence(self, fileSequenceStr: str, throwOnError: bool = ...) -> bool: ...
    def __hash__(self) -> int: ...

def GetAssetPlugin(pluginName: str) -> Any: ...
def GetAssetPluginNames() -> list[str]: ...
def GetDefaultAssetPlugin() -> Any: ...
def GetDefaultAssetPluginName() -> str: ...
def GetDefaultFileSequencePlugin() -> Any: ...
def GetDefaultFileSequencePluginName() -> str: ...
def GetFileSequencePlugin(pluginName: str) -> Any: ...
def GetFileSequencePluginNames() -> list[str]: ...
def ResetAllAssetAPIPlugins() -> None: ...
def SetDefaultAssetPluginName(pluginName: str) -> None: ...
def SetDefaultFileSequencePluginName(pluginName: str) -> None: ...
