import { AnyConfig } from '../config.js';
import { GetTileHandler } from '../events/onGetTile.js';
import GridData from '../grid.js';
import { Position, RuleState, Wrapping } from '../primitives.js';
import Rule, { SearchVariant } from './rule.js';
export default class WrapAroundRule extends Rule implements GetTileHandler {
    readonly horizontal: Wrapping;
    readonly vertical: Wrapping;
    readonly title = "Wrap Around";
    get configExplanation(): string;
    private static readonly EXAMPLE_GRID_NONE;
    private static readonly EXAMPLE_GRID_HORIZONTAL;
    private static readonly EXAMPLE_GRID_VERTICAL;
    private static readonly SEARCH_VARIANTS;
    private static readonly CONFIGS;
    /**
     * **The left and right edges are connected (in reverse)**
     *
     * @param horizontal - The horizontal wrapping.
     * @param vertical - The vertical wrapping.
     */
    constructor(horizontal: Wrapping, vertical: Wrapping);
    onGetTile(x: number, y: number, grid: GridData): Position;
    get id(): string;
    get explanation(): string;
    createExampleGrid(): GridData;
    get configs(): readonly AnyConfig[] | null;
    get searchVariants(): SearchVariant[];
    validateGrid(grid: GridData): RuleState;
    copyWith({ horizontal, vertical, }: {
        horizontal?: Wrapping;
        vertical?: Wrapping;
    }): this;
    get isSingleton(): boolean;
}
export declare const instance: WrapAroundRule;
