import { Watcher, RawValue, DiffConsumer } from "./watcher"; import { Block } from "../runtime/runtime"; import { Program, LinearFlow, ReferenceContext, Reference, Value } from "../runtime/dsl2"; import "setimmediate"; export interface CompilationContext { variables: { [id: string]: { [id: string]: Reference; }; }; } export declare class CompilerWatcher extends Watcher { blocksToCompile: { [blockID: string]: boolean; }; blocksToRemove: { [blockID: string]: boolean; }; blocks: { [blockID: string]: Block; }; items: { [id: string]: any; }; watcherFunctions: { [name: string]: DiffConsumer; }; programToInjectInto: Program; queued: boolean; queue(blockID: string, isAdd?: boolean): void; runQueue: () => void; injectInto(prog: Program): void; registerWatcherFunction(name: string, consumer: DiffConsumer): void; inContext(flow: LinearFlow, func: () => void): void; compileValue: (compile: CompilationContext, context: ReferenceContext, value: RawValue | undefined) => Value | undefined; compileFlow(compile: CompilationContext, flow: LinearFlow, constraints: any[]): void; compileBlock(blockID: string): any; setup(): void; }