/** * Opt-in node identity for the telemetry ping. * * A node is anonymous unless the operator sets these variables. Setting them * changes exactly one thing: three extra fields on the ping that already * leaves the host. No new emission, no new frequency, no new endpoint. * * The contact email is hashed **here**, on the operator's machine, and only the * digest travels. The raw value is never sent, never logged, and never returned * by anything in this module. `normalizeContact` is bit-compatible with the * ingest endpoint's own normalization so that a digest computed here matches * one computed there for clients that predate this release. */ type Env = Record; /** Identity fields as they appear on the wire. Absent keys are simply not sent. */ export interface ImplIdentity { impl_name?: string; impl_url?: string; impl_contact_hash?: string; } /** * Canonical form of a contact email before hashing: lowercase, trimmed. * * Must stay identical to the ingest endpoint's normalization. If the two ever * diverge, the same operator produces two different digests and verification * silently stops matching. */ export declare function normalizeContact(raw: string): string; /** SHA-256 of the normalized contact, lowercase hex. */ export declare function hashContact(raw: string): string; /** True when at least one identity variable is configured. */ export declare function hasIdentity(env?: Env): boolean; /** * Build the identity fields for the telemetry ping. * * Returns an empty object for an unconfigured node — spreading it into the * payload adds nothing, which is what keeps an anonymous node byte-identical * to how it behaved before this release. */ export declare function resolveIdentity(env?: Env): ImplIdentity; export {}; //# sourceMappingURL=identity.d.ts.map