export declare enum NodeTypes { Turn = "turn", Sequence = "sequence", Conjugate = "conjugate", Commutator = "commutator", Repeating = "repeating group", Algorithm = "algorithm" } export declare type FaceMove = 'U' | 'F' | 'R' | 'D' | 'B' | 'L'; export declare type WideMove = 'u' | 'f' | 'r' | 'd' | 'b' | 'l'; export declare type SliceMove = 'M' | 'E' | 'S'; export declare type RotationMove = 'x' | 'y' | 'z'; export declare type Move = FaceMove | WideMove | SliceMove | RotationMove; export declare enum Direction { CW = 1, Double = 2, CCW = 3 } declare type BaseTurnNode = { type: NodeTypes.Turn; move: M; direction: Direction; }; export declare type FaceTurnNode = BaseTurnNode; export declare type WideTurnNode = BaseTurnNode; export declare type SliceTurnNode = BaseTurnNode; export declare type RotationTurnNode = BaseTurnNode; export declare type TurnNode = FaceTurnNode | WideTurnNode | SliceTurnNode | RotationTurnNode; export declare type SequenceNode = { type: NodeTypes.Sequence; turns: Array; }; export declare type ConjugateNode = { type: NodeTypes.Conjugate; A: Array; B: Array; }; export declare type CommutatorNode = { type: NodeTypes.Commutator; A: Array; B: Array; }; export declare type RepeatingNode = { type: NodeTypes.Repeating; multiplicand: Array; multiplier: number; }; export declare type AlgorithmNode = { type: NodeTypes.Algorithm; body: Array; }; export declare type Node = TurnNode | SequenceNode | ConjugateNode | CommutatorNode | RepeatingNode | AlgorithmNode; export declare const createTurn: (move: T["move"], direction: T["direction"]) => T; export declare const createSequence: (turns?: MaybeArray) => SequenceNode; export declare const createConjugate: (A?: MaybeArray, B?: MaybeArray) => ConjugateNode; export declare const createCommutator: (A?: MaybeArray, B?: MaybeArray) => CommutatorNode; export declare const createRepeating: (multiplicand?: MaybeArray, multiplier?: RepeatingNode['multiplier']) => RepeatingNode; export declare const createAlgorithm: (body?: MaybeArray) => AlgorithmNode; declare type MaybeArray = T | T[number]; export {};