import "../_dnt.polyfills.js"; import { EventSource, Receipt, Timeline } from "./Timeline.js"; import { Trace } from "./Trace.js"; import * as _ from "./_empty.js"; export declare abstract class Runner { abstract order: number; abstract timeline: Timeline; _currentTrace?: Trace; protected abstract _prime(rune: Rune): Run; memo: Map<(runner: Runner) => Run, _.Run>; prime(rune: Rune): Run; getPrimed(rune: Rune): Run | undefined; onCleanup(run: Run): void; } declare const _T: unique symbol; declare const _U: unique symbol; export declare namespace Rune { type T = R extends { [_T]: infer T; } ? T : R; type U = R extends { [_U]: infer U; } ? U : never; export import ValueRune = _.ValueRune; export import ArrayRune = _.ArrayRune; export import FnRune = _.FnRune; } export interface Rune { [_T]: T; [_U]: U; } export declare class Rune { readonly _prime: (runner: Runner) => Run; private _; _trace: Trace; constructor(_prime: (runner: Runner) => Run); static new(ctor: new (runner: Runner, ...args: A) => Run, ...args: A): _.Rune; run(runner?: Runner): Promise; iter(runner?: Runner): AsyncGenerator, void, unknown>; static constant(value: T): _.ValueRune; static resolve(value: V): Rune.ValueRune, Rune.U>; static str(strings: TemplateStringsArray, ..._values: RunicArgs): _.ValueRune>; static tuple(runes: [...R]): Rune.ValueRune<{ [K in keyof R]: Rune.T; }, Rune.U>; static array(runes: RunicArgs): _.ArrayRune>; static fn(...[fn]: RunicArgs T]>): _.FnRune<(...args: A) => T, _.RunicArgs.U>; static object(runes: R): Rune.ValueRune<{ [K in keyof R]: Rune.T; }, Rune.U>; static captureUnhandled(sources: [...R], fn: (...runes: { [K in keyof R]: Rune.ValueRune, never>; }) => Rune): Rune.ValueRune | U2>; static asyncIter(fn: () => AsyncIterable): Rune.ValueRune; static _placeholder(): _.Rune; into>(ctor: new (_prime: (runner: Runner) => Run>, ...args: A) => C, ...args: A): C; as(this: R, _ctor: new (_prime: (runner: Runner) => Run, ...args: any) => R): R; unsafeAs(): Rune; pipe>(fn: (rune: this) => R): R; static pin(rune: Rune, pinned: Rune): Rune; } export declare abstract class Run { readonly runner: Runner; "": [T, U]; trace: Trace; order: number; timeline: Timeline; constructor(runner: Runner); dependencies: Run[]; use(rune: Rune): Run; useRun(run: Run): void; referenceCount: number; alive: boolean; reference(): void; _sources: Array<(runner: Runner) => Run>; dereference(cleanupBatches?: Run[][]): void; cleanup(): void; _currentTime: number; _currentPromise: Promise; _currentReceipt: Receipt; evaluate(time: number, receipt: Receipt): Promise; abstract _evaluate(time: number, receipt: Receipt): Promise; } export declare abstract class RunStream extends Run { initPromise: import("../deps/std/async.js").Deferred; valueQueue: [number, T][]; eventSource: EventSource; first: boolean; done: boolean; curIter: AbortController; lastValue: T; constructor(runner: Runner); _evaluate(time: number, receipt: Receipt): Promise; push(value: T): void; finish(): void; } export declare class Unhandled { readonly value: U; readonly trace: Trace; private _; constructor(value: U, trace: Trace); } export type RunicArgs = (never extends X ? never : X extends A ? X : never) | { [K in keyof A]: A[K] | Rune>; }; export declare namespace RunicArgs { type U = X extends unknown[] ? Rune.U : Rune.U; function resolve(args: RunicArgs): { [K in keyof A]: Rune.ValueRune>; }; } export {};