type MotionValue = Record; type MotionConfig = Record; type MotionInitalValue = Record[K] | ({ value: MotionValue[K]; } & MotionConfig[K])>; interface MotionKeyframe { progress: number; value: MotionValue; key?: string; } /** 是否是循环变化,比如 [0, 2 * Math.PI], 前闭后开 */ type MotionCircle = [number, number]; type ValueOfMotion = M extends Motion ? MotionValue : never; type KeyframeOfMotion = M extends Motion ? MotionKeyframe : never; declare class Motion { config: MotionConfig; value: MotionValue; progress: number; ended: boolean; startTime: number; startVelocity: number; duration: number; keyframes: MotionKeyframe[]; private callbacks?; constructor(initalValue: MotionInitalValue); private getProgress; private getValue; getProgressVelocity(time: number): number; update(time: number): boolean; getKeyFrameSegment(time: number): [MotionKeyframe, MotionKeyframe]; getTargetKeyframe(): MotionKeyframe; set(value: Partial>, duration: number, startProgressVelocity?: number, time?: number): Promise; setKeyframes(keyframes: MotionKeyframe[], duration: number, startProgressVelocity?: number, time?: number): Promise; dispose(): void; } export { Motion, MotionCircle, MotionValue, MotionInitalValue, MotionKeyframe, ValueOfMotion, KeyframeOfMotion };