export declare const SUPPORTED_MLB_PROP_TYPES: Record<string, string>;
export type MarketSide = 'over' | 'under';
export type MarketCompletenessStatus = 'source_complete' | 'multi_source_complete' | 'incomplete';
export type MarketCompletionMethod = 'none' | 'source' | 'multi_source';
export interface RawMlbMarketSource {
    eventId: string;
    startsAt: string | null;
    homeTeam: string | null;
    awayTeam: string | null;
    playerId: string;
    playerName: string;
    statType: string;
    normalizedStatType: string;
    line: number;
    side: MarketSide;
    odds: number | null;
    impliedProb: number | null;
    provider: string | null;
    source: string;
    sportsbookName: string | null;
    sportsbookId: string | null;
    timestamp: string | null;
    rawMarketId: string | null;
    marketName: string | null;
    teamShort: string | null;
}
export interface GroupedMlbMarket {
    eventId: string;
    startsAt: string | null;
    homeTeam: string | null;
    awayTeam: string | null;
    playerId: string;
    playerName: string;
    statType: string;
    normalizedStatType: string;
    line: number;
    marketName: string | null;
    teamShort: string | null;
    over: RawMlbMarketSource[];
    under: RawMlbMarketSource[];
}
export interface NormalizedMarketSide {
    odds: number | null;
    impliedProb: number | null;
    source: string;
    provider: string | null;
    sportsbookName: string | null;
    sportsbookId: string | null;
    timestamp: string | null;
    rawMarketId: string | null;
}
export interface MarketSourceMapEntry {
    side: MarketSide;
    source: string;
    odds: number | null;
    impliedProb: number | null;
    provider: string | null;
    sportsbookName: string | null;
    sportsbookId: string | null;
    timestamp: string | null;
    rawMarketId: string | null;
}
export interface NormalizedPlayerPropMarket {
    eventId: string;
    startsAt: string | null;
    homeTeam: string | null;
    awayTeam: string | null;
    playerId: string;
    playerName: string;
    teamShort: string | null;
    statType: string;
    normalizedStatType: string;
    line: number;
    marketName: string | null;
    over: NormalizedMarketSide | null;
    under: NormalizedMarketSide | null;
    primarySource: string | null;
    completionMethod: MarketCompletionMethod;
    completenessStatus: MarketCompletenessStatus;
    sourceMap: MarketSourceMapEntry[];
    isGapFilled: boolean;
    availableSides: MarketSide[];
    rawMarketCount: number;
    updatedAt: string | null;
}
export declare function normalizeMlbPropType(propType: string): string;
export declare function getMlbPropLabel(propType: string): string | null;
export declare function normalizeText(value: string): string;
export declare function titleCase(input: string): string;
export declare function parseMlbPlayerName(raw: any): string | null;
export declare function parseMarketSide(raw: any): MarketSide | null;
export declare function toNumber(value: unknown): number | null;
export declare function impliedProbabilityFromAmerican(odds: number | null): number | null;
export declare function normalizeSportsbookName(value: unknown): string;
export declare function buildFallbackMlbEventKey(params: {
    startsAt?: string | null;
    homeTeam?: string | null;
    awayTeam?: string | null;
}): string;
export declare function mapPlayerPropLineRowToRawMarketSource(row: any, context: {
    eventId?: string | null;
    startsAt?: string | null;
    homeTeam?: string | null;
    awayTeam?: string | null;
}): RawMlbMarketSource | null;
export declare function groupRawMlbMarketSources(rows: RawMlbMarketSource[]): GroupedMlbMarket[];
export declare function getMlbPropRole(statType: string): 'batter' | 'pitcher' | 'unknown' | null;
//# sourceMappingURL=mlb-market-normalizer.d.ts.map