sig
  type chart
  type 'a elem
  type line
  type area
  type bar
  type hbar
  type bar_stack
  type pie
  type candle
  type arrow
  type v_elem =
      Area of OFC.area OFC.elem
    | Line of OFC.line OFC.elem
    | Pie of OFC.pie OFC.elem
    | Bar of OFC.bar OFC.elem
    | HBar of OFC.hbar OFC.elem
    | BarStack of OFC.bar_stack OFC.elem
    | Arrow of OFC.arrow OFC.elem
    | Candle of OFC.candle OFC.elem
  type labels
  type spoke_labels
  type label_item
  type spoke_label_item
  type align = Right | Center | Left
  val new_chart : unit -> OFC.chart
  val print_chart : ?print_header:bool -> OFC.chart -> unit
  val chart_set_title : OFC.chart -> ?style:string -> string -> unit
  val chart_set_bg_colour : OFC.chart -> bg_colour:string -> unit
  val chart_add_element : OFC.chart -> 'OFC.elem -> unit
  val chart_add_elements : OFC.chart -> OFC.v_elem list -> unit
  val chart_set_tooltip :
    OFC.chart ->
    ?colour:string ->
    ?background:string ->
    ?title:string ->
    ?body:string -> ?stroke:int -> ?shadow:bool -> ?mouse:int -> unit -> unit
  val chart_set_x_legend : OFC.chart -> ?style:string -> string -> unit
  val chart_set_y_legend : OFC.chart -> ?style:string -> string -> unit
  val chart_set_x_axis :
    OFC.chart ->
    ?min:int ->
    ?max:int ->
    ?steps:int ->
    ?colour:string ->
    ?grid_colour:string ->
    ?labels:OFC.labels ->
    ?stroke:int ->
    ?tick_size:int ->
    ?offset:int -> ?offset_b:bool -> ?_3d:int -> unit -> unit
  val chart_set_y_axis :
    OFC.chart ->
    ?min:int ->
    ?max:int ->
    ?steps:int ->
    ?colour:string ->
    ?grid_colour:string ->
    ?labels:OFC.labels ->
    ?stroke:int ->
    ?tick_size:int -> ?offset:int -> ?offset_b:bool -> unit -> unit
  val chart_set_y_axis_right :
    OFC.chart ->
    ?min:int ->
    ?max:int ->
    ?steps:int ->
    ?colour:string ->
    ?grid_colour:string ->
    ?labels:OFC.labels ->
    ?stroke:int ->
    ?tick_size:int -> ?offset:int -> ?offset_b:bool -> unit -> unit
  val chart_set_radar_axis :
    OFC.chart ->
    ?max:int ->
    ?steps:int ->
    ?colour:string ->
    ?grid_colour:string ->
    ?labels:OFC.labels ->
    ?spoke_labels:OFC.spoke_labels -> ?stroke:int -> unit -> unit
  val new_labels :
    ?colour:string ->
    ?size:int ->
    ?steps:int ->
    ?visible_steps:int ->
    ?text:string ->
    ?align:OFC.align ->
    ?rotate:int -> ?visible:bool -> string list -> OFC.labels
  val new_spoke_labels :
    ?colour:string ->
    ?size:int ->
    ?steps:int ->
    ?visible_steps:int ->
    ?text:string ->
    ?align:OFC.align ->
    ?rotate:int -> ?visible:bool -> string list -> OFC.spoke_labels
  val label_item :
    ?colour:string ->
    ?size:int ->
    ?steps:int ->
    ?visible_steps:int ->
    ?align:OFC.align ->
    ?rotate:int -> ?visible:bool -> string -> OFC.label_item
  module Label : sig type lable_value = Int of int | Float of float end
  val x_label_item :
    ?colour:string ->
    ?grid_colour:string ->
    ?size:int ->
    ?steps:int ->
    ?visible_steps:int ->
    ?text:string ->
    ?align:OFC.align ->
    ?rotate:int -> ?visible:bool -> OFC.Label.lable_value -> OFC.label_item
  val y_label_item :
    ?colour:string ->
    ?grid_colour:string ->
    ?size:int ->
    ?steps:int ->
    ?visible_steps:int ->
    ?text:string ->
    ?align:OFC.align ->
    ?rotate:int -> ?visible:bool -> OFC.Label.lable_value -> OFC.label_item
  val new_label_items : OFC.label_item list -> OFC.labels
  val new_spoke_label_items : OFC.label_item list -> OFC.spoke_labels
  val new_line_elem : unit -> OFC.line OFC.elem
  val line_elem_set_width : OFC.line OFC.elem -> int -> unit
  val line_elem_set_colour : OFC.line OFC.elem -> string -> unit
  val line_elem_set_dot_size : OFC.line OFC.elem -> int -> unit
  val line_elem_set_halo_size : OFC.line OFC.elem -> int -> unit
  val line_elem_set_legend : OFC.line OFC.elem -> string -> unit
  val line_elem_set_font_size : OFC.line OFC.elem -> int -> unit
  val line_elem_set_loop : OFC.line OFC.elem -> bool -> unit
  val line_elem_add_ints : OFC.line OFC.elem -> int list -> unit
  val line_elem_add_floats : OFC.line OFC.elem -> float list -> unit
  type dot
  type value = Int of int | Float of float | Value of OFC.dot | Null
  type dot_kind = Dot | Solid_dot | Hollow_dot | Anchor | Star | Bow
  type dot_value =
      I of int
    | F of float
    | II of int * int
    | FF of float * float
    | IF of int * float
    | FI of float * int
  val dot :
    ?colour:string ->
    ?kind:OFC.dot_kind ->
    ?tip:string ->
    ?dot_size:int ->
    ?halo_size:int ->
    ?sides:int ->
    ?label:string ->
    ?label_colour:string ->
    ?font_size:int -> ?on_click:string -> OFC.dot_value -> OFC.value
  val line_elem_add_values : OFC.line OFC.elem -> OFC.value list -> unit
  val line_elem_set_dot_style :
    OFC.line OFC.elem ->
    ?kind:OFC.dot_kind ->
    ?hollow:bool ->
    ?colour:string ->
    ?alpha:float ->
    ?background_colour:string ->
    ?background_alpha:float ->
    ?dot_size:int ->
    ?size:int ->
    ?sides:int -> ?width:int -> ?tip:string -> ?halo_size:int -> unit -> unit
  type line_style = Dash | Solid
  val line_elem_set_line_style :
    OFC.line OFC.elem ->
    ?style:OFC.line_style -> ?on:int -> ?off:int -> unit -> unit
  type on_show_kind =
      Mid_slide
    | Grow_up
    | Pop
    | Pop_up
    | Drop
    | Shrink_in
    | Explode
    | Fade_in
  val line_elem_set_on_show :
    OFC.line OFC.elem ->
    kind:OFC.on_show_kind -> ?cascade:float -> ?delay:float -> unit -> unit
  val new_area_elem : unit -> OFC.area OFC.elem
  val area_elem_set_fill : OFC.area OFC.elem -> string -> unit
  val area_elem_set_fill_alpha : OFC.area OFC.elem -> float -> unit
  val area_elem_set_width : OFC.area OFC.elem -> int -> unit
  val area_elem_set_colour : OFC.area OFC.elem -> string -> unit
  val area_elem_set_dot_size : OFC.area OFC.elem -> int -> unit
  val area_elem_set_legend : OFC.area OFC.elem -> string -> unit
  val area_elem_set_font_size : OFC.area OFC.elem -> int -> unit
  val area_elem_set_loop : OFC.area OFC.elem -> bool -> unit
  val area_elem_add_ints : OFC.area OFC.elem -> int list -> unit
  val area_elem_add_floats : OFC.area OFC.elem -> float list -> unit
  val area_elem_add_values : OFC.area OFC.elem -> OFC.value list -> unit
  val area_elem_set_dot_style :
    OFC.area OFC.elem ->
    ?kind:OFC.dot_kind ->
    ?hollow:bool ->
    ?colour:string ->
    ?alpha:float ->
    ?background_colour:string ->
    ?background_alpha:float ->
    ?dot_size:int ->
    ?size:int ->
    ?sides:int -> ?width:int -> ?tip:string -> ?halo_size:int -> unit -> unit
  val area_elem_set_line_style :
    OFC.area OFC.elem ->
    ?style:OFC.line_style -> ?on:int -> ?off:int -> unit -> unit
  val area_elem_set_on_show :
    OFC.area OFC.elem ->
    kind:OFC.on_show_kind -> ?cascade:float -> ?delay:float -> unit -> unit
  val new_bar_elem : unit -> OFC.bar OFC.elem
  val new_bar_sketch_elem : unit -> OFC.bar OFC.elem
  val new_bar_3d_elem : unit -> OFC.bar OFC.elem
  val new_bar_filled_elem : unit -> OFC.bar OFC.elem
  val new_bar_cylinder_elem : unit -> OFC.bar OFC.elem
  val new_bar_cylinder_outline_elem : unit -> OFC.bar OFC.elem
  val new_bar_round_glass_elem : unit -> OFC.bar OFC.elem
  val new_bar_round_elem : unit -> OFC.bar OFC.elem
  val new_bar_dome_elem : unit -> OFC.bar OFC.elem
  val new_bar_glass_elem : unit -> OFC.bar OFC.elem
  val new_bar_plastic_elem : unit -> OFC.bar OFC.elem
  val new_bar_plastic_flat_elem : unit -> OFC.bar OFC.elem
  val new_bar_round3d_elem : unit -> OFC.bar OFC.elem
  val bar_elem_set_alpha : OFC.bar OFC.elem -> alpha:float -> unit
  val bar_elem_set_tip : OFC.bar OFC.elem -> tip:string -> unit
  val bar_elem_set_width : OFC.bar OFC.elem -> int -> unit
  val bar_elem_set_colour : OFC.bar OFC.elem -> string -> unit
  val bar_elem_set_dot_size : OFC.bar OFC.elem -> int -> unit
  val bar_elem_set_legend : OFC.bar OFC.elem -> string -> unit
  val bar_elem_set_font_size : OFC.bar OFC.elem -> int -> unit
  val bar_elem_add_ints : OFC.bar OFC.elem -> int list -> unit
  val bar_elem_add_floats : OFC.bar OFC.elem -> float list -> unit
  val bar_elem_add_values : OFC.bar OFC.elem -> OFC.value list -> unit
  val bar_elem_set_on_show :
    OFC.bar OFC.elem ->
    kind:OFC.on_show_kind -> ?cascade:float -> ?delay:float -> unit -> unit
  val new_hbar_elem : unit -> OFC.hbar OFC.elem
  val hbar_elem_set_tip : OFC.hbar OFC.elem -> tip:string -> unit
  val hbar_elem_set_width : OFC.hbar OFC.elem -> int -> unit
  val hbar_elem_set_colour : OFC.hbar OFC.elem -> string -> unit
  val hbar_elem_set_dot_size : OFC.hbar OFC.elem -> int -> unit
  val hbar_elem_set_legend : OFC.hbar OFC.elem -> string -> unit
  val hbar_elem_set_font_size : OFC.hbar OFC.elem -> int -> unit
  val hbar_elem_set_on_show :
    OFC.hbar OFC.elem ->
    kind:OFC.on_show_kind -> ?cascade:float -> ?delay:float -> unit -> unit
  val hbar_elem_add_ints : OFC.hbar OFC.elem -> int list -> unit
  val hbar_elem_add_floats : OFC.hbar OFC.elem -> float list -> unit
  module HBar_values :
    sig
      type hbar_value =
          Int of int
        | Float of float
        | LeftRightInt of int * int
        | LeftRightFloat of float * float
    end
  val hbar_elem_add_values :
    OFC.hbar OFC.elem -> OFC.HBar_values.hbar_value list -> unit
  val new_bar_stack_elem : unit -> OFC.bar_stack OFC.elem
  val bar_stack_elem_set_colours :
    OFC.bar_stack OFC.elem -> colours:string list -> unit
  val bar_stack_elem_add_ints :
    OFC.bar_stack OFC.elem -> int list list -> unit
  val bar_stack_elem_add_floats :
    OFC.bar_stack OFC.elem -> float list list -> unit
  module Bar_stack_values :
    sig
      type attr_value
      type value =
          Int of int
        | Float of float
        | Value of OFC.Bar_stack_values.attr_value
        | Null
    end
  val bs_value_int : ?colour:string -> int -> OFC.Bar_stack_values.value
  val bs_value_float : ?colour:string -> float -> OFC.Bar_stack_values.value
  val bar_stack_elem_add_values :
    OFC.bar_stack OFC.elem -> OFC.Bar_stack_values.value list list -> unit
  type bar_stack_key
  val bs_key :
    ?colour:string ->
    ?text:string -> ?font_size:int -> unit -> OFC.bar_stack_key
  val bar_stack_elem_set_keys :
    OFC.bar_stack OFC.elem -> OFC.bar_stack_key list -> unit
  val new_pie_elem : unit -> OFC.pie OFC.elem
  val pie_elem_set_colours : OFC.pie OFC.elem -> colours:string list -> unit
  val pie_elem_set_radius : OFC.pie OFC.elem -> radius:int -> unit
  val pie_elem_set_alpha : OFC.pie OFC.elem -> alpha:float -> unit
  val pie_elem_set_border : OFC.pie OFC.elem -> border:int -> unit
  val pie_elem_set_start_angle : OFC.pie OFC.elem -> start_angle:int -> unit
  val pie_elem_set_gradient_fill :
    OFC.pie OFC.elem -> gradient_fill:bool -> unit
  val pie_elem_set_no_labels : OFC.pie OFC.elem -> no_labels:bool -> unit
  val pie_elem_set_label_colour :
    OFC.pie OFC.elem -> label_colour:string -> unit
  val pie_elem_set_tip : OFC.pie OFC.elem -> tip:string -> unit
  val pie_elem_set_animate : OFC.pie OFC.elem -> animate:bool -> unit
  type pie_animations = Bounce of int | Fade
  val pie_elem_set_animations :
    OFC.pie OFC.elem -> animations:OFC.pie_animations list -> unit
  module Pie_values :
    sig
      type pie_value_attrs
      type pie_value =
          Int of int
        | Float of float
        | Value of OFC.Pie_values.pie_value_attrs
        | Null
      type pie_value_param = I of int | F of float | Zero
    end
  val pie_value :
    ?label:string ->
    ?tip:string ->
    ?on_click:string ->
    OFC.Pie_values.pie_value_param -> OFC.Pie_values.pie_value
  val pie_elem_add_values :
    OFC.pie OFC.elem -> OFC.Pie_values.pie_value list -> unit
  val new_candle_elem : unit -> OFC.candle OFC.elem
  val candle_elem_set_on_show :
    OFC.candle OFC.elem ->
    kind:OFC.on_show_kind -> ?cascade:float -> ?delay:float -> unit -> unit
  val candle_elem_set_colour : OFC.candle OFC.elem -> colour:string -> unit
  val candle_elem_set_negative_colour :
    OFC.candle OFC.elem -> colour:string -> unit
  val candle_elem_set_alpha : OFC.candle OFC.elem -> alpha:float -> unit
  val candle_elem_set_legend : OFC.candle OFC.elem -> text:string -> unit
  val candle_elem_set_font_size : OFC.candle OFC.elem -> size:int -> unit
  val candle_elem_set_tip : OFC.candle OFC.elem -> tip:string -> unit
  type candle_value
  val candle_value_ints :
    high:int ->
    top:int ->
    bottom:int ->
    low:int -> ?tip:string -> ?colour:string -> unit -> OFC.candle_value
  val candle_value_floats :
    high:float ->
    top:float ->
    bottom:float ->
    low:float -> ?tip:string -> ?colour:string -> unit -> OFC.candle_value
  val candle_elem_add_values :
    OFC.candle OFC.elem -> OFC.candle_value list -> unit
  val new_arrow_elem :
    start:int * int ->
    end_:int * int ->
    ?barb_length:int -> ?colour:string -> unit -> OFC.arrow OFC.elem
end