/** No scope on this path installs a known trivia — the lattice's top element. */ export declare const TRI_UNKNOWN = -2; /** `ctx.trivia === undefined` is guaranteed here. */ export declare const TRI_NONE = -1; /** Any value `>= 0` is a trivia slot index, guaranteed installed here. */ /** `ctx.captureTrivia` is not known at this site. */ export declare const CAP_UNKNOWN = 0; /** `ctx.captureTrivia` is guaranteed NOT `true` here. */ export declare const CAP_OFF = 1; /** `ctx.captureTrivia === true` is guaranteed here. */ export declare const CAP_ON = 2; /** Buffer raw-entry mode is not provable at this site. */ export declare const RAW_UNKNOWN = 0; /** Buffer retains raw entry values. */ export declare const RAW_CAPTURE = 1; /** Buffer retains only a raw source-order count. */ export declare const RAW_OMIT = 2; export type SiteLabel = { /** `TRI_UNKNOWN`, `TRI_NONE`, or the trivia slot the enclosing scope installed. */ readonly tri: number; /** * `ctx._cstBuf !== undefined` is GUARANTEED. False means unknown — see the * asymmetry note in this file's header. Never read as "guaranteed absent". */ readonly buf: boolean; /** `RAW_UNKNOWN` / `RAW_CAPTURE` / `RAW_OMIT`. */ readonly raw: number; /** `CAP_UNKNOWN` / `CAP_OFF` / `CAP_ON`. */ readonly cap: number; }; /** The lattice's top: every entry point starts here. */ export declare const TOP: SiteLabel; /** * The sites reachable from `roots` THROUGH THE SHARED EDGE TABLE. * * Not `inspect.ts`'s `reachableIps`: that one walks a whole program from its rule * entries, and the emitter's question is about the set IT will lower — the rule * entries plus the scan pool's `extraIps`. Different ROOTS, same EDGES, and the * edges now live in `child-slots.ts` so the two answers cannot drift when an * opcode is added to one and not the other. That drift is the failure this file's * header used to warn about while guarding only against it happening within this * file; the copy it warned about was in `inspect.ts` the whole time. * * `childSlots`'s false return (an opcode it does not know) is ignored here: the * site resolves to `TOP` through `labelAt`, and the enclosing assembly is * unemittable regardless. */ export declare function reachableSites(code: Int32Array, roots: Iterable): Set; /** A site's label, or `TOP` for anything the walk did not reach. */ export type SiteLabels = { at: (ip: number) => SiteLabel; }; /** * Compute a label for every site reachable from `roots`. * * A worklist to a fixpoint, because the program has cycles (a recursive rule is * a back-edge into a site already in flight) and because a site shared by two * parents must carry the MEET of what both hand it — a downward pass that simply * overwrote would give a shared site whichever parent it happened to visit last, * and the emitted body for that site is ONE body serving both. * * The meet only ever moves a label toward `TOP`, and `TOP` is absorbing, so the * lattice has height three and the walk terminates. */ export declare function computeSiteLabels(code: Int32Array, roots: Iterable, hostCst: boolean): SiteLabels; //# sourceMappingURL=site-labels.d.ts.map