/** * The build inputs of a crate-built source, as one digest. * * A source whose files are prebuilt from a crate in this repository names that * crate (`build: { cargo: }`), and `telo release stage --pin` records what * built them (`build.inputs`): the committed files of the crate and of every * path crate it reaches transitively — through a path dependency or a `[patch]` * entry — the `Cargo.lock` packages those crates reach, the cargo configuration * and toolchain files that apply where the crate is built, and what the * workspace root's `Cargo.toml` passes down. A lock entry nothing here depends * on is not an input, so an unrelated crate's new dependency trips no source. * `telo release check` recomputes the same digest and fails when it moved, so a * module never ships binaries older than the code they were built from — and an * edit to a crate every controller depends on (the SDK, the controller ABI) * trips every source built on it. * * Files are what git tracks, read from the working tree: build output, ignored * files and a scratch file nobody added are not inputs, wherever they sit. * Cargo is never invoked, so the check needs no toolchain and builds nothing. */ import type { DiscoveredModule } from "./workspace.js"; /** * The digest of a crate's build inputs, `sha256-`: one line per input, * sorted — each tracked file of the crate and of every path crate it reaches * (workspace-root-relative path and content digest), each `Cargo.lock` package * those crates reach, each cargo configuration or toolchain file from the crate's * directory up to the repository root, and from the workspace root's * `Cargo.toml` the inherited `[workspace.dependencies]` entries plus `[patch]`, * `[replace]`, `[profile]` and `[workspace]`'s `resolver`, `package` and `lints`. */ export declare function crateInputsDigest(crateDir: string): Promise; /** A crate-built source whose recorded inputs no longer describe its crate. */ export interface CrateInputsFailure { readonly module: string; readonly source: string; readonly message: string; } /** Recompute every crate-built source's inputs across `modules` and report each * one that is unrecorded or has moved. */ export declare function checkCrateInputs(modules: readonly DiscoveredModule[]): Promise; //# sourceMappingURL=crate-inputs.d.ts.map