type t
= Dom.range
;
let make: unit => t;
let collapsed: t => bool;
let commonAncestorContainer: t => Dom.node;
let endContainer: t => Dom.node;
let endOffset: t => int;
let startContainer: t => Dom.node;
let startOffset: t => int;
let setStart: Dom.node_like('a) => int => t => unit;
let setEnd: Dom.node_like('a) => int => t => unit;
let setStartBefore: Dom.node_like('a) => t => unit;
let setStartAfter: Dom.node_like('a) => t => unit;
let setEndBefore: Dom.node_like('a) => t => unit;
let setEndAfter: Dom.node_like('a) => t => unit;
let selectNode: Dom.node_like('a) => t => unit;
let selectNodeContents: Dom.node_like('a) => t => unit;
let collapse: t => unit;
let collapseToStart: t => unit;
let cloneContents: t => Dom.documentFragment;
let deleteContents: t => unit;
let insertNode: Dom.node_like('a) => t => unit;
let surroundContents: Dom.node_like('a) => t => unit;
let compareBoundaryPoints: int => t => t => int;
let compareBoundaryPoint: Webapi__Dom__Types.compareHow => t => t => Webapi__Dom__Types.compareResult;
let cloneRange: t => t;
let detach: t => unit;
let toString: t => string;
let comparePoint: Dom.node_like('a) => int => t => int;
let comparePoint: Dom.node_like('a) => int => t => Webapi__Dom__Types.compareResult;
let createContextualFragment: string => t => Dom.documentFragment;
let getBoundingClientRect: t => Dom.domRect;
let getClientRects: t => array(Dom.domRect);
let intersectsNode: Dom.node_like('a) => t => bool;
let isPointInRange: Dom.node_like('a) => int => t => bool;