112 lines
2.1 KiB
TypeScript
112 lines
2.1 KiB
TypeScript
export interface Hovering {
|
|
fen: Fen;
|
|
uci: Uci;
|
|
}
|
|
|
|
export type ExplorerDb = 'lichess' | 'masters' | 'player';
|
|
|
|
export type ExplorerSpeed = 'bullet' | 'blitz' | 'rapid' | 'classical';
|
|
export type ExplorerMode = 'casual' | 'rated';
|
|
|
|
export interface PlayerOpts {
|
|
name: string;
|
|
}
|
|
|
|
export interface ExplorerOpts {
|
|
endpoint: string;
|
|
endpoint3: string;
|
|
tablebaseEndpoint: string;
|
|
}
|
|
|
|
export interface ExplorerData {
|
|
fen: Fen;
|
|
moves: MoveStats[];
|
|
isOpening?: true;
|
|
tablebase?: true;
|
|
}
|
|
|
|
export interface OpeningData extends ExplorerData, Partial<OpeningMoveStats> {
|
|
moves: OpeningMoveStats[];
|
|
topGames?: OpeningGame[];
|
|
recentGames?: OpeningGame[];
|
|
opening?: Opening;
|
|
}
|
|
|
|
export interface Opening {
|
|
eco: string;
|
|
name: string;
|
|
}
|
|
|
|
export interface OpeningGame {
|
|
id: string;
|
|
white: OpeningPlayer;
|
|
black: OpeningPlayer;
|
|
winner?: Color;
|
|
year?: string;
|
|
month?: string;
|
|
speed?: Speed;
|
|
}
|
|
|
|
interface OpeningPlayer {
|
|
name: string;
|
|
rating: number;
|
|
}
|
|
|
|
export type TablebaseCategory =
|
|
| 'loss'
|
|
| 'unknown'
|
|
| 'maybe-loss'
|
|
| 'blessed-loss'
|
|
| 'draw'
|
|
| 'cursed-win'
|
|
| 'maybe-win'
|
|
| 'win';
|
|
|
|
export interface TablebaseData extends ExplorerData {
|
|
moves: TablebaseMoveStats[];
|
|
dtz: number | null;
|
|
dtm: number | null;
|
|
checkmate: boolean;
|
|
stalemate: boolean;
|
|
variant_win: boolean;
|
|
variant_loss: boolean;
|
|
insufficient_material: boolean;
|
|
category: TablebaseCategory;
|
|
}
|
|
|
|
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 {
|
|
dtz: number | null;
|
|
dtm: number | null;
|
|
checkmate: boolean;
|
|
stalemate: boolean;
|
|
variant_win: boolean;
|
|
variant_loss: boolean;
|
|
insufficient_material: boolean;
|
|
zeroing: boolean;
|
|
category: TablebaseCategory;
|
|
}
|
|
|
|
export function isOpening(m: ExplorerData): m is OpeningData {
|
|
return !!m.isOpening;
|
|
}
|
|
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;
|
|
}
|