import { OwnedEventEmitter } from './events'; import { Grid, GridItem } from './grid'; export declare class Piece extends GridItem { readonly id: number; constructor(x: number, y: number, index: number, id: number); isCorrect(): boolean; } export interface TapData { time: number; delta: number; x: number; y: number; index: number; piece: Piece; movedPieces: Piece[]; } interface ToStringOptions { marginWidth?: number; marginHeight?: number; color?: number; } export declare class Puzzle extends Grid { readonly events: OwnedEventEmitter; taps: TapData[]; constructor(pieces: Piece[][] | number[][]); clone(): Puzzle; readonly timeGenerated: number; get timeStarted(): number | null; get timeSolved(): number | null; protected _isSolvable: boolean | null; protected _isSolving: boolean | null; protected _isSolved: boolean | null; isSolvable(): boolean | null; isSolving(): boolean | null; isSolved(): boolean | null; checkSolvable(): boolean; checkSolving(): boolean; checkSolved(): boolean | null; toString({ marginWidth, marginHeight, color }?: ToStringOptions): string; get(x: number, y: number): Piece; get(id: number): Piece; set(x: number, y: number, piece: Piece): this; tap(x: number, y: number): TapData | null; } export {};