interface SimpleTransition {
  readonly type: "DISSOLVE" | "SMART_ANIMATE" | "SCROLL_ANIMATE";
  readonly easing: Easing;
  readonly duration: number;
}
interface DirectionalTransition {
  readonly type: "MOVE_IN" | "MOVE_OUT" | "PUSH" | "SLIDE_IN" | "SLIDE_OUT";
  readonly direction: "LEFT" | "RIGHT" | "TOP" | "BOTTOM";
  readonly matchLayers: boolean;
  readonly easing: Easing;
  readonly duration: number;
}
type Transition = SimpleTransition | DirectionalTransition;
interface Easing {
  readonly type:
    | "EASE_IN"
    | "EASE_OUT"
    | "EASE_IN_AND_OUT"
    | "LINEAR"
    | "EASE_IN_BACK"
    | "EASE_OUT_BACK"
    | "EASE_IN_AND_OUT_BACK"
    | "CUSTOM_CUBIC_BEZIER"
    | "GENTLE"
    | "QUICK"
    | "BOUNCY"
    | "SLOW"
    | "CUSTOM_SPRING";
  readonly easingFunctionCubicBezier?: {
    x1: number;
    y1: number;
    x2: number;
    y2: number;
  };
  readonly easingFunctionSpring?: {
    mass: number;
    stiffness: number;
    damping: number;
    initialVelocity: number;
  };
}