export declare function stripTrailingSlashes(s: string): string; export declare function fetchJson(url: string, timeoutMs?: number): Promise; /** * SHA-256 over canonicalized UTF-8 bytes: * - normalize line endings to LF * - strip a single trailing newline * Matches the rule defined in the AI Evidence Format and Prompt * Provenance specifications. */ export declare function canonicalSha256(content: string): string; export declare function pretty(value: unknown): string; /** * SHA-256 over canonical JSON of a parsed value: sorted object keys, * no whitespace, UTF-8. This is the **structural** hash convention used * across the Kinetic Gain implementation stack (procurement-decision-api, * aeo-validator-service, aeo-graph-explorer-rs, hash-attestation-rs). * * Distinct from `canonicalSha256()` above, which hashes a *text content* * string after line-ending normalization (the AI Evidence / Prompt * Provenance convention). * * Identical JSON values produce identical hashes regardless of how the * input was originally serialised: * { "foo": 1, "bar": 2 } and { "bar": 2, "foo": 1 } -> same hash. */ export declare function canonicalJsonSha256(value: unknown): string; export declare function errorJson(error: string, details?: Record): string;