import { type SliceDag } from './slice-dag-types.js'; /** * Validate a SliceDag. Throws `InvalidSliceDagError` on the first violation. * Pure. Cheap. No I/O. */ export declare function validateDag(dag: SliceDag): void; /** * Compute topological levels. Each level is an array of node IDs that can * run in parallel. Throws `SliceDagCycleError` on cycle (defensive; * `validateDag` should have caught it). * * Algorithm: Kahn's algorithm. O(V + E). */ export declare function topologicalLevels(dag: SliceDag): readonly (readonly string[])[]; /** * Return the next set of node IDs that are ready to run given the set of * completed node IDs. A node is ready when all of its `from` predecessors * are in `completed`. */ export declare function sliceReadyToRun(dag: SliceDag, completed: ReadonlySet): readonly string[]; /** * Serialize the DAG into a deterministic JSON string. Node IDs are sorted; * edges are sorted by `(from, to)`. The result is suitable for SHA-256 * hashing and for byte-stable diffs. */ export declare function serializeDag(dag: SliceDag): string; /** SHA-256 hash of the serialized DAG. Stable across runs. */ export declare function hashDag(dag: SliceDag): string; export { DEFAULT_MAX_CONCURRENCY, DEFAULT_WAVE_OPTIONS, isSliceComplexity, InvalidSliceDagError, SLICE_COMPLEXITIES, SliceDagCycleError } from './slice-dag-types.js'; export type { DependsOn, SliceComplexity, SliceDag, SliceNode, Wave, WaveArtifact, WaveOptions } from './slice-dag-types.js';