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

import AssetAPI
import KatanaResources as KatanaResources
import PyQt5.QtCore
import PyQt5.QtWidgets
import PyQt5.QtCore as QtCore
import PyQt5.QtWidgets as QtWidgets
import Utils as Utils
import _FnKatanaCoreUI as _FnKatanaCoreUI
import re
from AssetBrowser.FileInfo import FileInfo as FileInfo
from Utils.Decorators import deprecated as deprecated
from _FnKatanaCoreUI import FnFileBrowser as FnFileBrowser, FnFileSequenceEvaluator as FnFileSequenceEvaluator
from typing import ClassVar, Set, Tuple

class Browser(PyQt5.QtWidgets.QFrame):
    _FileSequenceEvaluator: ClassVar[FileSequenceEvaluator] = ...
    _FrameNumberVariableRegex: ClassVar[re.Pattern] = ...
    _HomeDirPath: ClassVar[str] = ...
    _PreferencesPath: ClassVar[str] = ...
    _ProductName: ClassVar[str] = ...
    _ProductPath: ClassVar[str] = ...
    _RootDirPath: ClassVar[str] = ...
    _TrailingFrameRangeRegex: ClassVar[re.Pattern] = ...
    acceptedSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    selectionValidSignal: ClassVar[PyQt5.QtCore.pyqtSignal] = ...
    def __init__(self, parent: PyQt5.QtWidgets.QWidget | None) -> None: ...
    @classmethod
    def AddQuickLinkPath(cls, quickLinkPath: str): ...
    @classmethod
    def ClearQuickLinks(cls): ...
    @classmethod
    def InitializeFileBrowser(cls): ...
    def _Browser__addGlobalQuickLinks(self): ...
    def _Browser__isFileSequence(self, filePath: str) -> bool: ...
    def _Browser__isValidPath(self, filePath: str) -> bool: ...
    def _Browser__removeTrailingFrameRange(self, filePath: str) -> str: ...
    def _Browser__setSelectionValid(self, selectionValid: bool): ...
    def _Browser__splitFilePath(self, filePath: str) -> Tuple[str, str]: ...
    def addQuickLinkPaths(self, quickLinkPaths: list[str]): ...
    def beginUpdate(self): ...
    def endUpdate(self): ...
    def getResult(self) -> str: ...
    def on_fileDoubleClick(self): ...
    def on_filenameTextChanged(self, filename: str): ...
    def selectionValid(self) -> bool: ...
    def setFileSequencePlugin(self, fileSequencePlugin: AssetAPI.FileSequencePlugin): ...
    def setFindSequenceFunc(self, findSequenceFunc): ...
    def setLocation(self, location: str): ...
    def setQuickLinkPaths(self, quickLinkPaths): ...
    def setSaveMode(self, saveModeEnabled: bool): ...
    def setSequenceListing(self, isSequenceListingEnabled: bool): ...
    def setTypes(self, types: list[str]): ...
    def setValidSelectionTypes(self, validSelectionTypes: list[int]): ...

class FileSequenceEvaluator(_FnKatanaCoreUI.Foundry.UI.FileSequenceEvaluator):
    def __init__(self) -> None: ...
    def _buildFileSequences(self, sequences: list[FileSequence], allFileInfosIndex) -> list[FnFileInfo]: ...
    def _getFrameFileInfo(self, sequence: FileSequence, frameNumber: int, allFileInfosIndex) -> FileInfo: ...
    def evaluateFiles(self, allFileInfos: list[FileInfo]) -> tuple[FileInfo, ...]: ...
    def setFileSequencePlugin(self, fileSequencePlugin: FileSequencePlugin): ...
