/** What kind of field a path in a checkpoint's JSON names. Data is what * an edit may change. Control is what moves the program counter or * rewrites what the tool loop believes it has done. Identity is what * names the checkpoint, its code, and its threads. The frame's scope * name is needed because the tool loop keeps its bookkeeping in locals * under names a user's function may use for values. */ export type FieldKind = "data" | "control" | "identity"; /** The kind of the field at `path`, in a frame of `scopeName` when the * path runs through a frame. A program's own variable is data whatever * it is called: the leaf-name rules (`id`, `step`) apply only outside * a frame's variables and a module's globals, so a function with * `let id = …` or a loop counter named `step` can still be set. The * one exception is the loop frame, whose locals are the runtime's. */ export declare function fieldKind(path: string[], scopeName: string | null): FieldKind;