import GridBoard from "./GridBoard";
import Direction from "./Direction";
import { CoordinateConverter, CoordinateConvert } from "./interfaces";
declare class Grid<GridPiece = any, GridState = never> {
    i: number;
    x: number;
    y: number;
    board: GridBoard<GridPiece, GridState>;
    piece?: GridPiece;
    state: GridState;
    constructor(x: number, y: number, board: GridBoard<GridPiece, GridState>);
    getGridByRelativeCoordinate(dx: number, dy: number, convert?: CoordinateConvert): Grid<GridPiece, GridState> | null;
    getGridByRelativeCoordinate(dx: number, dy: number, converter?: CoordinateConverter): Grid<GridPiece, GridState> | null;
    getGridByRelativeCoordinate(direction: Direction, convert?: CoordinateConvert): Grid<GridPiece, GridState> | null;
    getGridByRelativeCoordinate(direction: Direction, converter?: CoordinateConverter): Grid<GridPiece, GridState> | null;
}
interface Grid<GridPiece, GridState> {
    getGridTo: {
        (x: number, y: number): Grid<GridPiece, GridState> | null;
        (direction: Direction): Grid<GridPiece, GridState> | null;
    };
}
export default Grid;
