export type ArrayElement = ArrayType extends readonly (infer ElementType)[] ? ElementType : never; export type Motion

= any> = boolean | MotionObject | MotionFunction

; export type MotionFunction

= (props: P) => MotionObject; export interface MotionObject { [x: string]: any; children?: React.ReactNode | ((props: MotionChildrenProps) => React.ReactNode); willEnter?: () => void; didEnter?: () => void; willLeave?: () => void; didLeave?: () => void; onStart?: () => void; onRest?: () => void; state?: string } export interface MotionChildrenProps { animateCls?: string; animateStyle?: { animationTimingFunction?: string; animationName?: string; animationDuration?: number | string; animationDelay?: number | string; animationIterationCount?: number | string; animationDirection?: 'alternate' | 'normal'; animationFillMode?: string }; animateEvents?: { onAnimationIteration?: React.AnimationEventHandler; onAnimationStart?: React.AnimationEventHandler; onAnimationEnd?: React.AnimationEventHandler } }