import type { Subscriber, BusMessage } from './envelope-bus.js'; import type { TaskEnvelope } from './task-envelope.js'; import type { ModelFamily } from '../config/model-profile-registry.js'; export interface RecorderLike { enqueue(event: unknown): void; } export interface ConsentLike { decide(): { enabled: boolean; }; } export interface TelemetryUploaderOpts { recorder: RecorderLike | null; consent?: ConsentLike; /** Max taskIds retained for once-per-task dedup. Bounds the set on a * long-running server — the window only needs to cover near-simultaneous * re-emits of the same sealed envelope. Default 10_000. */ dedupCap?: number; buildOpts: (env: TaskEnvelope) => { toolMode: 'none' | 'readonly' | 'no-shell' | 'full'; implementerModel: string; implementerTier: 'standard' | 'complex' | 'main'; mainModelFamily: ModelFamily; }; } export declare class TelemetryUploader implements Subscriber { private opts; readonly name = "telemetry-uploader"; private uploaded; private readonly dedupCap; constructor(opts: TelemetryUploaderOpts); receive(msg: BusMessage): void; } //# sourceMappingURL=telemetry-uploader.d.ts.map