import { AdofaiEvent, ActionData, Tile, ParseProgressEvent } from './interfaces'; /** * 装饰类事件的 eventType 列表。 * 这些事件在标准格式中应位于 decorations 数组, * 但早期版本的谱面可能将它们放入 actions 数组,因此需要 fallback 处理。 */ export declare const DECORATION_EVENT_TYPES: readonly string[]; export declare function isDecorationEvent(event: { eventType?: string; } | null | undefined): boolean; export declare function normalizeAngle(v: number): number; export declare function resolveAngleOffset(v: number): number | null; export interface AngleState { value: number; } export declare function parseAngle(agd: number[], i: number, angleDir: AngleState, isTwirl: number): number; export declare function parseChangedAngle(agd: number, i: number, angleDir: AngleState, isTwirl: number, tiles: Tile[]): number; export declare function filterActionsByEventType(tiles: Tile[], eventType: string): { index: number; action: ActionData; }[]; export declare function getActionsByIndex(tiles: Tile[], eventType: string, index: number): { count: number; actions: ActionData[]; }; export interface CreateTilesOptions { angleData: number[]; actions: AdofaiEvent[]; decorations: AdofaiEvent[]; } export interface CreateTilesCallbacks { onProgress: (stage: ParseProgressEvent['stage'], current: number, total: number, data?: ParseProgressEvent['data']) => void; onTwirl: (count: number) => void; getTwirl: () => number; } export declare function createTiles(xLength: number, opt: CreateTilesOptions, cbs: CreateTilesCallbacks): Promise; export declare function changeAngles(tiles: Tile[]): Tile[]; export declare function flattenAngleDatas(tiles: Tile[]): number[]; export declare function flattenActionsWithFloor(tiles: Tile[]): AdofaiEvent[]; export declare function flattenDecorationsWithFloor(tiles: Tile[]): AdofaiEvent[]; export interface AngleDataRef { [index: number]: number; length: number; } export declare function calculateTilePositions(angleData: number[], tiles: Tile[], actions: AdofaiEvent[], emitProgress: (stage: string, current: number, total: number, data?: any) => void): number[][]; export declare function precomputePositions(angleData: number[], totalTiles: number, actions: AdofaiEvent[]): { positions: [number, number][]; angles: number[]; };