lila/ui/analyse/src/explorer/interfaces.ts

112 lines
2.1 KiB
TypeScript
Raw Normal View History

2017-07-07 04:03:57 -06:00
export interface Hovering {
fen: Fen;
uci: Uci;
}
2021-10-18 11:20:52 -06:00
export type ExplorerDb = 'lichess' | 'masters' | 'player';
2017-07-07 04:03:57 -06:00
2017-11-30 09:10:36 -07:00
export type ExplorerSpeed = 'bullet' | 'blitz' | 'rapid' | 'classical';
2021-10-19 07:45:02 -06:00
export type ExplorerMode = 'casual' | 'rated';
2017-07-07 04:03:57 -06:00
2021-10-18 11:20:52 -06:00
export interface PlayerOpts {
name: string;
}
2021-04-17 08:37:45 -06:00
export interface ExplorerOpts {
2021-04-17 08:47:31 -06:00
endpoint: string;
2021-10-18 11:20:52 -06:00
endpoint3: string;
2021-04-17 08:47:31 -06:00
tablebaseEndpoint: string;
2021-04-17 08:37:45 -06:00
}
2017-07-07 04:03:57 -06:00
export interface ExplorerData {
fen: Fen;
2017-09-18 14:25:22 -06:00
moves: MoveStats[];
2020-03-22 15:27:01 -06:00
isOpening?: true;
2017-09-18 14:25:22 -06:00
tablebase?: true;
2017-07-07 04:03:57 -06:00
}
export interface OpeningData extends ExplorerData, Partial<OpeningMoveStats> {
2017-09-18 14:25:22 -06:00
moves: OpeningMoveStats[];
2017-09-19 09:54:35 -06:00
topGames?: OpeningGame[];
recentGames?: OpeningGame[];
2020-03-22 15:27:01 -06:00
opening?: Opening;
}
export interface Opening {
eco: string;
name: string;
2017-09-19 09:54:35 -06:00
}
export interface OpeningGame {
id: string;
white: OpeningPlayer;
black: OpeningPlayer;
winner?: Color;
year?: string;
2021-10-19 10:50:52 -06:00
month?: string;
speed?: Speed;
2017-09-19 09:54:35 -06:00
}
interface OpeningPlayer {
name: string;
rating: number;
2017-09-18 14:25:22 -06:00
}
export type TablebaseCategory =
| 'loss'
| 'unknown'
| 'maybe-loss'
| 'blessed-loss'
| 'draw'
| 'cursed-win'
| 'maybe-win'
| 'win';
2017-09-18 14:25:22 -06:00
export interface TablebaseData extends ExplorerData {
moves: TablebaseMoveStats[];
2021-02-06 06:26:05 -07:00
dtz: number | null;
dtm: number | null;
2017-09-18 14:25:22 -06:00
checkmate: boolean;
stalemate: boolean;
variant_win: boolean;
variant_loss: boolean;
2018-05-03 12:57:04 -06:00
insufficient_material: boolean;
category: TablebaseCategory;
2017-09-18 14:25:22 -06:00
}
export interface MoveStats {
uci: Uci;
san: San;
}
export interface OpeningMoveStats extends MoveStats {
white: number;
black: number;
draws: number;
averageRating: number;
}
export interface TablebaseMoveStats extends MoveStats {
2017-12-03 13:02:11 -07:00
dtz: number | null;
2018-05-03 12:57:04 -06:00
dtm: number | null;
2017-09-18 14:40:23 -06:00
checkmate: boolean;
stalemate: boolean;
variant_win: boolean;
variant_loss: boolean;
insufficient_material: boolean;
zeroing: boolean;
category: TablebaseCategory;
2017-09-18 14:25:22 -06:00
}
export function isOpening(m: ExplorerData): m is OpeningData {
2020-03-22 15:27:01 -06:00
return !!m.isOpening;
2017-09-18 14:25:22 -06:00
}
export function isTablebase(m: ExplorerData): m is TablebaseData {
return !!m.tablebase;
}
export interface SimpleTablebaseHit {
fen: Fen;
best?: Uci; // no move if checkmate/stalemate
winner: Color | undefined;
}