export declare const LEAGUE_MAP: Record<string, {
    leagueID: string;
    sportID: string;
}>;
export interface SgoOddValue {
    bookOdds?: string;
    fairOdds?: string;
    openBookOdds?: string;
    openBookSpread?: string;
    openBookOverUnder?: string;
    bookSpread?: string;
    fairSpread?: string;
    bookOverUnder?: string;
    fairOverUnder?: string;
    statEntityID?: string;
    marketName?: string;
    started?: boolean;
    ended?: boolean;
}
export interface SgoEvent {
    eventID: string;
    teams: {
        home: {
            names: {
                long: string;
                short: string;
            };
        };
        away: {
            names: {
                long: string;
                short: string;
            };
        };
    };
    status: {
        startsAt: string;
        started?: boolean;
        ended?: boolean;
        displayShort: string;
        oddsPresent: boolean;
    };
    odds: Record<string, SgoOddValue>;
}
export declare function deriveEventLifecycleStatus(event: Pick<SgoEvent, 'status'>, now?: Date): 'scheduled' | 'started' | 'ended';
export declare function computeSgoRetryDelayMs(attempt: number): number;
export declare function fetchEvents(league: string, startsAfter?: string): Promise<SgoEvent[]>;
export declare function fetchAllLeagueEvents(startsAfter?: string): Promise<Record<string, SgoEvent[]>>;
export declare function americanOddsToImpliedProbability(odds: number | null | undefined): number | null;
export declare function sanitizeMoneylinePair(pair: {
    home?: number | null;
    away?: number | null;
} | null | undefined): {
    home: number | null;
    away: number | null;
};
export declare function sanitizeGameOddsForLeague<T extends {
    moneyline: {
        home: number | null;
        away: number | null;
    };
    spread: {
        home: {
            line: number | null;
            odds: number | null;
        } | null;
        away: {
            line: number | null;
            odds: number | null;
        } | null;
    };
    total: {
        over: {
            line: number | null;
            odds: number | null;
        } | null;
        under: {
            line: number | null;
            odds: number | null;
        } | null;
    };
}>(league: string | null | undefined, odds: T): T;
export declare function parseOdds(event: SgoEvent): {
    moneyline: {
        home: number | null;
        away: number | null;
    };
    spread: {
        home: {
            line: number;
            odds: number | null;
        } | null;
        away: {
            line: number;
            odds: number | null;
        } | null;
    };
    total: {
        over: {
            line: number;
            odds: number | null;
        } | null;
        under: {
            line: number;
            odds: number | null;
        } | null;
    };
    props: Array<{
        player: string;
        stat: string;
        line: number;
        overOdds: number | null;
        underOdds: number | null;
    }>;
};
export declare function hasAnyOpeningOdds(odds: {
    moneyline: {
        home: number | null;
        away: number | null;
    };
    spread: {
        home: {
            line: number;
            odds: number | null;
        } | null;
        away: {
            line: number;
            odds: number | null;
        } | null;
    };
    total: {
        over: {
            line: number;
            odds: number | null;
        } | null;
        under: {
            line: number;
            odds: number | null;
        } | null;
    };
}): boolean;
/** Parse opening odds from SGO event using only openBook* fields. */
export declare function parseOpeningOdds(event: SgoEvent): {
    moneyline: {
        home: number | null;
        away: number | null;
    };
    spread: {
        home: {
            line: number;
            odds: number | null;
        } | null;
        away: {
            line: number;
            odds: number | null;
        } | null;
    };
    total: {
        over: {
            line: number;
            odds: number | null;
        } | null;
        under: {
            line: number;
            odds: number | null;
        } | null;
    };
};
/** Build deterministic event ID from league, teams, and date */
export declare function makeEventId(league: string, awayShort: string, homeShort: string, dateStr: string): string;
/**
 * Check if a team name matches a D1 program via kp_teams.
 * Uses substring matching: "Purdue Boilermakers" matches kp "purdue".
 */
export declare function isNcaabD1(teamName: string): Promise<boolean>;
//# sourceMappingURL=sgo.d.ts.map