from dataclasses import dataclass
from PySide6.QtWidgets import QDialog, QMainWindow, QWidget
from utils_qt_mk._general import Singleton


CFDType: _CFDType = None


def get_path_types(fetch_data: bool = False) -> list[str | CFDData]: ...
def merge_json(path: str) -> None: ...
def _import_json(full_id_key: bool = False) -> dict[str, CFDData] | None: ...
def custom_dialog(parent: QWidget, cfd_data: CFDData, custom_title: str = None) -> tuple[bool, str | None]: ...


@dataclass
class CFDData:
	def __init__(self, path_id: str, window_title: str, dialog_type: int, file_type_filter: str = '', path: str = 'C:/') -> None: ...
	@classmethod
	def from_dict(cls, src: dict) -> CFDData: ...
	def soft_eq(self) -> bool: ...
	@property
	def as_dict(self) -> dict: ...


class _FileDialogDataEditor(QDialog):
	def __init__(self) -> None: ...
	def _export_json(self) -> None: ...
	def _reset_inputs(self) -> None: ...
	def _setup_connections(self) -> None: ...
	def _setup_ui(self) -> None: ...
	def _slot_delete_data(self) -> None: ...
	def _slot_export_data(self) -> None: ...
	def _slot_new_type_toggled(self) -> None: ...
	def _slot_type_selection_changed(self) -> None: ...
	def _update_type_list_combobox(self) -> None: ...


class _CFDType(metaclass=Singleton):
	destination_themes: CFDData = None
	destination_colour_scales: CFDData = None
	source_colour_scales: CFDData = None
	def __init__(self) -> None: ...


class _TestApplication(QMainWindow):
	def __init__(self) -> None: ...
	def _setup_connections(self) -> None: ...
	def _setup_ui(self) -> None: ...
	@classmethod
	def _slot_de_test(cls) -> None: ...
