type UtilityTelemetrySource = "cli" | "system" | "benchmark" | "tool_result";
type UtilityTelemetryTarget = "promotion" | "ranking";
type UtilityTelemetryDecision = "promote" | "demote" | "hold" | "boost" | "suppress";
type UtilityTelemetryOutcome = "helpful" | "neutral" | "harmful";
interface UtilityTelemetryEvent {
    schemaVersion: 1;
    eventId: string;
    recordedAt: string;
    sessionKey: string;
    source: UtilityTelemetrySource;
    target: UtilityTelemetryTarget;
    decision: UtilityTelemetryDecision;
    outcome: UtilityTelemetryOutcome;
    utilityScore: number;
    summary: string;
    memoryIds?: string[];
    entityRefs?: string[];
    tags?: string[];
    metadata?: Record<string, string>;
}
interface UtilityTelemetryStatus {
    enabled: boolean;
    promotionByOutcomeEnabled: boolean;
    rootDir: string;
    eventsDir: string;
    events: {
        total: number;
        valid: number;
        invalid: number;
        byTarget: Partial<Record<UtilityTelemetryTarget, number>>;
        byDecision: Partial<Record<UtilityTelemetryDecision, number>>;
        byOutcome: Partial<Record<UtilityTelemetryOutcome, number>>;
        latestEventId?: string;
        latestRecordedAt?: string;
        latestSessionKey?: string;
    };
    latestEvent?: UtilityTelemetryEvent;
    invalidEvents: Array<{
        path: string;
        error: string;
    }>;
}
declare function resolveUtilityTelemetryDir(memoryDir: string, overrideDir?: string): string;
declare function validateUtilityTelemetryEvent(raw: unknown): UtilityTelemetryEvent;
declare function recordUtilityTelemetryEvent(options: {
    memoryDir: string;
    utilityTelemetryDir?: string;
    event: UtilityTelemetryEvent;
}): Promise<string>;
declare function readUtilityTelemetryEvents(options: {
    memoryDir: string;
    utilityTelemetryDir?: string;
}): Promise<{
    files: string[];
    events: UtilityTelemetryEvent[];
    invalidEvents: Array<{
        path: string;
        error: string;
    }>;
}>;
declare function getUtilityTelemetryStatus(options: {
    memoryDir: string;
    utilityTelemetryDir?: string;
    enabled: boolean;
    promotionByOutcomeEnabled?: boolean;
}): Promise<UtilityTelemetryStatus>;

export { type UtilityTelemetryDecision, type UtilityTelemetryEvent, type UtilityTelemetryOutcome, type UtilityTelemetrySource, type UtilityTelemetryStatus, type UtilityTelemetryTarget, getUtilityTelemetryStatus, readUtilityTelemetryEvents, recordUtilityTelemetryEvent, resolveUtilityTelemetryDir, validateUtilityTelemetryEvent };
