import type { NobjcObject } from "objc-js";
import type { _NSArray } from "./NSArray.js";
import type { _NSCopying } from "./NSCopying.js";
import type { _NSDictionary } from "./NSDictionary.js";
import type { _NSObject } from "./NSObject.js";
import type { _NSString } from "./NSString.js";
import type { _NSXMLDocument } from "./NSXMLDocument.js";
import type { _NSXMLElement } from "./NSXMLElement.js";
import type { NSXMLNodeKind } from "./NSXMLNodeKind.js";
import type { NSXMLNodeOptions } from "./NSXMLNodeOptions.js";
export declare class _NSXMLNode extends _NSObject {
    static alloc(): _NSXMLNode;
    static new(): _NSXMLNode;
    /** @method document: @abstract Returns an empty document. */
    static document(): NobjcObject;
    /**
     * @method documentWithRootElement: @abstract Returns a document @param element The document's root node.
     */
    static documentWithRootElement$(element: _NSXMLElement): NobjcObject;
    /**
     * @method elementWithName: @abstract Returns an element <tt>&lt;name>&lt;/name></tt>.
     */
    static elementWithName$(name: _NSString): NobjcObject;
    /**
     * @method elementWithName:URI: @abstract Returns an element whose full QName is specified.
     */
    static elementWithName$URI$(name: _NSString, URI: _NSString): NobjcObject;
    /**
     * @method elementWithName:stringValue: @abstract Returns an element with a single text node child <tt>&lt;name>string&lt;/name></tt>.
     */
    static elementWithName$stringValue$(name: _NSString, string_: _NSString): NobjcObject;
    /**
     * @method elementWithName:children:attributes: @abstract Returns an element children and attributes <tt>&lt;name attr1="foo" attr2="bar">&lt;-- child1 -->child2&lt;/name></tt>.
     */
    static elementWithName$children$attributes$(name: _NSString, children: _NSArray | null, attributes: _NSArray | null): NobjcObject;
    /**
     * @method attributeWithName:stringValue: @abstract Returns an attribute <tt>name="stringValue"</tt>.
     */
    static attributeWithName$stringValue$(name: _NSString, stringValue: _NSString): NobjcObject;
    /**
     * @method attributeWithLocalName:URI:stringValue: @abstract Returns an attribute whose full QName is specified.
     */
    static attributeWithName$URI$stringValue$(name: _NSString, URI: _NSString, stringValue: _NSString): NobjcObject;
    /**
     * @method namespaceWithName:stringValue: @abstract Returns a namespace <tt>xmlns:name="stringValue"</tt>.
     */
    static namespaceWithName$stringValue$(name: _NSString, stringValue: _NSString): NobjcObject;
    /**
     * @method processingInstructionWithName:stringValue: @abstract Returns a processing instruction <tt>&lt;?name stringValue></tt>.
     */
    static processingInstructionWithName$stringValue$(name: _NSString, stringValue: _NSString): NobjcObject;
    /**
     * @method commentWithStringValue: @abstract Returns a comment <tt>&lt;--stringValue--></tt>.
     */
    static commentWithStringValue$(stringValue: _NSString): NobjcObject;
    /** @method textWithStringValue: @abstract Returns a text node. */
    static textWithStringValue$(stringValue: _NSString): NobjcObject;
    /**
     * @method DTDNodeWithXMLString: @abstract Returns an element, attribute, entity, or notation DTD node based on the full XML string.
     */
    static DTDNodeWithXMLString$(string_: _NSString): NobjcObject | null;
    /** @method localNameForName: @abstract Returns the local name bar in foo:bar. */
    static localNameForName$(name: _NSString): _NSString;
    /** @method localNameForName: @abstract Returns the prefix foo in the name foo:bar. */
    static prefixForName$(name: _NSString): _NSString | null;
    /**
     * @method predefinedNamespaceForPrefix: @abstract Returns the namespace belonging to one of the predefined namespaces xml, xs, or xsi
     */
    static predefinedNamespaceForPrefix$(name: _NSString): _NSXMLNode | null;
    init(): _NSXMLNode;
    /**
     * @method initWithKind: @abstract Invokes @link initWithKind:options: @/link with options set to NSXMLNodeOptionsNone
     */
    initWithKind$(kind: NSXMLNodeKind): _NSXMLNode;
    /** primitive */
    initWithKind$options$(kind: NSXMLNodeKind, options: NSXMLNodeOptions): _NSXMLNode;
    /** primitive */
    setStringValue$resolvingEntities$(string_: _NSString, resolve: boolean): void;
    /** primitive */
    childAtIndex$(index: number): _NSXMLNode | null;
    /** primitive */
    detach(): void;
    /**
     * @method XMLStringWithOptions: @abstract The representation of this node as it would appear in an XML document, with various output options available.
     */
    XMLStringWithOptions$(options: NSXMLNodeOptions): _NSString;
    /**
     * @method canonicalXMLStringPreservingComments: @abstract W3 canonical form (http://www.w3.org/TR/xml-c14n). The input option NSXMLNodePreserveWhitespace should be set for true canonical form.
     */
    canonicalXMLStringPreservingComments$(comments: boolean): _NSString;
    /**
     * @method nodesForXPath:error: @abstract Returns the nodes resulting from applying an XPath to this node using the node as the context item ("."). normalizeAdjacentTextNodesPreservingCDATA:NO should be called if there are adjacent text nodes since they are not allowed under the XPath/XQuery Data Model. @returns An array whose elements are a kind of NSXMLNode.
     */
    nodesForXPath$error$(xpath: _NSString, error: NobjcObject | null): _NSArray | null;
    /**
     * @method objectsForXQuery:constants:error: @abstract Returns the objects resulting from applying an XQuery to this node using the node as the context item ("."). Constants are a name-value dictionary for constants declared "external" in the query. normalizeAdjacentTextNodesPreservingCDATA:NO should be called if there are adjacent text nodes since they are not allowed under the XPath/XQuery Data Model. @returns An array whose elements are kinds of NSArray, NSData, NSDate, NSNumber, NSString, NSURL, or NSXMLNode.
     */
    objectsForXQuery$constants$error$(xquery: _NSString, constants: _NSDictionary | null, error: NobjcObject | null): _NSArray | null;
    objectsForXQuery$error$(xquery: _NSString, error: NobjcObject | null): _NSArray | null;
    /** primitive */
    kind(): NSXMLNodeKind;
    /** primitive */
    name(): _NSString | null;
    setName$(value: _NSString | null): void;
    /** primitive */
    objectValue(): NobjcObject | null;
    setObjectValue$(value: NobjcObject | null): void;
    /** primitive */
    stringValue(): _NSString | null;
    setStringValue$(value: _NSString | null): void;
    /** primitive */
    index(): number;
    /**
     * @abstract The depth of the node within the tree. Documents and standalone nodes are level 0.
     */
    level(): number;
    /** @abstract The encompassing document or nil. */
    rootDocument(): _NSXMLDocument | null;
    /** primitive */
    parent(): _NSXMLNode | null;
    /** primitive */
    childCount(): number;
    /** primitive */
    children(): _NSArray | null;
    /** @abstract Returns the previous sibling, or nil if there isn't one. */
    previousSibling(): _NSXMLNode | null;
    /** @abstract Returns the next sibling, or nil if there isn't one. */
    nextSibling(): _NSXMLNode | null;
    /**
     * @abstract Returns the previous node in document order. This can be used to walk the tree backwards.
     */
    previousNode(): _NSXMLNode | null;
    /**
     * @abstract Returns the next node in document order. This can be used to walk the tree forwards.
     */
    nextNode(): _NSXMLNode | null;
    /** @abstract Returns the XPath to this node, for example foo/bar[2]/baz. */
    XPath(): _NSString | null;
    /** primitive */
    localName(): _NSString | null;
    /** primitive */
    prefix(): _NSString | null;
    /** primitive */
    URI(): _NSString | null;
    setURI$(value: _NSString | null): void;
    /** @abstract Used for debugging. May give more information than XMLString. */
    description(): _NSString;
    /**
     * @abstract The representation of this node as it would appear in an XML document.
     */
    XMLString(): _NSString;
}
export interface _NSXMLNode extends _NSCopying {
}
