Transitions

interface Transitions {
  // defaults to empty array
  transitions?: [
    {
      options: TransitionFadeOptions | TransitionParameterOptions

      type:
        | 'fadeIn'
        | 'fadeOut'
        | 'crossfadeIn'
        | 'crossfadeOut'
        | 'angle'
        | 'angleX'
        | 'angleY'
        | 'scale'
        | 'x'
        | 'y'
    }
  ]
}

interface TransitionFadeOptions {
  duration: number // number of seconds for the transition to complete
}

interface TransitionKenBurnsOptions {
  start: number// time in seconds at which the transition should start
  end: number // time in seconds at which the transition should end
  scale1: number // scale at which to start
  scale2: number // scale at which to end
  x1: number // x position at which to start
  x2: number // x position at which to end
  y1: number // y position at which to start
  y2: number // y position at which to end
}

interface TransitionParameterOptions {
  easing?: // defaults to linear
    | 'easeIn'
    | 'easeInOut'
    | 'easeOut'
    | 'elasticIn'
    | 'elasticInOut'
    | 'elasticOut'
  easingParameter?: // defaults to 1
  time: number // time in seconds at which the parameter should equal the value
  value: number // value of the parameter
}