import { AbstractDocument } from './abstract_document';
import { AbstractElement } from './abstract_element';
import { AbstractAttribute } from './abstract_attribute';
export declare type XmlapiXpathResult = boolean | number | string | AbstractNode | Wu.WuIterable<AbstractNode | AbstractAttribute>;
export declare abstract class AbstractNode {
    abstract document(): AbstractDocument;
    abstract text(value?: string): string;
    abstract type(): 'element' | 'text' | 'cdata' | 'comment';
    isElement(): boolean;
    isText(): boolean;
    isCdata(): boolean;
    isComment(): boolean;
    isRoot(): boolean;
    lang(): string;
    abstract parent(): AbstractElement;
    ancestors(): Wu.WuIterable<AbstractElement>;
    abstract previousSibling(): AbstractNode;
    previousSiblings(): Wu.WuIterable<AbstractNode>;
    previousElementSiblings(): any;
    previousElementSibling(): any;
    abstract nextSibling(): AbstractNode;
    nextSiblings(): Wu.WuIterable<AbstractNode>;
    nextElementSiblings(): any;
    nextElementSibling(): any;
    /** Document order */
    next(): AbstractNode;
    abstract remove(): AbstractNode;
    abstract replace(replacement: AbstractNode): any;
    abstract insertBefore(newNode: AbstractNode): any;
    abstract insertAfter(newNode: AbstractNode): any;
    abstract evaluate(xpath: string, nsMap?: Object): XmlapiXpathResult;
    abstract evaluateNode(xpath: string, nsMap?: Object): AbstractNode;
    abstract evaluateNodes(xpath: string, nsMap?: Object): Wu.WuIterable<AbstractNode>;
    abstract evaluateElement(xpath: string, nsMap?: Object): AbstractElement;
    abstract evaluateElements(xpath: string, nsMap?: Object): Wu.WuIterable<AbstractElement>;
    abstract evaluateAttribute(xpath: string, nsMap?: Object): AbstractAttribute;
    abstract evaluateAttributes(xpath: string, nsMap?: Object): Wu.WuIterable<AbstractAttribute>;
    evaluateBoolean(xpath: string, nsMap?: Object): boolean;
    evaluateNumber(xpath: string, nsMap?: Object): number;
    evaluateString(xpath: string, nsMap?: Object): string;
    abstract isSame(other: AbstractNode): boolean;
    abstract serialize(): string;
    abstract clone(): AbstractNode;
    asElement(): AbstractElement;
    _ancestors(): IterableIterator<AbstractElement>;
    _previousSiblings(): IterableIterator<AbstractNode>;
    _nextSiblings(): IterableIterator<AbstractNode>;
}
