export interface Puzzle { /** * Produce scramble notation without applying it. */ generateScramble(depth?: number): string; /** * Parse turn notation. */ parseTurn(source: string): PuzzleTurn; /** * Restore the puzzle to its initial solved state. */ reset(): this; /** * Randomize the puzzle state (e.g. apply a generated scramble). */ scramble(depth?: number): this; /** * Whether the puzzle is in a solved state. */ solved(opts?: PuzzleSolvedOptions): boolean; /** * Stringify a turn. */ stringifyTurn(turn: PuzzleTurn): string; /** * Apply a single turn or a sequence of turns (whitespace-separated notation). */ turn(turn: PuzzleTurn | string): this; }