import { type RequestType } from './artifact-prerequisites.js'; import { type RequestArtifactState } from './request-artifact-state-helpers.js'; import type { RequestArtifactRole } from './artifact-templates.js'; export type DemandRow = { role: RequestArtifactRole; state: RequestArtifactState; /** The table's own `relativePath` values, `` still unsubstituted. */ paths: ReadonlyArray; }; /** * Every row of `requestType`'s table that demands at least one artifact, in role * then state declaration order. This is the answer to "which prerequisite table * is being applied" that does not require opening `artifact-prerequisites.ts`. */ export declare function demandRows(requestType: RequestType): DemandRow[]; export type DemandDelta = { /** Demanded by `to` and not by `from`. */ added: string[]; /** Demanded by `from` and not by `to`. */ removed: string[]; }; /** The artifacts a type change starts demanding, and stops demanding. */ export declare function demandDelta(from: RequestType, to: RequestType): DemandDelta; /** * The artifacts `requestType` demands that are not on disk right now. * * Deliberately NOT restricted to the paths a retag just added. A request that * recorded no type and is retagged to the effective type it already had — the * commonest retag there is — changes nothing in the demand set, so a delta-only * answer would be empty on exactly the input this check exists for. * * Answered with `checkPrerequisites` — the same resolver the transition gate * runs — rather than a second path probe, so a retag cannot report a file * present that the next transition would refuse. The rows also carry a * declaration check against the PRD capsule; the result is filtered to the * table's own paths, because that failure is not the type's. `emitEvents: false` * because nothing transitions here. */ export declare function unsatisfiedDemand(options: { projectRoot: string; sessionId: string; requestId: string; requestType: RequestType; }): Promise;