import HTMLCollection from '../element/HTMLCollection.js';
import Element from '../element/Element.js';
import Node from '../node/Node.js';
import NodeList from '../node/NodeList.js';
import IHTMLElementTagNameMap from '../../config/IHTMLElementTagNameMap.js';
import ISVGElementTagNameMap from '../../config/ISVGElementTagNameMap.js';
export default interface IParentNode extends Node {
readonly childElementCount: number;
readonly firstElementChild: Element;
readonly lastElementChild: Element;
readonly children: HTMLCollection;
/**
* Inserts a set of Node objects or DOMString objects after the last child of the ParentNode. DOMString objects are inserted as equivalent Text nodes.
*
* @param nodes List of Node or DOMString.
*/
append(...nodes: (Node | string)[]): void;
/**
* Inserts a set of Node objects or DOMString objects before the first child of the ParentNode. DOMString objects are inserted as equivalent Text nodes.
*
* @param nodes List of Node or DOMString.
*/
prepend(...nodes: (Node | string)[]): void;
/**
* Query CSS Selector to find matching node.
*
* @param selector CSS selector.
* @returns Matching element.
*/
querySelector(
selector: K
): IHTMLElementTagNameMap[K] | null;
querySelector(
selector: K
): ISVGElementTagNameMap[K] | null;
querySelector(selector: string): Element | null;
/**
* Query CSS selector to find matching nodes.
*
* @param selector CSS selector.
* @returns Matching elements.
*/
querySelectorAll(
selector: K
): NodeList;
querySelectorAll(
selector: K
): NodeList;
querySelectorAll(selector: string): NodeList;
/**
* Query CSS selector to find matching nodes.
*
* @param selector CSS selector.
* @returns Matching elements.
*/
querySelectorAll(selector: string): NodeList;
/**
* Returns an elements by class name.
*
* @param className Tag name.
* @returns Matching element.
*/
getElementsByClassName(className: string): HTMLCollection;
/**
* Returns an elements by tag name.
*
* @param tagName Tag name.
* @returns Matching element.
*/
getElementsByTagName(
tagName: K
): HTMLCollection;
getElementsByTagName(
tagName: K
): HTMLCollection;
getElementsByTagName(tagName: string): HTMLCollection;
/**
* Returns an elements by tag name and namespace.
*
* @param namespaceURI Namespace URI.
* @param tagName Tag name.
* @returns Matching element.
*/
getElementsByTagNameNS(
namespaceURI: 'http://www.w3.org/1999/xhtml',
tagName: K
): HTMLCollection;
getElementsByTagNameNS(
namespaceURI: 'http://www.w3.org/2000/svg',
tagName: K
): HTMLCollection;
getElementsByTagNameNS(namespaceURI: string, tagName: string): HTMLCollection;
/**
* Replaces the existing children of a node with a specified new set of children.
*
* @param nodes List of Node or DOMString.
*/
replaceChildren(...nodes: (Node | string)[]): void;
}