import { type ExactSourceState } from './repository-state.js'; export interface DeclaredBuildInput { name: string; /** Repository-relative declaration; it may name an ignored generated input. */ path: string; digest: string; bytes: number; } export interface DeclaredToolchain { name: string; version: string; /** Digest of the executable, image, lock, or immutable toolchain manifest. */ digest: string; } export interface BuildInputDeclaration { name: string; path: string; } export interface ToolchainDeclaration { name: string; version: string; /** Local executable or immutable manifest to hash; not embedded in evidence. */ path: string; } export interface BuildEvidence { contractVersion: 1; assurance: 'declared-unsigned'; sourceStateId: string; buildInputs: readonly DeclaredBuildInput[]; toolchains: readonly DeclaredToolchain[]; evidenceDigest: string; } /** * Bind explicitly declared non-Git inputs and toolchains to one Git-visible * source state. This does not claim completeness; policy decides which * declarations are required for a release profile. */ export declare function createBuildEvidence(sourceState: ExactSourceState, buildInputs: readonly DeclaredBuildInput[], toolchains: readonly DeclaredToolchain[]): BuildEvidence; /** * Recompute declared evidence from local bytes. It does not prove the * declaration set is complete and does not sign or authorize a release. */ export declare function captureBuildEvidence(repoPath: string, sourceState: ExactSourceState, buildInputs: readonly BuildInputDeclaration[], toolchains: readonly ToolchainDeclaration[]): BuildEvidence; export declare function recomputeBuildEvidence(repoPath: string, expected: BuildEvidence, toolchains: readonly ToolchainDeclaration[]): BuildEvidence; export declare function buildEvidenceMatches(expected: BuildEvidence, actual: BuildEvidence): boolean; //# sourceMappingURL=build-evidence.d.ts.map