import { DomRangePoint } from './DomRangePoint';
/**
 * This construct enables a serializable representation of a DOM Range.
 *
 * In a DOM Range object, the startContainer + startOffset tuple represents the [start] boundary
 * point. Similarly, the the endContainer + endOffset tuple represents the [end] boundary point.
 * In both cases, the start/endContainer property is a pointer to either a DOM text node, or a DOM
 * element (this typically depends on the mechanism from which the DOM Range instance originates,
 * for example when obtaining the currently-selected document fragment using the `window.selection`
 * API). In the case of a DOM text node, the start/endOffset corresponds to a position within the
 * character data. In the case of a DOM element node, the start/endOffset corresponds to a position
 * that designates a child text node.
 *
 * Note that [end] field is optional. When only the start field is specified, the domRange object
 * represents a "collapsed" range that has identical [start] and [end] boundary points.
 *
 * https://github.com/readium/architecture/blob/master/models/locators/extensions/html.md#the-domrange-object
 *
 */
export declare class DomRange {
    /** A serializable representation of the "start" boundary point of the DOM Range. */
    start: DomRangePoint;
    /** A serializable representation of the "end" boundary point of the DOM Range. */
    end?: DomRangePoint;
    /**
     * Creates a [DomRange].
     */
    constructor(values: {
        start: DomRangePoint;
        end?: DomRangePoint;
    });
    /**
     * Parses a [DomRange] from its RWPM JSON representation.
     */
    static deserialize(json: any): DomRange | undefined;
    /**
     * Serializes a [DomRange] to its RWPM JSON representation.
     */
    serialize(): any;
}
