sig
  type t
  val new_genesis : unit -> Mgk_cmd.Mgk.t
  val input_image : string -> Mgk_cmd.Mgk.t -> unit
  val set_size : wh:int * int -> Mgk_cmd.Mgk.t -> unit
  val init_canvas : string -> Mgk_cmd.Mgk.t -> unit
  val set_filename : string -> Mgk_cmd.Mgk.t -> unit
  val write_command : Mgk_cmd.Mgk.t -> unit
  val display : Mgk_cmd.Mgk.t -> unit
  val new_genesis7 : unit -> Mgk_cmd.Mgk.t
  val draw_line : int * int -> int * int -> Mgk_cmd.Mgk.t -> unit
  val draw_point : int * int -> Mgk_cmd.Mgk.t -> unit
  val draw_rectangle : int * int -> int * int -> Mgk_cmd.Mgk.t -> unit
  val draw_circle : int * int -> int -> Mgk_cmd.Mgk.t -> unit
  val draw_ellipse : int * int -> int * int -> Mgk_cmd.Mgk.t -> unit
  val draw_qbcurve :
    int * int -> int * int -> int * int -> Mgk_cmd.Mgk.t -> unit
  val draw_cbcurve :
    int * int -> int * int -> int * int -> int * int -> Mgk_cmd.Mgk.t -> unit
  val draw_polygon : (int * int) list -> Mgk_cmd.Mgk.t -> unit
  val draw_text : int * int -> string -> Mgk_cmd.Mgk.t -> unit
  val set_font : string -> Mgk_cmd.Mgk.t -> unit
  val set_pointsize : int -> Mgk_cmd.Mgk.t -> unit
  val set_strokewidth : float -> Mgk_cmd.Mgk.t -> unit
  val set_fill : string -> Mgk_cmd.Mgk.t -> unit
  val set_stroke : string -> Mgk_cmd.Mgk.t -> unit
  type path =
      M of int * int
    | L of int * int
    | Q of (int * int) * (int * int)
    | C of (int * int) * (int * int) * (int * int)
    | A of (int * int) * int * (int * int) * (int * int)
    | Z
  val draw_path : Mgk_cmd.Mgk.path list -> Mgk_cmd.Mgk.t -> unit
  type comp_op = string
  val over : Mgk_cmd.Mgk.comp_op
  val multiply : Mgk_cmd.Mgk.comp_op
  val screen : Mgk_cmd.Mgk.comp_op
  val overlay : Mgk_cmd.Mgk.comp_op
  val darken : Mgk_cmd.Mgk.comp_op
  val lighten : Mgk_cmd.Mgk.comp_op
  val add : Mgk_cmd.Mgk.comp_op
  val subtract : Mgk_cmd.Mgk.comp_op
  val plus : Mgk_cmd.Mgk.comp_op
  val xor : Mgk_cmd.Mgk.comp_op
  val atop : Mgk_cmd.Mgk.comp_op
  val out : Mgk_cmd.Mgk.comp_op
  val src : Mgk_cmd.Mgk.comp_op
  val src_in : Mgk_cmd.Mgk.comp_op
  val src_out : Mgk_cmd.Mgk.comp_op
  val src_over : Mgk_cmd.Mgk.comp_op
  val src_atop : Mgk_cmd.Mgk.comp_op
  val dst_in : Mgk_cmd.Mgk.comp_op
  val dst_out : Mgk_cmd.Mgk.comp_op
  val dst_over : Mgk_cmd.Mgk.comp_op
  val dst_atop : Mgk_cmd.Mgk.comp_op
  val divide_src : Mgk_cmd.Mgk.comp_op
  val divide_dst : Mgk_cmd.Mgk.comp_op
  val minus_src : Mgk_cmd.Mgk.comp_op
  val minus_dst : Mgk_cmd.Mgk.comp_op
  val dissolve : Mgk_cmd.Mgk.comp_op
  val difference : Mgk_cmd.Mgk.comp_op
  val color_burn : Mgk_cmd.Mgk.comp_op
  val color_dodge : Mgk_cmd.Mgk.comp_op
  val linear_burn : Mgk_cmd.Mgk.comp_op
  val linear_dodge : Mgk_cmd.Mgk.comp_op
  val hard_light : Mgk_cmd.Mgk.comp_op
  val soft_light : Mgk_cmd.Mgk.comp_op
  val copy_opacity : Mgk_cmd.Mgk.comp_op
  val seamless_blend : Mgk_cmd.Mgk.comp_op
  val compositeop_of_string : string -> Mgk_cmd.Mgk.comp_op
  val set_composite_op : Mgk_cmd.Mgk.comp_op -> Mgk_cmd.Mgk.t -> unit
  val composite : Mgk_cmd.Mgk.t -> unit
  val open_layer : (Mgk_cmd.Mgk.t -> unit) -> Mgk_cmd.Mgk.t -> unit
  val set_geometry : int * int -> Mgk_cmd.Mgk.t -> unit
  val base_layer : (Mgk_cmd.Mgk.t -> unit) -> Mgk_cmd.Mgk.t -> unit
  val list_compose : Mgk_cmd.Mgk.t -> unit
  val negate : Mgk_cmd.Mgk.t -> unit
  val blur : int -> Mgk_cmd.Mgk.t -> unit
  val normalize : Mgk_cmd.Mgk.t -> unit
  val charcoal : int -> Mgk_cmd.Mgk.t -> unit
  val grayscale : Mgk_cmd.Mgk.t -> unit
  val sharpen : int -> Mgk_cmd.Mgk.t -> unit
  val shade : int * int -> Mgk_cmd.Mgk.t -> unit
  val modulate : int * int * int -> Mgk_cmd.Mgk.t -> unit
  val resize : string -> Mgk_cmd.Mgk.t -> unit
  val flip : Mgk_cmd.Mgk.t -> unit
  val flop : Mgk_cmd.Mgk.t -> unit
  val posterize : int -> Mgk_cmd.Mgk.t -> unit
  val paint : int -> Mgk_cmd.Mgk.t -> unit
  val monochrome : Mgk_cmd.Mgk.t -> unit
  val emboss : int -> Mgk_cmd.Mgk.t -> unit
  val edge : int -> Mgk_cmd.Mgk.t -> unit
  val auto_level : Mgk_cmd.Mgk.t -> unit
  val convolve_sobel : Mgk_cmd.Mgk.t -> unit
  type dither_method = string
  val dither_riemersma : Mgk_cmd.Mgk.dither_method
  val dither : Mgk_cmd.Mgk.dither_method -> Mgk_cmd.Mgk.t -> unit
  val colors : int -> Mgk_cmd.Mgk.t -> unit
  val clone_last : Mgk_cmd.Mgk.t -> unit
  val clone : int -> Mgk_cmd.Mgk.t -> unit
  val clone_range : int * int -> Mgk_cmd.Mgk.t -> unit
end