export type CandidateChangeKind = "add" | "modify" | "delete";
export interface CandidatePathChange {
    readonly path: string;
    readonly kind: CandidateChangeKind;
}
export interface CandidateManifest {
    readonly treeDigest: string;
    readonly patchDigest: string;
    readonly changedPaths: readonly string[];
    readonly changes: readonly CandidatePathChange[];
}
export declare class InvalidCandidateManifestError extends Error {
    constructor(message: string);
}
export declare function createCandidateManifest(input: CandidateManifest): CandidateManifest;
export declare function candidateManifestEquals(left: CandidateManifest, right: CandidateManifest): boolean;
export declare function assertCandidateIdentity(candidateDigest: string, manifest: CandidateManifest): void;
export declare function assertCandidateIdentityImmutable(previousDigest: string, previousManifest: CandidateManifest, nextDigest: string, nextManifest: CandidateManifest): void;
//# sourceMappingURL=candidate.d.ts.map