sig
  module Mgk :
    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
end