import { JGOFAIReview } from "../formats/JGOF";
import { GobanEngine } from "../GobanEngine";
export declare const DEFAULT_SCORE_DIFF_THRESHOLDS: ScoreDiffThresholds;
export type MoveCategory = "Excellent" | "Great" | "Good" | "Inaccuracy" | "Mistake" | "Blunder";
export type ScoreDiffThresholds = {
    Excellent: number;
    Great: number;
    Good: number;
    Inaccuracy: number;
    Mistake: number;
};
export interface AiReviewCategorization {
    uuid: string;
    move_counters: MoveCounters;
    score_loss_list: ScoreLossList;
    total_score_loss: {
        black: number;
        white: number;
    };
    categorized_moves: MoveNumbers;
    opening_moves: {
        black: Set<number>;
        white: Set<number>;
    };
    avg_score_loss: {
        black: number;
        white: number;
    };
    median_score_loss: {
        black: number;
        white: number;
    };
    strong_move_rate: {
        black: number;
        white: number;
    };
    moves_pending: number;
}
type PlayerMoveCounts = {
    [K in MoveCategory]: number;
};
type PlayerMoveNumbers = {
    [K in MoveCategory]: number[];
};
type MoveCounters = {
    black: PlayerMoveCounts;
    white: PlayerMoveCounts;
};
type MoveNumbers = {
    black: PlayerMoveNumbers;
    white: PlayerMoveNumbers;
};
type ScoreLossList = {
    black: {
        move: number;
        scoreLoss: number;
    }[];
    white: {
        move: number;
        scoreLoss: number;
    }[];
};
export declare function AIReviewData_categorize(ai_review: JGOFAIReview, engine: GobanEngine, scoreDiffThresholds?: ScoreDiffThresholds, includeNegativeScoreLoss?: boolean): AiReviewCategorization | null;
export {};
