import { AClass, Class } from "../../src/util/Core"; import { List } from "../../src/BaseTypes"; import { DataValue, ExplValue } from "../../src/DataValue"; import { ValueDelta } from "../../src/Delta"; import { Expr } from "../../src/Expr"; import { Persistent, Value } from "../../src/Value"; import Def = Expr.Def; import Let = Expr.Let; import Prim = Expr.Prim; import RecDef = Expr.RecDef; export declare abstract class Cursor { abstract on: Value; abstract to(C: Class, k: keyof T): this; abstract at(C: AClass, f: (o: T) => void): Cursor; notAnnotated(): this; assert(C: AClass, pred: (v: T) => boolean): Cursor; αset(): this; αclear(): this; setα(): this; clearα(): this; treeNodeValue(): this; nth(n: number): this; } export declare class ExplValueCursor extends Cursor { ancestors: ExplValue[]; readonly tv: ExplValue; constructor(ancestors: ExplValue[], tv: ExplValue); static descendant(prev: ExplValueCursor | null, tv: ExplValue): ExplValueCursor; static parent(child: ExplValueCursor): ExplValueCursor; readonly on: Value; to(C: Class, k: keyof T): this; toChild(n: number): ExplValueCursor; toChildOffset(tv: ExplValue, offset: number): ExplValueCursor; nextSibling(): ExplValueCursor; prevSibling(): ExplValueCursor; hasParent(): boolean; up(): ExplValueCursor; toBinaryArg1(opName: string): ExplValueCursor; toBinaryArg2(opName: string): ExplValueCursor; at(C: AClass, f: (o: T) => void): this; isChanged(s_ẟ: ValueDelta): ExplValueCursor; isUnchanged(): ExplValueCursor; isNew(): ExplValueCursor; toTerminal(): ExplValueCursor; } export declare class ExprCursor extends Cursor { readonly v: Value; constructor(v: Value); readonly on: Value; to(C: Class, prop: keyof T): this; constr_to(C: Class, prop: keyof T): ExprCursor; toCase(C: Class): ExprCursor; static defs(defs: List): Map; toDef(x: string): ExprCursor; at(C: AClass, f: (o: T) => void): ExprCursor; var_(x: string): this; setNum(n: number): ExprCursor; setStr(str_: string): ExprCursor; constr_splice(C: Class, props: (keyof T)[], makeNode: (e̅: Expr[]) => Expr[]): ExprCursor; splice(C: Class, props: (keyof T)[], makeNode: (v̅: Persistent[]) => Persistent[]): ExprCursor; }