import types

from ..cls_type import ClsType
from ..file import File
from ..folder import Folder
from ..mod_path import ModPath
from ..mod_type import ModType
from ..multilinguals import Multilinguals
from ..web_system.webapp import Webapp
from ...types.he import He
from ...types.hs import Hs


class ObjType(Hs):
    def __init__(self, u: He, pyobj: He | type): ...

    @property
    def pymod(self)-> types.ModuleType: ...
    @property
    def pycls(self)-> type: ...
    @property
    def pyobj(self)-> Webapp: ...

    @property
    def mod_name(self)-> ModPath: ...
    @property
    def mod_type(self)-> ModType: ...
    @property
    def cls_type(self)-> ClsType: ...
    @property
    def tree_pyclsses(self)-> list[type]: ...
    @property
    def tree_cls_types(self)-> list[ClsType]: ...

    def has_function(self, name: str)-> bool: ...
    def has_local_function(self, name: str)-> bool: ...

    @property
    def folder(self)-> Folder: ...
    @property
    def data_folder(self)-> Folder: ...
    @property
    def data_configs_folder(self)-> Folder: ...
    @property
    def data_configs_file(self)-> File: ...
    @property
    def data_multilinguals_folder(self)-> Folder: ...
    def data_multilinguals_file(self, language: str)-> File: ...
    @property
    def logs_folder(self)-> Folder: ...
    @property
    def data_database_tables_folder(self)-> Folder: ...
    @property
    def data_database_data_folder(self)-> Folder: ...

    @property
    def multilinguals(self)-> Multilinguals: ...
    def ml(self, code: str, language: str = None, replace: str = None, return_code: bool = None)-> str | None: ...
    def ml_name(self, language: str = None, replace: str = None, return_code: bool = None)-> str | None: ...
    def ml_abbreviation(self, language: str = None, replace: str = None, return_code: bool = None)-> str | None: ...
    def ml_title(self, language: str = None, replace: str = None, return_code: bool = None)-> str | None: ...
    def ml_description(self, language: str = None, replace: str = None, return_code: bool = None)-> str | None: ...
    def ml_link_title(self, language: str = None, replace: str = None, return_code: bool = None)-> str | None: ...
    def ml_page_title(self, language: str = None, replace: str = None, return_code: bool = None)-> str | None: ...
    def ml_breadcrumb_title(self, language: str = None, replace: str = None, return_code: bool = None)-> str | None: ...