import { AnyAtomInstance, AtomGetters } from '../types/index.js'; import { StackItem } from '../utils/index.js'; import { Ecosystem } from './Ecosystem.js'; import { SelectorCache } from './Selectors.js'; /** * A stack of AtomInstances and AtomSelectors that are currently evaluating - * innermost instance/selector (the one that's actually currently evaluating) at * the end of the array. * * This has to live in the module scope so `readInstance` can access it without * any ecosystem context. That's how injectors work. */ export declare let stack: StackItem[]; export declare const readInstance: () => AnyAtomInstance<"any">; export declare const setStack: (newStack: StackItem[]) => StackItem[]; export declare class EvaluationStack { private readonly ecosystem; atomGetters: AtomGetters; constructor(ecosystem: Ecosystem); finish(): void; read(): StackItem | undefined; start(node: AnyAtomInstance | SelectorCache): void; }