/**
* 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