import type { AnimationOptions, MotionKeyframesDefinition } from 'motion'; import type { easings } from '.'; export interface AnimationProps { keyframes: MotionKeyframesDefinition; initialStyles: { [key: string]: string; }; } type FilteredAnimationOptions = Pick & { stagger?: number; }; type AnimationPrepare = (element: HTMLElement | HTMLElement[], options?: T) => void; type AnimationBase = (element: HTMLElement | HTMLElement[], options?: T & FilteredAnimationOptions) => Promise; type PrepareProps = { target?: Element; insertAfter?: Node | null; display?: string; }; type AnimationInProps = PrepareProps & { prepared?: true; }; type AnimationOutProps = PrepareProps & { remove?: boolean; }; type PrepareIn = AnimationPrepare; type AnimationIn = AnimationBase; type AnimationOut = AnimationBase; export type AnimationFunctions = { prepareIn: PrepareIn; animateIn: AnimationIn; animateOut: AnimationOut; }; export type Animation = AnimationFunctions & { options?: FilteredAnimationOptions; }; export type AnimationsObject = Readonly>; export type Easings = typeof easings; export type AnimationOptionsCustom = Readonly>; export {};