from .__tags_creater__ import TagsCreater
from .configs import Configs
from .node import Node
from .nodes.comment import Comment
from .nodes.script import Script
from .nodes.tag import Tag
from .nodes.text import Text
from .nodes.wrap import Wrap
from .tags.html import Html
from .tags.link import Link
from ...types.he import He


class Htmdoc(He, TagsCreater):
    def __init__(self, u: He, configs:dict=None): ...
    @property
    def elements(self)-> dict[int, Node]: ...
    @property
    def configs(self)-> Configs: ...
    @property
    def root(self)-> Html: ...

    def comment(self, content: str = None)-> Comment: ...
    def script(self, content: str = None)-> Script: ...
    def text(self, content: str = None)-> Text: ...
    def wrap(self, content=None)-> Wrap: ...


    @staticmethod
    def ___auto_create_tag___(u, name:str, args:tuple|list, kwargs:dict)-> Tag: ...

    @property
    def ___output_next_break___(self)-> bool: ...
    @___output_next_break___.setter
    def ___output_next_break___(self, value)-> bool: ...

    def output(self)-> str: ...


    @property
    def ___css_links___(self)-> list[str]: ...
    @property
    def ___js_links___(self)-> list[str]: ...
    @property
    def ___css_scripts___(self)-> list[str]: ...
    @property
    def ___js_scripts___(self)-> list[str]: ...
    def add_css_link(self, url)-> None: ...
    def add_js_link(self, url)-> None: ...
    def add_css_code(self, code)-> None: ...
    def add_js_code(self, code)-> None: ...

    """def add_library_css_link(self, path)-> None: ...
    def add_library_js_link(self, path)-> None: ...

    def library_file_url(self, *names)-> str: ...
    def library_file(self, *names)-> str: ..."""

    def add_css_link_node(self, url: str)-> Link: ...
    def add_js_link_node(self, url: str)-> Script: ...
    def add_library_css_link_node(self, *names)-> str: ...
    def add_library_js_link_node(self, *names)-> str: ...
    def add_css_script_node(self, url: str)-> Link: ...
    def add_js_script_node(self, url: str)-> Script: ...
