/// /// export declare const UNSIGNED = ""; export type Revocation = { identity: string; ip: string; revokedAt: string; revokedBy: string; }; /** The revocation freezing an identity - a key fingerprint or a machine id - or nothing if it is not frozen. The one meaning of "frozen", used both when stripping repo content and when explaining why, and it hands back the revocation rather than a bare yes so that whoever has to explain it can say which address it was, and when, instead of "an unapproved address". */ export declare function identityFrozenBy(identity: string): { revocationId: string; identity: string; ip: string; revokedAt: string; revokedBy: string; } | undefined; /** Every revocation this process has absorbed, and whether an unrevoke has since forgiven it. For anything showing the whole picture rather than asking about one identity. */ export declare function listRevocations(): { revocationId: string; forgiven: boolean; identity: string; ip: string; revokedAt: string; revokedBy: string; }[]; export declare function isPairRevoked(identity: string, ip: string): boolean; export declare function isPairUnrevoked(identity: string, ip: string): boolean; /** For whoever just wrote a revocation, so it holds here immediately rather than on the next absorb. Sticky like the rest. */ export declare function noteRevocation(revocationId: string, revocation: Revocation): void; /** A repo whose signature does not check out, with the message ready for whoever asked. Not every caller treats it the same - a source keeps its last keys, a machine list is just refused - so the kind is carried rather than acted on here. */ export declare class SignedRepoError extends Error { problem: string; headline: string; body: string; constructor(problem: string, headline: string, body: string); } /** Everything a signed checkout vouches for, in one call: who signed it, and the contents of every file the signature actually covers. UNSIGNED with no files when there is no signature at all. Throws a SignedRepoError only when the signature over the manifest does not hold up, since then nothing in the repo can be believed and the caller keeps whatever it last accepted. Individual files are included or left out one at a time, and a file being left out never affects the others: a file the manifest does not name, a file whose contents no longer match what was signed, and a file the manifest names that is not on disk are all simply files we hold no signature for. */ export declare function readSignedRepo(config: { repoPath: string; sourceURL: string; }): Promise<{ signer: string; manifestHash: string; signatureHash: string; files: Map; }>;