lila/ui/ceval/src/types.ts

117 lines
2.5 KiB
TypeScript

import { Prop } from 'common';
import { StoredProp, StoredBooleanProp } from 'common/storage';
export type CevalTechnology = 'asmjs' | 'wasm' | 'wasmx';
export interface Eval {
cp?: number;
mate?: number;
}
export interface WorkerOpts {
variant: VariantKey;
threads: false | (() => number | string);
hashSize: false | (() => number | string);
minDepth: number;
}
export interface Work {
path: string;
maxDepth: number;
multiPv: number;
ply: number;
threatMode: boolean;
initialFen: string;
currentFen: string;
moves: string[];
emit: (ev: Tree.ClientEval) => void;
}
export interface PoolOpts {
technology: CevalTechnology;
wasm: string;
wasmx: string;
asmjs: string;
}
export interface CevalOpts {
storageKeyPrefix?: string;
multiPvDefault?: number;
possible: boolean;
variant: Variant;
emit: (ev: Tree.ClientEval, work: Work) => void;
setAutoShapes: () => void;
redraw(): void;
}
export interface Hovering {
fen: string;
uci: string;
}
export interface Started {
path: string;
steps: Step[];
threatMode: boolean;
}
export interface CevalCtrl {
goDeeper(): void;
canGoDeeper(): boolean;
effectiveMaxDepth(): number;
technology: CevalTechnology;
allowed: Prop<boolean>;
enabled: Prop<boolean>;
possible: boolean;
isComputing(): boolean;
engineName(): string | undefined;
variant: Variant;
setHovering: (fen: string, uci?: string) => void;
multiPv: StoredProp<number>;
start: (path: string, steps: Step[], threatMode: boolean, deeper: boolean) => void;
stop(): void;
threads: StoredProp<number> | undefined;
hashSize: StoredProp<number> | undefined;
maxThreads: number;
infinite: StoredBooleanProp;
hovering: Prop<Hovering | null>;
toggle(): void;
curDepth(): number;
isDeeper(): boolean;
destroy(): void;
redraw(): void;
}
export interface ParentCtrl {
getCeval(): CevalCtrl;
nextNodeBest(): string | undefined;
disableThreatMode?: Prop<Boolean>;
toggleThreatMode(): void;
toggleCeval(): void;
gameOver: (node?: Tree.Node) => 'draw' | 'checkmate' | false;
mandatoryCeval?: Prop<boolean>;
showEvalGauge: Prop<boolean>;
currentEvals(): NodeEvals;
ongoing: boolean;
playUci(uci: string): void;
getOrientation(): Color;
threatMode(): boolean;
getNode(): Tree.Node;
showComputer(): boolean;
trans: Trans;
}
export interface NodeEvals {
client?: Tree.ClientEval
server?: Tree.ServerEval
}
export interface Step {
ply: number;
fen: string;
san?: string;
uci?: string;
threat?: Tree.ClientEval;
ceval?: Tree.ClientEval;
}