@logic-pad/core
Version:
38 lines (37 loc) • 1.68 kB
TypeScript
import { AnyConfig } from '../config.js';
import { FinalValidationHandler } from '../events/onFinalValidation.js';
import { GridChangeHandler } from '../events/onGridChange.js';
import { GridResizeHandler } from '../events/onGridResize.js';
import GridData from '../grid.js';
import { GridState, RuleState } from '../primitives.js';
import Rule, { SearchVariant } from './rule.js';
export default class MysteryRule extends Rule implements FinalValidationHandler, GridChangeHandler, GridResizeHandler {
readonly solution: GridData;
readonly visible: boolean;
private static readonly EXAMPLE_GRID;
private static readonly CONFIGS;
private static readonly SEARCH_VARIANTS;
/**
* **Mystery: alternate solution**
*/
constructor(solution: GridData, visible: boolean);
get id(): string;
get explanation(): string;
get visibleWhenSolving(): boolean;
get configs(): readonly AnyConfig[] | null;
createExampleGrid(): GridData;
get searchVariants(): SearchVariant[];
validateGrid(grid: GridData): RuleState;
get necessaryForCompletion(): boolean;
onFinalValidation(grid: GridData, _solution: GridData | null, state: GridState): GridState;
onGridChange(newGrid: GridData): this;
onGridResize(_grid: GridData, mode: 'insert' | 'remove', direction: 'row' | 'column', index: number): this | null;
copyWith({ solution, visible, }: {
solution?: GridData;
visible?: boolean;
}): this;
withSolution(solution: GridData): this;
withVisible(visible: boolean): this;
static cleanSolution(solution: GridData, baseGrid?: GridData): GridData;
}
export declare const instance: MysteryRule;