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;
    readonly title = "Alternate Solution";
    get configExplanation(): string;
    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;
