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:('a Bogue.Avar.t -> float -> 'a) -> 'a -> 'a Bogue.Avar.t
  val apply : ('a -> 'b) -> 'a Bogue.Avar.t -> 'b 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 : 'a -> 'a Bogue.Avar.t
  val get : 'a Bogue.Avar.t -> 'a
  val progress : 'a Bogue.Avar.t -> float
  val reset : 'a Bogue.Avar.t -> unit
  type direction =
      No
    | Left
    | Right
    | Top
    | Bottom
    | TopLeft
    | TopRight
    | BottomLeft
    | BottomRight
    | Random
end