import { AbstractNode } from './abstract_node';
import { AbstractAttribute } from './abstract_attribute';
export declare abstract class AbstractElement extends AbstractNode {
    abstract localName(): string;
    abstract prefixedName(): string;
    name(): string;
    abstract namespaceUri(): string;
    abstract namespacePrefix(): string;
    children(): Wu.WuIterable<AbstractNode>;
    elementChildren(): Wu.WuIterable<AbstractElement>;
    abstract firstChild(): AbstractNode;
    firstElementChild(): AbstractElement;
    abstract child(index: number): AbstractNode;
    elementChild(index: number): AbstractElement;
    abstract lastChild(): AbstractNode;
    lastElementChild(): AbstractElement;
    rchildren(): Wu.WuIterable<AbstractNode>;
    countChildren(): number;
    countElementChildren(): number;
    clear(): void;
    prependChild(child: AbstractNode): AbstractNode;
    abstract appendChild(child: AbstractNode): AbstractNode;
    abstract hasAttributes(): boolean;
    abstract attributes(): AbstractAttribute[];
    abstract attributeNs(nsUri: string, localName: string): string;
    abstract attribute(name: string): string;
    abstract setAttribute(name: string, value: string | number): AbstractElement;
    abstract removeAttribute(name: string): any;
    abstract renameAttributeIfExists(nameOld: string, nameNew: string): any;
    attributeUp(name: string): string;
    setAttributes(keyvalue: Object): AbstractElement;
    attributesObj(): any;
    lang(): string;
    abstract buildNsMap(): {
        [prefix: string]: string;
    };
    unwrap(): AbstractElement;
    rewrap(replacement: AbstractElement): AbstractElement;
    abstract clone(): AbstractElement;
}
