"""
This type stub file was generated by pyright.
"""

class VLibNode:
    """ base class for all virtual library nodes,
    defines minimal required interface

    """
    def __init__(self, *args, **kwargs) -> None:
        ...
    
    def __iter__(self): # -> VLibNode:
        """ part of the iterator interface """
        ...
    
    def next(self): # -> None:
        """ part of the iterator interface

          raises StopIteration on failure
        """
        ...
    
    def reset(self): # -> None:
        """ resets our iteration state

        """
        ...
    
    def AddChild(self, child, notify=...): # -> None:
        """

        >>> p1 = VLibNode()
        >>> p2 = VLibNode()
        >>> c1 = VLibNode()
        >>> p1.AddChild(c1)
        >>> len(c1.GetParents())
        1
        >>> len(p1.GetChildren())
        1
        >>> p2.AddChild(c1,notify=0)
        >>> len(c1.GetParents())
        1
        >>> len(p2.GetChildren())
        1
        >>> c1.AddParent(p2,notify=0)
        >>> len(c1.GetParents())
        2
        >>> len(p2.GetChildren())
        1

        """
        ...
    
    def RemoveChild(self, child, notify=...): # -> None:
        """
        >>> p1 = VLibNode()
        >>> c1 = VLibNode()
        >>> p1.AddChild(c1)
        >>> len(c1.GetParents())
        1
        >>> len(p1.GetChildren())
        1
        >>> p1.RemoveChild(c1)
        >>> len(c1.GetParents())
        0
        >>> len(p1.GetChildren())
        0
        """
        ...
    
    def GetChildren(self): # -> tuple[Unknown, ...]:
        ...
    
    def AddParent(self, parent, notify=...): # -> None:
        """
        >>> p1 = VLibNode()
        >>> p2 = VLibNode()
        >>> c1 = VLibNode()
        >>> c1.AddParent(p1)
        >>> len(c1.GetParents())
        1
        >>> len(p1.GetChildren())
        1
        >>> c1.AddParent(p2,notify=0)
        >>> len(c1.GetParents())
        2
        >>> len(p2.GetChildren())
        0
        >>> p2.AddChild(c1,notify=0)
        >>> len(c1.GetParents())
        2
        >>> len(p2.GetChildren())
        1
        """
        ...
    
    def RemoveParent(self, parent, notify=...): # -> None:
        """
        >>> p1 = VLibNode()
        >>> c1 = VLibNode()
        >>> p1.AddChild(c1)
        >>> len(c1.GetParents())
        1
        >>> len(p1.GetChildren())
        1
        >>> c1.RemoveParent(p1)
        >>> len(c1.GetParents())
        0
        >>> len(p1.GetChildren())
        0
        """
        ...
    
    def GetParents(self): # -> tuple[Unknown, ...]:
        ...
    
    def Destroy(self, notify=..., propagateDown=..., propagateUp=...): # -> None:
        """
        >>> p1 = VLibNode()
        >>> p2 = VLibNode()
        >>> c1 = VLibNode()
        >>> c2 = VLibNode()
        >>> p1.AddChild(c1)
        >>> p2.AddChild(c1)
        >>> p2.AddChild(c2)
        >>> len(c1.GetParents())
        2
        >>> len(c2.GetParents())
        1
        >>> len(p1.GetChildren())
        1
        >>> len(p2.GetChildren())
        2
        >>> c1.Destroy(propagateUp=True)
        >>> len(p2.GetChildren())
        0
        >>> len(c1.GetParents())
        0
        >>> len(c2.GetParents())
        0

        """
        ...
    


if __name__ == '__main__':
    ...
