// engine/estimator/constants.ts — Estimation constants and lookup tables
// SPEC-011 + SPEC-460: Heuristics clearly labeled. Real data preferred.
/**
 * DEFAULT_CONFIG: values used when user has NOT configured their project.
 * hourlyRate: 0 = not configured. Cost will show as $0 until user sets it via init_project.
 * Pricing: 0 = resolved dynamically from model-pricing.json via pricing-resolver.
 */
export const DEFAULT_CONFIG = {
    defaultLocale: 'en',
    defaultExperienceLevel: 'intermediate',
    hourlyRate: 0,
    pricingOpusPerMToken: 0,
    pricingSonnetPerMToken: 0,
};
/**
 * BASE_HOURS_BY_TYPE: industry heuristics for UNCALIBRATED projects (no historical data).
 * When project has ≥3 completed specs with real actuals for a type, these are IGNORED
 * and replaced by the project's real average (via adjustFromHistory in history.ts).
 *
 * These are NOT facts — they are starting points that get replaced by real data.
 */
export const BASE_HOURS_BY_TYPE = {
    feature: 8,
    refactor: 6,
    bugfix: 3,
    infra: 5,
    docs: 2,
    project: 16,
    agent: 20,
    'tech-debt': 8,
};
/** Whether estimation uses real project data or default heuristics */
export const ESTIMATION_DISCLAIMER_UNCALIBRATED = 'Estimate based on default heuristics — not calibrated with real project data yet. ' +
    'Complete 3+ specs with real actuals to enable data-driven estimation.';
/**
 * Scope multipliers — relative complexity by scope.
 * These are ratios, not absolute numbers, so they're more stable.
 */
export const SCOPE_MULTIPLIER = {
    trivial: 0.3,
    feature: 1.0,
    'cross-module': 2.0,
    architectural: 3.5,
};
/**
 * Difficulty multipliers (1-5 scale).
 * Relative scaling — calibration adjusts the base, not the multiplier.
 */
export const DIFFICULTY_MULTIPLIER = {
    1: 0.6,
    2: 0.85,
    3: 1.0,
    4: 1.4,
    5: 2.0,
};
/**
 * Review hours as a fraction of dev hours.
 */
export const REVIEW_RATIO = {
    1: 0.1,
    2: 0.15,
    3: 0.2,
    4: 0.25,
    5: 0.35,
};
/**
 * Mode reduction factors for token strategy selection.
 * These are relative factors, not absolute token counts.
 */
export const MODE_REDUCTION = {
    local: 0.4,
    template: 0.2,
    'light-llm': 0.7,
    'full-llm': 1.0,
};
//# sourceMappingURL=constants.js.map