/** One reportable fact about a collector run. `kind` is the event class. */ export interface TelemetryEvent { kind: string; /** Numbers only, plus the few enumerated strings below. No free text. */ [k: string]: string | number | boolean | undefined; } /** * Record an event. Cheap and synchronous — it never blocks the caller and never * throws, because a measurement must not be able to break the thing it measures. */ export declare function record(event: TelemetryEvent): void; /** Pending events, for tests and `doctor`. */ export declare function pending(): readonly TelemetryEvent[]; export declare function _clearForTests(): void; /** * Ship whatever is queued to every eligible target, then clear. * * Called after a sync completes — the connection is warm, the numbers are final, * and there is no separate schedule to get wrong. */ export declare function flush(): Promise; /** * A stable, non-reversible 12-hex mark for an arbitrary identifier. * * Exists so a repeated event can be COUNTED ONCE. `oversized_session` is * re-reported on every walk for as long as the transcript stays oversized, and * the reader of a raw event count concluded "38 sessions are too large to * archive" from 38 reports of the SAME session. A count needs a key; a key must * not be the session id. `sha256(...).slice(0, 12)` is both — the same reasoning * (and the same shape) as `hashHost` below. * * The key name deliberately avoids the words `assertNoSensitiveKeys` forbids: * this is a de-duplication key, not a description of the user's work. */ export declare function stableMark(value: string): string; //# sourceMappingURL=telemetry.d.ts.map