import { CellCollection } from '../CellCollection'; import { Grid } from '../Grid'; import { CellValueChange } from '../ValueTypes'; /** * Implements a class that deals with the case where only one cell in a row, column or block holds a value * but that cell also holds additional potential values. The solver will create changes that remove all the * other potentials from that cell. */ export declare class HiddenSinglesSolver { /** * The source of changes provided to callers. */ static source: string; /** * Searches the grid for cells where the value only appears once in the row, column or block * and if it finds any, returns an array of changes to apply to the target grid. * @param targetGrid The grid to solve. * @returns An array of changes to apply to the grid to solve it. */ static solve(targetGrid: Grid): CellValueChange[]; /** * Searches a given Row, Column or Block for cells where its value doesn't appear * in any of the other cells implying that it should have that value. * TODO: does this code return changes with empty valuesToRemove? * @param block A reference to a row, column or block that holds 9 unique values. * @returns An array of changes that can be applied back to the grid. */ static solveForBlock(block: CellCollection): CellValueChange[]; }