/**
 * Journal quality scorer — non-outcome trade discipline metric.
 *
 * Scores each journal entry on how well it was *justified*, not whether
 * it made money. The five components are weighted to reward the same
 * habits a discretionary trader's playbook teaches:
 *
 *   verifiability (30%)  did the entry name a direction and a price target?
 *   evidence       (25%)  did it cite sources / thesis / indicators?
 *   specificity    (20%)  symbol, tags — not vague vibes?
 *   novelty        (15%)  not the 4th identical revenge-trade this week?
 *   review         (10%)  did the user write a post-trade note?
 *
 * The total is on a 0–5 scale, presented in the portfolio footer so the
 * agent and the user can see the discipline curve over time.
 *
 * Pure function — no I/O, no clock, deterministic given inputs. Used at
 * append time (TradeLog) and at render time (TradingPortfolio).
 */
import type { TradeLogEntry, QualityScore } from './trade-log.js';
/**
 * Score one journal entry against the prior history (used for novelty).
 * `history` should contain entries chronologically before `entry`.
 */
export declare function scoreEntry(entry: TradeLogEntry, history?: TradeLogEntry[]): QualityScore;
export interface AggregateScore {
    count: number;
    averageTotal: number;
    averageVerifiability: number;
    averageEvidence: number;
    averageSpecificity: number;
    averageNovelty: number;
    averageReview: number;
}
/**
 * Average the qualityScore fields across a set of entries — used by the
 * portfolio footer to show "your last 10 trades scored 3.2 / 5 on average".
 *
 * Entries without a persisted qualityScore are skipped (back-compat with
 * pre-v3.20 trades). Returns null when there's nothing scored to average.
 */
export declare function aggregateScores(entries: TradeLogEntry[]): AggregateScore | null;
