import type { NobjcObject } from "objc-js";
import type { _NSArray } from "./NSArray.js";
import type { _NSDictionary } from "./NSDictionary.js";
import type { _NSString } from "./NSString.js";
import type { _NSXMLNode } from "./NSXMLNode.js";
import type { NSXMLNodeKind } from "./NSXMLNodeKind.js";
import type { NSXMLNodeOptions } from "./NSXMLNodeOptions.js";
export declare class _NSXMLElement extends _NSXMLNode {
    static alloc(): _NSXMLElement;
    static new(): _NSXMLElement;
    init(): _NSXMLElement;
    /**
     * @method initWithName: @abstract Returns an element <tt>&lt;name>&lt;/name></tt>.
     */
    initWithName$(name: _NSString): _NSXMLElement;
    /** primitive */
    initWithName$URI$(name: _NSString, URI: _NSString | null): _NSXMLElement;
    /**
     * @method initWithName:stringValue: @abstract Returns an element with a single text node child <tt>&lt;name>string&lt;/name></tt>.
     */
    initWithName$stringValue$(name: _NSString, string_: _NSString | null): _NSXMLElement;
    /**
     * @method initWithXMLString:error: @abstract Returns an element created from a string. Parse errors are collected in <tt>error</tt>.
     */
    initWithXMLString$error$(string_: _NSString, error: NobjcObject | null): _NSXMLElement | null;
    initWithKind$options$(kind: NSXMLNodeKind, options: NSXMLNodeOptions): _NSXMLElement;
    /**
     * @method elementsForName: @abstract Returns all of the child elements that match this name.
     */
    elementsForName$(name: _NSString): _NSArray;
    /**
     * @method elementsForLocalName:URI @abstract Returns all of the child elements that match this localname URI pair.
     */
    elementsForLocalName$URI$(localName: _NSString, URI: _NSString | null): _NSArray;
    /** primitive */
    addAttribute$(attribute: _NSXMLNode): void;
    /** primitive */
    removeAttributeForName$(name: _NSString): void;
    /**
     * @method setAttributesWithDictionary: @abstract Set the attributes based on a name-value dictionary.
     */
    setAttributesWithDictionary$(attributes: _NSDictionary): void;
    /** @method attributeForName: @abstract Returns an attribute matching this name. */
    attributeForName$(name: _NSString): _NSXMLNode | null;
    /** primitive */
    attributeForLocalName$URI$(localName: _NSString, URI: _NSString | null): _NSXMLNode | null;
    /** primitive */
    addNamespace$(aNamespace: _NSXMLNode): void;
    /** primitive */
    removeNamespaceForPrefix$(name: _NSString): void;
    /**
     * @method namespaceForPrefix: @abstract Returns the namespace matching this prefix.
     */
    namespaceForPrefix$(name: _NSString): _NSXMLNode | null;
    /**
     * @method resolveNamespaceForName: @abstract Returns the namespace who matches the prefix of the name given. Looks in the entire namespace chain.
     */
    resolveNamespaceForName$(name: _NSString): _NSXMLNode | null;
    /**
     * @method resolvePrefixForNamespaceURI: @abstract Returns the URI of this prefix. Looks in the entire namespace chain.
     */
    resolvePrefixForNamespaceURI$(namespaceURI: _NSString): _NSString | null;
    /** primitive */
    insertChild$atIndex$(child: _NSXMLNode, index: number): void;
    /**
     * @method insertChildren:atIndex: @abstract Insert several children at a particular index.
     */
    insertChildren$atIndex$(children: _NSArray, index: number): void;
    /** primitive */
    removeChildAtIndex$(index: number): void;
    /** primitive */
    setChildren$(children: _NSArray | null): void;
    /** @method addChild: @abstract Adds a child to the end of the existing children. */
    addChild$(child: _NSXMLNode): void;
    /**
     * @method replaceChildAtIndex:withNode: @abstract Replaces a child at a particular index with another child.
     */
    replaceChildAtIndex$withNode$(index: number, node: _NSXMLNode): void;
    /**
     * @method normalizeAdjacentTextNodesPreservingCDATA: @abstract Adjacent text nodes are coalesced. If the node's value is the empty string, it is removed. This should be called with a value of NO before using XQuery or XPath.
     */
    normalizeAdjacentTextNodesPreservingCDATA$(preserve: boolean): void;
    /**
     * @method setAttributesAsDictionary: @abstract Set the attributes base on a name-value dictionary. @discussion This method is deprecated and does not function correctly. Use -setAttributesWithDictionary: instead.
     * @deprecated setAttributesWithDictionary:
     */
    setAttributesAsDictionary$(attributes: _NSDictionary): void;
    /**
     * @abstract Set the attributes. In the case of duplicate names, the first attribute with the name is used.
     */
    attributes(): _NSArray | null;
    setAttributes$(value: _NSArray | null): void;
    /** primitive */
    namespaces(): _NSArray | null;
    setNamespaces$(value: _NSArray | null): void;
}
