export interface ReplayDataChart { title: string; data: number[]; } export interface ReplayDataSimilarScore { replay_id: number; user_id: number; date: string; pp: number; username: string; similarity: number; correlation: number; } export function getMockReplayData(): ReplayData { return { 'replay_id': 123, 'user_id': 123, 'username': 'username', 'date': 'date', 'beatmap_id': 123, 'beatmap_beatmapset_id': 123, 'beatmap_artist': 'beatmap_artist', 'beatmap_title': 'beatmap_title', 'beatmap_star_rating': 123, 'beatmap_creator': 'beatmap_creator', 'beatmap_version': 'beatmap_version', 'beatmap_max_combo': 123, 'beatmap_total_length': 123, 'beatmap_bpm': 123, 'beatmap_accuracy': 123, 'beatmap_ar': 123, 'beatmap_cs': 123, 'beatmap_drain': 123, 'beatmap_count_circles': 123, 'beatmap_count_sliders': 123, 'beatmap_count_spinners': 123, 'score': 123, 'mods': ['mods'], 'rank': 'rank', 'ur': 123, 'adjusted_ur': 123, 'frametime': 123, 'snaps': 123, 'hits': 123, 'pp': 123, 'perfect': true, 'max_combo': 123, 'mean_error': 123, 'error_variance': 123, 'error_standard_deviation': 123, 'minimum_error': 123, 'maximum_error': 123, 'error_range': 123, 'error_coefficient_of_variation': 123, 'error_kurtosis': 123, 'error_skewness': 123, 'count_300': 123, 'count_100': 123, 'count_50': 123, 'count_miss': 123, 'similar_scores': [], 'error_distribution': {}, 'charts': [] }; } export interface ReplayData { replay_id: number | null; user_id: number; username: string; date: string; beatmap_id: number; beatmap_beatmapset_id: number; beatmap_artist: string; beatmap_title: string; beatmap_star_rating: number; beatmap_creator: string; beatmap_version: string; beatmap_max_combo: number; beatmap_total_length: number; beatmap_bpm: number; beatmap_accuracy: number; beatmap_ar: number; beatmap_cs: number; beatmap_drain: number; beatmap_count_circles: number; beatmap_count_sliders: number; beatmap_count_spinners: number; score: number; mods: string[]; rank: string; ur: number; adjusted_ur?: number; frametime: number; snaps: number; hits: number; pp: number, perfect: boolean; max_combo: number, mean_error?: number, error_variance?: number, error_standard_deviation?: number, minimum_error?: number, maximum_error?: number, error_range?: number, error_coefficient_of_variation?: number, error_kurtosis?: number, error_skewness?: number, comparable_samples?: number; comparable_mean_error?: number, comparable_error_variance?: number, comparable_error_standard_deviation?: number, comparable_minimum_error?: number, comparable_maximum_error?: number, comparable_error_range?: number, comparable_error_coefficient_of_variation?: number, comparable_error_kurtosis?: number, comparable_error_skewness?: number, comparable_adjusted_ur?: number; count_300: number, count_100: number, count_50: number, count_miss: number; similar_scores: ReplayDataSimilarScore[]; error_distribution: ErrorDistribution; charts: ReplayDataChart[]; } export interface DistributionEntry { countMiss: number; count300: number; count100: number; count50: number; } export interface ErrorDistribution { [key: number]: DistributionEntry; } export interface SuspiciousScore { user_id: number; username: string; replay_id: number; date: string; beatmap_id: number; beatmap_beatmapset_id: number; beatmap_title: string; beatmap_star_rating: number; pp: number; frametime: number; ur: number; } export interface SimilarReplay { replay_id_1: number; replay_id_2: number; username_1: string; username_2: string; beatmap_beatmapset_id: number; replay_date_1: string; replay_date_2: string; replay_pp_1: number; replay_pp_2: number; beatmap_id: number; beatmap_title: string; beatmap_star_rating: number; similarity: number; }