declare module 'web-tree-sitter' { class Parser { static init(): Promise; delete(): void; parse(input: string | Parser.Input, previousTree?: Parser.Tree, options?: Parser.Options): Parser.Tree; getLanguage(): any; setLanguage(language: any): void; getLogger(): Parser.Logger; setLogger(logFunc: Parser.Logger): void; } namespace Parser { export type Options = { includedRanges?: Range[]; }; export type Point = { row: number; column: number; }; export type Range = { startPosition: Point; endPosition: Point; startIndex: number; endIndex: number; }; export type Edit = { startIndex: number; oldEndIndex: number; newEndIndex: number; startPosition: Point; oldEndPosition: Point; newEndPosition: Point; }; export type Logger = ( message: string, params: {[param: string]: string}, type: "parse" | "lex" ) => void; export type Input = ( startIndex: number, startPoint?: Point, endIndex?: number, ) => string | null; export interface SyntaxNode { tree: Tree; type: string; isNamed: boolean; text: string; startPosition: Point; endPosition: Point; startIndex: number; endIndex: number; parent: SyntaxNode | null; children: Array; namedChildren: Array; childCount: number; namedChildCount: number; firstChild: SyntaxNode | null; firstNamedChild: SyntaxNode | null; lastChild: SyntaxNode | null; lastNamedChild: SyntaxNode | null; nextSibling: SyntaxNode | null; nextNamedSibling: SyntaxNode | null; previousSibling: SyntaxNode | null; previousNamedSibling: SyntaxNode | null; hasChanges(): boolean; hasError(): boolean; equals(other: SyntaxNode): boolean; isMissing(): boolean; toString(): string; child(index: number): SyntaxNode | null; namedChild(index: number): SyntaxNode | null; childForFieldId(fieldId: number): SyntaxNode | null; childForFieldName(fieldName: string): SyntaxNode | null; descendantForIndex(index: number): SyntaxNode; descendantForIndex(startIndex: number, endIndex: number): SyntaxNode; descendantsOfType(type: string | Array, startPosition?: Point, endPosition?: Point): Array; namedDescendantForIndex(index: number): SyntaxNode; namedDescendantForIndex(startIndex: number, endIndex: number): SyntaxNode; descendantForPosition(position: Point): SyntaxNode; descendantForPosition(startPosition: Point, endPosition: Point): SyntaxNode; namedDescendantForPosition(position: Point): SyntaxNode; namedDescendantForPosition(startPosition: Point, endPosition: Point): SyntaxNode; walk(): TreeCursor; } export interface TreeCursor { nodeType: string; nodeText: string; nodeIsNamed: boolean; startPosition: Point; endPosition: Point; startIndex: number; endIndex: number; reset(node: SyntaxNode): void; delete(): void; currentNode(): SyntaxNode; currentFieldId(): number; currentFieldName(): string; gotoParent(): boolean; gotoFirstChild(): boolean; gotoFirstChildForIndex(index: number): boolean; gotoNextSibling(): boolean; } export interface Tree { readonly rootNode: SyntaxNode; copy(): Tree; delete(): void; edit(delta: Edit): Tree; walk(): TreeCursor; getChangedRanges(other: Tree): Range[]; getEditedRange(other: Tree): Range; getLanguage(): any; } class Language { static load(path: string): Promise; readonly version: number; readonly fieldCount: number; fieldNameForId(fieldId: number): string | null fieldIdForName(fieldName: string): number | null } } export = Parser }