import { type RequestType } from './artifact-prerequisites.js'; import { type RequestTypeSource } from './request-artifact-metadata.js'; /** * The block, or `''` when this role has nothing gated to say under this type. * The empty string is the whole byte-identity contract: callers concatenate it, * and a role with no gated artifacts must add zero bytes to the prompt. */ export declare function buildArtifactContractBlock(input: { role: string; requestType: RequestType; requestTypeSource: RequestTypeSource; requestId: string; }): string; /** * Append the block unless the text already carries one. * * Idempotent for the same reason `ensureKarpathyBlock` is: a caller prompt can * already hold a copy — a re-dispatch, or a resume from a stored prompt — and * two sections can DISAGREE (the type may have been declared between the two * runs), so a reader cannot tell which contract is authoritative. The presence * test is the block's own heading, which nothing else emits. * * An empty block adds zero bytes even when the text already carries one, so an * unaffected dispatch stays byte-identical. */ export declare function ensureArtifactContractBlock(text: string, block: string): string; export type ArtifactTypeReading = { requestType: RequestType; requestTypeSource: RequestTypeSource; }; /** * The type recorded for `requestId`, read through the same reader the rest of * the CLI uses. Every request artifact of the id is a candidate because the * dispatched role's own file frequently does not exist yet at dispatch time — * a dated snapshot over the dispatch records of the 2026-10-12 session (77 of * them at the time of writing, a count the session is still growing): 18 had any * request artifact for the id on disk before the dispatch and 10 had one that * declared a type — while a sibling role may have recorded the type already. A * `default` result is a real answer — nothing declared it. */ export declare function readArtifactType(input: { projectRoot: string; sessionId: string; requestId: string; role: string; }): Promise; /** The composed block for a dispatch, reading the type from disk first. */ export declare function readArtifactContractBlock(input: { projectRoot: string; sessionId: string; requestId: string; role: string; }): Promise;