from .settings import Settings
from ..htmdoc import Htmdoc
from ..htmdoc.areas import Areas
from ....cls_type import ClsType
from ....htmdoc.nodes.wrap import Wrap
from ....mod_type import ModType
from ...clients.client.address import Address
from ....file import File
from ....folder import Folder
from ....obj_type import ObjType
from .....types.hs import Hs
from ... import WebSystem
from .. import Website
from ....mod_path import ModPath
from ....multilinguals import Multilinguals


class Webmod(Hs):
    def __init__(self, website: Website, fullname: str): ...

    @property
    def websystem(self)-> WebSystem: ...
    """@property
    def server(self)-> Server: ..."""
    @property
    def website(self)-> Website: ...
    """ @property
    def client(self)-> Client: ...
    @property
    def database(self)-> Database: ..."""

    def webmod(self, *names: str)-> Webmod: ...
    @property
    def webmod_home(self)-> Webmod: ...
    @property
    def webmod_page_content_sign_in(self)-> Webmod: ...
    @property
    def webmod_page_content_sign_out(self)-> Webmod: ...
    @property
    def webmod_page_content_sign_up(self)-> Webmod: ...
    @property
    def webmod_page_content_about(self)-> Webmod: ...
    @property
    def webmod_page_content_contact(self)-> Webmod: ...
    @property
    def webmod_page_content_admin(self)-> Webmod: ...
    @property
    def webmod_page_layout(self)-> Webmod: ...
    @property
    def webmod_page_block_navbar(self)-> Webmod: ...
    @property
    def webmod_page_block_breadcrumb(self)-> Webmod: ...
    @property
    def webmod_page_block_navigations(self)-> Webmod: ...
    @property
    def webmod_page_block_messages(self)-> Webmod: ...
    @property
    def webmod_page_block_footer(self)-> Webmod: ...
    @property
    def webmod_page_block_debugs(self)-> Webmod: ...

    def search_children_webmods(self)-> list[Webmod]: ...
    def search_children_webmods_by_page_featur_general(self)-> list[Webmod]: ...

    def has_page_iterative(self)-> bool: ...
    def has_page_content(self)-> bool: ...
    def has_page_layout(self)-> bool: ...
    def has_page_block_navbar(self)-> bool: ...
    def has_page_block_breadcrumb(self)-> bool: ...
    def has_page_block_navigations(self)-> bool: ...
    def has_page_block_messages(self)-> bool: ...
    def has_page_block_footer(self)-> bool: ...
    def has_page_block_debugs(self)-> bool: ...
    def has_page_block_1010(self)-> bool: ...
    def has_page_block_1020(self)-> bool: ...
    def has_page_block_1030(self)-> bool: ...
    def has_page_block_1040(self)-> bool: ...
    def has_page_block_1050(self)-> bool: ...
    def has_page_block_1060(self)-> bool: ...
    def has_page_block_1070(self)-> bool: ...
    def has_page_block_1080(self)-> bool: ...
    def has_page_block_1090(self)-> bool: ...
    def has_page_block_1100(self)-> bool: ...

    @property
    def senior(self)-> Webmod | None: ...
    def child_webmod(self, *names: str): ...

    @property
    def name(self)-> str: ...
    def is_name_serialized(self)-> bool: ...
    @property
    def net_name(self)-> str: ...
    @property
    def tree_names(self)-> list[str]: ...
    @property
    def fullname(self)-> str: ...

    def is_root(self)-> bool: ...

    @property
    def tree(self)-> list[Webmod]: ...

    @property
    def mod_path(self)-> ModPath: ...
    @property
    def mod_type(self)-> ModType | None: ...
    def is_mod_exists(self)-> bool: ...
    @property
    def cls_type(self)-> ClsType | None: ...
    def is_cls_exists(self)-> bool: ...
    def has_local_method(self, name)-> bool: ...
    @property
    def obj_type(self)-> ObjType | None: ...
    def is_object_instantiated(self)-> bool: ...

    @property
    def folder(self)-> Folder: ...
    def is_folder_exists(self)-> bool: ...
    def folder_child_file(self, name: str | list[str])-> File: ...
    def folder_child_folder(self, name: str | list[str])-> Folder: ...
    @property
    def data_folder(self)-> Folder: ...
    def data_folder_child_file(self, name: str | list[str])-> File: ...
    def data_folder_child_folder(self, name: str | list[str])-> Folder: ...
    @property
    def data_configs_folder(self)-> Folder: ...
    @property
    def data_configs_file(self)-> File: ...
    @property
    def data_settings_folder(self)-> Folder: ...
    @property
    def data_settings_file(self)-> File: ...
    @property
    def data_database_tables_folder(self)-> Folder: ...
    @property
    def data_database_data_folder(self)-> Folder: ...
    @property
    def data_multilinguals_folder(self)-> Folder: ...
    def data_multilinguals_file(self, language: str)-> File: ...
    @property
    def logs_folder(self)-> Folder: ...
    @property
    def public_folder(self)-> Folder: ...
    def public_folder_child_file(self, name: str | list[str])-> File: ...
    def public_folder_child_folder(self, name: str | list[str])-> Folder: ...

    @property
    def multilinguals(self)-> Multilinguals: ...
    @property
    def ___ml_by_webmod_name___(self)-> str: ...
    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: ...

    """@property
    def html_document(self)-> HtmlDocument: ..."""

    @property
    def htmdoc(self) -> Htmdoc: ...
    @property
    def page_areas(self)-> Areas: ...

    @property
    def page_area_content(self)-> Wrap: ...
    @property
    def page_area_navbar(self)-> Wrap: ...
    @property
    def page_area_breadcrumb(self)-> Wrap: ...
    @property
    def page_area_navigations(self)-> Wrap: ...
    @property
    def page_area_messages(self)-> Wrap: ...
    @property
    def page_area_footer(self)-> Wrap: ...
    @property
    def page_area_debugs(self)-> Wrap: ...

    def __execute__(self, name: str)-> bool: ...
    def execute_page_iterative(self)-> bool: ...
    def execute_page_content(self)-> bool: ...
    def execute_page_layout(self)-> bool: ...
    def execute_page_block_navbar(self)-> bool: ...
    def execute_page_block_breadcrumb(self)-> bool: ...
    def execute_page_block_navigations(self)-> bool: ...
    def execute_page_block_messages(self)-> bool: ...
    def execute_page_block_footer(self)-> bool: ...
    def execute_page_block_debugs(self)-> bool: ...
    def execute_page_block_1010(self)-> bool: ...
    def execute_page_block_1020(self)-> bool: ...
    def execute_page_block_1030(self)-> bool: ...
    def execute_page_block_1040(self)-> bool: ...
    def execute_page_block_1050(self)-> bool: ...
    def execute_page_block_1060(self)-> bool: ...
    def execute_page_block_1070(self)-> bool: ...
    def execute_page_block_1080(self)-> bool: ...
    def execute_page_block_1090(self)-> bool: ...
    def execute_page_block_1100(self)-> bool: ...

    def address(self, mode: str = None, arguments: dict[str,str] = None, keyword: str = None, page: int = None, orders: dict[str,str] = None, filters: dict[str,str] = None, items_per_page: int = None, pages_per_group: int = None, reference: str = None, language: str = None, security: str = None)-> Address: ...
    def url(self, mode: str = None, arguments: dict[str,str] = None, keyword: str = None, page: int = None, orders: dict[str,str] = None, filters: dict[str,str] = None, items_per_page: int = None, pages_per_group: int = None, reference: str = None, language: str = None, security: str = None)-> str: ...
    def redirect(self, mode: str = None, arguments: dict[str,str] = None, keyword: str = None, page: int = None, orders: dict[str,str] = None, filters: dict[str,str] = None, items_per_page: int = None, pages_per_group: int = None, reference: str = None, language: str = None, security: str = None): ...

    def page_address(self, arguments: dict[str,str] = None, keyword: str = None, page: int = None, orders: dict[str,str] = None, filters: dict[str,str] = None, items_per_page: int = None, pages_per_group: int = None, reference: str = None, language: str = None, security: str = None)-> Address: ...
    def page_url(self, arguments: dict[str,str] = None, keyword: str = None, page: int = None, orders: dict[str,str] = None, filters: dict[str,str] = None, items_per_page: int = None, pages_per_group: int = None, reference: str = None, language: str = None, security: str = None)-> str: ...
    def page_redirect(self, arguments: dict[str,str] = None, keyword: str = None, page: int = None, orders: dict[str,str] = None, filters: dict[str,str] = None, items_per_page: int = None, pages_per_group: int = None, reference: str = None, language: str = None, security: str = None): ...

    def address_by_current(self)-> Address: ...
    def url_by_current(self)-> str: ...
    def address_by_current_change_language(self, language=None)-> Address: ...
    def url_by_current_change_language(self, language=None)-> str: ...
    def address_by_current_change_pagination(self, keyword=None, page=None, orders=None, filters=None, items_per_page=None, pages_per_group=None)-> Address: ...
    def url_by_current_change_pagination(self, keyword=None, page=None, orders=None, filters=None, items_per_page=None, pages_per_group=None)-> str: ...

    def add_page_breadcrumb(self, title=None, url:str=None)-> None: ...
    def public_file_url(self, *names: str)-> str: ...
    @property
    def settings(self)-> Settings: ...
    def is_active_by_client(self)-> bool: ...