import { Board } from './board.js'; import { ByColor, ByRole, Color, Role } from './types.js'; export declare class MaterialSide implements ByRole { pawn: number; cannon: number; chariot: number; horse: number; elephant: number; advisor: number; king: number; private constructor(); static empty(): MaterialSide; static fromBoard(board: Board, color: Color): MaterialSide; clone(): MaterialSide; equals(other: MaterialSide): boolean; add(other: MaterialSide): MaterialSide; subtract(other: MaterialSide): MaterialSide; nonEmpty(): boolean; isEmpty(): boolean; hasPawns(): boolean; hasNonPawns(): boolean; size(): number; } export declare class Material implements ByColor { red: MaterialSide; black: MaterialSide; constructor(red: MaterialSide, black: MaterialSide); static empty(): Material; static fromBoard(board: Board): Material; clone(): Material; equals(other: Material): boolean; add(other: Material): Material; subtract(other: Material): Material; count(role: Role): number; size(): number; isEmpty(): boolean; nonEmpty(): boolean; hasPawns(): boolean; hasNonPawns(): boolean; } /** * A not necessarily legal xiangqi position. */ export interface Setup { board: Board; turn: Color; halfmoves: number; fullmoves: number; } export declare const defaultSetup: () => Setup; export declare const setupClone: (setup: Setup) => Setup; export declare const setupEquals: (left: Setup, right: Setup) => boolean;