/**
 * Rain Man 2.0 Shadow Runner
 *
 * Runs in parallel with RM 1.0 forecasts, writing to v2 tables.
 * Reads its own config from rm_model_config (model_version = 'rm_2.0').
 * Initially produces identical results to RM 1.0 — the infrastructure
 * exists so we can diverge weights/signals without touching production.
 *
 * Usage: npx tsx src/workers/rm2-shadow-runner.ts [--dry-run]
 * Can also be called programmatically via runShadow().
 */
import 'dotenv/config';
interface LeagueDriftSummary {
    count: number;
    avgDelta: number;
    maxDelta: number;
    nulls: number;
    nullRate: number;
    nativeShapes: number;
}
export interface ShadowRunSummary {
    enabled: boolean;
    dryRun: boolean;
    copied: number;
    skipped: number;
    failed: number;
    accuracyCopied: number;
    perLeague: Record<string, LeagueDriftSummary>;
}
export declare function runShadow(): Promise<ShadowRunSummary>;
export {};
//# sourceMappingURL=rm2-shadow-runner.d.ts.map