/**
 * src/skill-loop/value-metric.ts
 *
 * skill_value formula: cumulative weekly metric.
 *
 *   skill_value = Σ(usage_count × outcome_delta_vs_baseline)
 *
 * Consumer provides an outcomeDeltaCalculator function that returns the
 * outcome delta for a given usage event. The metric is cumulative over a
 * sliding 7-day window.
 *
 * @module skill-loop/value-metric
 */
export interface UsageEvent {
    /** Skill ID this event belongs to. */
    skillId: string;
    /** ISO-8601 timestamp of the usage event. */
    timestamp: string;
    /** Arbitrary context passed to the outcomeDeltaCalculator. */
    context: Record<string, unknown>;
}
export interface SkillValueResult {
    skillId: string;
    /** Sum of (usage × outcome_delta) over the window. */
    skillValue: number;
    /** Number of usage events included. */
    usageCount: number;
    /** Sum of all individual outcome deltas (raw). */
    totalOutcomeDelta: number;
    /** Start of the 7-day window (ISO-8601). */
    windowStart: string;
    /** End of the 7-day window (ISO-8601). */
    windowEnd: string;
}
/**
 * Compute skill_value = Σ(usage × outcome_delta_vs_baseline).
 *
 * Each usage event is weighted by the outcome delta it produced vs the
 * baseline skill. Events outside the 7-day window are excluded.
 *
 * @param skillId                 - The skill being measured.
 * @param usageEvents             - All usage events for this skill.
 * @param outcomeDeltaCalculator  - Consumer-provided function: event → delta.
 * @param nowDate                 - Optional override for "now" (deterministic tests).
 */
export declare function computeSkillValue(skillId: string, usageEvents: UsageEvent[], outcomeDeltaCalculator: (event: UsageEvent) => number, nowDate?: Date): SkillValueResult;
/**
 * Compute skill_value for multiple skills and rank them descending.
 */
export declare function rankSkillsByValue(skills: Array<{
    skillId: string;
    usageEvents: UsageEvent[];
    outcomeDeltaCalculator: (event: UsageEvent) => number;
}>, nowDate?: Date): SkillValueResult[];
//# sourceMappingURL=value-metric.d.ts.map