import { y as AlgIndexer, v as KPuzzle, t as Alg, M as Move, T as Timestamp, K as KPattern, z as KTransformation, D as Duration, w as StickeringMask, u as PuzzleLoader, B as ManagedCustomElement, C as TwistyPlayerModel, F as TwistyPlayerController, G as DetailedTimelineInfo, H as ColorScheme } from '../PuzzleLoader-BuGfeaom.js';
export { Z as AnimationTimelineLeaf, R as BackViewLayout, Y as BoundaryType, O as EXPERIMENTAL_PROP_NO_VALUE, X as ExperimentalMillisecondTimestamp, E as ExperimentalStickering, s as PuzzleID, L as TwistyAlgEditor, J as TwistyAlgViewer, I as TwistyPlayer, N as TwistyPlayerConfig, W as TwizzleLink, V as VisualizationFormat, U as backViewLayouts } from '../PuzzleLoader-BuGfeaom.js';
import 'three/src/Three.js';

declare const twistyDebugGlobals: {
    shareAllNewRenderers: "auto" | "always" | "never";
    showRenderStats: boolean;
};
declare function setTwistyDebug(options: Partial<typeof twistyDebugGlobals>): void;

declare class SimpleAlgIndexer implements AlgIndexer {
    private kpuzzle;
    private moves;
    private durationFn;
    constructor(kpuzzle: KPuzzle, alg: Alg);
    getAnimLeaf(index: number): Move;
    indexToMoveStartTimestamp(index: number): Timestamp;
    timestampToIndex(timestamp: Timestamp): number;
    patternAtIndex(index: number): KPattern;
    transformationAtIndex(index: number): KTransformation;
    algDuration(): Duration;
    numAnimatedLeaves(): number;
    moveDuration(index: number): number;
}

declare class TreeAlgIndexer implements AlgIndexer {
    private kpuzzle;
    private decoration;
    private walker;
    constructor(kpuzzle: KPuzzle, alg: Alg);
    getAnimLeaf(index: number): Move | null;
    indexToMoveStartTimestamp(index: number): Timestamp;
    indexToMovesInProgress(index: number): Timestamp;
    patternAtIndex(index: number, startPattern?: KPattern): KPattern;
    transformationAtIndex(index: number): KTransformation;
    numAnimatedLeaves(): number;
    timestampToIndex(timestamp: Timestamp): number;
    algDuration(): Duration;
    moveDuration(index: number): number;
}

declare class TwistyAnimatedSVG {
    kpuzzle: KPuzzle;
    private showUnknownOrientations;
    wrapperElement: HTMLElement;
    svgElement: SVGElement;
    gradientDefs: SVGDefsElement;
    private originalColors;
    private gradients;
    private svgID;
    constructor(kpuzzle: KPuzzle, svgSource: string, experimentalStickeringMask?: StickeringMask, showUnknownOrientations?: boolean);
    drawPattern(pattern: KPattern, nextPattern?: KPattern, fraction?: number): void;
    draw(pattern: KPattern, nextPattern?: KPattern, fraction?: number): void;
    private newGradient;
    private elementID;
    private elementByID;
}

declare const getSolveAnalyzer: (puzzleLoader: PuzzleLoader) => Promise<(pattern: KPattern) => string | null>;

declare class TwistyScrubber extends ManagedCustomElement {
    #private;
    model?: TwistyPlayerModel | undefined;
    controller?: TwistyPlayerController | undefined;
    constructor(model?: TwistyPlayerModel | undefined, controller?: TwistyPlayerController | undefined, options?: {
        mode: "open" | "closed";
    });
    onDetailedTimelineInfo(detailedTimelineInfo: DetailedTimelineInfo): Promise<void>;
    connectedCallback(): Promise<void>;
    updateColorScheme(colorScheme: ColorScheme): void;
    inputElem(): Promise<HTMLInputElement>;
    onInput(e: Event): Promise<void>;
    onKeypress(e: KeyboardEvent): void;
    slowDown(e: Event, inputElem: HTMLInputElement): Promise<void>;
}

export { AlgIndexer, TwistyAnimatedSVG as ExperimentalSVGAnimator, SimpleAlgIndexer, TreeAlgIndexer, TwistyScrubber, getSolveAnalyzer, setTwistyDebug };
