import { Effect, Exit, Scope } from "effect"; import type { Diagnostic } from "../codemode.js"; import { type AstNode, InterpreterRuntimeError, PromiseInstanceMethodReference, PromiseMethodReference } from "./model.js"; import { type CallbackRunner } from "./methods.js"; import { CodeModePromise } from "../values.js"; import type { SyncIteratorRunner } from "./iterator.js"; export declare class PromiseRuntime { private readonly scope; private readonly active; private readonly ids; private readonly observed; private readonly failures; private nextID; constructor(scope: Scope.Scope); create(effect: Effect.Effect): Effect.Effect; markObserved(promise: CodeModePromise): void; await(promise: CodeModePromise): Effect.Effect>; fork(effect: Effect.Effect): Effect.Effect; diagnostics(): Array; interrupt(): Effect.Effect>; } export declare const selfResolutionError: (node?: AstNode) => InterpreterRuntimeError; export declare const resolvePromiseValue: (runner: CallbackRunner, value: unknown, node: AstNode, own?: { promise?: CodeModePromise; }) => Effect.Effect; export declare const resolvePromise: (runner: CallbackRunner, promises: PromiseRuntime, value: unknown, node: AstNode) => Effect.Effect; export declare const invokePromiseMethod: (runner: CallbackRunner & SyncIteratorRunner, promises: PromiseRuntime, ref: PromiseMethodReference, args: Array, node: AstNode) => Effect.Effect; export declare const invokePromiseInstanceMethod: (runner: CallbackRunner, promises: PromiseRuntime, ref: PromiseInstanceMethodReference, args: Array, node: AstNode) => Effect.Effect; export declare const constructPromise: (runner: CallbackRunner, promises: PromiseRuntime, executor: unknown, node: AstNode) => Effect.Effect;