sig
  type 'a t
  type callback = unit -> unit
  val create :
    ?duration:Bogue.Time.t ->
    ?init:Bogue.Avar.callback ->
    ?ending:Bogue.Avar.callback ->
    ?finished:bool ->
    ?update:('Bogue.Avar.t -> float -> 'a) -> '-> 'Bogue.Avar.t
  val apply : ('-> 'b) -> 'Bogue.Avar.t -> 'Bogue.Avar.t
  val fromto :
    ?duration:int ->
    ?ending:Bogue.Avar.callback -> int -> int -> int Bogue.Avar.t
  val fromto_unif :
    ?duration:int ->
    ?ending:Bogue.Avar.callback -> int -> int -> int Bogue.Avar.t
  val oscillate :
    ?duration:int -> ?frequency:float -> int -> int -> int Bogue.Avar.t
  val var : '-> 'Bogue.Avar.t
  val get : 'Bogue.Avar.t -> 'a
  val progress : 'Bogue.Avar.t -> float
  val reset : 'Bogue.Avar.t -> unit
  type direction =
      No
    | Left
    | Right
    | Top
    | Bottom
    | TopLeft
    | TopRight
    | BottomLeft
    | BottomRight
    | Random
end