/** * Copyright (C) 2023 Shuang Chen This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ----------------------------------------------------------------------- Modified by Isaac Vega */ declare class CubieCube { ca: number[]; ea: number[]; static urf1: CubieCube; static urf2: CubieCube; static EdgeMult(a: CubieCube, b: CubieCube, prod: CubieCube): void; static CornMult(a: CubieCube, b: CubieCube, prod: CubieCube): void; static CornMultFull(a: CubieCube, b: CubieCube, prod: CubieCube): void; static CornConjugate(a: CubieCube, idx: number, b: CubieCube): void; static EdgeConjugate(a: CubieCube, idx: number, b: CubieCube): void; init(ca: number[], ea: number[]): CubieCube; initCoord(cperm: number, twist: number, eperm: number, flip: number): CubieCube; isEqual(c: CubieCube): boolean; setFlip(idx: number): void; getFlip(): number; getFlipSym(): number; setTwist(idx: number): void; getTwist(): number; getTwistSym(): number; setCPerm(idx: number): void; getCPerm(): number; getCPermSym(): number; setEPerm(idx: number): void; getEPerm(): number; getEPermSym(): number; getUDSlice(): number; setUDSlice(idx: number): void; getMPerm(): number; setMPerm(idx: number): void; getCComb(): number; setCComb(idx: number): void; URFConjugate(): void; toFaceCube(cFacelet?: number[][], eFacelet?: number[][]): string; invFrom(cc: CubieCube): CubieCube; fromFacelet(facelet: string, cFacelet?: number[][], eFacelet?: number[][]): -1 | undefined; } declare class CoordCube { twist: number; tsym: number; flip: number; fsym: number; slice: number; prun: number; twistc: number; flipc: number; static UDSliceTwistPrunMax: number; set(node: CoordCube): void; calcPruning(): void; setWithPrun(cc: CubieCube, depth: number): boolean; doMovePrun(cc: CoordCube, m: number): number; doMovePrunConj(cc: CoordCube, m: number): number; } export declare class Search { move: number[]; moveSol: number[] | null; nodeUD: CoordCube[]; valid1: number; allowShorter: boolean; cc: CubieCube; urfCubieCube: CubieCube[]; urfCoordCube: CoordCube[]; phase1Cubie: CubieCube[]; preMoveCubes: CubieCube[]; preMoves: number[]; preMoveLen: number; maxPreMoves: number; sol: number; probe: number; probeMax: number; probeMin: number; verbose: number; conjMask: number; length1: number; depth1: number; urfIdx: number; isRec: boolean; strSolution: string | null; constructor(); solution(facelets: string, maxDepth?: number, probeMax?: number, probeMin?: number, verbose?: number): string; initSearch(): void; next(probeMax: number, probeMin: number, verbose: number): string; verify(facelets: string): number; phase1PreMoves(maxl: number, lm: number, cc: CubieCube): 0 | 1; search(): string; initPhase2Pre(): number; initPhase2(phase2Cubie: CubieCube): 0 | 1 | 2; phase1(node: CoordCube, maxl: number, lm: number): number; appendSolMove(curMove: number): void; phase2(edge: number, esym: number, corn: number, csym: number, mid: number, maxl: number, depth: number, lm: number): number; solutionToString(): string; } export declare function randomCube(): string; export declare function solve(facelet: string): string; export declare function initFull(): void; export {};