import { AnyConfig } from '../config.js';
import GridData from '../grid.js';
import { RuleState } from '../primitives.js';
import Rule, { SearchVariant } from './rule.js';
export default class CustomRule extends Rule {
    readonly description: string;
    readonly grid: GridData;
    readonly title = "Custom Rule";
    get configExplanation(): string;
    private static readonly EXAMPLE_GRID;
    static readonly configs: readonly AnyConfig[];
    private static readonly SEARCH_VARIANTS;
    /**
     * A custom rule with a description and thumbnail grid.
     *
     * This rule validates answers based on the provided solution.
     *
     * @param description - The description of the rule.
     * @param grid - The thumbnail grid of the rule, preferably 5x4 in size.
     */
    constructor(description: string, grid: GridData);
    get id(): string;
    get explanation(): string;
    get configs(): readonly AnyConfig[] | null;
    createExampleGrid(): GridData;
    get searchVariants(): SearchVariant[];
    validateGrid(_grid: GridData): RuleState;
    copyWith({ description, grid, }: {
        description?: string;
        grid?: GridData;
    }): this;
    get validateWithSolution(): boolean;
}
export declare const instance: CustomRule;
