import { type BoardSquare } from "../../board";
import { Mino } from "../../queue/types";
import { type KickTable } from "../kicks";
import type { Rotation } from "./types";
export interface TetrominoInitializeParams {
    symbol: Mino;
    initialRotation: Rotation;
    boardHeight: number;
    boardWidth: number;
    from?: Tetromino | TetrominoSnapshot;
}
export interface TetrominoSnapshot {
    symbol: Mino;
    location: [number, number];
    locking: number;
    lockResets: number;
    rotResets: number;
    safeLock: number;
    highestY: number;
    rotation: Rotation;
    fallingRotations: number;
    totalRotations: number;
    irs: number;
    ihs: boolean;
    aox: number;
    aoy: number;
    keys: number;
}
export declare class Tetromino {
    #private;
    symbol: Mino;
    states: [number, number][][];
    location: [number, number];
    locking: number;
    lockResets: number;
    rotResets: number;
    safeLock: number;
    highestY: number;
    fallingRotations: number;
    totalRotations: number;
    irs: number;
    ihs: boolean;
    aox: number;
    aoy: number;
    keys: number;
    constructor(options: TetrominoInitializeParams);
    get blocks(): [number, number][];
    get absoluteBlocks(): [number, number][];
    absoluteAt({ x, y, rotation }: {
        x?: number;
        y?: number;
        rotation?: number;
    }): [number, number][];
    get rotation(): Rotation;
    set rotation(value: number);
    get x(): number;
    set x(value: number);
    get y(): number;
    set y(value: number);
    isStupidSpinPosition(board: BoardSquare[][]): boolean;
    isAllSpinPosition(board: BoardSquare[][]): boolean;
    rotate(board: BoardSquare[][], kickTable: KickTable, amt: Rotation, maxMovement: boolean): boolean | {
        kick: [number, number];
        newLocation: [number, number];
        id: string;
        index: number;
    };
    moveRight(board: BoardSquare[][]): boolean;
    moveLeft(board: BoardSquare[][]): boolean;
    dasRight(board: BoardSquare[][]): boolean;
    dasLeft(board: BoardSquare[][]): boolean;
    softDrop(board: BoardSquare[][]): boolean;
    snapshot(): TetrominoSnapshot;
}
export * from "./data";
export * from "./types";
//# sourceMappingURL=index.d.ts.map