from types import ModuleType
from hebill.builtin.system.types.he import He
from hebill.builtin.system.types.hs import Hs
from ..cls_type import ClsType
from ..file import File
from ..folder import Folder
from ..mod_path import ModPath
from ..multilinguals import Multilinguals


class ModType(Hs):
    def __init__(self, u: He, pymod: ModuleType | type | He): ...

    @property
    def pymod(self)-> ModuleType: ...
    @property
    def pycls(self)-> type | None: ...

    @property
    def mod_path(self)-> ModPath: ...
    @property
    def cls_type(self)-> ClsType | None: ...

    def rel_mod_path(self, rel_path=None)-> ModPath: ...
    def rel_mod_type(self, rel_path=None)-> ModType | None: ...

    @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_database_tables_folder(self)-> Folder: ...
    def data_database_table_file(self, name: str)-> File: ...
    @property
    def data_database_data_folder(self)-> Folder: ...
    def data_database_data_file(self, name: str)-> File: ...
    @property
    def data_multilinguals_folder(self)-> Folder: ...
    def data_multilinguals_file(self, language: str)-> File: ...

    @property
    def public_folder(self)-> Folder: ...

    @property
    def logs_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: ...
