import { Range } from '../utils/types'; export type CubeAxis = 'x' | 'y' | 'z'; export type CubeFace = 'u' | 'd' | 'l' | 'r' | 'f' | 'b'; export type CubeOptions = { data?: () => T; rand?: () => number; size?: number; }; export type CubeSolvedOptions = { super?: boolean; }; export type CubeOpposite = T extends 'u' ? 'd' : T extends 'd' ? 'u' : T extends 'l' ? 'r' : T extends 'r' ? 'l' : T extends 'f' ? 'b' : T extends 'b' ? 'f' : never; export interface CubeSticker { data: T; face: CubeFace; index: number; rotation: Range<4>; } export type CubeTurn = { depth: number; rotation: number; target: CubeFace | CubeAxis; wide: boolean; };