import { Declaration } from "../ir"; import { Database } from "../logic"; import { CrochetType, CrochetValue, CrochetProcedure, NativeProcedure, Procedure, ProcedureBranch } from "../primitives"; import { Machine, Tracer } from "../vm"; import { ConcreteContext, ContextBag } from "../simulation"; import { ForeignInterface } from "./foreign"; import { Scene } from "./scene"; import { Bag } from "../../utils/bag"; import { Environment } from "../vm/environment"; import { XorShift } from "../../utils"; import { RestrictedCrochetPackage } from "../pkg"; import { CrochetTest } from "./test"; export declare class ProcedureBag { private map; add_foreign(name: string, types: CrochetType[], code: NativeProcedure, override: boolean): void; add_crochet(name: string, types: CrochetType[], code: CrochetProcedure, override: boolean): void; has(name: string): boolean; try_lookup(name: string): Procedure | null; lookup(name: string): Procedure; select_matching(type: CrochetType): Generator<[Procedure, ProcedureBranch[]]>; } export declare class World { private queue; readonly database: Database; readonly procedures: ProcedureBag; readonly types: Bag; readonly globals: Bag; readonly scenes: Bag; readonly contexts: ContextBag; readonly global_context: ConcreteContext; readonly ffi: ForeignInterface; readonly global_random: XorShift; readonly tests: CrochetTest[]; readonly tracer: Tracer; schedule(machine: Machine): void; get all_contexts(): ConcreteContext[]; load_declarations(filename: string, xs: Declaration[], env: Environment, pkg: RestrictedCrochetPackage): Promise; run_init(): Promise; run(entry: string): Promise; get grouped_tests(): Map>; }