import { Pool, PoolClient } from 'pg';
import { NormalizedPlayerPropMarket } from './mlb-market-normalizer';
export declare const MLB_MARKET_COMPLETION_CRON: {
    readonly name: "MLB Market Completion Engine";
    readonly slug: "mlb_market_completion";
    readonly schedule: "* * * * *";
    readonly description: "Detects incomplete MLB player prop markets and fills missing sides using secondary sources (FanDuel, DraftKings). Normalizes into two-sided markets for forecasting.";
    readonly category: "Market Integrity";
    readonly priority: "HIGH";
    readonly status: "ACTIVE";
    readonly safe_mode: true;
    readonly non_blocking: true;
    readonly notes: readonly ["No regression allowed", "Does not modify raw ingest", "Preserves source attribution", "Does not fabricate market sides", "Supports multi-source completion"];
};
type Db = Pool | PoolClient;
export interface MlbMarketCompletionSummary {
    totalMarkets: number;
    sourceComplete: number;
    multiSourceComplete: number;
    incomplete: number;
    gapFilled: number;
    underOnlyMarkets: number;
    overOnlyMarkets: number;
    twoWayMarkets: number;
    zeroGapFillEvents: number;
    completeRate: number;
    gapFillAttempts: number;
    gapFillSuccesses: number;
    gapFillSuccessRate: number;
    breakdownByPropType: Record<string, number>;
    sourceDistribution: Record<string, number>;
    eventBreakdown: MlbMarketCompletionEventSummary[];
}
export interface MlbMarketCompletionEventSummary {
    eventId: string;
    startsAt: string | null;
    homeTeam: string | null;
    awayTeam: string | null;
    totalMarkets: number;
    sourceComplete: number;
    multiSourceComplete: number;
    incomplete: number;
    gapFilledMarkets: number;
    underOnlyMarkets: number;
    overOnlyMarkets: number;
    twoWayMarkets: number;
    zeroGapFillEvent: boolean;
    completionRate: number;
}
export declare function summarizeNormalizedMlbMarkets(markets: NormalizedPlayerPropMarket[]): MlbMarketCompletionSummary;
export declare function ensureOperationalCronRegistration(db?: Db): Promise<void>;
export declare function createOperationalCronRun(db?: Db): Promise<string>;
export declare function finalizeOperationalCronRun(db: Db, params: {
    runId: string;
    status: 'SUCCESS' | 'FAILED' | 'SKIPPED';
    durationMs: number;
    metrics: Record<string, any>;
    errorMessage?: string | null;
    logBlob?: string | null;
}): Promise<void>;
export declare function refreshOperationalCronMetrics(db?: Db): Promise<void>;
export declare function fetchOperationalCronSummaries(db?: Db): Promise<any[]>;
export declare function fetchOperationalCronSummary(slug: string, db?: Db): Promise<any | null>;
export declare function fetchOperationalCronRuns(slug: string, limit?: number, db?: Db): Promise<any[]>;
export declare function fetchStoredMlbMarketRows(filters: {
    eventId?: string | null;
    completenessStatus?: string | null;
    limit?: number | null;
}, db?: Db): Promise<any[]>;
export declare function fetchMlbMarketCompletionInsights(filters: {
    eventId?: string | null;
    completenessStatus?: string | null;
}, db?: Db): Promise<{
    incompleteWithAlternateLines: number;
    incompleteWithoutAlternateLines: number;
    exactSideBreakdown: {
        underOnly: number;
        overOnly: number;
        bothExactSidesPresent: number;
    };
}>;
export declare function summarizeStoredMlbMarketRows(rows: any[]): {
    totalMarkets: number;
    sourceComplete: number;
    multiSourceComplete: number;
    incomplete: number;
    gapFilled: number;
    underOnlyMarkets: number;
    overOnlyMarkets: number;
    twoWayMarkets: number;
    zeroGapFillEvents: number;
    byStatType: Record<string, number>;
    byAvailableSides: Record<string, number>;
    bySource: Record<string, number>;
    bySourceCount: Record<string, number>;
    eventBreakdown: MlbMarketCompletionEventSummary[];
};
export {};
//# sourceMappingURL=mlb-market-reporter.d.ts.map