import { Tag } from "."; import * as IR from "../ir"; import { Activation, ActivationLocation, Continuation, CrochetActivation, CrochetModule, CrochetValue, Environment, NativeActivation, State, Universe } from "./intrinsics"; export declare enum RunResultTag { DONE = 0, AWAIT = 1 } export declare class RunResultDone { readonly value: CrochetValue; readonly tag = RunResultTag.DONE; constructor(value: CrochetValue); } export declare class RunResultAwait { readonly promise: Promise; readonly tag = RunResultTag.AWAIT; constructor(promise: Promise); } export declare enum SignalTag { RETURN = 0, JUMP = 1, CONTINUE = 2, SET_STATE = 3, AWAIT = 4 } export declare type Signal = ReturnSignal | JumpSignal | ContinueSignal | SetStateSignal | AwaitSignal; export declare class ReturnSignal { readonly value: CrochetValue; readonly tag = SignalTag.RETURN; constructor(value: CrochetValue); } export declare class JumpSignal { readonly activation: Activation; readonly tag = SignalTag.JUMP; constructor(activation: Activation); } export declare class ContinueSignal { readonly tag = SignalTag.CONTINUE; } export declare class SetStateSignal { readonly state: State; readonly tag = SignalTag.SET_STATE; constructor(state: State); } export declare class AwaitSignal { readonly promise: Promise; readonly tag = SignalTag.AWAIT; constructor(promise: Promise); } export declare class Thread { private state; constructor(state: State); static run_sync(universe: Universe, module: CrochetModule, block: IR.BasicBlock): CrochetValue; run_to_completion(): Promise; run_synchronous(): CrochetValue; run_with_input(input: CrochetValue): RunResultDone | RunResultAwait; run(initial_signal?: Signal): RunResultDone | RunResultAwait; step(): Signal; apply_continuation(value: CrochetValue, k: Continuation, activation: Activation): Signal; do_return(value: CrochetValue, activation: Activation | null): Signal; find_crochet_location(start_activation: Activation): ActivationLocation | null; step_native(activation: NativeActivation, input: CrochetValue): Signal; step_crochet(activation: CrochetActivation): Signal; get universe(): Universe; get module(): CrochetModule; get env(): Environment; get_self(meta: IR.Metadata | null): CrochetValue; lookup(name: string, meta: IR.Metadata | null): CrochetValue; lookup_global(name: string, meta: IR.Metadata | null): CrochetValue; define(name: string, value: CrochetValue, meta: IR.Metadata | null): void; pop(activation: CrochetActivation): CrochetValue; pop_many(activation: CrochetActivation, size: number): any[]; push(activation: CrochetActivation, value: CrochetValue): void; }